经验没有压缩算法,揭秘亚马逊云科技打造韧性云服务背后的工程思维

TechWeb 2024-10-14 11:26:25

随着《黑神话:悟空》的火爆,其中出现的场景原型之一——应县木塔,这座修建于约1000年前的世界现存最高大、最古老纯木结构楼阁式建筑再次引发人们的惊叹。这座木塔能屹立千年的秘诀是什么?

近日,亚马逊云科技大中华区解决方案架构总经理代闻在谈及亚马逊云科技云服务稳定性、可靠性和韧性(应用程序抵御中断或从中恢复的能力)方面的话题时表示,如同应县木塔能屹立千年,背后涉及到“选址、架构、维护”等关键因素和环节一样,保障云端服务的稳定性和韧性同样需要有这样的工程思维。

事实上,随着各类应用程序深度进入人们的日常生活中,人们对在线应用的稳定性要求就像空气和水一样自然——拥有时感受不明显,一旦缺失却会带来极大严重后果。如何确保业务连续性,提升韧性,是企业需要解决的“基础”而又“永恒”的问题。

代闻表示,作为行业云服务的领先者,亚马逊云科技自2006年发布第一款云服务至今,已提供了超过 240 种功能全面的服务,积淀了一套行之有效的提升云服务“韧性”的方法,包括设计、实践、实施,工程经验的积累等,希望分享给行业,大家共同来促进企业业务的“韧性”发展。

首先,由果导因,亚马逊云科技将常见的系统故障的归因进行了分类:

基础设施层——包括数据中心、主机、机架、网络故障,或自然灾害导致的损坏;

架构设计层——数据状态、应用程序状态异常、依赖项失效等;

运营机制层——由运维操作、代码部署、配置错误等引起的故障。

“亚马逊云科技过去的18年里,在基础设施的设计落地、系统架构的设计实施、运营机制的不断的积累这三方面都做了非常多的工作。”代闻称。

基础设施怎么建,韧性最好?

亚马逊云科技对基础设施布局设计有一套严格标准。首先,分为区域(Region)和可用区(AZ):

区域(Region),就是亚马逊云科技在世界各地聚集数据中心的物理位置。

可用区(AZ),是区域的下一级。亚马逊云科技将每个逻辑数据中心组称为可用区,每个区域由三个或更多可用区组成。每个可用区又由多个或单个超大数据中心连接组成。

每个可用区的数据中心都有独立的电力、制冷和物理安全设施。

可用区间的距离:同一区域内的可用区之间具有足够的距离,一般在约100公里内。代闻介绍道:“这意味着一个可用区发生电力中断,自然灾害时,区域内其他可用区不会受到任何影响, 安全距离既能防止相关故障,又能实现单位毫秒级延迟的同步复制。“

最后,在可用区内部、可用区之间、区域和区域之间,均铺设光纤线路两两互联,实现高速数据传输的同时任一连接是冗余的。

代闻以亚马逊云科技在中国大陆的两个区域为例对这种基础设施设计进行了介绍:

可用区内部:宁夏或北京区域的每个可用区内有多个数据中心,它们两两之间铺设多条冗余链路互联,可用区内任何数据中心连接直达;

可用区之间:宁夏或北京的每个可用区间由至少两个的传输中心互联,任一可用区的任一数据中心均有多条冗余链路与传输中心互联,跨可用区的任意一个数据中心可通过传输中心互联;

区域与区域互联:在宁夏和北京区域分别实现多层级互联韧性保障之后,北京和宁夏之间通过冗余的连接中心站点和分布的冗余链路互联。这些连接中心站点之间的大带宽冗余链路形成亚马逊云科技坚实的基建骨干网络。

代闻强调道:“这种保障韧性的冗余设计的投资是非常巨大的,但是为了能够实现最高的可用性,亚马逊云科技不会在任何的设计标准和实施的时候打折扣。”

截至目前,亚马逊云科技全球基础设施遍及34个地理区域的108个可用区。

有韧性的“系统架构设计”的基本思维是什么?

代闻认为,对于系统架构设计来保障云服务的韧性,一个基本的思维是控制“失效的范围”。

亚马逊云科技总结云服务自身韧性的四大要素:区域隔离,多可用区;控制面和数据面独立;单元架构;随机分片。

具体来看,

一、 “区域隔离,多可用区”:根据故障隔离边界,亚马逊云科技将服务划分为三种不同类别:可用区级、区域级和全球级,从而控制故障发生时对客户的影响范围。

以全球级服务Amazon IAM为例,在全球级别的控制平面,IAM的增删改逻辑和数据存储架构被切分成细小的计算和存储单元。这些分布式的数据细胞共同提供服务,通过单元细胞模型实现高可用且极小爆炸半径,确保服务韧性。即便在极端情况下,全球控制平面和数据下发出现故障,影响范围仅限于无法创建新的IAM信息。但每个区域的数据平面依然可以继续稳定提供本区域的认证授权服务。

