把腾讯搬上云:云服务器CVM的半部进化史
6月16日,腾讯对外宣布自研业务已实现全面上云,两年上云规模早已突破5000万核,累计节约成本超过30亿。这意味着包括QQ、微信、腾讯视频、王者荣耀等在内的腾讯业务,早已实现和腾讯云百万级外部顾客一样,基于公有云的模式来开发营运。
在腾讯集团中级执行总工裁、云与智慧产业事业群CEO汤道生看来,腾讯自研业务上云将除了帮助腾讯建立了面向未来的技术构架和研制文化,也全面磨炼了腾讯云的产品、技术和综合服务能力。这将帮助腾讯开启云端生长新时代。
岁月回溯至2018年。彼时,腾讯做出历史上第三次战略升级,宣布植根消费互联网,拥抱产业互联网。伴随战略调整的是,腾讯在技术上启动了自研上云和开源协同两个集团级工程。
作为一个涉及腾讯业务基座改革的技术工程,自研上云意味着腾讯云的技术和产品将直面腾讯这个超级顾客的考验。其中的难点在于,腾讯自研业务除了有着业界首屈一指的体量和复杂性,并且还在稳定性上有着最苛刻的要求。
从结果来看,腾讯云在这个考场上成功经受住了考验,腾讯云的产品能力也以此实现了蝶变和进化。其中,承当着最基础也是最核心角色的腾讯云云服务器CVM,便是一个注脚。
“损耗降不出来,云就上不了”
自研上云这个决定一度让CVM云服务器团队激动不已。对她们来说,过去总是被顾客灵魂叩问的问题“腾讯业务用的是腾讯云吗?”——即将拥有一个理直气壮的答案。
但要把腾讯复杂的自研业务搬上云却没有想像的这么简单,首当其冲的挑战便直指CVM的核心性能指标:虚拟化耗损。
所谓虚拟化,就是将化学服务器的资源联接成一个大的服务器资源池,并能根据须要分割、组合为各类尺寸的云服务器。虚拟化能解决传统IT在敏捷性、灵活性和可扩充性上的不足,实现更高的工作负载联通性和更高的资源可用性。
但虚拟化也有软肋:化学服务器在进行虚拟化的过程中,作为任务进程的虚拟化必不可少地会占用化学服务器的资源,也就是虚拟化耗损。
腾讯自研业务关注虚拟化耗损,一方面是由于腾讯自研业务多数是面临海量用户,每位业务模块对单台服务器的性能要求都比较高,过低的耗损将影响业务稳定性;另一方面,耗损占掉过多资源都会造成业务须要占用更多的服务器,这将会让上云后的成本不降反升。
说到这儿,还须要插空回顾一段腾讯云虚拟化技术选型的历史——
2013年,腾讯云面临对虚拟化技术路线选择:是选择业界成熟但可能在未来遇见性能困局的Xen,还是选择社区新锐但仍未验证过的KVM。
经过决策,腾讯云在国外率先扎进了KVM的技术队列,一方面是由于KVM在技术构架上有着更好的前景,在面对超大规模集群场景下更有优势;另一方面,KVM社区当时早已有很高的活跃度,符合腾讯拥抱开源的技术思路。
此后几年行业的发展证明了当年腾讯云选择的正确性,KVM渐渐成为所有主流云估算厂商的虚拟化方案。腾讯云也由于在KVM领域初期投入和持续精耕,仍然保持着在虚拟化领域的行业领先性。
但是,尽管这样的领先性在自研业务的高要求下,仍然面临着巨大的挑战。
彼时,腾讯云在服务器虚拟化上性能耗损大概在15%,即使已是行业最好的水平。但自研业务例如陌陌、QQ群业务,对虚拟化性能耗损接受预期在8%以内。换言之,假如虚拟化耗损降不出来,这种业务就上不了云。
死磕虚拟化耗损的优化,成了此后几个月CVM团队的一号任务。
经过定位,团队找出优化方向:
在网路虚拟化层面,团队发觉虚拟化网卡底层存在着一个VPC网路,对于UDP的随机端口的访问性能比较差,于是采用加网卡队列数的形式,保证网路性能,同时在网路IO的设计上开创性地设计出单独拷贝和nevercopy的机制,确保整个过程当中不会再进行过多的拷贝因而节约开支;
在CPU虚拟化层面,为了解决云服务器的核间通讯带来的性能开支过大的问题,团队采用云服务器虽然CPU空闲的时侯也不出让给宿主机的形式,确保云服务器独占资源;
与此同时,腾讯云首款自研服务器星星海也即将投入生产环境使用,带来更适配云端的硬件支撑;
……
软硬件联合多样化调优后,CVM服务器的实测虚拟化开支突飞猛进地增加到5%以内。这甚至超乎业务团队的预料。
让CVM团队印象深刻的是,腾讯广告业务一度提出,为何用了云服务器性能相比之前用化学服务器还提高了20%多,要求尽早定位清楚……
解决了虚拟化耗损大指标的问题,自研上云的第一个绊脚石算是被初步解决。但上云的挑战还远没有结束。
“被人肉ddos的觉得”
因为面对的业务场景有着超出过往任何顾客的复杂度和体量,CVM团队还须要面对各类各样的问题。
以性能测试为例。过去,行业在进行云服务器性能验证,因为很难穷举每一个用户场景,所采用的是功能性的的验证,主要沿袭业界比较规范的几个指标。
但在腾讯自研业务上云中,业务愈发倾向于在不同场景下做精细化的测试。例如QQ红包,大的类别分场景测试和性能压测,其中一个场景测试,就分辨了三种场景,近十个的指标项,例如延时、丢包率等等。
不止于此,QQ红包的团队的测试标准跟QQ基础团队的测试标准又有区别,在QQ群场景中测试逻辑又会变化。再扩充到陌陌、游戏、视频等业务场景下,须要应对的问题更是翻番下降。好多时侯,很难预想到的一个小开关、某一个小改动,还会彰显到在不同业务上出现问题。
“你这个丢包如何如此高?”、“你们性能打到这又打不起来了?”一堆问题蜂拥而来,CVM团队经常有种被人肉DDoS的觉得。
最终,通过跟业务团队的一次次初验对接,CVM团队与业务团队合作,对性能点进行针对性调优。
同时,CVM团队在综合不同业务部门需求的前提下,整合了一个更大、更多样、更偏向业务的测试工具集,涵盖了不同语言环境的编译测试、AI测试等诸多子项,才能反映出云主机在真实业务场景中的实际表现。
不仅技术本身的优化外,CVM团队还要经常应对一些非技术型问题。
例如,在陌陌业务上云时,业务团队发觉一个依赖系统在90核(45化学核心)的CVM云主机当中服务器中运行效率异常低下。经过CVM团队、星星海团队、微信团队联合剖析发觉,因为代码产生于陌陌业务初期,运行逻辑存在一定的特殊性,这造成其在双数化学核心上运行时会形成奇特的效率增加;而化学机核心数目都是单数,所以问题并没有在之前的运行中曝露。在业务部门更新代码然后,这个性能问题迎刃而解。
腾讯游戏《天涯明月刀手游》是另外一个反例。当时,这款大作上云以后,业务团队发觉云服务器性能不及预期,致使游戏服务器常常处在高负载状态,玩家死机、登录异常时有发生。业务团队只能不断安抚玩家情绪。假如任由局势继续,游戏的营运和生命周期就会遭到巨大影响。
经过CVM团队和业务团队联合定位,问题最终明晰:原先在申请资源时没有考虑云服务器位宽与此前游戏设计时的显存匹配,造成云服务器形成持续的高负载情况,而这一问题在更换新的云服务器以后得到顺利解决。事后,腾讯云团队也收到了业务团队分享的庆功披萨。
诸这么类的技术优化和服务经验,也在被不断地注入到腾讯云的产品服务和交付体系中,为云上用户提供经过严酷场景历炼的保障。
“利用率提起来,成本降出来”
不仅增效,降本也是业务对上云的核心关切。CVM团队在云服务器装箱率上动起了脑筋。
所谓云服务器装箱率,就类似于用袋子装东西时对袋子空间的借助率。因为物品无法同时装到两个袋子里,所以袋子里物品码放的越整齐,能装的东西就越多。置于云服务器场景中也一样,云服务器里的配置之和越接近于宿主机的容量,就意味衣着箱率越高,资源借助率越好。
在腾讯自研业务场景下,却不得不面临这样一种问题:就是好多业务因为使用场景和习惯,一般须要大尺寸配置的服务器。
这都会带来一个问题:如果一台数学宿主机有80个核心,而业务需求是60核,这么剩下的20核应当如何用?倘若不能投入使用,对于腾讯自研业务上云的体量来说,都会带来巨大的资源浪费。
只有借助率提起来,成本能够降出来。
为了解决这一问题,CVM团队在首次装箱的时侯就根据不同业务的资源需求对装箱率进行最优化配置,尽量保证化学服务器才能“用好用满”。而对于云服务器退订所形成的资源间隙,CVM团队则能利用成熟的热迁移技术会定期进行统筹调度,找到合适的业务补足。
最终,在自研业务上云工程中,腾讯云的服务器装箱率从之前的80%+一路下降到现今97-98%,急剧减少了营运成本。
结语
在腾讯自研上云工程中,业务目标不是简单的将业务从化学机迁往云上虚拟机。但腾讯云CVM在一路的历炼中不断实现自身的产品进化:
她们通过网路优化和构建数据迁移流程,让云服务器的迁移成功率从70提升到了98%;
她们找到了处理器厂商显存RAS技术中的不足,让云服务器的可靠性急剧提高;
她们优化了云服务器的网路和IO性能,分别实现了700%和300%的性能提高;
她们在腾讯大会最关键的时刻,支撑业务8天扩容100万核;
在自研上云的基础上,她们现在把虚拟化耗损增加到0%;
……
正是在这样一轮轮的进化中,腾讯自研上云的基石不断打牢、扎深,并支撑自研业务迈向云原生的新未来。