首页 >科技周边 >IT业界 >Amadeus云迁移在Ampere Altra实例上

Amadeus云迁移在Ampere Altra实例上

Christopher Nolan
Christopher Nolan原创
2025-02-09 12:02:13532浏览

Amadeus Cloud Migration on Ampere Altra Instances

(本文最初由Ampere Computing发表)

您可能不熟悉Amadeus,因为它是一家B2B公司……但当您在互联网上搜索航班或酒店时,您很有可能在幕后使用了Amadeus支持的服务,Amadeus云架构师Didier Spezia如是说。

Amadeus是一家全球领先的旅游IT公司,为旅游业的众多参与者提供支持:航空公司、酒店连锁店、旅行社、机场等。Amadeus的业务之一是为旅行社和Kayak或Expedia等公司提供航班搜索和定价服务。Amadeus还支持更高级的功能,例如基于预算的查询和日历约束查询,这些功能需要预先计算多维索引。在众多航空公司中搜索具有可用座位的合适航班非常困难。

获得最佳解决方案被认为是一个NP难题,因此为了提供尽力而为的答案,Amadeus结合使用了蛮力法、图算法和启发式算法。它需要大型分布式系统并消耗大量CPU,如今在Amadeus的内部设施上运行在数千台机器上。为了满足客户的需求,Amadeus在全球运营着多个内部设施,还在多个云服务提供商上运行工作负载。

项目

几年前,Amadeus启动了一个大型的、为期多年的项目,旨在将其大部分内部资源迁移到Azure。对于这个具体的用例,Amadeus与微软合作验证了基于Ampere ARM的虚拟机(VM)。

微软的Mo Farhat在讨论中评论道:

从我们的立场来看……[微软]希望为我们的客户提供选择。我们不会将[他们]引导到一种架构与另一种架构……或一个CPU与另一个CPU之间。我们希望提供一系列选项并提供可信的建议……

最初,作为过渡的一部分,Amadeus并不一定有兴趣引入不同的架构。Spezia表示:

我们只引入不同的架构,因为我们期待一些好处……我们非常关注我们可以从Ampere获得的性能/价格比……我们希望能够将使用传统x86 CPU的机器与使用Ampere CPU的机器混合起来,并在最适合该工作负载的CPU上运行工作负载。

他们选择了一个大型的、分布式的、计算密集型的C 应用程序作为第一个在Ampere上运行的应用程序,因为他们认为这与x86相比将提供最大的比较优势。

我们认为基于ARM的机器可能是一个不错的选择,但当然,我们需要验证和确认我们的假设。我们首先运行了许多合成基准测试。……结果是积极的,但合成基准测试并不十分相关。由于在生态系统中引入新的CPU架构并非中性,因此我们需要更好的保证,并决定使用真实的应用程序代码进行基准测试。……该应用程序是一个大型C 代码库。它依赖于许多底层的开源库,加上一些Amadeus中间件库,最后是功能代码本身。此代码的一个子集已被隔离用于在测试平台上运行基准测试。

使该项目取得成功的因素之一是Amadeus团队能够在项目早期获得Ampere服务器。Didier表示:

首先,Amadeus在内部安装了几台带有Ampere Altra CPU的机器。它们用于最初的移植工作,并且至今仍在运行我们的CI/CD。由于我们正处于向公共云迁移的过程中,并且与复杂的生态系统高度混合,因此我们非常感谢能够在内部部署一些机器,这些机器与微软在Azure中提供的VM具有相同的CPU架构。我们发现,使用运行目标架构的机器进行CI/CD和测试,而不是进行交叉编译,是无价的。

该应用程序的CI继续在Amadeus实验室中的Ampere服务器上运行。

挑战

我们的代码移植始于使用与Arm64兼容的工具链(Aarch64目标)重新编译所有内容,这对我们的CI/CD产生了影响。

将此代码移植到Ampere的过程非常顺利,尽管发现了一些问题。一些特定于平台的编译器行为,例如“char”数据类型是有符号还是无符号,在x86和Arm64上有所不同,并且应用程序对行为做出了假设。

为了编译他们的大型C 代码库,Amadeus同时使用了GCC和Clang C 编译器。作为移植的一部分所需更改中,一些开源依赖项需要升级,以利用改进的Arm64支持。其中一些升级涉及API或行为更改,需要进一步的代码更改。此外,作为迁移的一部分,在x86上未显示自身的一些潜在代码问题(与未定义或平台定义的行为有关)被暴露并修复。

部署

在云中,Amadeus应用程序部署在OpenShift集群(Red Hat基于Kubernetes的容器平台)上。为了在生产环境中运行,应用程序需要一个完整的中间件生态系统(企业服务总线、日志记录和监控设施等),该生态系统也托管在OpenShift中。

Amadeus不想将其整个应用程序基础设施迁移到Arm64。另一个值得信赖的合作伙伴Red Hat已经将支持异构硬件架构的Kubernetes功能作为支持的功能交付到OpenShift中。

具体来说,这意味着单个OpenShift集群可以包含x86和ARM计算节点。通过使用x86和Arm64节点定义节点集,并使用标签和“污点”来部署容器,开发人员可以轻松决定要安排pod的VM类型。因此,Amadeus应用程序基础设施的支持组件可以在传统的x86 VM上运行,而Amadeus决定出于成本和性能原因在Arm64上运行的应用程序pod可以在由Ampere Altra CPU驱动的Azure Dps v5 VM上运行。

异构集群对于支持增量迁移和避免将OpenShift集群的数量增加一倍至关重要。

结果

显然,在进入生产环境之前,Amadeus希望通过一些基准测试来验证他们的假设。使用cpubench1a合成基准测试,使用32个vCPU的VM,单个Ampere Altra VM(D32ps_v5)提供的原始吞吐量高出20%,性能/价格比比同等Intel VM提高了50%,比同等AMD VM的原始吞吐量高出13%,性能/价格吞吐量高出27%。

当使用真实的购物应用程序基准测试进行基准测试时,吞吐量和响应时间之间存在权衡。吞吐量越高,响应时间受到的影响越大。Ampere Altra VM的性能/价格比提高了47%,平均响应时间比Intel VM下降了11%,比AMD VM的性能/价格比提高了37%,平均响应时间下降了9%。

Amadeus现在已经移植了足够的应用程序组件来运行真实的应用程序(不仅仅是基准测试)。该公司目前正在完成集成测试并验证平台的最后部分。完成后,Amadeus将开始在多个Azure区域扩展生产环境。

Ampere的首款云原生处理器专为可持续的云计算而构建,可提供业界前所未有的可预测的高性能、平台可扩展性和电源效率。我们邀请您了解更多关于我们的开发人员工作的信息,查找最佳实践、见解并加入对话:developer.amperecomputing.com和community.amperecomputing.com。

与我们的专家销售团队联系以了解合作伙伴关系或获取更多信息,或通过我们的开发者访问计划获得Ampere Systems的试用访问权限。

以上是Amadeus云迁移在Ampere Altra实例上的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn