作者

刘兆瑞,腾讯云高级研发工程师,负责腾讯明眸极速高清,画质重生等产品。专注于codec优化,画质增强等技术。

背景和问题

随着流量资费的降低和带宽的增加,视频成为人们获取信息越来越重要的方式,随之而来的是云点播、视频处理等视频相关业务的飞速发展,而视频转码平台作为云点播、视频处理的基础产品,面临着高并发、高 SLA、高压缩率等等多样的需求,面临着极大的挑战。

对于一般流程来说,我们面临着下面几个挑战和诉求:

  1. 不同的转码产品对核心数的需求不同,比如:极速高清、延时敏感的业务,需要大核心来保证复杂运算的稳定性,普通转码则可以用小核心来替代。分布式转码中的合并和切片服务则对 IO 性能,硬盘大小比较关注。
  2. 转码业务对 avx 指令集的利用率很高,因此通用 CPU 算力往往并不会成为瓶颈,avx 指令集的计算频率则成为转码业务的关注重点。而集群内 CPU 型号往往是多样的,因此合理的选择 CPU 型号对于转码业务非常重要,TKE 扩展 pod 时候需要能够选择 CPU 型号。
  3. 短期、高并发需求多:客户会用我们的能力实现不同的玩法,比如:客户需要对其全站的视频进行极速高清压缩或者画质增强,这里短期内需要能够获取到巨大的资源,并在使用过后能够快速退回节省成本。
  4. 模型、服务迭代快:云服务厂商间的竞争非常激烈,经常会有客户提出新的需求,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实践的更多相关文章

  1. SaaS上云工具包为企业应用构筑上云之梯

    导语:本文中,阿里云资深技术专家郑刚将聚焦SaaS上云工具包如何帮助企业上云,包括产品上云.商品上市.服务上心,讲述了SaaS上云工具包为客户和伙伴提供的价值.在SaaS上云工具包整体解决方案的帮助下 ...

  2. 阿里云发布新版SaaS上云工具包,全面助力SaaS上云

    9月26日,在云栖大会SaaS加速器专场上,阿里云发布了新版的SaaS上云工具包(SaaS Launch Kit),发布了API网关的新功能,以及推出了全新升级的能力中心. SaaS上云工具包,顾名思 ...

  3. CODING 再携手腾讯云 Serverless,让开发者跑步上云

    近年来,腾讯云持续在云原生领域打磨和完善产品矩阵,致力于为开发者上云提供更好的产品和服务.继前段时间 CODING CI 助力腾讯云 Serverless 全新应用控制台.持续保障 Serverles ...

  4. 中小企业上云首选,华为云全新云服务器S6性能评测分析

    转: 中小企业上云首选,华为云全新云服务器S6性能评测分析 [小宅按]今天,华为云全新弹性云服务器ECS通用计算型云服务器S6(以下简称为"华为云S6云服务器")正式发布,至顶网云 ...

  5. 企业上云这四大要点,你 get 了吗?

    本文由 Platform9(一家专注于云计算.专有云.混合云.OpenStack 以及容器技术的北美初创公司)技术产品营销经理 Akshai Parthasarathy 撰写,描述了企业在向云基础设施 ...

  6. 开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门

    点击下载<Knative 云原生应用开发指南> 自 2018 年 Knative 项目开源后,就得到了广大开发者的密切关注.Knative 在 Kubernetes 之上提供了一套完整的应 ...

  7. 阿里云PolarDB发布重大更新 支持Oracle等数据库一键迁移上云

    5月21日,阿里云PolarDB发布重大更新,提供传统数据库一键迁移上云能力,可以帮助企业将线下的MySQL.PostgreSQL和Oracle等数据库轻松上云,最快数小时内迁移完成.据估算,云上成本 ...

  8. QQ全量上云,你想了解的技术细节都在这

    腾讯的业务体量非常庞大,在2019年,腾讯已拥有超过了100万台服务器,其中,社交业务包括QQ和空间的体量有近20万台服务器,且分布在全国三地. 把QQ这头大象搬到云上并非易事.作为腾讯最庞大.最悠久 ...

  9. dsm 黑 离线转码 备忘

    6.2以后不行 我用的是 DS3617_6.17-15284 进入下载安装文件和工具 1安装 .套件来源增加 packages.synocommunity.comb.设置信任级别为任何发行者 c.找到 ...

随机推荐

  1. vim conf文件配色

    VIM conf文件配色 一.配置文件 1.下载Nginx配置文件的语法文件:nginx.vim wget http://www.vim.org/scripts/download_script.php ...

  2. idea项目在maven projects中显示灰色的解决办法。建新建module src变成标准的文件夹

    在使用idea的过程中,有时会遇到其中一个maven模块变成灰色(可以通过view - tool windows -> maven projects 现实),如下所示: 造成这个的原因可能是忽略 ...

  3. 常见面试题:java8有什么新特性?

    常见面试题:java8有什么新特性? 主要有以下这些新特性: lambda 表达式,经常配合函数式接口使用,可以有效减少代码量 Runnable 是一个函数式接口,下面展示了创建线程三种写法,显然最后 ...

  4. 国内Git官网下载windows版本慢的问题,推荐一个国内镜像

    话不多说了,给你们镜像地址: https://npm.taobao.org/mirrors/git-for-windows/ 不用谢.点右边打赏个一毛钱,告诉我你来过        !_!

  5. junit4 套件测试

    junit4 中的套件可以用来测试一个需要依赖的业务流程,如购买必须依赖与登录成功 代码实现: 测试数据存放 public class BaseTest { protected static Hash ...

  6. redis存取数据sortedSet

    有序比无序的更耗性能 一.存取元素 1.添加元素,value存在则替换score值,不存在则添加: 2.获取某个元素的分数 3. 4.获取一定索引区间元素value值,默认按照对应score升序排序: ...

  7. 小狐狸钱包怎么使用?MetaMask(小狐狸) 使用教程 - 如何添加BSC链、Heco链

    MetaMask介绍 MetaMask是一款在谷歌浏览器Chrome上使用的插件类型的以太坊钱包,只需要在谷歌浏览器添加对应的扩展程序即可使用. 1.Download & Install: 官 ...

  8. C# 下载远程http文件到本地

    System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog();   ...

  9. POJ1861 Network (Kruskal算法 +并查集)

    Network Description Andrew is working as system administrator and is planning to establish a new net ...

  10. 学习PHP中的信息格式化操作

    在国际化组件的学习过程中,我们已经接触过了 NumberFormatter 这种数字的格式化操作,它可以让我们将数字转换成标准格式.货币.本地语言等形式.今天我们来学习的是另一种专门用于信息格式化的类 ...