当超大规模云服务商仅在一个地理区域内部署时,架构选择相对简单。工程师只需要针对单个区域的可用性进行优化,选择合适的数据库一致性模型,并调整自动扩展策略。成本结构透明,延迟特征可预测。而增加第二个或第十四个区域,则会同时从根本上改变这两个维度,而且几乎从来都不会只有好处。

我曾经多次在跨区域部署过程中做过这种权衡。塑造这一框架的关键决策包括:采用同步还是异步复制、哪些依赖关系需要跨区域边界进行连接,以及在何种情况下新增区域能降低成本而非增加成本。

打开网易新闻 查看精彩图片

多区域决策框架:为何简单的数学方法行不通

在接触区域扩展的初期,我曾经将这种决策视为一个简单的算术问题。我们在亚洲的用户面临着 250 毫秒的延迟。在新加坡新增一个区域可以将延迟降至 30 毫秒。如果该区域的月成本为 X 美元,改善延迟带来的收入为 Y 美元,那么当 Y > X 时则进行扩展。

随着时间的推移,这种模型被证明是不够完善的。区域成本并非固定不变,复杂性会不断累积,而且延迟改善中有相当大一部分往往是源于路由优化,而非增加区域本身。

新增区域的真实成本剖析

新增区域的总拥有成本包括一些在初步商业案例中通常被低估的方面。

基础设施资本支出
硬件、网络与设施成本(含跨区域网络架构),在我们绝大多数服务上线项目中,约占区域基础设施总成本的 25%。

服务上线开销
在新增区域中运行的每项服务都会产生配置、验证和上线成本。在数百项服务中,我们在正式上线前识别并解决了数千个服务间的依赖关系问题(例如:未记录、循环依赖、冗余,以及在成本或性能方面未达到最优)。

复制与同步成本
跨区域同步复制可能会使写入延迟增加多达一百毫秒。而异步复制虽然能减轻对写入延迟的影响,但会引入最终一致性窗口,需要应用程序层进行处理。

运营开销
运营开销包括额外的值班覆盖、部署管道以及事件响应范围。我们的自动化工作(在十二个月内使数十个服务团队的手动工作量减少了 89%)正是出于防止运营开销随区域覆盖范围扩大呈线性增长的考虑。例如,以前在每次里程碑发布时,区域服务部署都需要由技术项目经理(TPM)手动协调各团队的就绪信号。通过将这些检查点信号自动化,并直接从服务监控中提取健康指标(而非依赖人工确认),我们消除了协调工作中最大的一块协调时间。

跨区域流量成本
跨区域数据传输是云基础设施中每千兆字节成本最高的项目之一。需要频繁进行跨区域数据交换的架构,其持续产生的成本可能在 12 到 18 个月内就会超过一次性部署的投资。

延迟:你真正购买的是什么

降低延迟是扩展区域时最常被提及的理由,却也是最常被误解的。在决定承担新区域的成本之前,值得仔细分析你的延迟预算究竟花在了哪里。

延迟预算分解

表 1:按组成和区域可寻址性划分的延迟预算分解

从本质上讲,网络传播是唯一与地理位置相关的因素,因此必须通过物理上的邻近性来解决。所有其他因素均可以通过架构调整、CDN(内容分发网络)部署、连接池、查询优化以及消除依赖关系等方式加以改进;相比新增区域,每种方案的成本都更低。

实际上,经过仔细地延迟监测,结果一再表明,观测到的延迟中很大一部分(通常接近一半)源于非地理因素。优先解决这些问题几乎总是更明智的投资。

什么时候新增区域才是正确的答案

尽管有上述提醒,但在某些场景下,新增区域确实是合理的选择。

