美国运通的 Cell-Based 架构:构建高韧性支付系统的实战经验
美国运通的核心支付生态系统是一个服务全球持卡人和合作伙伴的全球平台,每天处理海量实时支付交易,要求高可用性、低延迟和可预测的性能。
韧性(Resiliency)在这个系统中不是事后才考虑的问题,而是从一开始就编码在了系统设计中。实现这一切的核心,就是基于 Cell(单元)的架构模式。
什么是 Cell-Based 架构?
Cell-Based 架构将相关的微服务、数据库和其他组件分组为独立的实例,称为 Cell。每个 Cell 能够独立运行,不依赖其他 Cell。主要优势是缩减故障爆炸半径——如果 Cell 出问题,不会影响其他 Cell。
对于支付这种关键任务系统,缩减故障爆炸半径和提升韧性带来的收益远远超过了增加的架构复杂度。
核心设计原则
每个 Cell:是独立可部署的单元,能自主处理支付;拥有自己的一套微服务、数据库;是一个单一故障域;可独立从轮换中移除进行维护;在事务关键路径上没有同步的跨 Cell 依赖。
对于汇率、商户类别码等静态数据,提前复制到每个 Cell,避免事务处理中的远程读取。对于动态数据,使用全球事务路由器进行确定性路由,将交易送到已有最新数据的 Cell。跨 Cell 通信严格通过路由器管控,Cell 之间不能直接通信。
故障隔离与恢复
当故障发生时,其影响被控制在受影响的 Cell 内,事务自动重路由到健康 Cell 重新处理。关键决策:不在 Cell 之间恢复部分处理的事务,而是在另一个 Cell 中重新开始。每个事务携带唯一标识符,用于幂等性检测。
全球事务路由器位于边缘,依赖保持在最小。如果日志基础设施不可用,丢弃日志而不阻塞事务处理;如果配置服务不可用,使用最后已知配置继续运行。
总结
在分布式支付系统中,韧性需要定义清晰的故障边界并通过设计来强制执行。本地化、确定性路由、幂等处理和严格的边界执行共同作用,确保增长和变更不会增加风险。