乐趣区

关于腾讯云:用户案例-腾讯小视频转码平台云原生容器化之路

作者

李汇波,腾讯业务运维高级工程师,目前就任于 TEG 云架构平台部 技术经营与品质核心,现负责微信、QQ 社交类业务的视频转码运维。

摘要

随着短视频衰亡和疾速倒退,对于视频转码解决的需要也越来越多。低码率高清晰,4K、超清、高清、标清适配不同终端和不同网络环境来晋升用户体验,以及水印、logo、裁剪、截图等多样化的用户需要。对于资源的多样化需要和弹性扩缩容也须要疾速响应,而随着公司自研上云我的项目的推动,设施的稳固行和多样性可提供更多抉择,来满足像朋友圈、视频号、广告、公众号等转码业务疾速、稳固、抗突发的资源需要。

服务场景

MTS(Media transcoding service)的定位是点播场景准实时(及离线)视频解决服务。为业务提供分钟级可实现的高清压缩、截图水印、简略剪辑等根本视频解决性能,同时具备向下集成定制画质减少,品质测评等深度性能的能力。

业务开发者定义批量解决模板,当内容生产方上传数据时,触发转码作业输入多规格压缩视频和视频封面,即可发表推送。

背景

微信侧和小视频平台承接着十分多视频文件,而这些视频根本都在转码平台依据业务需要进行解决,为了降低码率缩小老本,升高用户因网络而卡顿等性能。最早转码平台基本上是各个业务保护一个独立集群,集群繁多,集群之间资源也不能相互调度应用,并且单集群容量较小,申请量大的业务不得不部署多套集群撑持。

这给经营带来很大的挑战,须要一套容量下限更大,资源调度更灵便,经营更便捷的平台。而随着公司自研上云我的项目的推动和 TKE 容器化,转码平台须要能疾速对接 TKE 资源,利用公司海量计算资源来满足业务对视频转码的诉求。

建设思路和布局

视频接入和转码过程常常面临多业务突发,在保障业务品质前提下又须要晋升利用率,进步经营的效率。

平台能力建设 :单集群能力下限进步,业务频控隔离互不影响,资源调度灵便调整

资源管理建设 :围绕 TKE 容器平台充沛开掘闲暇碎片资源,通过 HPA 错开高下峰弹性扩缩容,晋升 CPU 利用率。与此同时,利用视频接入服务流量高、CPU 使用率低,转码服务流量低、CPU 使用率高特点,通过两种场景混部充分利用物理机资源,避免纯流量集群低负载

经营零碎建设 :适配业务场景,欠缺变更高低架流程,过程监控告警剔除,建设稳固保障平台

平台能力建设

架构降级

老转码平台架构:

  1. 为 master/slave 主从构造,容灾能力绝对较弱,而且受限 Master 性能,单集群大略治理 8000 台 worker
  2. 资源调度层面不能敌对辨别不同核数的 worker,导致有些负载高,有些负载低
  3. 不可能基于业务维度做频控,单业务突发影响整个集群

新转码平台架构:

  1. 合并 Master/Access 模块为 sched,sched 调度模块分布式部署,任一节点挂了可主动剔除掉
  2. worker 和 sched 建设心跳并且上报本身状态和 cpu 核数等信息,便于调度依据 worker 负载来分配任务,保障同一个集群部署不同规格 cpu worker 负载平衡
  3. 单集群治理能力 3w+ worker,满足节假日业务突增
  4. 业务合并到公共大集群,可对单业务进行频控,缩小业务间接的烦扰

架构的降级,平台不再受限单集群能力,日常和节假日顶峰可疾速满足需要,并且业务合并大集群错开高下峰,可资源利用

接入服务 svpapi 降级 DevOps 2.0

借助业务上 tke 东风,小视频平台接入服务 svpapi 实现标准化降级。重要改良包含:

  1. 整合原有多变更零碎、多监控零碎、多根底资源管理零碎到智研对立入口,具体包含研发测试、日常版本公布、资源弹性扩缩容、业务监控告警、业务日志检索剖析。通过 CICD 流程屏蔽间接对 TKEStack 操作,安全性更好
  2. 模块配置辨别应用场景托管于七彩石,并反对 1 分钟级业务开关切换,反对节假日期间灵便的流量调度和业务流控频控
  3. 下半年接入服务打算利用智研监控集群流量程度,联合 TKEStack 依据流量 HPA 能力,实际资源扩容无人值守能力

