在 2022 云栖大会龙蜥峰会云原生专场上,来自爱奇艺的基础架构研究员赵慰分享了《基于龙蜥与 Koordinator 的在离线混部实践》技术演讲,以下为本次演讲内容:

一、爱奇艺离线业务混部背景

与众多互联网公司一样,爱奇艺常见的负载类型包括业务应用、数据库&中间件以及离线任务。其中业务应用包括有状态应用和无状态应用,无状态应用可以借助运维平台在业务团队和运维团队之间做比较清晰的职责划分,适合混部;而有状态应用较为复杂,混部时的运行质量难以保证。数据库和缓存目前并没有运行在混部集群中。离线任务中的非实时性任务,比如夜间转码、数据处理等只关注吞吐量而不关注时效的任务也是混部的对象。

爱奇艺在混部上经历了长时间的探索。

2013 年,爱奇艺初次进行了计算存储混部。进入容器时代后,爱奇艺在 Mesos 上花费了大量精力,最早把在线任务内容生产、 Spark、Storm 等所有工作负载混部在一个集群里,没有进行任何特殊的隔离性处理。在 Docker 上经历了困境后,爱奇艺将业务按节点、集群进行了拆分;这又导致离线任务集群资源常年不够用,在线业务集群利用率非常低,尤其是夜间利用率甚至只有个位数。因此,爱奇艺考虑将夜间线任务的资源提供给离线任务。

2016 年,通过 Mesos Oversubscription 功能引入根据真实资源做额外计数器的机制,将任务分为了延迟敏感和尽力而为两类进行混部。但由于细粒度的隔离性问题,这条道路也无疾而终。

到了 K8s 阶段,由于在线业务的伸缩能力的增强和普及,第二套计数器不再是强需求,爱奇艺直接在 K8s 上进行了混部,通过引入 Kata 保证服务质量。

2022 年,龙蜥 + Koordinator 一并被引入,用于构建下一步的混部架构。

从多年的混部经验里,爱奇艺总结出了影响混部的关键因素:

  • 服务质量,尤其是在线业务的质量,脱离了服务质量则混部无意义。
  • 获取额外资源。
  • 任务适配。

获取额外资源存在有两个思路:

其一为使用一套计数器,按固定比例超卖资源,直接混用,或者按经验比例分配给各个类型的负载。

其二为多套资源计数器,一种方式是利用经验数据判断集群的空闲时间和空闲资源,另一种方式是通过类似 Mesos Oversubscription 的方式做空闲资源的实时探测。

服务质量的策略分为静态和动态。动态指在离线业务或具体的进程之间动态进行调整,静态则是一旦下发即固定,即便有影响也不变动。

二、龙蜥和 Koordinator 在离线业务混部探索

Koordinator 没有对分布架构做本质上的变动,而是在云原生的规范性方面,比如业务类型的抽象上做了更多工作,使 K8s 和 Koordinator 有了做通用分布式架构的可能性,而不像之前只能针对特定的业务做定制。

Koordinator 可以简单理解为给 K8s 增加插件或做了增强,首先会增加一个调度器,引入一套资源技术,在节点上有一个 Koordlet,分别负责收集资源和保证任务的隔离性。

其工作机制为利用计数器在真实利用率基础上进行二次分配。整机的真实使用使用率取决于离线任务的使用率,保证在线业务的质量的前提下,水位线可以根据实践随时调整。

Koordinator 在任务分配方面分为五种类型(图中只列举了常用的四种),通过不同层级的分类,对在线业务和离线业务进行了不同层级的保障。

为进一步保证服务质量,爱奇艺引入了龙蜥操作系统(Anolis OS)。Group Identity 功能和 CPU Burst 功能对当前的混部效果起到了很大的提升作用。

Anolis OS 通过配置不同的 Group Identity 启用两套进程调度,一套作为在线业务的调度器,另一套作为离线任务的调度器,在线业务优先级整体高于离线任务。此前,在公平调度的机制下,在线业务、离线业务之间在细粒度上存在互抢资源;而引入两套调度器后,这个问题可以被合理规避。CPU Burst 的作用是使公平调度进程之间的切换更平滑,避免出现毛刺。

第一个试点业务为某类型内容实时生产,已经全量运行在混部资源上。从某种意义上它是零成本的,因为全部复用了其他服务器节省出来的资源。目前运行非常稳定,也没有对在线业务造成无法接受的干扰。

每天对热点视频进行二次或更多次编码也是爱奇艺一项较重的非实时离线计算任务,目的在于通过再生产降低码率或提高质量。该任务目前正在灰度验证阶段,期待接入Anolis OS 和 Koordinator 之后能带来足够大的惊喜。

大数据离线计算方面,出于综合考虑,爱奇艺目前依然选择 Kata 作为运行时,因此也正在积极和龙蜥社区进行探索,尝试 Kata 和 Koordinator 的合作。

上图为试点前后的效果对比,在验证环境设计比较保守的情况下,利用率整体提升 50% 以上。图中任务高峰期 CPU 使用率低于水位线的主要原因是BE任务申请的资源量没有被充分利用导致,涉及到离线任务的运营。当然,如何通过技术手段将真实的资源进行三次、四次甚至无限次的分配,也是爱奇艺期望尽快解决的。

三、未来工作展望

