峰值利用率80%+,视频云离线转码自研上云TKE实践
作者
刘兆瑞,腾讯云高级研发工程师,负责腾讯明眸极速高清,画质重生等产品。专注于codec优化,画质增强等技术。
背景和问题
随着流量资费的降低和带宽的增加,视频成为人们获取信息越来越重要的方式,随之而来的是云点播、视频处理等视频相关业务的飞速发展,而视频转码平台作为云点播、视频处理的基础产品,面临着高并发、高 SLA、高压缩率等等多样的需求,面临着极大的挑战。
对于一般流程来说,我们面临着下面几个挑战和诉求:
- 不同的转码产品对核心数的需求不同,比如:极速高清、延时敏感的业务,需要大核心来保证复杂运算的稳定性,普通转码则可以用小核心来替代。分布式转码中的合并和切片服务则对 IO 性能,硬盘大小比较关注。
- 转码业务对 avx 指令集的利用率很高,因此通用 CPU 算力往往并不会成为瓶颈,avx 指令集的计算频率则成为转码业务的关注重点。而集群内 CPU 型号往往是多样的,因此合理的选择 CPU 型号对于转码业务非常重要,TKE 扩展 pod 时候需要能够选择 CPU 型号。
- 短期、高并发需求多:客户会用我们的能力实现不同的玩法,比如:客户需要对其全站的视频进行极速高清压缩或者画质增强,这里短期内需要能够获取到巨大的资源,并在使用过后能够快速退回节省成本。
- 模型、服务迭代快:云服务厂商间的竞争非常激烈,经常会有客户提出新的需求,pod 能够支持快速、无损的更新迭代版本。
容器化 & 全量上云记录
容器化
这里的容器化过程,主要包括对业务的服务流程梳理,整体的发布流程规范化:
业务不同性能机型申请
迁移 TKE 之前,物理机的型号往往是固定的,固定 CPU 核数、内存、硬盘容量的搭配,而这些对于指定业务来说往往会造成资源的浪费,无法充分利用所有的资源。比如:转码业务关心 CPU 性能,对于内存的利用则很低,而物理机 48C 的机型往往搭配 64G 内存,造成一定程度的内存浪费。
迁移 TKE 之后,根据不同的业务模型场景,可以精确的分配业务所需要的 CPU、内存、硬盘资源,充分利用起每一项资源。
CPU 型号限制
转码业务对 avx 指令集的利用率很高,而很多型号的 CPU 虽然通用计算频率高,但是指令集被限频了,这种型号的 CPU 虽然核数多,但是编码效率很低。因此业务进行 pod 扩展时,希望能够规避剔除掉某些型号的 CPU。
为了解决这一问题,TKE 支持了 CPU 亲和性配置,配置如下:
快速扩缩容
转码业务虽然是离线业务,但是重点客户对 SLA 还是有很高的要求。需要能更快速扩缩容,满足客户动态需求。
面对这种突发的请求,TKE 可以通过动态的扩缩容满足需求,同时业务流量突发结束后,也可以快速缩容来降低使用成本。
当然,动态扩缩容也会带来额外的挑战。对于转码业务来说,很多任务都是长时任务,不能中断的。比如:个100+小时的视频转码,已经转了50小时+,不能因为扩缩容而中断任务,重新转码。针对这种场景,TKE 也给出了很好的解决方案,可以通过删除保护完美支持这一诉求。
业务快速更新上线
云端转码服务多个云上基础产品,大量公司内外客户,需求和发布节奏都很快,每周都会有新的版本升级变更。因此能够支持快速发布,是业务的强诉求。同时,发布不能中断业务正在处理的任务,针对这一情况,TKE支持了原地升级选项,升级 POD 业务代码,不需要销毁重建 runtime 运行中容器,支持服务运行中实现热更新。
lxcfs & 固定 IP 助力任务精准调度
转码的业务与通用的业务请求不同,在开始转码前是无法预知当前转码请求的资源消耗量的。比如:游戏直播视频和课堂教育视频,资源的消耗量会相差一个量级。因此转码任务的调度是依赖转码机主动上报当前任务数和每个任务的负载情况,由调度根据当前的实际负载情况来分发新的任务请求。
然而,通用的 pod 内进行 ps 等操作获取的是母机的负载信息,而不是当前 pod 的实际负载信息,这样会导致调度失衡。为了解决这一问题,TKE 支持 lxcfs 配置,通过 lxcfs 可以精准获取当前 pod 的实际负载信息。
面对上面的场景,另一个问题是如果每次 POD 重建过程都会重新申请 IP,那无疑会对调度的 IP 管理造成额外的负担。针对这种情况,TKE 也支持了固定 IP,IP 保留等能力。
上线成果
视频云离线转码服务,CPU 平均利用率50%+。峰值利用率80%+. 同时,动态的扩缩容和快速上线的支持,都有效的为业务需求和流量突发保障护航。
关于我们
更多关于云原生的案例和知识,可关注同名【腾讯云原生】公众号~
福利:
①公众号后台回复【手册】,可获得《腾讯云原生路线图手册》&《腾讯云原生最佳实践》~
②公众号后台回复【系列】,可获得《15个系列100+篇超实用云原生原创干货合集》,包含Kubernetes 降本增效、K8s 性能优化实践、最佳实践等系列。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!
峰值利用率80%+,视频云离线转码自研上云TKE实践的更多相关文章
- SaaS上云工具包为企业应用构筑上云之梯
导语:本文中,阿里云资深技术专家郑刚将聚焦SaaS上云工具包如何帮助企业上云,包括产品上云.商品上市.服务上心,讲述了SaaS上云工具包为客户和伙伴提供的价值.在SaaS上云工具包整体解决方案的帮助下 ...
- 阿里云发布新版SaaS上云工具包,全面助力SaaS上云
9月26日,在云栖大会SaaS加速器专场上,阿里云发布了新版的SaaS上云工具包(SaaS Launch Kit),发布了API网关的新功能,以及推出了全新升级的能力中心. SaaS上云工具包,顾名思 ...
- CODING 再携手腾讯云 Serverless,让开发者跑步上云
近年来,腾讯云持续在云原生领域打磨和完善产品矩阵,致力于为开发者上云提供更好的产品和服务.继前段时间 CODING CI 助力腾讯云 Serverless 全新应用控制台.持续保障 Serverles ...
- 中小企业上云首选,华为云全新云服务器S6性能评测分析
转: 中小企业上云首选,华为云全新云服务器S6性能评测分析 [小宅按]今天,华为云全新弹性云服务器ECS通用计算型云服务器S6(以下简称为"华为云S6云服务器")正式发布,至顶网云 ...
- 企业上云这四大要点,你 get 了吗?
本文由 Platform9(一家专注于云计算.专有云.混合云.OpenStack 以及容器技术的北美初创公司)技术产品营销经理 Akshai Parthasarathy 撰写,描述了企业在向云基础设施 ...
- 开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门
点击下载<Knative 云原生应用开发指南> 自 2018 年 Knative 项目开源后,就得到了广大开发者的密切关注.Knative 在 Kubernetes 之上提供了一套完整的应 ...
- 阿里云PolarDB发布重大更新 支持Oracle等数据库一键迁移上云
5月21日,阿里云PolarDB发布重大更新,提供传统数据库一键迁移上云能力,可以帮助企业将线下的MySQL.PostgreSQL和Oracle等数据库轻松上云,最快数小时内迁移完成.据估算,云上成本 ...
- QQ全量上云,你想了解的技术细节都在这
腾讯的业务体量非常庞大,在2019年,腾讯已拥有超过了100万台服务器,其中,社交业务包括QQ和空间的体量有近20万台服务器,且分布在全国三地. 把QQ这头大象搬到云上并非易事.作为腾讯最庞大.最悠久 ...
- dsm 黑 离线转码 备忘
6.2以后不行 我用的是 DS3617_6.17-15284 进入下载安装文件和工具 1安装 .套件来源增加 packages.synocommunity.comb.设置信任级别为任何发行者 c.找到 ...
随机推荐
- Flink的状态管理与恢复机制
参考地址:https://www.cnblogs.com/airnew/p/9544683.html 问题一.什么是状态? 问题二.Flink状态类型有哪几种? 问题三.状态有什么作用? 问题四.如何 ...
- jdbc操作mysql(二):封装
案例四:封装共有操作 封装一个数据库的会话的类 import java.sql.*; public class ConnectionUtil { /** * 获取连接对象的方法,返回一个Connect ...
- Ubuntu 设置不更新某些软件
方法来自:https://blog.csdn.net/zhrq95/article/details/79527073 保持某软件版本不变,如我wps-office,(已测有效@Ubuntu 16.04 ...
- 整型:int
整型:int 整型变量的定义和输出 注意://short<=int<=long<=longlong 代码示例一: #include<stdio.h> int ma ...
- vue3 项目 用 vue-video-player 做直播 ( 亲测可用 )
npm 安装 npm install --save vue-video-player npm install --save videojs-flash 1 <template> 2 < ...
- 【曹工杂谈】说说Maven框架和插件的契约
说说Maven框架和插件的契约 前言 Maven框架就像现在公司内的各种平台方,规定一些契约,然后想办法拉动业务方,一起在这个平台上去做生态共建.Maven也是这样,其实它就是一个插件执行的框架,Ma ...
- elementUI+nodeJS环境搭建
一. ElementUI简介 我们学习VUE,知道它的核心思想式组件和数据驱动,但是每一个组件都需要自己编写模板,样式,添加事件,数据等是非常麻烦的, 所以饿了吗推出了基于VUE2.0的组件库,它的名 ...
- Python - //和/的区别
/ 表示浮点数除法,返回浮点结果; // 表示整数除法,返回不大于结果的一个最大的整数 print("6 // 4 = " + str(6 // 4)) print("6 ...
- linux中花括弧大括号用法
{1,3,5} == 1 3 5 {1..5} == 1 2 3 4 5 {a..e} == a b c d e {A..z} {1..50..2} {1..50..3} {1 ...
- Docker系列(26)- 发布镜像到阿里云容器服务
1.登录阿里云 2.找到容器镜像服务 3.创建命名空间 4.创建镜像仓库 5.上传镜像