腾讯大规模云原生技术实践案例集 目录 前言6 案例一:揭秘日活千万腾讯会议全量云原生化上TKE技术实践7 腾讯会议业务特性7 StatefulSetPlus强大的灰度发布能力8 如何保证有状态服务的升级只有ms级抖动13 多地域部署和升级,变得更简单14 平台资源管理能力增强16 提升自愈能力18 容器网络增强和调度能优化20 总结20 案例二:腾讯广告AMS的容器化之路21 项目背景21 上云方案选型21 容器化历程(困难及应对)22 困难一:通用性22 困难二:CPU密集型检索23 困难三:有状态服务升级中的高可用23 整体收益35 案例三:日PV超百亿级的游戏营销服务云原生容器化之路36 背景36 自研上云实践36 大规模配置文件分发40 成果42 案例四:成本最高降低70%,腾讯大规模业务集群的云原生成本优化实践!43 背景43 优化措施45 行业现状与方案选型47 方案设计与实现50 方案落地与效果54 总结59 案例五:腾讯文档业务上云,Serverless架构应用最佳实践61 腾讯文档xServerless云函数61 Serverless架构方案优势65 腾讯文档xServerless架构更多场景探索66 案例六:QQ全量上云,你想了解的技术细节都在这67 一、整体规划67 二、方案执行67 三、里程碑中的挑战71 四、找对方法,加速上云73 五、小结77 案例七:和平精英自研上云UDP数据包乱序回顾78 问题背景:78 分析过程:78 逐流和逐包85 总结:87 案例八:王者荣耀背后的腾讯自研数据库TcaplusDB实践88 面临的问题88 解决之道88 PB级数据微秒级延迟88 3小时扩容400万PCU,用户无感知90 存储层扩容采用无损搬迁方式进行的业务完全无感知91 接入层扩缩容是无损的业务无感知92 结语92 案例九:作业帮云原生成本优化实践93 项目背景93 解决方案94 实践价值95 案例十:作业帮云原生降本增效实践之路96 为什么要进行降本增效96 降本增效的关键点96 应用层降本增效97 核心系统云原生改造99 资源调度层降本增效101 自定义调度器101 在离线混部101 Serveless广泛使用102 案例十一:斗鱼直播云原生实践之注册中心篇104 业务背景和痛点104 注册中心多活难点分析109 整体方案落地114 总结121 案例十二:助力知乎大数据集群无缝升级124 项目背景124 项目挑战124 腾讯云原生大数据解决方案124 实践价值125 案例十三:小红书AI搜索推荐场景容器化实战126 项目背景126 项目挑战126 腾讯云原生容器解决方案126 同城多可用区双活架构127 实践价值128 案例十四:Unity+腾讯云Severless:重构计算模型,打造构建元宇宙的核心引擎 .....................................................................................................................................................................129 Unity&云函数云端分布式算力方案129 云函数&Unity-云端分布式算力方案三大优势130 1.高性能,提效率130 2.易部署,免运维132 3.节约成本132 案例十五:揭开微盟百万商家营销大战背后的数据库秘密133 1.高并发、低延时需求134 2.确保稳定性及高可用性134 3.数据安全134 4.海量实例数据库运维134 利用云数据库弹性满足高并发和快速调整需求135 集中式+分布式架构设计136 更安全、更稳定、性能更强137 案例十六:《最伟大的作品》,解密周杰伦新专辑背后的数据密码140 海量数据场景下,如何保证用户体验?140 借助腾讯云数据库完善基础设施和服务141 深入业务,向数据库智能化运维演进142 案例十七:中国南方电网数字化转型143 项目背景143 项目挑战143 腾讯云微服务解决方案143 实践价值144 案例十八:“微盟式”SaaS,让商业变得更智慧145 前言 经过多年磨砺与创新,腾讯内部海量自研业务已实现全面上云。近三年来,腾讯的自研业务上云规模已经突破5000万核,累计节省成本超过30亿。 包括QQ、微信、腾讯视频、王者荣耀等在内的腾讯内部业务,和腾讯云百万级外部客户一样基于公有云的模式来开发运营,腾讯全面开启业务云端生长新时代。 “这是腾讯自研上云战略的一个里程碑。”腾讯集团高级执行副总裁、云与智慧产业事业群CEO汤道生表示:“把腾讯内部海量业务搬上云端,不仅帮助腾讯构建面向未来的技术架构和研发文化,推动科技成为公司业务发展和产品创新的动力与支撑,也全面锤炼了腾讯云的产品、技术和综合服务能力,这些能力将加快推动产业的数字化升级,助力实体经济全面发展。” 大部分业务都是在保持高速增长的过程中上云。比如,QQ是腾讯首个全面上云的内部业务,把如此庞大和复杂的业务搬上云端,技术团队实现了对用户零感知,被外界称为“开着飞机换引擎”。 同时,腾讯云也为新兴业务的高速发展提供有力支撑。以视频号为例,借助腾讯云的弹性扩容能力,视频号稳健支撑诸如西城男孩、周杰伦、崔健等明星的大型线上演唱会活动;得益于对象存储COS和腾讯云直播服务,视频号在春节等特殊时段抗住了超平时3倍以上业务高峰。 腾讯会议凭借生于云、长于云的大规模实践,现在已经成为中国最受欢迎的云视频会议产品,依托业界领先的实时音视频产品TRTC,腾讯会议可以有效保障数亿用户在复杂网络环境中流畅清晰的视频会议体验。 腾讯自研业务上云,打造出了国内最大规模的云原生实践。 三年来,数千万核的自研业务上云规模,推动腾讯云的自研产品能力不断优化,多项产品性能达到业界领先水平,也推动腾讯云在全球的基础设施不断完善。 腾讯自研上云明确基于云原生来构建面向未来的技术架构。例如,通过容器和微服务等技术,腾讯构建了统一的技术底座和算力调度平台,有效促进公司内部技术团队的协作与创新。 目前,腾讯云的TKE平台拥有国内最大规模的Kubernetes集群,以及最为领先的在离线混部技术,腾讯上云打造了国内最大规模的云原生实践。 为了向开发者更好的介绍腾讯自研业务、外部客户如何通过云原生技术产品支撑业务发展的,特别推出《腾讯大规模云原生技术实践案例集》,包括QQ、腾讯会议、腾讯广告、和平精英、腾讯文档、作业帮、中国南方电网、小红书、知乎、Unity、斗鱼、微盟等十多个海量产品和大规模场景的云原生技术实践。希望在给业界带去参考的同时,能够一起推动国内大规模场景下云原生技术实践的有效落地。 案例一:揭秘日活千万腾讯会议全量云原生化上TKE技术实践 点此阅读原文 腾讯会议,一款联合国都Pick的线上会议解决方案,提供完美会议品质和灵活协作空间,广泛应用在政府、医疗、教育、企业等各个行业。 今年为了提升紧急情况下会议的快速弹性能力,我们进一步研发了应用管理平台,把多个有关联的微服务放在一起来管理和统一伸缩,极大的提升了扩容下效率。2022年9月开学,很多学校都通过腾讯会议进行网上开学仪式,因此腾讯会议用户再次出现短时高并发,但通过成熟的云原生技术,腾讯云实现小时级数百万核的扩容,实现了网上开学体验如丝般顺滑。 都知道腾讯会议背后的计算资源已达数百万核,如此体量的业务,如何通过云原生技术提升研发和运维效率,是一个非常有价值的课题。 这里我将为大家揭秘腾讯自研上云容器服务TKE在支持腾讯会议全量云原生化上云背后的技术。 腾讯云容器服务(TencentKubernetesEngine,TKE)基于原生kubernetes提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生FinOps领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。 腾讯自研业务类型众多、规模超大,云原生上云面临的挑战可想而知。TKE在腾讯自研业务上云的过程中沉淀的最佳实践和解决方案,我们也会对外提供给客户。 腾讯会议业务特性 在Kubernetes中,我们习惯把应用分为无状态和有状态两类,有状态应用主要指实例标识、网络、存储的有状态。 腾讯会议的一些服务有如下特性: 使用IPC共享内存,里面存放的有状态数据从MB到GB大小不等。 o升级时IPC数据不能丢失; o升级时只能允许ms级的抖动,用户无感知; 部分服务最多的实例数过万,要求高效完成一次版本升级; 全球多地域部署,要求部署高效; 部分服务要求每个实例都分配EIP; 这对Kubernetes管理这种有状态服务提出了更高能力和性能要求。TKE平台抽象出业务特性背后的产品需求,在灰度发布、多集群工作负载管理、计算资源管理运营、Node稳定性等方面进行了增强和优化,沉淀出了通用的音视频业务容器编排能力。 StatefulSetPlus强大的灰度发布能力 StatefulSetPlus是我们2018年研发并投入生产的首批Operator之一,核心特性包括: 兼容StatefulSet所有特性,比如按序滚动更新。 支持分批灰度更新和回滚,单批次内的Pods可并发更新、可串行更新。 o支持各个批次手动待升级勾选Pods。 o支持用户配置各个批次待升级Pods的比例进行灰度。 o支持分批回滚和一键失败回滚。 o发布过程可暂停。 支持单个StatefulSetPlus对象管理上万个Pods。 支持ConfigMap的分批灰度发布。 对接了TKEIPAMD,实现了Pod固定IP。 支持HPA和原地VPA。 升级过程中的扩容使用LastGoodVersion。 支持Node核心状态自检,Node异常时Pod能自动漂移。 支持容器原地升级。 支持升级失败Pods的容忍率控制,大规模升级过程中升级失败Pods占比小于 x%时可继续升级。 这里主要介绍为腾讯会议上TKE新增的两个发布能力增强:大规模自动分批灰度发布和ConfigMap分批灰度发布。 支持单个StatefulSetPlus上万Pods的自动分批发布能力 TKE平台在原来StatefulSetPlus手动分批发布能力基础上,这次又开发了自动分批 发布的特性,解决像腾讯会议这种大体量业务灰度发布的痛点。用户只要在发布时配置各个批次更新副本的百分比,比如第一批40%,第二批60%。StatefulSetPlus-Operator会根据Readiness探针完成情况,自动进行下一批次的更新,其原理如下。 自动分批原理图StatefulSetPlus核心Field说明如下: batchDeployConfig: obatchNum:分几批升级 obatchAuto:是否自动分批发布,true表示自动分批发布 obatchIntervalMinutes:两次分批发布之间的间隔分钟数 opodsNumToUpdate:各批次发布的pod数量,如果不设置则将pod平均到每批次发布 StatefulSetPlus对发布过程进行了精细化的监控,提供staus.batchDeployStatus 查询发布详细状态,这使得通过CIPipeline发布变得更显示和可控。 batchDeployStatus: oaction:当前操作, oNext o表示进行下一批发布, oWaitToConfirm o表示等待确认该批次发布是否成功, oCompleted o表示所有批次均已确认发布成功。 obatchDeadlineTime:本批次发布的Deadline,如果超过该时间,本批次的Pod仍然未Running&Ready,那么本批次发布失