带你读《阿里云产品五月刊》——七、最佳实践:阿里云倚天ECS在千寻位置时空智能服务的规模化应用

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 最佳实践:阿里云倚天ECS在千寻位置时空智能服务的规模化应用

简介: 阿里云、平头哥及安谋科技联合举办的飞天技术沙龙探讨了倚天Arm架构在业务创新中的应用。活动中,千寻位置运维专家分享了将核心业务迁移到倚天处理器ECS实例的成功案例,强调了倚天处理器的高能效比和降本增效优势。迁移过程涉及操作系统、CICD系统和监控系统的适配,以及业务系统的性能测试。目前,千寻已迁移了上千台ECS实例到倚天处理器,实现了成本和效率的显著提升。未来计划继续扩展倚天处理器在核心业务和K8S中的应用。

 

5月16日,由阿里云、平头哥及安谋科技共同主办的飞天技术沙龙《业务创新新选择,倚天Arm架构深入探索》在上海成功举行。来自阿里云、平头哥及安谋科技的专家为现场观众深入解读了Arm架构的核心优势,并重点分享了基于倚天710的计算实例g8y在大数据和视频领域优化的最佳实践,以帮助企业用户了解倚天ECS实例如何在成本、效率方面提供助力。

 

image.png

图:千寻位置运维专家李轲韡

 

现场,千寻位置运维专家李轲韡分享了《阿里云倚天在时空智能服务上的规模化应用》主题演讲,重点分享了千寻位置的核心业务迁移至倚天ECS实例的最佳实践以及迁移的经验,以下内容根据他的演讲整理而成。

 

我是来自千寻的李轲韡。今天很高兴和大家分享千寻位置在迁移倚天处理器ECS实例背后的故事。现在千寻已经有上千台ECS实例运行在倚天处理器上。

 

1. 为什么要迁移到倚天处理器

  image.png

 

很简单,降本增效。倚天处理器是一个能效非常高的处理器,用少量的研发资源投入,实现一个比较高性价比的产出,通过这种技术的演进路线,可以有效降低阿里云上的云资源成本。

 

接下来介绍整体的迁移步骤,首先是支撑系统的准备,包括调研操作系统、选型、基本的适配工作。

 

第二是CICD系统的适配,也就是CICD系统需要兼容ARM架构和X86架构。运维和开发操作ECS时,不应该关注ECS到底是ARM还是X86,系统应该能够自动处理掉。

 

第三是监控系统的适配,倚天处理器的ECS上在做基础指标的采集时,有一定的适配工作。

 

完成了基础系统的准备工作后,就可以做业务系统的准备。我们知道C++代码在X86和ARM处理器上要重新编译,而绝大多数的Java代码可以直接使用,所以需要把所有和处理器架构相关的代码做重新编译。

 

接下来对功能进行完整的回归测试,做必要的性能上的压力测试,业务系统也准备就绪了。

 

最后是迁移的策略,千寻在制定迁移策略时有两个假设。第一,对于自研系统,只要投入足够多的人力是一定可以迁移的。第二,对同一份代码,无论运行的ECS实例数是多少,投入迁移的人力成本是差不多的。基于这两点假设,我们制定了迁移策略。

 

把相同代码的ECS实例的费用做了排序,当同样一份代码运行的ECS所花掉的钱越多,就越先迁移。从金额由高到低逐步迁移,最后定了一个比例,当百分之多少的应用全部迁移完,就完成了。把目标和策略定完后,开始逐步迁移工作。

 

image.png

2. 迁移前准备工作

下面是准备工作中遇到的具体情况。

 

首先基础环境的准备。之前用的是阿里云的六代ECS,Intel Xeon Platinum 8269CY的CPU,目标是倚天710。操作系统原来用的是Alibaba Cloud Linux 2,在阿里云的ECS上使用Alibaba Cloud Linux可以获得阿里云免费的商业支持,在操作系统的层面遇到的问题,阿里云会支持的相对好一些,所以千寻一直选用这个操作系统。

  image.png

 

