写点什么

规避云服务宕机的架构设计方法

  • 2021-01-18
  • 本文字数:1499 字

    阅读完需:约 5 分钟

规避云服务宕机的架构设计方法

本文最初发表于For Else网站,经原作者 Jeff Carter 许可,由 InfoQ 中文站翻译分享。


前段时间,AWS 发生宕机事故,很多服务中断。从架构角度,我们如何去应对这种宕机,网上有很多相关讨论。但是这些讨论太复杂,并且在成本、复杂性和权衡方面差异很大。所以,我决定简要介绍其中的一种方法。

多云


首先,就是关于多云价值的讨论。它的理念就是在多个云中运行你的应用。



通过将负载分散到多个供应商,我们就能在其中的某一个供应商出现故障的时候得以幸免于难。在理论上,这种方式听起来很不错!当然,两家云厂商不会同时宕机。但是,在实践中,由于种种原因,在应用层面这样做是很困难的:


  • 每种云的基础设施是不同的

  • 部署的复杂性会大幅度增加

  • 两者之间的带宽费用相当高昂


鉴于此,多云架构并不是高可用的可行方案(少数的边缘情况除外)。

多 Region


接下来,是关于多 Region 的讨论。AWS Region 是由多个可用区(availability zone,AZ)组成的,每个 AZ 是一个或多个的数据中心,它们具有独立的电源、网络和连接。在一个 Region 的多个 AZ 中运行能提供高可用性,但是无法提供灾难恢复(Disaster Recovery,DR)功能。为实现这一点,我们需要多个 Region。一个非常简略的多 Region 结构如下所示:



这种方式解决了多云架构的多个问题:


  • 应用依然在同一个云中运行,所以基础设施保持不变

  • Region 是完全独立的,因此能获得同样的可用性优势

  • Region 之间的带宽费用要比云之间的费用低得多


但令人遗憾的是,大多数的评论都是围绕 Active-Active 的多 Region。也就是将负载同时分布到多个 Region,这带来了很多关于持久化同步方面的复杂性。同时,这种方式也会增加部署方面的复杂性,并且很多地方都很容易出错,甚至它本身的停机时间比 AWS 导致的宕机时间可能还要长。

多 Region DR


这是一种常被忽视的方案。它的理念是在同一时间只有一个 Region 处于活跃状态,在发生灾难的时候,另外一个备用的 Region 能接管系统的功能(因此是 DR)。这种方式和上面所述方案的收益是一样的,但是它能极大地规避全 Active-Active 架构的复杂性。在这种架构下,备用 Region 不用完全构建,只需要复制持久化数据即可。



但是,稍等,在发生灾难时,部署完整的应用栈难道不需要一段时间吗?是的,是这样的,不过这是允许的!对大多数常见的中断场景来说,高可用是通过使用多 AZ 实现的,这种方式就足够了。如果整个 Region 出现问题,就像我们前段时间在 AWS 上所看到的那样,花费小于一个小时的时间从备份中建立一个新的应用栈,仍然要比大于八个小时的中断更可取。这个过程可以通过自动化的方式来进行简化,但即便是手动的(但经过了实践检验)操作,有可选的备用方案也是很重要的。


所以,我们更深入地探讨一下这种架构:


  • 应用程序像平常那样部署在主 Region 中

  • 使用 AWS 托管的服务、备份和副本实现数据持久化,这通常只需要一两个配置即可:

  • 在不同的 Region 中为 RDS 添加一个读副本

  • 创建 Dynamo DB global 表

  • 启用 S3 bucket 副本

  • 在进行故障恢复的时候,将应用程序部署在其他的 Region 上,并更新 DNS 的设置

  • 这一过程要定期进行测试


这是一个银弹吗?绝不是。它并不适用于任何类型的工作负载,也绝对不可能适用于任何类型的宕机。然而,它是一个相对简单的方案,并且有一定的成本效益。


总结


