麦斯科技 · 2022年02月28日

Dream11通过简单地迁移到Graviton2 实例系列,获得了显著的性能

https://aws.amazon.com/blogs/gametech/dream11-saved-42-compute-cost-by-simply-migrating-to-the-graviton2-instance-family/

作者:Nikhil Mamania 2022年2月22日

Dream11拥有超过1.2亿用户,是世界上最大的奇幻体育平台,提供奇幻板球、足球、卡巴迪、篮球、曲棍球、排球、手球、橄榄球、五人制足球、美式足球和棒球。Dream11是印度领先的体育科技公司Dream Sports的旗舰品牌,与多个国家和国际体育机构以及板球运动员建立了合作关系。

为了有效地增强云操作,Dream11与企业支持部门(AWS提供的最高级别支持部门)密切合作,以优化其托管在AWS云上的基础设施的成本。企业支持部门的技术客户经理(TAM)就多项战略计划提供了指导,并建议将工作负载从Intel迁移到Graviton2处理器实例。AWS在其年度活动re:Invent2020上发布了Graviton2处理器。它提供的性能优势满足了Dream11的期望,价格降低了40%。Graviton2有一套不同的处理器指令,我们想测试在上面部署应用程序的可行性。我们进一步与TAM合作,以确定对业务而言不那么关键但具有更高成本优化潜力的应用程序。经过一系列讨论,我们决定选择一个自我管理的服务spark来迁移到Graviton2处理器。这款spark cluster是一款CPU和内存密集型应用程序,非常适合使用Graviton2处理器,以测试基于Intel处理器的性能和基准测试。

在本博客中,我们将向您介绍Dream11上使用的PDF服务Spark的体系结构,解释每一层的重要性以及它们之间的交互。然后,我们将解释迁移方法、Dream11面临的挑战,以及Graviton2是如何在成本优化过程中拯救我们的。

PDF服务Spark 架构:

根据Dream11的公平竞争政策,在幻想体育比赛开始之前,用户可以下载一份PDF文档,其中包含参与该特定比赛的其他用户及其团队的详细信息。我们使用一个自我管理的PDF服务Spark cluster来生成PDF文件。

下图描述了PDF服务Spark群集的体系结构。

ExplanationofdataflowandArchitecture-1024x670.png

数据流和体系结构说明:

如图所示,我们使用STEP函数触发Spark,从S3 bucket读取参赛者详细信息及其团队详细信息。Spark使用这些细节生成PDF文件,并将其存储回S3 bucket中,以便通过CloudFront下载到fantasy sports。此外,这些细节会写入Cassandra数据库,在该数据库中,会对领导委员会的功能进行点计算。这一点会随着在场球员在比赛中的表现而不断变化。排行榜决定了比赛结束时得分最高的获胜者。最初,Spark cluster在m4.4xlarge实例类型。后来,它被移植到m6g.4xlarge实例类型。

迁移方法和挑战:

为了开始迁移,在m6g上部署了PDF服务Spark应用程序。4xStaging环境中的大型实例类型,以进行功能测试,并检查应用程序库与Graviton2处理器的兼容性。我们必须升级应用程序库,使应用程序与Graviton2处理器兼容。在一次成功的健全性检查之后,我们决定执行负载测试,以确保应用程序能够承担类似于印度超级联赛(IPL)规模的负载。IPL2020的最终匹配在Dream11上看到了超过550万用户并发,因此,我们决定使用相同的并发级别来执行负载测试。早些时候,该应用程序在80个m4.4xlarge按需实例上运行。因此,我们在m6g.4xlarge上部署了相同数量的实例。在负载测试期间,我们观察到m4上的CPU利用率增加。4xlarge的CPU利用率为42%,而m6g的CPU总利用率为42%。大型实例类型为32%。

