您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[腾讯]:腾讯云技术实践精选集2022 - 发现报告
当前位置:首页/其他报告/报告详情/

腾讯云技术实践精选集2022

2022-12-01-腾讯罗***
腾讯云技术实践精选集2022

腾讯云技术实践精选集2022 1 【版权声明】 本报告版权属于腾讯云计算(北京)有限责任公司和InfoQ极客传媒,并受法律保护。转载、摘编或利用其它方式使用本报告文字或者观点的,应注明“来源:腾讯云计算(北京)有限责任公司和InfoQ极客传媒”。违反上述声明者,将追究其相关法律责任。 【参与编写单位及人员】 (按拼音首字母) 内容指导徐樱丹内容策划谷春雨 刘亚琼 李文芳 熊艳云 赵琪 作者陈煜东 董峤术 郭志宏 胡锦前 韩硕 江国龙 贾瓅园 林沐 李向辉 吕祥坤 潘怡飞 孙勇福 陶松桥 童子龙 王鲁俊 王涛 王福维 许文强 于华丽 杨鹏程 于善游曾毅 杨珏吉 杨亚洲 赵军 张倩 内容编辑蔡芳芳 付秋伟 卷首语 2022年,数字化转型成为了全行业关注的焦点,数字经济的价值进一步凸显。云计算作为数字时代的关键要素之一,正从单一云向多云、混合云战略过渡;分布式云服务也进入了高速发展的黄金期;随着Docker、K8s等容器技术的流行,云原生正成为云计算的新赛场,也成为企业数字化转型发展的“默认选项”、新底座;除此之外,人工智能、边缘计算等技术的普及进一步加速了云计算技术的变革。无论是数字原生行业还是非数字原生行业,云计算在行业数字化解决方案、产业链数据流转、资源动态配置、业务创新等方面正产生着难以估量的价值。 对于腾讯的技术团队来讲,2022年也是一个重要的技术里程碑之年。历经三年,包括QQ、微信、王者荣耀、腾讯会议等亿级用户规模的腾讯自研业务已全面上云,集群规模突破5000万核,累计节省成本超30亿,这使得腾讯打造出国内最大规模的云原生实践。 如何把这些亿级业务全部搬到云上并实现云原生改造?腾讯云做了大量的技术优化和革新:比如在容器调度领域,通过混部技术将资源利用率提升到65%;在数据库领域,通过存算分离技术,打造了国内第一款云原生Serverless数据库;在安全领域,借助云原生技术本身的可观测性手段,创新地与安全结合,打造了更贴合云原生技术的专业安全防护能力等等。为此也沉淀了一份6万多字的《腾讯大规模云原生技术实践 案例集》,包括10多个国民级应用的上云实践,可扫描封底二维码下载阅读。 除了赋能自研业务外,腾讯云还将上述诸多产品或服务以及配套的基础软件、底层技术等开放给百万级的外部客户,全部基于公有云模式开发运营,赋能千行百业,也造就了一大批金融、游戏、企业服务、智能制造、教育等场景下的最佳实践。 此外,为了解决客户上云、用云的成本之忧,腾讯云基于内外云原生成本管理最佳实践,并结合行业优秀案例,提出了一套体系化的云原生上云成本优化方法论和最佳实践路径,发布了两个业界“标准”:《云原生最佳实践路线图》和《降本之源·云原生成本管理白皮书》,旨在帮助企业改善用云成本,充分发挥云原生的效能和价值。 2022年,是不平凡的一年,感恩来自行业、伙伴、团队的力量推动着我们勇往直前。在今年,我们参与 了DIVE2022北京站、ArchSummit2022深圳站、QCon2022广州站、ArchSummit2022北京站、 ArchSummit2022杭州站等多场大会,与1000+位技术人邂逅并分享心得。 此外,这也是腾讯云连续两年推出《腾讯云技术实践精选集》,去年2021版精选集共4万多字,全网带来 7000多次下载。2022版的精选集总字数近10万,尤其首次收录了“腾讯自研业务大规模云原生实践”系列内容,全面解密腾讯如何锤炼腾讯云。 每一次相遇,都难能可贵,每一场交流,都价值满满,遂整理成文,共享丰沃。展望2023,愿与诸君携手同行,共攀技术新峰! CONTENTS 目录 01腾讯自研业务大规模云原生实践 1.如何管理超千万核资源的容器规模08 2.50W+小程序开发者背后的数据库降本增效实践17 3.拥抱云原生,数十万规模GPU卡的利用率极致优化之路24 4.TDSQL-PG数据库在微信支付的应用实践30 5.将云原生进行到底:腾讯百万级别容器云平台实践揭秘38 6.云原生安全可观测性探索与实践45 7.大规模代码中引入供应链漏洞的分析技术前瞻50 02大数据与云数据库技术探索及实践 1.腾讯云大数据TBDS在私有化场景万节点集群的实践56 2.PB级数据秒级分析,腾讯云原生湖仓DLC架构揭秘65 3.CDWPG大规模在线数仓技术构架分享73 4.云原生数据库管控探索和实践80 5.腾讯云原生数据库TDSQL-C架构探索和实践 6.金融级分布式数据库TDSQL升级版引擎架构和关键技术介绍 7.国产金融级分布式数据库在金融核心场景的探索实践 8.腾讯云MongoDB智能诊断及性能优化实践 9.腾讯云数据库云上SaaS生态演进 86 93 101 111 126 03云成本优化与研发提效 10.企业上云,云上资源整体成本优化管理如何做? 11.企业如何利用云厂商能力构建自己的分布式云? 12.从混部到Serverless化,腾讯自研业务的稳定性及云原生成本优化实践 13.Serverless时代下,企业微服务的降本思考与实践 14.腾讯课堂面向协作的DevOps流程设计与实践 134 141 149 155 159 04中间件与基础设施 15.KafkaStream的进化探索:流式Serverless计算 16.JVMTIAgent在中间件领域的应用 17.区块链如何支撑Web3.0 18.腾讯操作系统的创新之路 166 172 184 190 01 腾讯自研业务大规模云原生实践 如何管理超千万核资源的容器规模 王涛 腾讯云自研上云容器平台负责人 腾讯云TKEx容器平台负责人,8年K8s生产经验,从0到1建设TKEx平台,全程支持腾讯海量自研业务容器化上云。 仅用三年时间,基于腾讯云TKE底座,腾讯自研业务容器化规模已达到千万核级别的CPU资源规模。面对如此海量的异构资源和复杂多样的业务场景,腾讯是如何做到资源利用率65%的?在调度编排、弹性伸缩、应用管理、稳定性保障等方面,腾讯又有哪些秘籍?在ArchSummit2022全球架构师峰会(深圳站)上,腾讯云自研上云容器平台负责人王涛发表了题为《如何管理超千万核资源的容器规模》的演讲,为大家逐一揭秘。 腾讯自研业务容器化上云历程 腾讯自研业务容器化上云的技术路线经历了多个阶段。最开始是一个虚拟机只调度一个容器的上云实验阶段,我们叫胖容器阶段;再到富容器,一个节点多个Pod,Pod中有多进程的阶段;然后是单Pod单进程的微 服务容器阶段;现在在腾讯内部也有大规模的容器使用TKEServerless,再往后为业务提供FaaS的能力。整个阶段都在夯实混部技术,包括离线混部、在线业务混部。ServiceMesh也得到了一定规模的实践。 上图是自研上云涉及的相关产品的简单架构。最底层是IaaS腾讯云计算网络存储,往上层的基础服务主要是Kubernetes、ETCD、Helm,再往上是腾讯云的产品化服务,包括腾讯TKE产品、TKEServerless、Edge、TKE-STACK。TKEx容器平台服务腾讯内部业务,内部入口可以直接是容器平台或者研效平台。 经过三四年的大规模自研业务上云过程,我们已经在各个技术领域沉淀了很多最佳实践和技术方案组件,诸如容器调度、弹性伸缩、有状态服务、容器化、资源管理、稳定性提升、业务运维效率提升等都是我们沉淀或重点关注的技术。 上云阶段不止是把业务容器化上云,更重要的是怎样衡量上云上得好不好。这里我们有腾讯云原生的成熟度规则来考核腾讯自研业务以及对应的容器平台做得好不好,主要从四个维度考核,最大的权重维度是资源利用率,指业务容器利用率、平台资源利用率。还有弹性伸缩能力、容器可调度能力,以及申请的Pod资源是不是小核心的资源。从规模与成熟度曲线可以看出,最近两年时间我们实现了非常大的规模增长,云原生成熟度得分也逼近90分。 各种混部场景下利用率提升方案 在线离线混部集群 在线离线混部集群是公司面临的主要混部场景。之所以要做在离线混部,是因为在线业务都会面临利用率较低、利用率有潮汐分布状态的状况。而离线作业很多是碎片型资源,可以容忍一定失败率,执行时间较短。我们的在离线混部是面向K8s,设计原则包括通用性,方便未来开放到社区和外部客户;符合云原生方式;降低对应用依赖;兼容K8s和Hadoop生态。而我们的目标包括保证在线业务的SLO,离线作业要在负载利用率高峰期快速上下线,离线作业成功率也有一定保障,保证服务质量前提下尽可能提升资源利用率。 腾讯内部在离线混部的技术方案名为Caelus。它面向业务提供基于业务优先级的定义,接下来就当节点或集群出现负载或者干扰时,可以根据优先级来驱逐或抑制,对于不可压缩资源只能驱逐到负载较低的集群。高优的离线作业不会直接Kill,而是降低容器的配置。方案最核心的是节点上Caelus的组件,主要做干扰检测数据的采集、分析,再决策做离线抑制还是调度。 Caelus的主要流程包括: •数据指标的采集,包括来自于业务监控系统的业务自定指标。 •采集到的指标统一存储在对应的Store组件,再从Store拉取指标做在线资源的业务预测、离线业务的健康检测。如果出现资源超发或高负载情况会做对应的抑制或者驱逐。 •这里提供本地预测和中心式预测两种方式,中心预测主要通过descheduler的方式,先采集分析得到全维度的应用负载,做驱逐时考虑工作负载是不是做了多副本、对应的服务是否做了动态路由接入等,重调度时去衡量这些工作负载的配置,确保业务的服务质量。 •更重要的是本地干扰检测和快速驱逐的能力,因为这里只关注节点本身的资源使用情况,能做出更快的离线业务的驱逐避让。 干扰检测的指标一部分来自于应用注册的业务自定义指标,还有一部分来自平台自身获取的操作系统、节点提供的指标。处理的方式一种是直接把离线的Kill掉,一种是直接做限流操作。驱逐时一定要考虑业务的优先级以及业务有没有做多副本、高可用,考虑是不是已做过容灾措施。根据监控数据,我们的在离线混部的集群节点负载已经到了将近70%的资源利用率。 在线混部集群 腾讯也有一些集群只能部署在线业务。这种集群要提升资源利用率会涉及不一样的技术挑战。 全部是在线业务,意味着无法定义每个任务或者业务的优先级,每个业务的优先级都是一样的。那么首先要做超卖、动态Pod的资源压缩。在线业务混部意味着集群的负载、节点的负载可能出现分布不均匀的情况,所以要解决集群节点负载均衡的问题。高负载时要及时、快速扩容资源,所以要提供极速的集群伸缩能力。 还有一个关键动作是,平台或者容器的资源总是有限的,一定要有面向应用的业务配额动态管理。 弹性伸缩这一层,我们自己做的方案叫做二级弹性资源池能力。第一层,平台会把各地域闲置的CVM放在闲置紧急Buffer资源池里,可以秒级地从节点把CVM加入集群里,实现集群秒级扩容。这里的关键是节点所有初始化流程、标准化建设都已经准备就绪,可以轻松应对集群负载突发情况。第二层就是去腾讯云申请CVM,CVM要做初始化流程,这一层弹性能力是分钟级的。当紧急Buffer池没有资源时才能找腾讯云接口创建对应的资源加到集群里。 面向业务的弹性伸缩,我们把K8s的HPAController剥离出来,自己做了HPAPlusController。因为我们的应用规模非常大,一个集群里可能有几万个Workload,意味着几万个HPA。我们自研的HPAPlus-Controller做了足够的性能优化,以支持如此单集群的HPA性能。 HPA这里,我们还做了动态调整HPA最大副本数的特性。业务配的最大副本数通常是一个很主观的不可信的值,当业务HPA达到maxReplicas后仍然有持续扩容的趋势,HPAPlus会提供更大弹性Buffer能力给业务,maxReplcas能动态的自增长,还会发告警让业务赶快判断是否正常。这种HPA行为,我们会预留业务一定时间处理超出预期的业务流量,当然也有机制去限制maxR