美国运通使用 Go 进行支付和奖励

American Express
Quotation mark.

Go 与其他编程语言的不同之处在于认知负荷。您可以使用更少的代码完成更多工作,这使得推理和理解最终编写的代码变得更容易。

大多数 Go 代码最终看起来非常相似,因此,即使您使用的是全新的代码库,您也可以快速上手。

— 格伦·巴利特忠诚度平台工程总监  在 American Express

Go 改进了微服务并提高了生产力

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

美国运通的支付处理系统在其悠久的历史中得到开发,并已在多次架构演变中得到更新。在任何更新中,最重要的是支付处理必须快速,尤其是在非常大的交易量下,并且必须在所有系统中构建弹性,而所有系统都必须符合安全和监管标准。使用 Go,美国运通获得了其支付和奖励网络所需的快速性和可扩展性。

实现美国运通系统的现代化

美国运通了解到编程语言领域正在发生巨大变化。该公司现有的系统专为高并发和低延迟而构建,但知道这些系统将在不久的将来重新构建平台。支付平台团队决定花时间确定哪些语言最适合美国运通不断变化的需求。

美国运通的支付和奖励平台团队是最早开始评估 Go 的团队之一。这些团队专注于微服务、事务路由和负载平衡用例,并且需要对其架构进行现代化改造。许多美国运通开发人员熟悉该语言的功能,并希望试用 Go 来实现其高并发和低延迟应用程序(例如自定义事务负载平衡器)。带着这个目标,这些团队开始游说高级领导层在美国运通支付平台上部署 Go。

美国运通副总裁兼首席工程师本杰明·凯恩说:“我们希望找到一种最佳语言来编写用于支付处理的快速高效的应用程序。”“为此,我们发起了一场内部编程语言比拼,目标是找出哪种语言最符合我们的设计和性能需求。”

比较语言

对于他们的评估,凯恩的团队选择用四种不同的编程语言构建一个微服务。然后,他们比较了这四种语言的速度/性能、工具、测试和开发难易程度。

对于该服务,他们决定使用 ISO8583 到 JSON 转换器。ISO8583 是金融交易的国际标准,并且在 American Express 的支付网络中普遍使用。对于编程语言,他们选择比较 C++、Go、Java 和 Node.js。除了 Go 之外,所有这些语言都在美国运通内部使用。

从速度的角度来看,Go 以每秒 140,000 个请求的成绩取得了第二好的性能。Go 表明在用于后端微服务时,它表现出色。

虽然 Go 可能不是测试中最快的语言,但其强大的工具帮助提高了其整体结果。Go 的内置测试框架、分析功能和基准测试工具给团队留下了深刻的印象。凯恩说:“在 Go 中编写有效的测试很容易。”“基准测试和分析功能使调整我们的应用程序变得简单。再加上其快速的构建时间,Go 使编写经过良好测试和优化的代码变得容易。”

最终,Go 被团队选为构建高性能微服务的首选语言。工具、测试框架、性能和语言的简单性都是关键因素。

Go 用于基础设施

凯恩说:“我们的许多服务都在我们基于 Kubernetes 的内部云平台内的 Docker 容器中运行。”Kubernetes 是一个用 Go 编写的开源容器编排系统。它提供主机集群来运行基于容器的工作负载,最著名的是 Docker 容器。Docker 也是一个用 Go 编写的软件产品,它使用操作系统级别的虚拟化来提供称为容器的可移植软件运行时。

美国运通还通过 Prometheus(一个用 Go 编写的开源监控和警报工具包)收集应用程序指标。Prometheus 收集并聚合实时事件和指标,用于监控和警报。

Kubernetes、Docker 和 Prometheus 这三个 Go 解决方案帮助美国运通基础设施实现了现代化。

使用 Go 提高性能

如今,美国运通有许多开发人员都在用 Go 编程,其中大多数都在设计用于高可用性和高性能的平台上工作。

Cane 说:“对于我们的传统代码库来说,工具一直是关键需求领域。”“我们发现 Go 拥有出色的工具,以及内置的测试、基准测试和分析框架。编写高效且有弹性的应用程序很容易。”

“在使用 Go 之后,我们的大多数开发人员都不想再使用其他语言了。”

— Benjamin Cane,  美国运通副总裁兼首席工程师  

美国运通才刚刚开始看到 Go 的好处。例如,Go 从一开始就考虑了并发性——使用轻量级“goroutine”而不是更重量级的操作系统线程——这使得在同一地址空间中创建数十万个 goroutine 变得切实可行。通过使用 goroutine,美国运通在其实时交易处理中看到了性能数字的提升。

Go 的垃圾回收也是对其他语言的一项重大改进,无论是在性能还是在开发的容易性方面。“我们在 Go 中看到的垃圾回收结果远好于其他语言,而垃圾回收对于实时交易处理来说是一件大事。”Cane 说。“在其他语言中调整垃圾回收可能非常复杂。使用 Go,您无需调整任何内容。”

要了解更多信息,请阅读 “在 American Express 选择 Go”,其中更深入地介绍了 American Express 采用 Go 的情况。

让您的企业开始使用 Go

就像美国运通使用 Go 来实现其支付和奖励网络的现代化一样,还有许多其他大型企业也在采用 Go。

全球有超过一百万开发人员在使用 Go——涵盖银行和商业、游戏和媒体、技术和其他行业,在像 PayPalMercado Libre、Capital One、Dropbox、IBM、Mercado Libre、Monzo、New York Times、Salesforce、Square、Target、Twitch、Uber 和 Google 等企业中。

要详细了解 Go 如何帮助您的企业构建可靠、可扩展的软件(就像在 American Express 中一样),请立即访问 go.dev

American Express American Express

关于 American Express

Go 为 American Express 提供了其支付和奖励网络所需的快速性和可扩展性。