美国运通使用Go语言优化支付与奖励系统

American Express
Quotation mark.

Go语言与其他编程语言的本质区别在于认知负荷。您可以用更少的代码实现更多功能,这使得代码更易于推理和理解。

大多数Go代码看起来都相当相似,因此即使您面对一个全新的代码库,也能快速上手并投入工作。

— Glen Balliet忠诚度平台工程总监  at American Express

Go语言优化微服务架构并提升开发效率

美国运通成立于1850年,是一家全球性综合支付公司,提供签账卡与信用卡产品、商户收单与处理服务、网络服务以及旅行相关服务。

美国运通的支付处理系统在其漫长的发展历程中不断构建,并历经多次架构演进与更新。在所有更新中,支付处理系统的核心要求始终是:在极高交易量下保持快速响应,同时确保系统韧性,并满足安全与合规标准。借助Go语言,美国运通为其支付网络和奖励系统获得了所需的速度与可扩展性。

现代化美国运通系统

美国运通深刻认识到编程语言格局正在发生剧烈变革。公司现有系统虽为高并发和低延迟场景量身定制,但管理层预见到这些系统将在近期进行平台迁移。支付平台团队决定花时间评估哪些语言最契合美国运通不断演进的需求。

美国运通的支付与奖励平台团队是首批开始评估Go语言的团队之一。这些团队专注于微服务、交易路由和负载均衡用例,并需要实现架构现代化。许多美国运通开发者熟悉Go语言的能力,并希望在其高并发和低延迟应用(例如定制交易负载均衡器)中试点使用Go语言。基于这一目标,团队开始向高层领导倡导在美国运通支付平台上部署Go语言。

“我们希望为支付处理找到编写快速高效应用的最优语言,”美国运通副总裁兼首席工程师Benjamin Cane表示,“为此,我们发起了一场内部编程语言‘对决’,旨在确定哪种语言最符合我们的设计和性能需求。”

语言对比评估

在评估过程中,Cane的团队选择用四种不同的编程语言构建一个微服务,然后从速度/性能、工具链、测试能力和开发便捷性四个维度对这四种语言进行比较。

他们选定的服务是ISO8583到JSON的转换器。ISO8583是金融交易的国际标准,在美国运通支付网络中广泛使用。在编程语言选择上,他们对比了C++、Go、Java和Node.js。除Go语言外,其他三种语言均已在美国运通内部使用。

从速度维度看,Go语言以每秒140,000个请求的处理能力位居第二。测试表明,Go语言在后端微服务场景中表现卓越。

虽然Go语言可能并非测试中最快的语言,但其强大的工具链显著提升了整体评价。Go语言内置的测试框架、性能分析功能和基准测试工具给团队留下了深刻印象。“用Go编写高效测试非常容易,”Cane表示,“基准测试和性能分析功能使应用调优变得简单。加上其快速的编译速度,Go语言让编写经过充分测试和优化的代码变得轻松。”

最终,团队选定Go语言作为构建高性能微服务的首选语言。完善的工具链、测试框架、卓越性能和语言简洁性都是关键因素。

Go语言基础设施

“我们的许多服务运行在基于Kubernetes的内部云平台的Docker容器中,”Cane说道。Kubernetes是用Go语言编写的开源容器编排系统,提供主机集群来运行基于容器的工作负载,特别是Docker容器。Docker同样是用Go语言编写的软件产品,它使用操作系统级虚拟化技术提供称为容器的便携式软件运行时。

美国运通还通过Prometheus收集应用指标——这是一个用Go语言编写的开源监控与告警工具包,可收集和聚合实时事件与指标以支持监控和告警。

Kubernetes、Docker和Prometheus这三套Go语言解决方案,共同助力美国运通实现了基础设施的现代化。

用Go语言提升性能

如今,美国运通有数十名开发者使用Go语言进行编程,其中大多数致力于设计高可用性和高性能平台。

“工具链始终是我们传统代码库的关键需求领域,”Cane表示,“我们发现Go语言拥有出色的工具链,加上内置的测试、基准测试和性能分析框架,使我们能够轻松编写高效且具有韧性的应用程序。”

使用Go语言后,我们大多数开发者都不愿再回到其他语言。

— Benjamin Cane副总裁兼首席工程师  at American Express
美国运通刚从Go语言中看到收益。例如,Go从设计之初就以并发为核心——使用轻量级的"协程"而非重量级的操作系统线程——使得在同一地址空间内创建数十万协程成为可能。借助协程,美国运通在其实时交易处理中观察到了性能指标的提升。

Go的垃圾回收机制相较于其他语言也是重大改进,无论在性能还是开发便捷性方面。“我们在Go中看到的垃圾回收效果远好于其他语言,而垃圾回收对实时交易处理至关重要,“Cane表示,“在其他语言中调优垃圾回收可能非常复杂,而使用Go时你无需进行任何调优。”

欲了解更多,请阅读《在Go中选择Go》一文,该文深入探讨了美国运通采用Go语言的过程。

让您的企业开始使用Go

正如美国运通正在使用Go现代化其支付和奖励网络,其他数十家大型企业也在采用Go。

全球有超过一百万开发者使用Go——涵盖银行与商业、游戏与媒体、技术及其他行业,分布在众多企业中,包括PayPalMercado Libre、Capital One、Dropbox、IBM、Mercado Libre、Monzo、New York Times、Salesforce、Square、Target、Twitch、Uber,当然还有Google。

欲了解更多关于Go如何帮助您的企业像在美国运通那样构建可靠、可扩展的软件,请立即访问go.dev

American Express American Express

About American Express

Go语言为美国运通的支付网络与奖励系统提供了必要的速度与可扩展性。