把腾讯搬上云:云服务器 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 的设计上开创性地设计出单独拷贝和 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%;
……
正是在这样一轮轮的进化中,腾讯自研上云的基石不断打牢、扎深,并支撑自研业务走向云原生的新未来。
把腾讯搬上云:云服务器 CVM 的半部进化史相关推荐
- 坚果云 operationnotallowed webdav_妙用 NAS 服务,将你的知识库和音乐库搬上「云」...
妙用 NAS 服务,将你的知识库和音乐库搬上「云」 想必你也遇到过这样的问题: 资料库体积越来越大,内置硬盘的容量却没有跟着长大或者不方便扩容: 平时需要在多个终端(电脑/手机/iPod 等)共享 A ...
- 向腾讯云windows服务器传输文件,如何上传本地文件到腾讯云Windows服务器上?
在做运维的过程中经常遇见客户问,如何上传本地数据到Windows云服务器上. 相对Linux云服务器,针对新人朋友Windows云服务器是可视化的更加容易理解.云服务器就是我们租用了腾讯云机房的一台服 ...
- 腾讯云COS服务器文件上传与生命周期的设置,以及Opencv nparry数组格式图片非文件流方式上传
目录 Opencv numpy arry图片非文件流直接上传 腾讯云COS服务器的文件上传和生命周期的设置 1.申请服务器 2.创建桶 3.官方文档以及安装SDK 4.开始使用(官方示例代码) 5.必 ...
- 开源项目在GitHub上贡献33.5W个Star!腾讯的十年“云”答卷,请收好!
来源:新智元 本文约2800字,建议阅读6分钟 本文带你观看腾讯云主办的「2020 Techo Park」开发者大会. [ 导读 ] 根据数据,GitHub中国开发者数量增至第二,仅次于美国.这一路来 ...
- Unirech腾讯云国际代充-云服务器cvm常见问题解答
1.如何查看可使用的云服务器cvm地域? 注册好腾讯云国际版账户后,可直接通过云服务器页面中[立即选购]界面查看当前可使用的地域. 2.如何选择云服务器的可用区域? 建议您在购买腾讯云国际版云服务器时 ...
- 小程序生产环境必须要购买腾讯云作为服务器吗?
原文链接:小程序生产环境必须要购买腾讯云作为服务器吗? 小程序生产环境必须要购买腾讯云作为服务器吗? 答案是:否! 相信很多开发人员都是被小程序管理中心这个链接引导到腾讯云去的,但是对各种云稍微有点了 ...
- 华栖云携阿里云首发云上电视台服务:致力于把电视台搬上云端
5月23日,华栖云携手阿里云宣布,正式推出国内首个"云上电视台"解决方案,致力于为视频节目制播单位打造一个云端媒体核心生产业务资源平台,提供高清视频在公共云上安全的采.编.播.存. ...
- 腾讯云一元服务器搭建个人网站详细教程
这里介绍的的是腾讯云的windows系统的服务器,部署的是Java环境,用的是tomcat和MySQL,其他的按本教程不保证成功. 腾讯云学生认证服务器购买地址:一元就可以买到服务器+一个.cn后缀的 ...
- 域名解析配置 以及 修改DNS服务器(腾讯云域名注册商、阿里云DNS服务器)
很早以前是在腾讯云租的服务器同时也在腾讯云上注册了两个域名,后来我将服务器换成了阿里云的,如果想要域名所解析的IP地址变成阿里云服务器的IP地址,就要去腾讯云官网修改DNS服务器,不能用腾讯云的DNS ...
最新文章
- 有了这篇 Shell 脚本实践指南,同事对我“刮目相看”!
- MySQL 8.0新特性--CTE Recurive(二)
- linux的虚拟文件系统VFS
- Zuhair and Strings
- Python 获取指定文件夹下的目录和文件
- [react] 在使用react过程中什么时候用HOC?
- 前端学习(1338):mongoDB删除文档
- Android NDK MediaCodec在ijkplayer中的实践
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
- Hive查询各自区组的money排名前十的账号
- GDAL根据Shape文件切图(java)
- JUC锁框架——ReadWriteLock
- 2018中国城市建设统计年鉴(Excel版)
- 可视化大屏|2022年最值得推荐的10款可视化软件
- plc 触控屏 c语言开发,工业串口触摸屏在PLC工控板的人机界面应用开发示例
- windows系统安全加固
- linux shell 中各种符号的含义
- 解决IDEA输入ctrl+空格,和输入法冲突的问题
- 不是这个社会浮躁了,是我们的眼睛浮躁了。
- revit 对计算机最低配置,Revit 软件对电脑配置的要求