未来,爱奇艺将与龙蜥社区携手同行。首先,争取将 CPU 利用率提升到 50% 甚至更高。其次,因为涉及多租户,需要进行资源分配,尤其是离线任务资源总量不稳定,离线池内资源分配不合理和资源抢占问题时有发生,期望能够在未来规避此类问题。最后,爱奇艺将会在离线任务质量保障方面继续探索。

原文链接

本文为阿里云原创内容,未经允许不得转载。

爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析相关推荐

  1. 爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析 | 龙蜥技术

    在 2022 云栖大会龙蜥峰会云原生专场上,来自爱奇艺的基础架构研究员赵慰分享了<基于龙蜥与 Koordinator 的在离线混部实践>技术演讲,以下为本次演讲内容: 一.爱奇艺离线业务混 ...

  2. 爱奇艺加入龙蜥社区,携手打造多元化视频生态底座

    近日,‍北京爱奇艺科技有限公司(以下简称"爱奇艺")签署了 CLA(Contributor License Agreement,贡献者许可协议),正式加入龙蜥社区(OpenAnol ...

  3. 爱奇艺基于SpringCloud的韧性能力建设

    国际站后端业务不断扩展,支撑的服务实例规模也越来越大.并且在此过程中,支持了双云及多地部署. 这也给服务治理带来了挑战,如何应对同城多机房路由.多地容灾等场景,并解决微服务优雅上下线等问题,是国际站业 ...

  4. 爱奇艺基于 Docker 的 App Engine 实践

    杨成伟:大家好,我是来自爱奇艺的杨成伟,现在在爱奇艺公司内部负责弹性计算云方面的建设,之前我是做移动操作系统的,之前在因特尔做MeeGo和Python,有几年的经验,主要是在操作系统的核心层,但是是在 ...

  5. 爱奇艺基于 Vue 的微前端架构实践

    点击上方"开发者技术前线",选择"星标" 18:50 在看 真爱 来自:爱奇艺技术产品团队 前言 近来,微前端的概念非常火爆,那么什么是微前端架构?微前端架构是 ...

  6. 爱奇艺面向海量设备的边缘计算PAAS平台及应用实践

    2020 年 11 月 7 日,由边缘计算社区主办的全球边缘计算大会在北京成功召开,作为业内首个专门为边缘计算人打造的行业盛会,此次活动现场共有超过500+来自政.产.学.研.用各界的企业负责人.权威 ...

  7. 爱奇艺App架构升级之路——64位适配探索与实践

    背  景 随着手机硬件的不断发展,近两年的新式手机已经全部采用了64位CPU,64位真的比32位快吗?实际上32位和64位的差异主要体现在内存寻址上,32位最高只支撑4GB内存,而64位则能够最高支撑 ...

  8. 基于Apache Flink的爱奇艺实时计算平台建设实践

    导读:随着大数据的快速发展,行业大数据服务越来越重要.同时,对大数据实时计算的要求也越来越高.今天会和大家分享下爱奇艺基于Apache Flink的实时计算平台建设实践. 今天的介绍会围绕下面三点展开 ...

  9. Flink从入门到精通100篇(二十三)-基于Apache Flink的爱奇艺实时计算平台建设实践

    前言 随着大数据的快速发展,行业大数据服务越来越重要.同时,对大数据实时计算的要求也越来越高.今天会和大家分享下爱奇艺基于Apache Flink的实时计算平台建设实践. 今天的介绍会围绕下面三点展开 ...

最新文章

  1. redis java 存储图片_Redis 存储图片 [base64/url/path]vs[object]
  2. 并行处理的类型与CPU/GPU架构
  3. 具有Infinispan的聚集幂等消费者模式
  4. ASP.NET开发,简化与封装
  5. c++ cdi+示例_C ++中带有示例的本地类
  6. java数据加密解密代码_java使用RSA加密方式实现数据加密解密的代码
  7. 如何实现消息功能_如何实现微信小程序的轮盘抽奖功能
  8. ngnix的简单转发请求之server和location配置详解
  9. 清北大学计算机专业学习清单,好专业都在清北交复?快来看看这份院校清单,拥有着全国排名【NO.1】的专业...
  10. codeforces 702A A. Maximum Increase(水题)
  11. python_爬虫_模块
  12. 初学者如何学习NLP?这里有一些最棒的项目推荐
  13. nGrinder Loadrunner vs nGrinder
  14. toastr 使用笔记
  15. 微信小程序下拉刷新简单
  16. 平面设计构成原理分享
  17. 构建模型——用Python构建logit、负二项回归、决策树与随机森林机器学习模型
  18. LoadRunner函数大全
  19. 【Vue 2.0】用Vue写一个自己的简历网站带作品集
  20. 初创软件企业如何合理避税?

热门文章

  1. 红米2 mobian(debian12)
  2. PHP学习笔记——在phalapi框架内的orm数据库操作
  3. Linux_任务调度基本说明
  4. MYSQL学习与数据库综合实验(九)——触发器
  5. 荒野行动计算机高考题,荒野行动 荒野课堂 | 这些考试题你知多少~
  6. 网站优化提升用户体验的三个关键要点
  7. 求N个数的最小公倍数
  8. 使用WinSetupFromUSB来U盘安装windowsXP
  9. 简单工厂和工厂方法模式
  10. Python 什么是面向对象 ?