InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

如何实现弹性架构

  • 2018-09-18
  • 本文字数:1542 字

    阅读完需:约 5 分钟

为了管理大规模的系统,你必须把系统推向强度极限,但仍然有能力在故障中恢复,并且拥抱失败, Adrian Hornsby 写了两篇博客,分享了自己在大规模系统工作中十多年的经验,以及他发现的有用的模式。

Hornsby 是 AWS 的技术专员,他指出,对于较小的系统,最多几十个实例,完全运行模式通常是正常状态,很少出现故障。在大规模系统中实现这一点几乎是不可能的 ; 相反,部分失败是常态,他指出,对于大多数 web 应用程序来说,这并不是一个大问题,尽管这当然会影响收入。为了应对这一点,他的建议是在弹性成本和可能的收入损失之间找到一个很好的平衡。

Hornsby 描述了几种他认为有助于构建弹性体系结构的模式,但他强调弹性不仅仅与软件有关。基础设施层、网络和应用程序设计以及人员和文化也很重要。

冗余

对于 Hornsby 来说,在云中部署应用程序时最重要的事就是冗余了,通过部署多个实例 (可能在不同的区域或地区) 来增加可用性

自动伸缩

Hornsby 的下一步是根据需求自动调整应用程序的容量,这是目前常见的机制。不同的自动缩放技术以不同的速度运作,因此,选择一种适合应用程序需求的非常重要。他还指出,由于容器平台和功能的存在,如今的扩展速度要快得多。

基础设施即代码

在使用基础架构即代码时,可重复性是一个重要的收益点,他比较了使用一个模版针对多套环境手工配置数据中心的工作和多次自动执行模板的工作。

如果,环境遭到某种方式的破坏,甚至被删除时,您可以从备份中恢复所有数据,并使用模板重新构建所有内容。这比手工完成这些工作要快得多,风险也小得多。

Hornsby 还将基础架构即代码视为知识共享。团队可以像处理其他代码一样对待这类代码,也可以使用拉请求来验证更改。

不可变的基础设施

不可变的基础设施意味着对于每次部署来说,所有组件都是可替换的,不做任何更新,Hornsby notes 提到两条基于不可变服务器模式的规则:

  • 不应该在实时系统上进行任何更新。

  • 必须始终从供应资源的新实例开始着手。

在处理不可变的基础设施时,Hornsby 建议使用金丝雀部署,以减少部署新版本应用程序时出现故障的风险。使用这种技术,您可以在真实的生产环境中进行测试,并在需要时进行非常快速的回滚。

无状态应用程序

为了能够使用自动伸缩和不可变的基础设施,应用程序必须是无状态的。这意味着所有请求都必须独立于先前的请求或会话处理,不能将任何信息存储在本地磁盘或内存中。在自动缩放组中共享状态只能使用内存对象缓存系统,比如 Memcached 或类似的产品。

避免级联故障

按照 Hornby 的经验,导致停机的一个常见原因是级联故障,在这种情况下,通过不同类型的依赖关系发生的局部故障有时会导致整个系统崩溃。一个常见的例子是过载,例如当一个集群宕机时,所有的流量都转移到另一个集群。为了避免这些类型的失败,他推荐了一些模式,包括:

  • 超时。数据库速度减慢时,如果仍有相同数量的传入流量可能很快使系统失败。超时的速度越快,可能意味着服务的质量下降而不至于崩溃。

  • 幂等操作。由于暂时的错误,客户端可能多次发送相同的请求,这可能导致错误。为了避免这种情况,Hornsby 倾向于使用幂等请求,使这些请求可被反复处理而不会出现问题。

  • 服务降级和回退。在处理高负载时,一种选择是提供要求较低的服务变体。比如说,返回通用的信息列表,而不是个性化的列表。

  • 拒绝。自卫的最后一步是开始放弃请求,最好是先放弃不那么重要的请求。

Hornsby 最后指出,在处理云中的大规模分布式系统时,间歇性错误是一种常态。可能很难一下子搞清楚如何及时响应这些错误,但他建议可以收集统计数据,并根据这些数据创建处理错误的阈值。最后,他强调了自动化的重要性。要得到弹性和可靠的应用程序,它们经过了充分测试过的部署并具有快速自旋时间,您必须尽可能地自动化。

