视频云面向海量用户的分布式视频处理技术

系统介绍 
  网易视频云支持面向海量用户的分布式视频处理,包含录制、转码、视频合成、截图等常用的视频处理任务。一方面视频云承载了众多网易内部视频应用的后台视频处理,一方面也渐渐以公有云的身份走入大家视野。 
  视频云的视频处理子系统需求模型如下所示: 
  
  视频云上层服务根据业务模型,向视频处理子系统发起视频处理任务,处理子系统根据任务类型调度到合适的worker节点做处理。在任务产生事件时,处理子系统会将事件回调通知给上层服务,如录制切片事件、视频转码完成事件。 
  在过去几年,视频云为网易内部视频应用提供了稳定可靠的大规模音视频处理服务,如青果、云音乐、教育产品。近两年,随着公有云服务模式趋于成熟,网易视频云渐渐以公有云的身份被大家所了解,与私有云相比,公有云的视频云要面临以下两个挑战: 
1.  海量用户 
2.  资源超售 
  在内部服务时代,视频云需要服务的应用数量有限,调度系统和回调系统压力较小,而且可以为一些应用定制特殊功能。而在公有云服务中,面向海量企业用户,调度系统承担的压力更重,在保障公平调度的基础上,需要实现调度能力的水平扩展。 
  在为内部应用提供服务时,为了保障各个应用的服务质量,一般不做处理资源超售,但是在公有云中,由于用户太多,资源闲置是一种常态,不超售会造成极度的资源浪费。因此,在保障公有云的服务质量前提下,最大限度的节约成本是视频云在公有云场景下需要攻克的重要课题之一。为了做好这一点,公有云提供了比以前更加细致的任务统计,资源监控,便于公有云的容量规划。 
  系统架构 
  视频云的视频处理系统架构如下图所示: 
  
  sdk:接口层,上层服务通过SDK向视频处理系统发起任务和事件回调 
  scheduler:调度子系统,又分为在线调度器和离线调度器 
  worker:任务执行器,一般包含10-1000个slot,每个slot对应一个处理任务 
 notifier:事件回调子系统,收集各个worker中的任务事件,并通知SDK 
  configserver:集群管理,元数据同步,任务统计和资源监控等 
  dashboard:可视化运维的WEB工具 
  以上模块和子系统的实现,满足了视频云对用户管理、任务调度、任务追踪、事件回调和文件存储等核心功能需求。在非功能性方面,视频云实现了调度子系统的高可用和水平扩展,worker宕机重试。configserver在架构中属于单点,通过主从架构实现高可用。 
  核心技术 
  FlickRpc框架 
  FlickRpc是视频云团队自主研发的一个通用rpc框架,是各个组件模块互相调用和通信的基础。FlickRpc采用了netty长连接和json通信格式,使用google的gson库实现json格式的序列化和反序列化,与grpc,avro一类的开源RPC框架相比,FlickRpc无需定义消息格式,可像使用本地方法一样调用RPC,并且 FlickRpc中不存在json反序列化与JAVA继承的冲突,更加简单易用;FlickRpc提供了同步调用和异步调用两种模式,可以通过静态上下文获取RPC远端信息;虽然FlickRpc是为视频云开发,但其本身是一个通用RPC框架,可以在任何系统中使用。 
  FlickRpc的使用极大简化了视频云在通信层的开发量,未来FlickRpc会独立开源。 
  灵活的调度模式 
  视频云视频处理系统有在线和离线调度器两种不同调度子系统,在线调度器适用于录制、截图以及在线视频合并等在线视频处理。这种任务的特点是具有很强的时效性,需要实时调度。例如录制任务,如果调度产生较大延迟,会导致录制内容丢失。 
  离线调度器适用于各种类型的转码业务,特点是任务可以积压,可以慢慢异步消费。如点播系统的视频转码,一个用户可以一次性提交很多待转码视频,只要在一个笼统的时间范围内完成即可,无需所有任务实时调度。 
  离线调度器是视频云超售的基础,因为只有允许一定的任务积压,才能在保证服务可靠的前提下节约资源成本。 
  租约与高可用 
  configserver和其他组件通过租约的方式实现元数据同步和高可用,以离线调度器高可用为例,如下图所示: 
  
  调度器A和调度器B负责调度不同用户的离线任务,A和B在启动时会向configserver注册,并获取元数据和租约信息,以及他们各自需要调度哪些用户。A和B每隔一段时间(5s-60s)会向configserver续租,如果A在某个时间宕机,一段时间后configserver会发现A持续多个周期没有续租,为了保障用户调度的高可用,configserver需要将A负责的调度任务交由相邻节点B继续执行,为此configserver会更新B的租约,在下次B续租时可以更新到新的租约和元数据,并触发reload。 
  通过租约机制,可以实现不同组件的元数据同步,调度器的水平扩展和主从模式等。 
  负载均衡 
  一个视频处理集群中,可以部署多个worker group,任务参数中可以指定在哪个worker group中执行,worker group的划分使视频云可以在容量规划中因地制宜,例如录制任务需要大量的IO操作,因此录制任务的worker group需要配备SSD和千兆网络,而录制过程几乎不会耗CPU资源,可以在CPU配备上节约成本,而转码任务反之。 
  在一个worker group内,任务调度在没有超过worker slot上限的前提下,采用取模哈希的方式满足负载均衡,当worker调度到的任务数到达slot上限,会从调度器中剔除,直到新的slot空闲出来。

