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

news2024/10/7 14:24:47

在 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% 甚至更高。其次,因为涉及多租户,需要进行资源分配,尤其是离线任务资源总量不稳定,离线池内资源分配不合理和资源抢占问题时有发生,期望能够在未来规避此类问题。最后,爱奇艺将会在离线任务质量保障方面继续探索。

原文链接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WSN final fighting 12.05

0.网络时间协议(NTP) p54 1.Min-Max定位 p63 2.质心算法定位 p64 3.覆盖修复过程 p95 4.数据融合的卡尔曼滤波法 p72 5.数据融合的神经网络算法 p73 6.TMAC协议 p135 7.基于分分簇网络的MAC协议 p140 8.蓝牙协议 p170 9.GEM路由协议 p206 10.MECN路由协议 p206 11.阐…

INTERSPEECH 2022——基于层级上下文语义信息的多尺度语音合成风格建模

本文由清华大学与虎牙信息科技有限公司、元象唯思控股(深圳)有限公司和香港中文大学合作。 人类语音的风格表达是多尺度的,不仅包括全局尺度的情感表达,还包括局部尺度的韵律表达。 而现有关于表现力语音合成的工作只考虑了单一尺…

C++ 静态成员变量与静态成员函数

在C的类中&#xff0c;有静态成员变量和静态成员函数 #include <iostream> #include <string>using namespace std;class test { private:static int m_value; //定义类的静态成员变量public:static int getValue() //定义类的静态成员函数{return m_value;} };in…

Mybatis-Plus中的and和or用法

先看Mybatis-Plus官网中对这两个关键字用法的介绍 数据库文件&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1KzY32Jq0srDQU9m-a-YtBQ?pwdrsdg 提取码&#xff1a;rsdg 表数据&#xff1a; 比如我们想查age等于23并且school_id等于300的 sql语句为&#xff1a;select…

FL Studio 20音乐制作教程

FL Studio 20音乐制作教程 FL Studio 20 中的音乐制作 – 制作 3 首完整曲目 – 只需一天即可管理 FL Studio&#xff0c;音乐、混音和母带制作 课程英文名&#xff1a;FL Studio 20 Music Production In FL Studio for Mac & PC 此视频教程共20.0小时&#xff0c;中英双…

【C++11多线程】线程的创建、结束、传递参数

文章目录1.普通函数作为线程函数1.1 thread1.2 join()1.3 detach()1.4 joinable()2.函数对象作为线程函数3.lambda表达式作为线程函数4.类成员函数作为线程函数5.向线程函数传递参数1.普通函数作为线程函数 程序运行起来&#xff0c;生成一个进程&#xff0c;其中主线程从 mai…

毕业设计 基于单片机的地震探测器系统 - stm32 物联网 嵌入式

文章目录0 前言1 简介2 主要器件3 实现效果4 硬件设计3轴加速度计ADXL335ADXL335加速度计的工作原理电路图和连接5 部分核心代码最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕…

[附源码]计算机毕业设计基于Springboot物品捎带系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

拳头游戏教程

文章目录一、初谈游戏美术游戏美术师的作用视觉效果二、概念创造1.项目前期准备2.生成创意3.获取反馈三、角色设计从概念到3D模型3D建模的过程表面改变解剖学协作改变四、环境设计什么是环境美术创建的过程视觉层次可信度效率五、技术美术骨骼制作定制化工具移植开发流程shader…

模拟百度网盘

linux下基于多线程和tcp去实现了一个模拟网盘,实现cs之间的下载互传大文件,实现断点续传,秒传,利用md5进行校验,实时显示百分比 整体框架: 整个项目是在Linux环境下用C语言开发的,基于TCP协议,采用多线程的socket通信方式。 普通上传和秒传:客户端会先计算文件的MD…

(六)Vue之MVVC