在倚天710上,阿里云唯一官方商业支持的操作系统是Alibaba Cloud Linux 3,考虑到Alibaba Cloud Linux 2明年三月份就会终止生命周期,借着迁移倚天710的机会,把操作系统从Alibaba Cloud Linux 2升级到了Alibaba Cloud Linux 3。

 

接下来是JDK,原来在X86实例上千寻用的JDK是Oracle JDK的1.8.0_192版本,也就是1.8系列的最后一个免费版本,后面的版本都是收费的。在ARM上换成了OpenJDK,更换的理由在后面PPT详细介绍。

 

image.png

上图展示的是性能对比测试数据。这是千寻的C++应用,上面两条曲线是X86处理器,下面两条是ARM处理器。上面两条曲线的平均值分别是47%和41%,下面两条都是26%,可以看到性能提升都超过50%以上。

 

image.png

这是纯Java应用的一个性能对比测试。ARM处理器在同样的CPU核心数下,它的性能略低一点。ARM处理器的CPU占用率是69%,X86的CPU占用率是64%。

 

image.png

为什么要更换OpenJDK?因为Oracle JDK的最后一个免费版本在ARM处理器上没有G1 GC特性的。因为千寻的业务对数据延时非常敏感,当没有G1 GC支持时,数据延时的波动在一秒以上,下面这个图在使用了OpenJDK开启了G1 GC的特性后,整个数据延时在200ms左右。为了保证业务的低延时特性,我们在ARM处理器上更换成了OpenJDK。

 

接下来是迁移过程中碰到的一个现象。Linux内核是每隔五秒采集一次负载,每采集一次负载会消耗掉一个CPU时间片的时间。当负载采样时,它是根据滑动窗口逐步滑动的,比如第一个时间片,后面第二个时间片,经过若干次采样后,会回到最早采样的时间点。

 

千寻的业务特性是秒脉冲,所有的服务器在每一秒的前几个时间片里都特别忙,在每一秒的后面的时间片都特别闲。在X86处理器上CPU的时间片默认是一毫秒,这导致每隔1毫秒,5秒采一次,也就是5000秒,大概83分钟,每隔83分钟会有一个负载波动的周期。

  image.png

在ARM处理器上时间片默认是四毫秒,只需要250次采样就完成一个负载周期,也就是1250秒,大概是21分钟不到。我们看到系统的负载波动没有变化,但是在ARM处理器上,负载波动曲线频率是X86处理器上的4倍。这只是一个现象,不代表任何问题,开发团队关注到了并分析了原因。

  image.png

接下来是要关注的问题。左边是一段示例代码,可以看到它的行为,在test load的方法里面正常应该返回一个布朗值。在if条件没有触发时,没有写return true。在main方法里面调用两次,正常情况下第一次应该能够执行并且打一条信息,第二次不会进入if的条件。在老的X86处理器的平台上,Alibaba Cloud Linux 2以及GCC 7版本的编译器发现无论有没有return true,编译结果和执行结果没有任何区别。

 

在GCC 10上,编译的时候会提示一个警告,函数不应该返回为空。在X86上可以看到,它会运行两次,错误地进入两次if条件,然后出现一个段错误。在ARM处理器上进入一次后,程序卡住了。过了一会儿被系统OOM杀掉了。注意一些老的代码可能会遗漏return,在老的编译器上没有任何问题的情况下,使用新的GCC 10编译时,如果看到返回函数有一个返回类型的警告,一定要把警告处理掉。

 

否则会出现各种各样奇怪的问题。这里举的例子,一个段错误,一个OOM被杀掉。我们看到在开启O3编译时,最后的main方法,return被编译器丢掉了,导致整个执行栈进入到错误的堆栈中,把一些正确定义的变量写坏掉,会出现各种奇怪的现象,所以这种类型的编译警告一定要处理掉。