数据主权与合规要求
当数据必须根据《通用数据保护条例》(GDPR)、联邦风险与授权管理计划(FedRAMP)或类似框架的要求,在特定司法管辖区内物理存储时,新增一个区域便成为合规的必要条件,而非针对延迟的投资。成本分析的重点也从“每美元的延迟成本”转向“每美元的合规风险”。数据主权与地缘政治风险——无论是源于监管不稳定、政府的数据访问要求,还是供应链连续性方面的担忧——如今已成为区域选择的首要考量因素,对于企业和政府客户而言尤其如此。

要求延迟低于 50 毫秒的一级用户群体
对于实时交易、互动游戏和视频会议而言,受光速传播的物理限制,当大规模用户群体距离现有最近的服务区域超过 3000 公里时,地理就近部署就成了硬性要求。

满足 Active-Active 要求的灾难恢复
若恢复时间目标(RTO)需要控制在 15 分钟以内,则必须在至少两个地理位置上相互隔离的区域部署主动式基础设施。这是一项针对系统韧性的投资;延迟改善则是其带来的一个有益的副作用。

通过本地化运营实现市场扩张
在与具有低延迟 API 要求的本地支付处理商、身份提供商或政府系统进行集成时,出于功能性考虑,无论终端用户的延迟情况如何,可能都需要部署本地区域。

部署架构模式及其权衡

一旦决定增加一个区域,所选的架构模式将决定后续延迟优势与运维成本之间的动态平衡关系。

模式 1:全栈 Active-Active 模式
每个区域都托管着应用程序栈的一个完整且独立运行的副本。用户将被路由到距离最近的区域;每个区域同时处理读写操作。数据以异步方式进行复制,通常采用“最后写入者胜出”机制来处理写入冲突。该模式能带来最大的延迟优势,但运营成本也最高:需要完全复制基础设施、持续进行跨区域数据传输、处理应用层的一致性、解决冲突,以及整个集群的可观测性。最适合的情况是:写入密集型工作负载且用户分布于全球各地,即在所服务的每个司法管辖区内都有数据驻留要求的系统。

模式 2:本地读取 / 全局写入
其中一个区域是全局写入区域;所有区域均通过本地副本处理读取请求。来自非主区域的写入请求在获得确认前会被代理到全局写入区域。读取请求在本地处理,从而在全球范围内提供比较低的读取延迟,但非主区域用户的写入延迟会受到跨区域往返时延的影响。

模式 3:Active-Passive 模式(带自动故障转移)
一个功能完备的主区域处理所有生产流量;辅助区域接收持续复制,但在正常情况下不处理任何流量。辅助区域可以缩减规模(即转为温备)或仅在存储层进行配置(即指示灯模式),这使得该模式在三种模式中具有最佳的成本效益。其权衡在于故障转移时间:5 到 20 分钟,而 Active-Active 模式的故障转移时间则不到 30 秒。其中存在一个隐性的运营风险:从未经过测试的故障转移路径在实际调用时往往会发生故障。请定期进行测试,并在规划中纳入实际故障转移时间,而非理论上的恢复时间目标(RTO)。

表 2:多区域部署模式比较

有一项设计考量贯穿了这三种模式:一致性策略应设定在数据类型层面,而非系统层面。在我们的存储服务中,对象元数据需要强一致性;而复制状态则可以容忍暂时的不一致。那些对所有数据统一应用单个一致性策略的系统,要么对不需要复制的数据进行了过度投资,要么对数据保护不足。Active-Active 模式尤其容易犯这种错误,因为其复杂性使得按类型分析一致性变得更加困难。

经济高效地运营多区域基础设施

是否新增一个区域的决策,与如何经济高效地运营所有区域密不可分。在我们至少三次发布中,运营成本在前两年内的增长速度超过了客户采用率的支撑能力。最具杠杆效应的成本控制措施主要集中在三个方面。

消除关键路径中的跨区域依赖关系
大多数跨区域边界的同步调用都会增加延迟并产生成本。对跨区域请求路径进行分布式追踪时,经常会发现令人惊讶的依赖链:对区域 A 的请求会触发区域 B 的配置查询,进而又触发区域 A 的授权