Graviton2是一款基于ARM的处理器,具有不同的处理器指令集。使应用程序与Graviton2兼容是另一个挑战,因此,为了减少内核/操作系统级库的兼容性挑战,我们计划从CentOS 7升级到CentOS 8。此外,我们还应用了最新的操作系统安全补丁,以减少系统的漏洞。由于应用程序依赖性,我们决定使用jdk-8u301-linux-aarch64。Graviton2处理器上的rpm。在软件包方面,我们还需要将GCC库升级到最新版本,因为它不是默认的CentOS 8存储库。迁移的其余部分是无缝的,可以在Graviton2处理器上运行应用程序。

性能比较:

我们决定在Intel vs Graviton2实例上对550万并发用户进行性能基准测试。

屏幕截图 2022-02-28 225806.png

表1–Intel与Graviton 2处理器的80个实例类型的比较。

显然,与基于英特尔处理器的实例相比,基于Graviton2处理器的实例提供了更好的性能。因此,我们决定再次测试,但计算能力降低了25%。这一次,我们对60个m6g.4xlarge实例进行了负载测试。我们惊讶地发现,PDF生成所用的时间几乎与在80个m4.4xlarge实例上运行时所用的时间相同。

屏幕截图 2022-02-28 225822.png

表2:80个Intel和60个Graviton实例的Intel与Graviton 2处理器比较。

我们成功地完成了负载测试,并决定将PDF服务Spark应用程序转移到生产环境中。我们在IPL 2021之前部署它并在整个比赛中使用它。与之前的IPL赛季相比,我们确实看到了PDF生成过程中性能的提高,这是因为在整个锦标赛期间使用了Graviton处理器,当时Spark cluster在基于Intel处理器上运行。

时间表:

总的来说,在生产环境中部署应用程序大约需要三周的时间。对于初始阶段设置,我们花了一周时间在AWS云上部署infra。在staging
环境中,我们成功地执行了代码更改和功能测试。接下来,花了整整一周的时间进行负载测试。我们测试了550万用户的并发性,并成功地检查了所有edge案例,以确保应用程序投入生产时不会出现故障。在成功的负载测试之后,我们有信心将Graviton2处理器用于PDF服务Spark应用程序。

到第三周,我们将应用程序转移到生产infra设置中。为了在生产环境中开始使用该应用程序,我们在几天的时间里将一些受影响较小的环节转移到了一种新的体系结构上,并采用了在基于英特尔的处理器上运行该应用程序的备份策略。正如预期的那样,我们没有遇到任何问题,并决定在新的应用程序堆栈Gravion2上运行所有轮。在此过程中,没有出现任何问题或故障。

好处:

与基于Intel处理器相比,Graviton2处理器提供了更好的价格和性能。Dream11在m4.4xlarge上部署了PDF Service Spark应用程序。为了满足1.2亿多用户的规模和超过550万用户的并发性,我们扩展了集群,部署了80个m4.4xlarge实例。我们还意识到,仅仅通过从Intel迁移到Graviton2处理器,我们每月就节省了大约10746美元(23%)的计算成本。

屏幕截图 2022-02-28 225840.png

表3:Intel(80个实例)与Graviton(80个实例)的成本比较

在负载测试期间,我们发现Graviton2实例具有更好的处理器性能,这使我们能够将计算实例的数量进一步减少25%。因此,我们用60个m6g.4xlarge实例进行了测试。这使每月的总计算成本减少了19739美元(42%)。

屏幕截图 2022-02-28 225856.png

表4:Intel(80个实例)与Graviton2(60个实例)的成本比较

下一步:

Dream11的项目非常成功,我们已经计划将其迁移到Graviton2处理器,从而将其复制到其他应用程序中,以获得价格和性能优势。

总结:

在Dream11规模的成功测试运行之后,他们的开发人员和DevOps团队被鼓励采用Graviton2来优化成本和性能。我们继续进行负载测试,发现基于Graviton2的实例的CPU利用率远远低于基于intel的实例。我们意识到,在不影响PDF生成过程性能的情况下,通过将基于Graviton的实例数量减少到60个节点,可以进一步将计算节点减少25%。这有助于每月将总成本降低42%。

推荐阅读
关注数
5845
内容数
525
定期发布Arm相关软件信息,微信公众号 ArmSWDevs,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息