查看英文原文: How to Achieve a Resilient Architecture

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2018-09-18 10:261987

评论

发布
暂无评论
发现更多内容

DTCC 2023即将启幕 明天见!

HashData

Programming abstractions in C阅读笔记p111-p113: boilerplate

codists

企业文件外发系统必备八大要素

镭速

文件外发系统

规划性和可扩展性,助力企业全面预算管理的推进

智达方通

全面预算管理系统 智达方通EPM系统 财务规划与分析 多维模型

2024杭州国际连接器及线束设备展览会

吹吹晚风

相约天津!全国智能汽车竞赛百度创意组总决赛通知

飞桨PaddlePaddle

百度 paddle 百度飞桨 飞桨国赛 全国大学生智能汽车竞赛

极狐GitLab 企业级 CI/CD 规模化落地实践指南(一)

极狐GitLab

DevOps cicd runner template Component

GeaFlow任务能力增强:通过API定制流图计算逻辑

TuGraph-Analytics(GeaFlow)

分布式计算 java编程 API 图计算 tugraph

面试涨薪神奇操作,直接多给3k的JVM垃圾优化笔记

小小怪下士

Java 程序员 JVM 调优

实战:工作中对并发问题的处理 | 京东物流技术团队

京东科技开发者

数据库 并发 数据库锁 更新丢失 企业号 8 月 PK 榜

MT7915 with IPQ4019/IPQ4029 5G Radio Achieve 843 Mbps Throughput|DBDC Network Card

wallyslilly

IPQ4019 ipq4029 MT7915

2023城博会|上海国际智慧工地展览会

AIOTE智博会

城博会 上海城博会

聊聊JDK1.0到JDK20的那些事儿 | 京东云技术团队

京东科技开发者

Java jdk jdk8 jdk17 企业号 8 月 PK 榜

百度百舸平台的大模型训练最佳实践

Baidu AICLOUD

容错机制 大模型训练 异构计算 CheckPoint

19. 第三方库的管理和虚拟环境

茶桁

Python pip conda

IIOT WiFi solution/IPQ9574 VS IPQ8074 support MU-MIMO-Beamforming-Advanced Wireless Technology

wifi6-yiyi

wifi6 WiFi7

【资料包】HDC.Together 2023精选Codelabs指南现已上线(内有活动)

HarmonyOS开发者

HarmonyOS

从零开始学极狐GitLab|03 Runner 裸机部署

极狐GitLab

DevOps gitlab cicd SaaS DevSecOps

aspera替代方案:探索这些安全且可靠的文件传输工具

镭速

aspera替代方案 文件传输工具

语音聊天源码平台开发小知识

山东布谷网络科技

2024杭州国际工业装配及传输技术展览会

吹吹晚风

一文预览 | 8 月 16 日 NVIDIA 在 WAVE SUMMIT深度学习开发者大会 2023精彩亮点抢先看!

飞桨PaddlePaddle

人工智能 百度飞桨 WAVE SUMMIT

本地工具是什么意思?本地工具与远程工具一样吗?

行云管家

IT运维 远程工具 本地工具

极狐GitLab 上新:跳过无需备份项目,节约数 10 至 1000 倍时间与磁盘空间

极狐GitLab

DevOps gitlab 磁盘空间 数据备份恢复 备份时间

因为私域流量运营,App重新受重视?

FinFish

小程序生态 私域运营 小程序容器 私域流量运营 流量运营

洛阳等级保护测评机构有哪些?在哪里?咨询电话多少?

行云管家

等保 等级保护 等保测评 洛阳

断点续传的未来发展趋势与前景展望

镭速

断点续传 文件传输软件

突破大模型 | Alluxio助力AI大模型训练-成功案例(一)

Alluxio

机器学习 gpu 模型训练 大模型 AIGC

2024中国(深圳)国际VR/AR虚拟现实展览会

吹吹晚风

分布式事务的华丽进化 | 京东物流技术团队

京东科技开发者

分布式事务 数据库事务 企业号 8 月 PK 榜 柔性分布式事务

小灯塔系列-中小企业数字化转型系列研究——知识管理测评报告

向量智库

  • 扫码添加小助手
    领取最新资料包
如何实现弹性架构_DevOps & 平台工程_Jan Stenberg_InfoQ精选文章