二、控制面和数据面独立:亚马逊云科技将服务拆分为控制平面和数据平面两个层面。

代闻介绍这样设计出于两个原因:

其一,确保云服务的数据平面能够独立于控制平面的状态持续稳定运行。即使控制平面出现故障,数据平面也可以正常对外服务。系统的控制面往往由更多组件构成,因此从统计概率上讲,它发生故障的可能性更高,但对于服务的可用性而言,数据平面的可用性比控制平面更为重要。对大多数客户而言,Amazon EC2实例在启动后的持续正常运行,比启动新实例的能力更为关键。

其二,独立扩展互不影响。通常情况下,数据平面的运营容量和控制平面并不一致,数据平面要高于控制平面。隔离后,这两个平面可以根据各自的需求进行独立扩展。

代闻补充解释道:“控制面和数据面的隔离,类似于叫车软件和打车,两者其实是相对独立的。当你坐上车以后,如果一段时间叫车软件没有信号无法响应了,也不影响司机将你送到预定的目的地。很多故障失效的情况关键在于没有把数据面和控制面做到很好的隔离。”

三、单元架构及随机分片:单元架构设计的的核心思想是将整个系统分解为更小的独立单元,当发生故障时,只有该单元受影响,而不会导致整个系统瘫痪。以数据库为例,亚马逊云科技为常规数据库添加分片分区层,并在存储和计算维度将整个系统分害成更小的单元,当发生故障时,无论硬件、网络、电力系统还是代码,都将影响最小化。同时,随机分片可以进一步提高整个应用和系统的可用性。

基于实践总结的“运营机制”的建立

“为确保云服务的韧性,卓越的运营和机制至关重要,也是亚马逊云科技的差异化优势之一。”代闻强调。

如亚马逊CEO Andy Jassy所言,“经验没有压缩算法”,经过18年的发展,目前,亚马逊云科技的运营机制总结为4个模块:服务责任模型、运营就绪审查、持续安全部署、纠错流程。

1.服务责任模型:采用服务所有权模型,激励团队不断改进运营。工程和产品管理工作由小型、多学科团队领导,并对其提供的服务拥有强大的所有权。这种所有权不仅要负责设计和启动服务,还要在生产期间运营它,并在出现问题时随叫随到。

2.运营就绪性审查:在发布和更新亚马逊云科技服务之前,还需要使用运营就绪性审查(ORR)流程对所有新服务进行审查。发布团队会回答一系列关于复原力以及其他已知最佳实践的问题,并使用标准化的运行手册来确保服务符合标准。服务部署后,每周举行运营会议,检查系统的运营性能以及任何悬而未决的问题。

3.安全、持续部署:亚马逊云科技进行服务更新或推出新服务时会使用安全、持续部署管道。通过使用广泛的生产前测试、自动回滚和交错生产部署,将自动化部署安全性构建到发布过程中,能够最大限度地减少错误部署对生产造成的潜在影响。例如,服务的更新从小处开始。更新首先推出到AZ内的单个服务器,并经过指定的等待期来验证没有出现问题。随后更新部署到整个AZ的其余部分,然后部署到其他AZ,然后部署到单个区域,最后部署到其余区域。

4.纠错流程:出现任何问题会利用纠错(COE)流程等事件管理机制来帮助团队了解根本原因。在问题得到缓解后推动全公司的工程冲刺,以确保该问题在所有服务中得到解决,这减少了未来类似事件影响另一个服务的可能性。这些学习被记录下来,并成为ORR过程的一部分,这确保了类似的问题不会再次发生。

另外,为了帮助客户更轻松地提升云中应用的韧性,亚马逊云科技基于自身以及多年服务客户的广泛经验,总结了一套包含了服务、策略和架构最佳实践的“韧性系统建设生命周期框架”。该框架包含五个阶段:设定目标、设计和实施、验证和测试、持续运营以及响应和改进。同时,亚马逊云科技在每个阶段都为客户提供了适用的工具和服务。

2022 年,奇瑞捷豹路虎选择将关键的 SAP 系统迁移至亚马逊云科技云上,成功地迈出了数字化转型的关键一步。通过将 SAP 系统所有模块平移上云,奇瑞捷豹路虎的业务敏捷性、人员工作效率大幅提升。其中,利用亚马逊云科技独有的一个区域三个可用区特性,并在亚马逊云科技特有的自适应跨可用区高可用集群进行整体切换基础上,创新性提出高可用和同城灾备融合方案,使用云上三个可用区及引入仲裁方案使集群可靠性、稳定性得到增强,最大限度地减少了停机时间和保障零数据丢失,故障切换时间从半小时缩短至 3 分钟。

“构建韧性是一个持续的过程,而不是一次性的努力”,代闻强调道,“亚马逊云科技每天稳定启动的Amazon EC2实例超过1亿,每秒 API请求数高达100万亿。正是因为做对了很多事情,才有今天全球数百万客户的选择和信任。”

0 阅读:0

TechWeb

简介:专注于互联网消费领域,提供互联网产品等最新资讯。