资源管理建设

具备平台能力后,下一步须要对不同容器规格的资源进行分类并平衡调度,这里次要的难点:

1、业务场景多样性:TKE 集群波及很多,性能规格也各不相同,从 6 核到 40 核都须要能应用

2、资源管理和经营须要思考:Dockerfile 镜像制作,适配 TApp 不同集群配置,容器高低架,运维变更标准等

梳理出 TKE 不同集群下容器配置

# 不同 cpu 规格适配不同环境变量
- name: MTS_DOCKER_CPU_CORE_NUM
  value: "16"
- name: MTS_DOCKER_MEM_SIZE
  value: "16"
# 算力平台亲和性设置,当负载超过 70%,则驱赶该 pod
affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: max_vm_steal
            operator: Lt
            values:
            - "70"

资源调度平衡

转码属于异步工作,解决的每个工作申请工夫是不一样的,并且有状态,所以无奈基于北极星去平衡调度工作,须要平台侧来设计调度策略

  1. 基于不同规格 CPU 机器 worker 性能,平衡分配任务
  2. 依据不同 worker 版本进行调度,反对小业务疾速版本迭代

在对不同规格容器,通过 Score 和版本来平衡调度

基于调度能力的在不同 CPU 规格上的工作平衡,C6 和 C12 利用率较相近,不会导致大规格容器资源节约

经营零碎建设

转码集群的 worker 资源怎么扩容到对应集群,这里减少了一层资源管理层,须要手动调用将指定的 worker 从集群高低架。对应平台侧开发业余 OSS 零碎,将集群的 sched/worker/ 工作做成页面便于经营,并且封装高低架的 API。而 TKE 跟转码平台其实无任何关联,为了实现解耦,运维侧开发对接 TKE 高低架的性能,制订流程,将 TKE 扩缩容的资源调用 OSS API 实现同步,具体逻辑如图:

TKE 反对北极星服务,将对应的 TApp 关联到北极星服务名,将北极星服务作为不同转码集群扩缩容 IP 的元数据管理,保障 TKE 和转码侧资源的一致性

过程监控

转码平台治理的 worker 有上万台,在运行过程或者新版本公布中不能及时监控容器过程状态是怎么样,通过批量扫描时间太长,不能疾速晓得过程异样状态,因而联合组内过程监控平台,建设转码容器的过程监控告警,异样 worker 通过机器人企业微信、电话告警及时告诉剔除,晋升服务质量

资源利用优化

转码业务目前根本是社交的自研业务,节假日效应突发比拟显著,而且资源需要较大,大部分还是准实时,对于转码耗时也比拟敏感。因而平时在保障速度外,会预留 30%~50 的 buff,而业务凌晨基本上是低峰,因而局部资源在凌晨是节约的。TKE 反对依据零碎指标主动伸缩,并且它计费模式也是依据一天内理论使用量免费,这里咱们基于 CPU 利用率指标,来配置弹性伸缩,低峰时缩容,顶峰时主动扩容,缩小资源的占用,从而缩小老本

弹性扩缩容

依据理论负载节点正本数在凌晨低峰缩容

Workloads CPU 理论应用占 request 百分比峰值可能达到 75% 以上,在保障业务稳固的状况下,晋升 CPU 利用率

成绩小结

目前转码平台从扩散小集群合并的三地大集群,经营能力的晋升 + 资源利用率晋升,正在致力晋升云原生成熟度,截止到 2021 年 5 月。

  1. 业务累计接入微信朋友圈、视频号、c2c、公众号、看一看、广告、QQ 空间等外部视频业务,每天视频转码解决 1 亿 +
  2. 日常放弃在 70% 左右 CPU 利用率,依据负载主动弹性扩缩容,业务成熟度显著进步

对于咱们

更多对于云原生的案例和常识,可关注同名【腾讯云原生】公众号~

福利:

①公众号后盾回复【手册】,可取得《腾讯云原生路线图手册》&《腾讯云原生最佳实际》~

②公众号后盾回复【系列】,可取得《15 个系列 100+ 篇超实用云原生原创干货合集》,蕴含 Kubernetes 降本增效、K8s 性能优化实际、最佳实际等系列。

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

退出移动版