总之,中断肯定是会发生的,这丝毫不会降低 AWS 的价值,但是这确实表明了良好架构和规划的重要性。我们可以设计一些非常昂贵和复杂的系统来缓解这些中断,但这对大多数客户来说是过犹不及和不切实际的。幸运的是,我们还有一些其他的选择,它们可能会提供一个“足够有效”的解决方案,并有合理的权衡,这应该成为在 AWS 上开展工作时的“最佳实践”。


原文链接:


https://www.forelse.io/posts/architectures-for-mitigating-aws-outages

2021-01-18 12:002871
用户头像
张卫滨 业精于勤,行成于思。

发布了 589 篇内容, 共 435.5 次阅读, 收获喜欢 761 次。

关注

评论 1 条评论

发布
用户头像
成本为王,不做备份
2021-01-20 10:49
回复
没有更多了
发现更多内容

AB Test来了!天润融通语音Agent升级你的外呼/呼入策略

天润融通

一文搞懂 MCP Servers

量贩潮汐·WholesaleTide

MCP

通义灵码 AI IDE 上线,第一时间测评体验

阿里巴巴云原生

ide 阿里云 通义灵码

这个调整用不了你几分钟,你为啥还要收费?

程序员郭顺发

加密货币钱包开发指南:多链资产管理与非托管安全范式

区块链软件开发推广运营

交易所开发 dapp开发 公链开发 代币开发 链游开发公链开发

区块链开发范式地图:DApp/交易所/钱包/链游的技术选型与架构演进

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 公链开发代币开发

第五届平潭IM两岸青年影展联合即梦AI发起“AIGC单元”

极客天地

存储与野生动物保护:Solidigm为创新保育工作保驾护航

科技热闻

天润融通AI训练师助力企业重构核心竞争力

天润融通

【银河麒麟高级服务器操作系统】正式上线云主机官方镜像

京东科技开发者

低代码平台演进:如何深度赋能企业数字化转型核心场景?

电子尖叫食人鱼

低代码

通义灵码 AI IDE 上线,第一时间测评体验

阿里云云效

阿里云 通义灵码

议程一览 | KubeCon China 2025 华为云精彩前瞻

华为云原生团队

云计算 容器 云原生

决策延迟!你的管理决策正在被拖垮

禅道项目管理

数字化进程 BI 分析工具 效能管理 研发效能度量 #项目管理

JDK从8升级到21的问题集

京东科技开发者

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

镜舟科技

数据处理 金融 greenplum 湖仓一体 镜舟数据库

重磅!支持鸿蒙!腾讯视频ovCompose跨平台框架发布

最新动态

禅道5月更新速览 | 新增交付物配置功能,支持建立跨执行任务依赖关系,研发效能平台上线

禅道项目管理

项目管理 甘特图 #研发效能 研发效能度量 研发效能管理

数造科技通过CMMI 3级认证,研发能力获全球权威背书

数造万象

大数据 数据治理 科技 热点 人工智能、

Apache Doris + MCP:Agent 时代的实时数据分析底座

SelectDB

人工智能 大数据 实时数仓 apache doris MCP

设计模式-策略模式

京东科技开发者

JUC并发—volatile和synchronized原理(二)

不在线第一只蜗牛

Java JVM

CAD教程|CAD文字一键对齐,图纸排版难题秒解决!

在路上

cad

鸿蒙电脑来了!这波“鸿蒙有礼”太香了,薅超多羊毛不是梦!

最新动态

鸿蒙NEXT上传图片功能PhotoViewPicker核心功能解析

飞龙AI

ArkTS HarmonyOS NEXT

浩辰AI楼梯让建筑设计智能化!

在路上

cad 浩辰CAD

DApp开发全解:从智能合约到去中心化治理的架构演进

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

交易所系统攻坚:高并发撮合引擎与合规化金融架构设计

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 交易所开发公链开发

一面被挂,坚持刷题两月终入字节跳动,欣喜之余把算法与数据结构高频面试题分享给大家!

程序员高级码农

程序员 算法

JUC并发—volatile和synchronized原理

不在线第一只蜗牛

Java JVM

Claude 4提升码农生产力的5种高级方式

秃头小帅oi

规避云服务宕机的架构设计方法_架构_Jeff Carter_InfoQ精选文章