3. 正式迁移

上面是所有的准备工作,接下来是正式迁移。

  image.png

这是千寻位置核心业务迁移的时间线。今年4月份开始做初步的调研工作。在倚天处理器的ECS上做了一些基本工作。5月份在测试环境进行完整的功能测试,同时做了一定规模的性能测试。6月份其中一条核心业务线的生产ECS替换了50%的ECS为倚天处理器实例,运行了一段时间没有问题。

 

7月份把这条业务线所有的ECS全部替换成倚天处理器实例。8月份发现这条业务线跑的没问题,所以其他业务线开始逐步推广适配倚天ECS。9月份其他业务线逐步在生产环境做50%的替换,这个替换工作现在还在持续进行中。

  image.png

下面是一个性价比的测算。这边挑了两个场景,分别是千寻的业务对于倚天处理器最友好的场景和最不友好的场景。原来用的是第6代的C6系列,和C8Y系列做对比,同样是8核16G的ECS,第一个场景C++,40G的磁盘。倚天处理器的ECS只能购买ESSD,原来用的高效云盘,所以磁盘的成本会高一些。

 

价格是官网原价,没有任何折扣。原来C6的实例是762元,倚天是532.5元。性能基准C++的话,倚天的性能基准在C++场景大概是原来C6实例的1.46倍,整体性价比提升在100%以上。也就是原来用X86的ECS 1000元能干完的事情,换成倚天只要不到500元。

 

下面是一个纯Java应用场景。它的磁盘也比较大,它的ESSD会花更多钱,价格差距没那么大,888元和712.5元。因为Java的基准性能ARM会略低,所以整个性价比提升在15%以上。C6的1000元能干完的事,换成倚天的不到850元。这两个场景相对比较极端,千寻平均换倚天的收益是多少?大概是30%以上。


image.png

接下来是几点注意事项。

 

第一是后面的分享中会提到Easy Yitian的工具,可以帮助快速评估程序迁移倚天处理器的兼容性。

第二是周边的配套系统。为了配套整个倚天ECS相关的业务系统生产环境,CICD和监控系统要提前进行准备和测试工作。

第三是拉长时间线,灰度迁移。因为操作系统和JDK版本都换掉了,灰度迁移可以尽可能把问题提前暴露出来,降低影响。

 

因为整个迁移过程拉的比较长,在这个过程中,所有的X86和ARM的测试环境和CICD的环境是需要长期共存的。比如一个应用迁了半年才迁完,这半年中,每发布一个版本,所有的X86和ARM版本要分别测一遍,直到最后一台X86的生产服务器下线,全部换成ARM。

 

接下来是ECS宿主机的打散度。千寻现在有上千台倚天ECS实例,但是阿里云倚天处理器的宿主机,相比于X86处理器的宿主机数量比较少,虽然X86和倚天整个底层的故障率没有区别,但是千寻实例相对比较多,在倚天处理器的宿主机上,可能一台宿主机上跑了3台,5台,6台千寻的实例。

 

如果一台宿主机发生故障,千寻业务可能感受比较明显。如果涉及到比较大量的倚天ECS的迁移,建议和阿里云提前沟通好ECS在宿主机上的打散度怎么样。另外阿里云提供了一个ECS部署集功能,可以强制把ECS打散到不同的宿主机上,这部分可以根据迁移时的情况和阿里云沟通。

 

最后是我们验证发现ARM处理器在上下文切换场景特别多的情况下,性能会下降。这部分可能从业务上考虑,尽可能避免上下文切换。

4. 后续计划

  image.png

在后续计划中,首先千寻会继续迁移核心业务到倚天处理器的实例,希望把核心业务全部迁移到基于倚天的处理器的ECS实例上。第二点考虑把K8S的worker也迁移到基于倚天处理器ECS实例。

 

