
万万没想到
2026年6月11日,美国运通科技发布了关于“用于弹性支付系统的基于单元的架构”的文章。
核心支付生态系统
美国运通的核心支付生态系统是受全球持卡会员和合作伙伴信赖的全球平台,每天处理实时支付交易,需要高可用性、低延迟和可预测的性能。弹性从一开始就被融入系统设计,局部故障会被限制在既定边界内,恢复过程快速且可预测。为实现这一目标,平台采用基于单元的架构构建,能隔离故障、保持低延迟处理并扩展容量。
核心支付生态系统现代化之旅
2018年,美国运通开启核心支付生态系统现代化之旅。该平台处理实时卡支付和其他支付交易,对持卡会员和合作伙伴至关重要。弹性是主要设计要求,新平台采用云原生技术,需以不同方式思考弹性和可扩展性设计。接下来将讨论核心支付生态系统遵循的设计原则,这些原则能提高可靠处理支付的能力,降低延迟并更轻松地扩展。
什么是基于单元的架构?
基于单元的架构是云原生分布式系统领域日益流行的架构模式。其核心是将相关微服务、数据库和其他组件组合成独立单元,每个单元可独立运行,无需依赖其他单元。其主要优点是缩小故障影响范围,一个单元出现问题不会影响其他单元,但会增加管理开销和架构复杂性。不过,对于支付这样的关键任务系统,缩小故障影响范围和提高弹性的好处超过了额外的复杂性。若实施得当,还可降低延迟、提高可扩展性。
如何采用基于单元的架构
核心支付生态系统的每个实例设计为单元,具备可独立部署、拥有自身组件、是单一故障域、可在维护或故障时移除且不影响系统、处理交易关键路径无同步跨单元依赖等特点。单元由故障边界定义,处理交易所需的一切都保持在边界内。为实现这一点,遵循一套核心原则,确保单元独立且有弹性。
默认的数据和处理本地化
处理支付需要数据,对于静态或半静态数据,如汇率、商户类别代码等,将其复制到每个单元。提前在每个单元预填充这些数据,可避免处理过程中的缓存未命中延迟,保持关键路径隔离。复制工作在交易路径之外进行,使数据在本地可用且不引入同步跨单元依赖。
动态数据路由
并非所有数据都可预填充,对于动态数据,使用确定性路由将交易路由到已有正确数据的单元。全球交易路由器负责管理连接并路由交易,它根据支付规范和交易数据做出路由决策。通过将微服务通信限制在单元的Kubernetes网络内,保持交易处理本地化。为同步故障转移数据,复制在交易路径之外异步进行,不影响延迟或可用性。只允许微服务与本地数据库实例通信,通过在边缘引入确定性路由,确保交易被路由到正确单元。
严格控制入站和出站边界
全球交易路由器不仅负责路由,还充当“仅本地处理”原则的执行者。交易必须通过它进入单元,若需重新路由也必须经过它,它还充当支付网络连接单元。随着平台发展,通过它严格控制跨单元通信,可防止单元间形成强依赖,虽可能导致服务重复,但能保持单元独立性并提高延迟。同样,在可观测性方面,每个单元先将信息发布到本地组件,部分可观测性堆栈故障不影响整个平台,仍会异步聚合数据。
单元独立故障,其他单元替代
利用将交易重新路由到其他单元的能力是弹性策略的关键部分。故障发生时,影响限制在受影响单元内,交易自动重新路由到健康单元。不仅重新路由新进入的交易,还重新路由正在处理的交易。支付处理子系统采用编排式微服务架构,编排器检测到故障会将交易送回全球交易路由器重新路由。不会跨单元继续处理部分完成的交易,而是在另一个单元重新开始处理。只有在交易仍在核心支付生态系统内时,重新启动才安全。通过交易标识符管理幂等性,避免重复交易和数据一致性问题。单元设计为松耦合,一个单元故障不影响其他单元,重新路由的交易不依赖前一个单元的状态,一个单元可随时移除,另一个单元会取而代之。
边缘最小化依赖
全球交易路由器位于边缘,为确保其可用性,力求将系统内的依赖降至最低,且让依赖不在关键路径上。如使用异步日志记录器,若日志记录基础设施不可用,丢弃日志而不阻塞交易处理;维护内存中的配置,若配置服务不可用,继续使用最后已知的配置运行。将依赖排除在关键路径之外可减少故障点,需权衡接受非关键功能的降级以确保交易处理正常进行。
总结
在分布式支付系统中,弹性需通过定义明确的故障边界并实施来实现。将核心支付生态系统组织成独立、可恢复的单元,将重大故障转化为可控的路由决策。本地化、确定性路由、幂等处理和严格的边界控制共同作用,确保增长和变化不增加风险。这些原则是基于单元的架构的基础,使美国运通能够运营低延迟、高弹性的全球支付平台,也将继续塑造其发展。
关于作者
本杰明·凯恩是美国运通的杰出工程师,在全球商户与网络服务技术团队中,推动技术架构和工程卓越。他专注于支付领域,擅长构建高性能、低延迟的分布式系统,对美国运通云原生支付平台的发展起到重要作用,还是活跃的开源社区成员并为多个项目做出贡献。
近期文章
本杰明·凯恩与特里斯坦·富恩特斯的文章《零停机两次迁移支付网络》介绍了在复杂的应用程序和基础设施变更中,保持全球交易流畅的架构和协调方法。本杰明·凯恩的文章《美国运通的Go语言应用:七个关键经验》探讨了美国运通采用Go语言时遇到的痛点,以及和该语言的发展历程。
美国运通所有在线服务的用户需遵守 隐私声明,并同意受 使用条款 的约束。
© 2026美国运通。保留所有权利


被折叠的 条评论
为什么被折叠?



