把腾讯搬上云:云服务器cvm的半部进化史

CSDN资讯 CSDN资讯     2022-11-29     309

关键词:

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的设计上开创性地设计出单独拷贝和never copy的机制,确保整个过程当中不会再进行过多的拷贝从而节省开销;

在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%;

……

正是在这样一轮轮的进化中,腾讯自研上云的基石不断打牢、扎深,并支撑自研业务走向云原生的新未来。

项目上云实战:如何把java项目搬上云服务器?(代码片段)

...。答案是否定的,专业的软件开发企业都会选择linux服务器作为运行环境,企业服务器有两种:一种是实体机房,一种是云服务器。2.传统机房和云服务器如何选择如今使用云服 查看详情

项目上云实战:如何把java项目搬上云服务器?(代码片段)

...。答案是否定的,专业的软件开发企业都会选择linux服务器作为运行环境,企业服务器有两种:一种是实体机房,一种是云服务器。2.传统机房和云服务器如何选择如今使用云服务器企业的比例已经大大超过传统机... 查看详情

terraform系列一腾讯云cvm相关简单创建(代码片段)

背景:记得2019左右就看到过Terraform系列的文章和书籍,当时所有的业务都上云了管理也很是方便,看了一眼就没有作过多的研究。但本着对技术发展的前瞻敏锐性,还是觉得这个东西是会火起来的。正巧最近泽阳... 查看详情

terraform系列三腾讯云cvm中的玩法(代码片段)

...ip信息,不用去控制台查找ip信息,可以直接登陆服务器了。1.catoutput.tfoutput"cvm_az"value="$tencentcloud_instance.cvm_almalinux.availability_zone"output"cvm_id"value&# 查看详情

javaweb项目上云教程(java项目在腾讯云上部署操作教程)(代码片段)

文章目录前言一、白嫖服务器二、配置服务器并远程连接三、安装宝塔面板并开放端口四、安装搭建环境五、部署项目前言我们一直都在本地开发运行Java的项目,从未在云端部署,此教程可以教你将本地项目上云,... 查看详情

javaweb项目上云教程(java项目在腾讯云上部署操作教程)(代码片段)

文章目录前言一、白嫖服务器二、配置服务器并远程连接三、安装宝塔面板并开放端口四、安装搭建环境五、部署项目前言我们一直都在本地开发运行Java的项目,从未在云端部署,此教程可以教你将本地项目上云,... 查看详情

腾讯云cvm云服务器评测:标准型s5s6

一、腾讯云CVM云服务器评测:标准型S5、S6腾讯云服务器CVM标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性... 查看详情

弹性配置为构建提速-coding&腾讯云cvm最佳实践(代码片段)

...建任务。但如果碰上了大型项目的构建,或者需要在本地服务器生成构建成果,单个计算资源就显得有点捉急了。针对这一部分需求,CODING现已支持接入第三方计算资源作为构建节点,甚至可以接入多个服务器共同作为构建节点... 查看详情

腾讯云服务器cvm标准型s5实例五年活动时长来了请把握!

腾讯云服务器CVM五年时长,2核2G服务器5年1728元、2核4G1M带宽五年3550、4核8G服务器6437元五年,CVM标准型S5实例可选2核2G、2核4G和4核8M,公网带宽可1M、3M和5M,系统盘为50G高性能云硬盘,S5云服务器CPU采用Intel®Xeo... 查看详情

突破进化,腾讯云数据库2018全年盘点

...观国内前几大云服务商过去一年的云数据库领域的发展,腾讯云基于自身强大的业务支撑以及技术研发实力,在云数据库市场的突破格外引人注目。具体来说,针对存量市场,2018年下半年,腾讯云重磅推出云原生数据库CynosDB,... 查看详情

腾讯云轻量服务器和云服务器区别12点不同之处

关于腾讯云轻量应用服务器和云服务器CVM的区别,之前腾讯云百科写过一篇文章来对比,阿腾云又更新了一篇新的区别对比文章,比之前的要更加详细,包括轻量服务器的使用限制、CPU型号、公网限制月流量、内... 查看详情

远程连接管理mysql(解决腾讯云等cvm无法连接的问题)

步骤mysql-uroot-p>grantallprivilegesondatabaseName.*touserName@'%'identifiedby'passwordCode';>flushprivileges;>exit其中,1)grant语句中可以修改为*.*任意数据库的任意表。2࿰ 查看详情

javaweb项目上云教程(java项目在腾讯云上部署操作教程)

文章目录前言一、白嫖服务器二、配置服务器并远程连接三、安装宝塔面板并开放端口四、安装搭建环境五、部署项目前言我们一直都在本地开发运行Java的项目,从未在云端部署,此教程可以教你将本地项目上云,... 查看详情

terraform系列二腾讯云cvm进一步相关玩法(代码片段)

背景:紧接Terraform系列一腾讯云CVM相关简单创建。准备围绕着cvm先熟悉一下基本的流程。比如:系统盘扩容,挂载数据盘,帐号密钥ssh-key,绑定公网ip.研究一下官方文档体验一下!Terraform系列二腾讯云CVM... 查看详情

terraform系列二腾讯云cvm进一步相关玩法(代码片段)

背景:紧接Terraform系列一腾讯云CVM相关简单创建。准备围绕着cvm先熟悉一下基本的流程。比如:系统盘扩容,挂载数据盘,帐号密钥ssh-key,绑定公网ip.研究一下官方文档体验一下!Terraform系列二腾讯云CVM... 查看详情

腾讯云构建自己的网站

...,这里主要使用的是腾讯云、宝塔。1、领取腾讯云云服务器腾讯云中有免费的服务器可以领取,萌新可以在腾讯云领取自己的服务器,一般为15天的免费服务器,可以花5元升级为30天,并可以选定一个域名ÿ... 查看详情

腾讯云cvm&linuxcentos7防止暴力ssh登录实践(代码片段)

前言昨天登录服务器的时候发现有10万多次的SSH登录失败次数:如上图,很明显是被人恶意用暴力SSH登录去试密码,特意看了一下这个ip,好像确实是一个臭名昭著的SSH恶意攻击的主机地址:废话不多说,... 查看详情

腾讯云cvm&linuxcentos7防止暴力ssh登录实践(代码片段)

前言昨天登录服务器的时候发现有10万多次的SSH登录失败次数:如上图,很明显是被人恶意用暴力SSH登录去试密码,特意看了一下这个ip,好像确实是一个臭名昭著的SSH恶意攻击的主机地址:废话不多说,... 查看详情