网易视频云:分布式视频处理集群中的作业调度

异步作业调度系统(代号:Razer)为网易视频云提供底层任务调度和资源管理服务,对非实时作业如视频转码、视频合成、文件转换等进行分发,并按照用户限额原则、资源最大利用原则对底层集群资源进行支配和规划。

为了调度的高可用和调度的能力的水平扩展,Razer本身是一个调度集群,将上层应用(app server)的作业分发到底层的执行服务器上(worker)。如下图:


一、资源管理

Razer提供多维度的管理服务,包括服务管理(注册、过期、探活、状态通知)、用户管理(增删、用户验证)、任务的实时统计(worker维度、user维度)、资源监控、全局配置信息、及自身的HA。同时,还为可视化运维平台提供相应的RPC接口,提供实时的数据来源。

更加全面的统计可以更好的感知集群的负载状况,进行合理的容量规划,以及更细粒度的追踪作业的生命周期,便于运维等。

资源管理功能模块如下图所示:


核心模块:

1)ClusterManager

负责服务节点的健康监测和状态维护,如果有节点服务不可用,会通知其他节点服务节点的变化情况。

2)UserManager

负责对上层应用进行管理,并提供用户粒度的统计信息。

3)JobTracker

对于可视化运维来说,最需要的数据就是实时的集群运行负载,不同粒度下的job信息的统计以及job的追踪。JobTracker负责跟踪Job的生命周期中的各个事件,并负责悬挂job的检查和处理。

二、分发调度

在公有云资源超售的背景下,Razer的分发必须保证一定的公平性,避免饥饿。

应用通过RPC向Razer发起离线任务调度的请求,通过一致性hash按用户分区调度到不同的Razer节点上。Razer将接收的调度任务塞入不同用户的有序队列,Scheduler模块根据用户最大限额原则和公平原则,将不同用户的队列中的元素丢入分发器的内部队列,最后由分发器Dispatcher将允许调度的任务分发到MQ中,由worker完成具体视频处理任务。


核心模块:

1)Feeder

离线调度任务的生产者,任务可以来自上层应用,也可以来自数据库中的积压任务。从任务产生的策略上来分,可以分为GreedyFeeder和LazyFeeder。

LazyFeeder任务来自数据库。当用户队列的job数小于一定数值时,会触发LazyFeeder的填充动作。GreedyFeeder任务直接来自于应用,GreedyFeedy始终会主动尝试feed job。

2)Schuduler

任务调度器,根据用户最大限额原则和公平原则,封装了razer异步调度的核心逻辑。

最大限额原则是指,调度到底层worker服务器上去执行的job数不会超过用户的配额。

公平原则是指,每个用户被调度出去的job数的占比越低,则其调度的优先级越高。

3)Dispatcher

任务分发模块,负责将Job下发到底层Worker服务器。

Dispatcher对Job进行了进一步的封装,每个job会携带上一个job。如果任务分发失败的原因是底层没有资源,或者发送超时,则上一个job可能并未发送成功,此时,并行分发转变为串行分发,保证作业的顺利分发和执行。

4)UserView & GlobalView

UserView是用户运行时信息,包括任务队列,running等各种计数,是任务调度的依据。

GlobalView包含了所有UserView,维护全局运行时信息。

三、核心技术

1)基于快照的调度

GlobalView中保存着所有的UserView,是用户运行时的一个全局视图。用户的统计数据是在时刻变化的,所以在调度作业的时候,会对所有可调度的UserView排序形成一个快照,在一定时间内,以快照的数据为依据进行调度,并在超时后重新构建快照。

基于快照调度可以解决饥饿问题,如果一个用户的短任务非常多,若已时刻在变的数据作为调度的依据,可能导致其他用户的任务一直无法执行。

2)高可用

Razer支持水平扩展,通过一组调度服务器实现高可用。

应用可以跨节点重试任务,保证任务的顺利下发。

Razer在挂掉重启后,也会recover自身积压的任务。当某个节点宕机时,资源管理模块会感知,并通知其他节点,按照一定的算法指定一个节点take over。

3)负载均衡与配额

Razer通过用户ID进行分区,不同的用户落在不同的Razer服务器上。实现一定的负载均衡。而且,每个用户落在一个固定的分区,更加易于实现用户配额的限制。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • 作者:陶阳宇,花名举水,阿里云高级技术专家,飞天分布式系统早期核心开发人员,开发和优化过伏羲系统中多个功能模块,参...
    十人言末阅读 1,445评论 0 1
  • YarnYarn产生背景:Yarn直接来自于MR1.0MR1.0 问题:采用的是master slave结构,ma...
    时待吾阅读 5,601评论 2 23
  • 《分布式任务调度平台XXL-JOB》 一、简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心...
    许雪里阅读 16,776评论 3 29
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 阳光微絮 清风小醉 斑驳树影 思人轻笑 一切都是那么美好 唯独云朵里少了你的影子
    柳晴阅读 108评论 0 0