第三点是RDS经济版,基于倚天的RDS只有MySQL 8.0,目前千寻还有很多业务跑在5.6、 5.7上,需要做完改造后,再往RDS经济版上迁。最后千寻对外输出的项目能否借鉴倚天处理器的迁移经验。

 

以上就是本次分享的全部内容。


相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
弹性计算 监控 负载均衡
|
3月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力
优化SSR应用以减少服务器压力,可采用代码分割、缓存策略、数据预加载、服务端性能优化、使用CDN、SSR与SSG结合、限制并发请求、SSR与CSR平滑切换、优化前端资源及利用框架特性等策略。这些方法能有效提升性能和稳定性,同时保证用户体验。
|
8天前
|
存储 弹性计算 安全
阿里云服务器购买后设置密码、安全组、基础安全服务、挂载云盘等流程简介
对于初次选购阿里云服务器的用户来说,通过阿里云推出的各类活动买到心仪的云服务器仅仅是第一步。为了确保云服务器能够正常运行并承载您的应用,购买之后还需要给云服务器设置远程登录密码、设置安全组规则、设置基础安全、购买并挂载云盘等操作之后,我们才能使用并部署自己的应用到云服务器上。本文将详细介绍在阿里云的活动中购买云服务器后,您必须完成的几个关键步骤,助您快速上手并充分利用云服务器的强大功能。
|
1月前
|
开发者 ice
实时云渲染中的NAT转发服务支持个人电脑秒变云渲染服务器
实时云渲染技术广泛应用于XR领域,助力数千客户完成云端部署。平行云推出的转发服务解决了家庭网络动态IP问题,使个人电脑成为实时云渲染服务器,按实际使用分钟数计费,无用户访问不收费。通过配置LarkXR的代理转发Server和ICE Server,开发者可轻松实现互联网访问内网XR应用,极大提升了开发、测试和演示的便利性。
|
1月前
|
存储 人工智能 网络协议
浅聊阿里云倚天云服务器:c8y、g8y、r8y实例性能详解与活动价格参考
选择一款高性能、高性价比的云服务器对于企业而言至关重要,阿里云推出的倚天云服务器——c8y、g8y、r8y三款实例,它们基于ARM架构,采用阿里自研的倚天710处理器,并基于新一代CIPU架构,通过芯片快速路径加速手段,实现了计算、存储、网络性能的大幅提升。2025年,计算型c8y云服务器活动价格860.65元一年起,通用型g8y云服务器活动价格1187.40元一年起,内存型r8y云服务器活动价格1454.32元一年起。本文将为大家详细解析这三款实例的性能特点、应用场景以及最新的活动价格情况,帮助大家更好地了解阿里云倚天云服务器。
|
3月前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
2月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
3月前
|
弹性计算 人工智能 数据安全/隐私保护
【手把手教你】如何免费畅快使用阿里云ECS搭建私有Overleaf论文写作服务
本文详细介绍如何利用阿里云ECS免费搭建私有Overleaf论文写作服务,包括ECS服务器的部署、Overleaf服务的安装、TexLive包的更新、XeLaTeX修复、中文字体支持及账号管理等步骤。通过这些操作,你可以实现免费且高效的多人协作论文写作,避免付费版本的高昂费用。适合需要频繁合作撰写论文的团队使用。
223 1
【手把手教你】如何免费畅快使用阿里云ECS搭建私有Overleaf论文写作服务
|
3月前
|
弹性计算 监控 容灾
阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行
在数字化时代,企业对信息技术的依赖加深,确保业务连续性至关重要。阿里云ECS提供强大的云上灾备解决方案,通过高可用基础设施、多样的数据备份方式及异地灾备服务,帮助企业实现业务的持续稳定运行。无论是小型企业还是大型企业,都能从中受益,确保在面对各种风险时保持业务稳定。
70 4
|
3月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
68 2

热门文章

最新文章