文章目录MVVCVue中的MVVCVue代码中的MVVMVue学习目录 上一篇&#xff1a;&#xff08;五&#xff09;Vue之data与el的两种写法 MVVC MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。 MVC参考&#xff1a;MVC架构模式 MVVM 就是将其中的View 的状态和行为抽象…

YOLOv5实现车辆检测(含车辆检测数据集+训练代码)

YOLOv5实现车辆检测(含车辆检测数据集训练代码) 目录 YOLOv5实现车辆检测(含车辆检测数据集训练代码) 1. 前言 2. 车辆检测数据集说明 &#xff08;1&#xff09;车辆检测数据集 &#xff08;2&#xff09;自定义数据集 3. 基于YOLOv5的车辆检测模型训练 &#xff08;1…

【Python】-- Turtle绘图(使用代码画喜欢的图形!)

什么是Turtle&#xff1f; turtle库是Python语言中一个很流行的绘制图像的函数库&#xff0c;可以想象一个小乌龟在爬行&#xff0c;它的爬行轨迹就是绘制出来的图形&#xff0c;在一个横轴为x、纵轴为y的坐标系原点&#xff0c;(0,0)位置开始&#xff0c;它根据一组函数指令的…

罐头食品市场向好,APS车间排产软件保证食品制造企业有序生产

这些年&#xff0c;随着人们健康意识的不断提升&#xff0c;一些消费者认为&#xff0c;罐头的保质期长是因为添加了大量的防腐剂&#xff0c;但实际上这是一种错误的认知。罐头食品不需要添加防腐剂&#xff0c;而是采用热力杀菌和密封工艺&#xff0c;达到商业无菌和真空保存…

如何管好一个迭代?让数据帮你回答这些关键问题

对软件从业者来说&#xff0c;『敏捷开发』早已不是一个新名词。 相比瀑布模型&#xff0c;敏捷开发模型更强调演进式开发&#xff0c;快速灵活地应对变化&#xff0c;最终交付使客户满意的产品。这就要求研发团队内部、研发团队与产品乃至与业务、客户之间的密切沟通。当变化…

CW6163C车床的三维仿真及加工工艺

目录 1 传动轴分析 - 1 - 1.1 传动轴结构特点 - 1 - 1.2 传动轴的工艺分析 - 1 - 1.3 传动轴的技术要求 - 2 - 2 毛坯的选择 - 3 - 2.1 毛坯的类型 - 3 - 2.2 毛坯余量的确定 - 3 - 2.3 毛坯草图 - 4 - 3 工艺规程设计 - 5 - 3.1 定位基准的选择 - 5 - 3.1.1 粗基准的选择 - 5 …

div做一个简单的自适应布局

div做一个简单的自适应布局 效果 代码&#xff1a; <template><div class"main-page"><div></div><div></div><div></div><div></div><div></div></div> <style lang"le…

深入浅出——spring和AspectJ实现AOP操作

基本概念可看我之前的文章 AOP——基本概念、底层原理&#xff0c;这次直接来实现AOP的操作&#xff0c;在介绍操作之前&#xff0c;我们得先介绍AOP的各种术语 aop操作术语 1、连接点&#xff08;JoinPoint&#xff09;&#xff1a; 类里面哪些方法可以被增强&#xff0c;这…

小白必知必会的几个IP地址知识

小白必知必会的几个IP地址知识1.IP地址的定义2.IP地址的组成3.IP地址的分类4.广播地址5.IP多播6.子网掩码7.CIDR8.全局地址和私有地址1.IP地址的定义 IP地址(IPv4地址)由32位正整数来表示。TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。IP地址在计算机内部以二进…

三问HPE,你真的想买下Nu­t­a­n­ix么?

【全球存储观察 | 热点关注】据多个媒体消息报道&#xff0c;慧与科技HPE在近几个月与超融合提供商Nutanix就收购进行了谈判。 在这之前的2017年2月&#xff0c;HPE以6.5亿美元收购了超融合全球老二SimpliVity&#xff0c;后来整合成了HPE重要的超融合产品线&#xff0c;并进一…