视频云面向海量用户的分布式视频处理技术相关推荐

  1. 2020云智中国-百度智能云尤莉:智能视频云2.0,构建泛视频“新基建”

    2020云智中国西安站论坛于12月11日,在西安香格里拉大酒店顺利举办.论坛主旨为百度智能云推动产业智能化再升级.百度智能云尤莉在论坛上发表了主题演讲:智能视频云2.0,构建泛视频"新基建& ...

  2. 阿里云视频云正式支持AV1编码格式 为视频编码服务降本提效

    今天我们要说的 AV1 可不是我们平时说的 .AVI 文件格式,它是由AOM(Alliance for Open Media,开放媒体联盟)制定的一个开源.免版权费的视频编码格式,可以解决H.265昂 ...

  3. NBA赛事直播超清画质背后:阿里云视频云「窄带高清2.0」技术深度解读

    在半月前结束的NBA总决赛中,百视TV作为全网唯一采用"主播陪你看NBA"模式的直播平台,以"陪看型"赛事解说来面对内容差异化竞争.与此同时,百视TV还运用了& ...

  4. 珊珊来迟的Oracle云,面向企业用户

    近日Oracle CEO拉里.埃利森(Larry Ellison)在D10大会上宣布,Oracle将很快发布一大批基于云的工具和应用软件.他说,"我们发布的是这个星球上最强大而全面的云&qu ...

  5. 网易云课堂:用视频云技术承载3300万用户的流畅学习体验

    "做时代奋进者的高效充电站",作为一个致力于用互联网推动实用技能教育的团队,网易云课堂的宏愿无疑是美好的.然而,在技术人才紧缺.网络环境迥异.终端设备复杂的背景下,如何在快速扩张的 ...

  6. 网易视频云余利华:以用户体验为核心,深耕PaaS云生态

    如果说2016年互联网科技圈最热门的词汇,"直播"必定是最佳候选之一.来势汹汹的直播,正在与各式各样的行业联姻,形成"直播+"的经济模式,一度引发了全民直播的热 ...

  7. 网易视频云CEO余利华:云服务的核心仍是用户体验

    如果说2016年互联网科技圈最热门的词汇,"直播"必定是最佳候选之一.来势汹汹的直播,正在与各式各样的行业联姻,形成"直播+"的经济模式,一度引发了全民直播的热 ...

  8. 大华大屏显示高清服务器4u,【功能实测】大华股份DH-M70-4U-D 分布式视频云显控平台...

    信息数据中心处理,视频分布"四通八达",大华股份DH-M70-4U-D 分布式视频云显控平台实测报告. 技术成熟经典设计 部署完备应用可靠 大华股份DH-M70-4U-D分布式视频 ...

  9. 阿里云低代码音视频工厂正式上线,为企业用户提供音视频开发最短路径

    简介:阿里云低代码音视频工厂正式上线,极大程度降低音视频开发门槛,打破传统音视频开发壁垒,全新定义音视频应用开发. 1月5日,阿里云低代码音视频工厂正式上线,极大程度降低音视频开发门槛,打破传统音视频 ...

最新文章

  1. ClassLoader知识收集
  2. ajax 阻止默认提交,jQuery验证插件:在对ajax调用servlet时,submitHandler不会阻止默认提交-返回false无效...
  3. 构造数组MaxTree、环形单链表的约瑟夫问题等总结
  4. 操作系统pv操作学习总结
  5. centos mysql下载64位_CentOS7 64位安装mysql教程
  6. 拼图项目的动机和目标
  7. c语言函数的三种调用方式是什么?
  8. 详解谷歌官方教程 Android插件ADT 9.0.0
  9. 51单片机课程设计——led点阵广告牌程序设计
  10. 凯文米特尼克-《欺骗的艺术》[完整中文版][DOC][PDF]
  11. 三级联动下拉列表的开发过程与范例
  12. Matlab中grid 的使用
  13. 安卓ps2模拟器_安卓PS2模拟器评测:真魂斗罗,不卡完美运行
  14. python opencv生成背景透明图标
  15. 编码的奥秘:布莱叶盲文与二元编码
  16. linux 文件系统损坏修复方式
  17. 从1到100怎么做?小红书KOL五大阶段运营增长策略
  18. 超分辨率 | 综述!使用深度学习来实现图像超分辨率
  19. 分布式系统限流策略/秒杀系统限流设计
  20. 数据结构中的有序和无序

热门文章

  1. linux内核五大部分,Linux内核的五大模块
  2. 线程优先级抢占实验【RT-Thread学习笔记 3】
  3. pixhawk学习笔记-----mavlink
  4. POSIX线程专有数据的空间释放问题,pthread_key_create
  5. Class create, device create, device create file
  6. 深入理解ARM体系架构(S3C6410)---PWM实例
  7. 使用pyinstaller打包python程序时问题记录
  8. html5饼图的制作方法,html5制作饼图
  9. latex使用记录3
  10. 求一个数是几位数,并求每位数相加的和