CN112565774A - 视频转码资源调度方法及装置 - Google Patents

视频转码资源调度方法及装置 Download PDF

Info

Publication number
CN112565774A
CN112565774A CN202011348988.2A CN202011348988A CN112565774A CN 112565774 A CN112565774 A CN 112565774A CN 202011348988 A CN202011348988 A CN 202011348988A CN 112565774 A CN112565774 A CN 112565774A
Authority
CN
China
Prior art keywords
transcoding
task
transcoding task
priority
executing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011348988.2A
Other languages
English (en)
Other versions
CN112565774B (zh
Inventor
刘艺宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202011348988.2A priority Critical patent/CN112565774B/zh
Publication of CN112565774A publication Critical patent/CN112565774A/zh
Application granted granted Critical
Publication of CN112565774B publication Critical patent/CN112565774B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream

Abstract

提供一种视频转码资源调度方法及装置。该视频转码资源调度方法包括:接收第一转码任务;在转码集群中当前没有空闲线程并且确定开启抢占功能的情况下,将第一转码任务的优先级与正在执行的转码任务的优先级进行比较;并且在正在执行的转码任务中存在优先级比第一转码任务的优先级更低的第二转码任务的情况下,控制执行第二转码任务的服务器停止执行第二转码任务,并向所述停止执行第二转码任务的服务器发送执行第一转码任务的请求。根据本公开的视频转码资源调度方法及装置,可提高上传链路峰值流量的承载能力,提高转码集群的稳定性和资源利用率,节约服务器成本。

Description

视频转码资源调度方法及装置
技术领域
本公开涉及视频转码技术领域。更具体地,本公开涉及一种视频转码资源调度方法及装置。
背景技术
视频转码分为同步(AVC)和异步(HEVC)转码。同步转码耗时较短,压缩率低;异步转码耗时长,压缩率高。因此,对全部视频在上传时进行同步转码,对高热度视频进行异步转码。也就是说在上传时完成了预转码和上传转码,完成转码后视频对其他用户可见,之后再对高热度视频进行异步转码,满足其他各种视频下载观看等各种需求。
相关的处理方式主要面临以下几个问题:(1)用户上传量在节假日时会有突发高峰,为了保障同步转码服务的可用性,需要在同步转码集群预留大量资源,这些资源平时空闲,CPU利用率非常低;(2)用户上传和观看量每天有高峰和低谷,使用固定的阈值触发异步转码,无法保证一天各时段任务量一致,夜间CPU利用率低;(3)其他业务方有大量服务器平时CPU利用率较低,或公司有闲置服务器,这些资源可以用来转码,却无法被充分利用。
发明内容
本公开的示例性实施例在于提供一种视频转码资源调度方法及装置,以至少解决相关技术中的视频转码资源调度的问题,也可不解决任何上述问题。
根据本公开的示例性实施例,提供一种视频转码资源调度方法,包括:接收第一转码任务;在转码集群中当前没有空闲线程并且确定开启抢占功能的情况下,将第一转码任务的优先级与正在执行的转码任务的优先级进行比较;并且在正在执行的转码任务中存在优先级比第一转码任务的优先级更低的第二转码任务的情况下,控制执行第二转码任务的服务器停止执行第二转码任务,并向所述停止执行第二转码任务的服务器发送执行第一转码任务的请求。
可选地,转码集群是同步转码和异步转码统一调度集群。
可选地,所述第一转码任务可被分类为同步转码任务和异步转码任务,其中,会员用户的同步转码任务的优先级>普通用户的同步转码任务的优先级>会员用户的异步转码任务的优先级>普通用户的异步转码任务的优先级。
可选地,所述视频转码资源调度方法还可包括:通过下面的步骤确定在转码集群中当前是否有空闲线程:获取转码集群中的每个服务器的当前空闲线程数,并根据每个服务器的当前空闲线程数判断转码集群中当前是否有空闲线程,其中,各个服务器的当前空闲线程数分别被独立地缓存。
可选地,所述视频转码资源调度方法还可包括:在转码集群中当前有空闲线程的情况下,通过加权随机算法从当前有空闲线程的服务器中选择的一个服务器,以向被选择的服务器发送执行第一转码任务的请求。
可选地,所述视频转码资源调度方法还可包括:在被选择的服务器的线程池满的情况下或者在执行第一转码任务的线程被抢占的情况下,重新选择服务器重试执行第一转码任务并记录重试次数。
可选地,所述视频转码资源调度方法还可包括:根据第一转码任务的重试次数确定重新选择服务器重试执行第一转码任务、开启抢占功能或将第一转码任务加入排队队列。
可选地,所述视频转码资源调度方法还可包括:在正在执行的转码任务中不存在优先级比第一转码任务的优先级更低的第二转码任务的情况下、或者在转码集群中当前没有空闲线程并且确定不开启抢占功能的情况下,根据第一转码任务的重试次数确定是否允许排队;并且在确定允许排队的情况下,根据第一转码任务的优先级将第一转码任务加入排队队列,以排队执行第一转码任务。
可选地,所述视频转码资源调度方法还可包括:通过下面的步骤确定是否开启抢占功能:根据第一转码任务的类别确定是否开启抢占功能,其中,如果第一转码任务是同步转码任务,则确定开启抢占功能;如果第一转码任务是异步转码任务,则确定不开启抢占功能。
可选地,在第一转码任务是异步转码任务的情况下,排队队列中的第一转码任务可根据第一转码任务的优先级和截止时间分别进行排序。
可选地,在第一转码任务是异步转码任务的情况下,第一转码任务的优先级是根据第一转码任务中的转码视频的粉丝数、粉丝数的权重、观看量、观看量的权重计算的。
可选地,在第一转码任务是异步转码任务的情况下,排队队列中的第一转码任务可被打散到多个分区,每个分区使用独立的分布式锁。
可选地,排队队列可支持批量读写的访问方式。
根据本公开的示例性实施例,提供一种视频转码资源调度装置,包括:任务接收单元,被配置为接收第一转码任务;优先级比较单元,被配置为在转码集群中当前没有空闲线程并且确定开启抢占功能的情况下,将第一转码任务的优先级与正在执行的转码任务的优先级进行比较;和请求发送单元,被配置为在正在执行的转码任务中存在优先级比第一转码任务的优先级更低的第二转码任务的情况下,控制执行第二转码任务的服务器停止执行第二转码任务,并向所述停止执行第二转码任务的服务器发送执行第一转码任务的请求。
可选地,转码集群是同步转码和异步转码统一调度集群。
可选地,所述第一转码任务可被分类为同步转码任务和异步转码任务,其中,会员用户的同步转码任务的优先级>普通用户的同步转码任务的优先级>会员用户的异步转码任务的优先级>普通用户的异步转码任务的优先级。
可选地,所述视频转码资源调度装置还可包括空闲判断单元,被配置为通过下面的步骤确定在转码集群中当前是否有空闲线程:获取转码集群中的每个服务器的当前空闲线程数,并根据每个服务器的当前空闲线程数判断转码集群中当前是否有空闲线程,其中,各个服务器的当前空闲线程数分别被独立地缓存。
可选地,所述视频转码资源调度装置还可包括服务器选择单元,被配置为:在转码集群中当前有空闲线程的情况下,通过加权随机算法从当前有空闲线程的服务器中选择的一个服务器,以向被选择的服务器发送执行第一转码任务的请求。
可选地,所述视频转码资源调度装置还可包括重试单元,被配置为:在被选择的服务器的线程池满的情况下或者在执行第一转码任务的线程被抢占的情况下,重新选择服务器重试执行第一转码任务并记录重试次数。
可选地,所述视频转码资源调度装置还可包括策略选择单元,被配置为:根据第一转码任务的重试次数确定重新选择服务器重试执行第一转码任务、开启抢占功能或将第一转码任务加入排队队列。
可选地,所述视频转码资源调度装置还可包括排队执行单元,被配置为:在正在执行的转码任务中不存在优先级比第一转码任务的优先级更低的第二转码任务的情况下、或者在转码集群中当前没有空闲线程并且确定不开启抢占功能的情况下,根据第一转码任务的重试次数确定是否允许排队;并且在确定允许排队的情况下,根据第一转码任务的优先级将第一转码任务加入排队队列,以排队执行第一转码任务。
可选地,所述视频转码资源调度装置还可包括抢占开关单元,被配置为通过下面的步骤确定是否开启抢占功能:根据第一转码任务的类别确定是否开启抢占功能,其中,如果第一转码任务是同步转码任务,则确定开启抢占功能;如果第一转码任务是异步转码任务,则确定不开启抢占功能。
可选地,在第一转码任务是异步转码任务的情况下,排队队列中的第一转码任务可根据第一转码任务的优先级和截止时间分别进行排序。
可选地,在第一转码任务是异步转码任务的情况下,第一转码任务的优先级是根据第一转码任务中的转码视频的粉丝数、粉丝数的权重、观看量、观看量的权重计算的。
可选地,在第一转码任务是异步转码任务的情况下,排队队列中的第一转码任务可被打散到多个分区,每个分区使用独立的分布式锁。
可选地,排队队列可支持批量读写的访问方式。
根据本公开的示例性实施例,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被处理器执行时,实现根据本公开的示例性实施例的视频转码资源调度方法。
根据本公开的示例性实施例,提供一种电子设备,包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,实现根据本公开的示例性实施例的视频转码资源调度方法。
根据本公开的示例性实施例,提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成根据本公开的示例性实施例的视频转码资源调度方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
提升转码集群的资源利用率,节约服务器成本;
同等数量服务器转码数量更多,可以使更多用户观看到经过高压缩率压缩的视频,节约公司带宽成本,同时减少用户的流量消耗和观看时的卡顿;
将同步和异步转码集群合并,使得资源调度更灵活,当峰值上传流量到来时,原来异步转码的资源可以用来同步转码,平时资源空闲时,原来同步转码的资源可以用来异步转码。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1示出根据本公开的示例性实施例的视频转码资源调度系统的结构示意图。
图2示出根据本公开的示例性实施例的TaskManager的工作流程的示意图。
图3示出根据本公开的示例性实施例的转码任务的请求逻辑的示意图。
图4示出根据本公开的示例性实施例的异步转码框架的示意图。
图5示出根据本公开的示例性实施例的优先级任务队列的数据结构的示意图。
图6示出根据本公开的示例性实施例的视频转码资源调度方法的流程图。
图7示出根据本公开的一个示例性实施例的视频转码资源调度装置的框图。
图8示出根据本公开的另一示例性实施例的视频转码资源调度装置的框图。
图9是根据本公开的示例性实施例的电子设备900的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
视频转码分为同步(AVC)和异步(HEVC)转码。同步转码耗时较短,压缩率低;异步转码耗时长,压缩率高。因此,对全部视频在上传时进行同步转码,对高热度视频进行异步转码。也就是说在上传时完成了预转码和上传转码,完成转码后视频对其他用户可见,之后再对高热度视频进行异步转码,满足其他各种视频下载观看等各种需求。视频转码需要消耗大量的资源,用户流量有高峰和低谷,需要保障在高峰时能及时进行同步转码,低谷时利用空闲资源进行异步转码。
相关的处理方式通常是在架构中分为同步转码和异步转码两个集群,分别用于同步和异步转码。每个视频上传时需要进行同步转码,保证视频可观看且码率可控;当视频热度(粉丝数、播放量)达到某个阈值时触发异步转码,使得视频有更高的压缩率和质量。异步转码耗时更长,压缩率更高。下面,将参照图1至图8具体描述根据本公开的示例性实施例的视频转码资源调度方法及装置。
图1示出根据本公开的示例性实施例的视频转码资源调度系统的结构示意图。
如图1所示,视频转码资源调度系统100中包括转码服务器集群101、终端102、视频平台103和视频转码资源调度平台104。
转码服务器集群101将同步转码集群与异步转码集群合并,统一调度资源,当峰值上传流量到来时,原来异步转码的资源可以用来同步转码。平时资源空闲时,原来同步转码的资源可以用来异步转码。
终端102通过无线网络或有线网络与视频平台103连接。终端102可以是移动终端,诸如智能手机游戏主机、可穿戴设备、个人数字助理、平板电脑、电子书阅读器、MP3播放器、MP4播放器和个人便携式计算机等。终端102上可安装和运行有诸如视频应用等客户端。终端102是用户使用的终端,终端102中运行的视频应用内可以登录由用户账号,用户可通过视频应用将视频上传到视频平台103。
终端102可以指多个终端中的一个,在本公开的实施例中,仅以终端102来举例说明。本领域的技术人员可以理解,上述终端的数量可以更多或更少。比如上述终端可以仅为一个,或者上述终端可以为几十个或上百个,或者更多数量。本公开对终端的数量和设备类型不进行限制。
视频平台103和视频转码资源调度平台104通信连接。视频转码资源调度平台104和转码服务器集群101通信连接。当终端102向视频平台103上传视频时,视频平台103向视频转码资源调度平台104发送转码任务。
由于将原来异步转码的资源用来同步转码时,可能存在上传流量高峰到来时资源被异步转码占据无法迅速释放的问题,因此为了解决上述问题,视频转码资源调度平台104配置了支持抢占的任务管理器(TaskManager)。通过处理java线程中断信号和杀死进程的方式,支持迅速结束低优先级转码任务及ffmpeg子进程,将资源释放给更高优先级的转码任务。
这样做的好处是:大量视频上传时,原来异步转码的机器可以用来同步转码,提升服务抗压性;原来的同步转码集群在空闲时可以进行异步转码,提升资源利用率降低服务器成本,提升高压缩率转码视频的观看覆盖率降低带宽成本。
TaskManager支持设定任务优先级和抢占功能。当前任务数量达到并发限制时,可以排队或立即终止低优先级任务为高优先级任务释放资源,排队的任务将按优先级顺序执行。
转码任务在TaskManager中分为不同优先级:大v(例如,VIP用户)同步转码>普通用户同步转码>大v异步转码>普通异步转码,每一级任务可根据配置决定是否抢占更低优先级的任务。在当前的配置下,同步转码任务可以抢占异步转码任务占用的资源。
图2示出根据本公开的示例性实施例的TaskManager的工作流程的示意图。
如图2所示,TaskManager在启动转码任务之后,首先判断转码服务器集群101中当前是否有空闲线程,如果有空闲线程,则在空闲线程上执行转码任务,在转码任务执行成功的情况下,返回结果,在转码任务的线程被抢占的情况下,返回被抢占状态码,以使得重试请求执行该转码任务。如果没有空闲线程,则请求视频转码资源调度平台104是否开启抢占功能,如果确定开启抢占功能,则在正在执行的转码任务中存在优先级比该转码任务的优先级更低的转码任务的情况下,控制执行低优先级转码任务的服务器停止执行低优先级转码任务,并向停止执行低优先级转码任务的服务器发送执行该转码任务的请求。在正在执行的转码任务中不存在优先级比该转码任务的优先级更低的转码任务的情况下、或者在当前没有空闲线程并且确定不开启抢占功能的情况下,根据该转码任务的重试次数确定是否允许排队。在确定允许排队的情况下,根据该转码任务的优先级将该转码任务加入排队队列,以在有空闲线程时排队执行该转码任务。在确定不允许排队的情况下,输出线程池满状态码。
为了解决转码任务请求分布不均匀的问题,转码服务器集群101或者视频转码资源调度平台104使用独立的服务缓存每个转码服务器(例如,但不限于,gRPC服务器)的当前状态,并对转码任务的请求逻辑进行改进。
图3示出根据本公开的示例性实施例的转码任务的请求逻辑的示意图。如图3所示,视频平台103或者视频转码资源调度平台104在请求调用转码服务时,会请求获取每个gRPC服务器的空闲线程数,使用加权随机算法(weighted random)选择服务器(实例)发送请求,若返回线程池满或被抢占的状态码会重新选择服务器进行重试。对于同步转码任务,可根据当前重试次数决定重试、抢占或是排队:例如,重试次数<第一阈值x时,重试寻找空闲的机器;第一阈值x<=重试次数<第二阈值y时,尝试抢占异步转码任务;重试次数>=第二阈值y时,说明此时请求量很大,排队等待而避免频繁重试。
优化之后服务抗压性显著提升,节假日到来时无需人工进行缩扩容操作将异步转码资源转移给同步转码集群。TaskManager表现稳定,压测中配合降级策略能承载平日峰值数10倍的上传量。如果没有集群合并,需要多花费当前机器数量1.5倍的机器才能承载同样的上传量。
视频转码资源调度平台104还对异步转码任务触发策略进行了改进。
在相关技术中,使用Kafka队列存储异步转码任务,当视频观看量或作者粉丝数到达固定阈值时任务入队。队列只能按时序消费,若队列实时消费,则会有资源闲置,若队列非实时消费,则后触发的高热度视频无法及时转码。为了解决这个问题,视频转码资源调度平台104利用Redis实现了分布式优先级任务队列,将视频按热度排序进行异步转码。优先级队列永远不为空,使得转码集群时刻处在满负荷状态,高热度的视频可以优先进行转码。优先级队列实现中,使用Redis Pipeline吞吐量,通过将任务分散在多个分区(partition)支持高并发使用分布式锁保障一致性。
图4示出根据本公开的示例性实施例的异步转码框架的示意图。为了实现一个使得转码集群满负荷运转的智能调度器,设计如图4所示的新的框架:对每个转码任务通过打分确定优先级,用一个大的优先级任务队列存放不限量的转码任务,一旦集群空闲,就从优先级任务队列中取出当前优先级最高的任务来执行。例如,可根据公式score=max(fanCount*fanCountFactor,viewCount*viewCountFactor)计算转码任务的分数。这里,fanCount表示粉丝数,fanCountFactor表示粉丝数的权重,viewCount表示观看量,viewCountFactor表示观看量的权重。具体来说,不同的转码类型有不同的任务权重,具体数值取决于该转码类型的耗时和实际收益(压缩率)。可通过监听视频上传和被观看事件,实时更新转码任务的优先级。
在本公开的示例性实施例中,优先级任务队列需要支持的操作有:push(key,item,priority,ttl):添加/更新任务,设定任务的优先级和过期时间;和pop():从队列中取出优先级最高的任务。
优先级任务队列依赖Redis支持高并发访问和HA。图5示出根据本公开的示例性实施例的优先级任务队列的数据结构的示意图。如图5所示,优先级任务队列在存储转码任务时使用两个zset分别将任务key按优先级和截止时间排序,另外通过Key-Value功能存储任务具体内容。为了支持并发读写,对于优先级顺序要求不严格的场景,支持使用hash将任务打散到多个分区(partition),每个分区(partition)使用独立的分布式锁保证一致性,消费时局部有序。另外,队列在访问方式上支持了批量读写任务,使用redis pipeline来提升性能。
优先级任务队列不断获取当前最高优先级的任务填充满服务器资源,结合同步转码和异步转码集群合并,使得转码集群整体平均CPU利用率提高了30%多,经过压缩率转码(HEVC和KVC)的视频观看占比大幅提升。
图6示出根据本公开的示例性实施例的视频转码资源调度方法的流程图。
参照图6,在步骤S601,接收第一转码任务。
在本公开的示例性实施例中,第一转码任务被分类为同步转码任务和异步转码任务。第一转码任务可以是同步转码任务,也可以是异步转码任务。这里,会员用户的同步转码任务的优先级>普通用户的同步转码任务的优先级>会员用户的异步转码任务的优先级>普通用户的异步转码任务的优先级。
在步骤S602,在转码集群中当前没有空闲线程并且确定开启抢占功能的情况下,将第一转码任务的优先级与正在执行的转码任务的优先级进行比较。
在本公开的示例性实施例中,转码集群是同步转码和异步转码统一调度集群。当峰值上传流量到来时,原来异步转码的资源可以用来同步转码。平时资源空闲时,原来同步转码的资源可以用来异步转码。为了避免上传流量高峰到来时资源被异步转码占据无法迅速释放,可通过处理java线程中断信号和杀死进程的方式,支持迅速结束低优先级转码任务及ffmpeg子进程,将资源释放给更高优先级的转码任务。
在本公开的示例性实施例中,接收第一转码任务之后,可通过下面的步骤确定在转码集群中当前是否有空闲线程:获取转码集群中的每个服务器的当前空闲线程数,并根据每个服务器的当前空闲线程数判断转码集群中当前是否有空闲线程。这里,各个服务器的线程的当前状态分别通过独立的服务被缓存,也就是说,各个服务器的当前空闲线程数分别被独立地缓存。每个服务器的当前空闲线程数是实时变化的。
在本公开的示例性实施例中,在转码集群中当前没有空闲线程的情况下,可根据第一转码任务的类别确定是否开启抢占功能。在本公开的示例性实施例中,当第一转码任务是同步转码任务时,确定开启抢占功能。当第一转码任务是异步转码任务时,确定不开启抢占功能。也就是说,同步转码任务可以抢占异步转码任务占用的资源。
在本公开的示例性实施例中,在转码集群中当前有空闲线程的情况下,通过加权随机算法(weighted random)从当前有空闲线程的服务器中选择的一个服务器,向被选择的服务器发送执行第一转码任务的请求;被选择的服务器可在空闲的线程上执行第一转码任务。由于每个服务器的当前空闲线程数是实时变化的,因此,被选择的服务器的空闲线程可能被其他任务占用好被抢占。当第一转码任务是同步转码任务时,在被选择的服务器的线程池满的情况下或者在执行第一转码任务的线程被抢占的情况下,可重新选择服务器重试执行第一转码任务。在本公开的示例性实施例中,可根据第一转码任务的重试次数确定重试执行第一转码任务、开启抢占功能或将第一转码任务加入排队队列。例如,重试次数<第一阈值x时,重试寻找空闲的机器;第一阈值x<=重试次数<第二阈值y时,尝试抢占异步转码任务;重试次数>=第二阈值y时,说明此时请求量很大,排队等待而避免频繁重试。
在步骤S603,在正在执行的转码任务中存在优先级比第一转码任务的优先级更低的第二转码任务的情况下,控制执行第二转码任务的服务器停止执行第二转码任务,并向停止执行第二转码任务的服务器发送执行第一转码任务的请求。
在本公开的示例性实施例中,在正在执行的转码任务中不存在优先级比第一转码任务的优先级更低的第二转码任务的情况下、或者在转码集群中当前没有空闲线程并且确定不开启抢占功能的情况下,根据第一转码任务的重试次数确定是否允许排队;在确定允许排队的情况下,根据第一转码任务的优先级将第一转码任务加入排队队列,以排队执行第一转码任务。在本公开的示例性实施例中,在确定不允许排队的情况下,可输出线程池满状态码。在本公开的示例性实施例中,响应于停止执行第二转码任务,可输出被抢占状态码。
在本公开的示例性实施例中,在第一转码任务是异步转码任务的情况下,排队队列中的第一转码任务根据第一转码任务的优先级和截止时间分别进行排序。例如,在存储转码任务时可使用两个zset分别将任务key按优先级和截止时间排序。
在本公开的示例性实施例中,在第一转码任务是异步转码任务的情况下,第一转码任务的优先级是根据第一转码任务中的转码视频的粉丝数、粉丝数的权重、观看量、观看量的权重计算的。例如,可根据公式score=max(fanCount*fanCountFactor,viewCount*viewCountFactor)计算转码任务的分数。这里,fanCount表示粉丝数,fanCountFactor表示粉丝数的权重,viewCount表示观看量,viewCountFactor表示观看量的权重。
在本公开的示例性实施例中,在第一转码任务是异步转码任务的情况下,排队队列中的第一转码任务被打散到多个分区,每个分区使用独立的分布式锁。具体来说,为了支持并发读写,对于优先级顺序要求不严格的场景,支持使用hash将任务打散到多个分区(partition),每个分区(partition)使用独立的分布式锁保证一致性,消费时局部有序。
在本公开的示例性实施例中,排队队列可支持批量读写的访问方式。
以上已经结合图1至图6对根据本公开的示例性实施例的视频转码资源调度方法进行了描述。在下文中,将参照图7和图8对根据本公开的示例性实施例的视频转码资源调度装置及其单元进行描述。
图7示出根据本公开的一个示例性实施例的视频转码资源调度装置的框图。
参照图7,视频转码资源调度装置包括任务接收单元71、优先级比较单元72和请求发送单元73。
任务接收单元71被配置为接收第一转码任务。
在本公开的示例性实施例中,第一转码任务可被分类为同步转码任务和异步转码任务。这里,会员用户的同步转码任务的优先级>普通用户的同步转码任务的优先级>会员用户的异步转码任务的优先级>普通用户的异步转码任务的优先级。
优先级比较单元72被配置为在转码集群中当前没有空闲线程并且确定开启抢占功能的情况下,将第一转码任务的优先级与正在执行的转码任务的优先级进行比较。
在本公开的示例性实施例中,转码集群是同步转码和异步转码统一调度集群。
请求发送单元73被配置为在正在执行的转码任务中存在优先级比第一转码任务的优先级更低的第二转码任务的情况下,控制执行第二转码任务的服务器停止执行第二转码任务,并向停止执行第二转码任务的服务器发送执行第一转码任务的请求。
图8示出根据本公开的另一示例性实施例的视频转码资源调度装置的框图。
参照图8,视频转码资源调度装置包括任务接收单元81、空闲判断单元82、策略选择单元83、优先级比较单元84和请求发送单元85。
任务接收单元81被配置为接收第一转码任务。
在本公开的示例性实施例中,第一转码任务可被分类为同步转码任务和异步转码任务。这里,会员用户的同步转码任务的优先级>普通用户的同步转码任务的优先级>会员用户的异步转码任务的优先级>普通用户的异步转码任务的优先级。
空闲判断单元82被配置为获取转码集群中的每个服务器的当前空闲线程数,并根据每个服务器的当前空闲线程数判断转码集群中当前是否有空闲线程。这里,各个服务器的当前空闲线程数分别被独立地缓存。
选择性请求单元83被配置为在转码集群中当前有空闲线程的情况下,通过加权随机算法从当前有空闲线程的服务器中选择的一个服务器,向被选择的服务器发送执行第一转码任务的请求。
在本公开的示例性实施例中,视频转码资源调度装置还可包括抢占开关单元(未示出),被配置为通过下面的步骤确定是否开启抢占功能:根据第一转码任务的类别确定是否开启抢占功能。在本公开的示例性实施例中,如果第一转码任务是同步转码任务,则确定开启抢占功能;如果第一转码任务是异步转码任务,则确定不开启抢占功能。
在本公开的示例性实施例中,视频转码资源调度装置还可包括重试单元(未示出),被配置为:在被选择的服务器的线程池满的情况下或者在执行第一转码任务的线程被抢占的情况下,重新选择服务器重试执行第一转码任务。
在本公开的示例性实施例中,视频转码资源调度装置还可包括策略选择单元(未示出),被配置为:根据第一转码任务的重试次数确定重新选择服务器重试执行第一转码任务、开启抢占功能或将第一转码任务加入排队队列。
优先级比较单元84被配置为在转码集群中当前没有空闲线程并且确定开启抢占功能的情况下,将第一转码任务的优先级与正在执行的转码任务的优先级进行比较。
在本公开的示例性实施例中,转码集群是同步转码和异步转码统一调度集群。
请求发送单元85被配置为在正在执行的转码任务中存在优先级比第一转码任务的优先级更低的第二转码任务的情况下,控制执行第二转码任务的服务器停止执行第二转码任务,并向所述停止执行第二转码任务的服务器发送执行第一转码任务的请求。
排队执行单元86被配置为在正在执行的转码任务中不存在优先级比第一转码任务的优先级更低的第二转码任务的情况下、或者在转码集群中当前没有空闲线程并且确定不开启抢占功能的情况下,根据第一转码任务的重试次数确定是否允许排队;并且在确定允许排队的情况下,根据第一转码任务的优先级将第一转码任务加入排队队列,以排队执行第一转码任务。
在本公开的示例性实施例中,在第一转码任务是异步转码任务的情况下,排队队列中的第一转码任务可根据第一转码任务的优先级和截止时间分别进行排序。
在本公开的示例性实施例中,在第一转码任务是异步转码任务的情况下,第一转码任务的优先级是根据第一转码任务中的转码视频的粉丝数、粉丝数的权重、观看量、观看量的权重计算的。
在本公开的示例性实施例中,在第一转码任务是异步转码任务的情况下,排队队列中的第一转码任务可被打散到多个分区,每个分区使用独立的分布式锁。
在本公开的示例性实施例中,排队队列可支持批量读写的访问方式。
以上已经结合图7和图8对根据本公开的示例性实施例的视频转码资源调度装置进行了描述。接下来,结合图9对根据本公开的示例性实施例的电子设备进行描述。
图9是根据本公开的示例性实施例的电子设备900的框图。
参照图9,电子设备900包括至少一个存储器901和至少一个处理器902,所述至少一个存储器901中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器902执行时,执行根据本公开的示例性实施例的视频转码资源调度的方法。
作为示例,电子设备900可以是PC计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备900并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备900还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
在电子设备900中,处理器902可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器902可运行存储在存储器901中的指令或代码,其中,存储器901还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器901可与处理器902集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器901可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器901和处理器902可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器902能够读取存储在存储器中的文件。
此外,电子设备900还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备900的所有组件可经由总线和/或网络而彼此连接。
根据本公开的示例性实施例,还可提供一种存储指令的计算机可读存储介质,其中,当指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的视频转码资源调度的方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-RLTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
根据本公开的示例性实施例,还可提供一种计算机程序产品,该计算机程序产品中的指令可由计算机设备的处理器执行以完成根据本公开的示例性实施例的视频转码资源调度的方法。
以上已参照图1至图9描述了根据本公开的示例性实施例的视频转码资源调度方法及装置。然而,应该理解的是:图7和图8中所示的视频转码资源调度装置及其单元可分别被配置为执行特定功能的软件、硬件、固件或上述项的任意组合,图9中所示的电子设备并不限于包括以上示出的组件,而是可根据需要增加或删除一些组件,并且以上组件也可被组合。
根据本公开的视频转码资源调度方法及装置,合并同步转码集群和异步转码集群并实现任务抢占,统一调度资源,当峰值上传流量到来时,原来异步转码的资源可以用来同步转码,平时资源空闲时,原来同步转码的资源可以用来异步转码,从而使得同步转码的资源和异步转码的资源相互间可以混用,调度更加灵活,提高了上传链路峰值流量的承载能力,提高了转码集群的稳定性和资源利用率,节约了服务器成本。
此外,根据本公开的视频转码资源调度方法及装置,可对每个转码任务通过打分确定优先级,用一个大的优先级任务队列存放不限量的转码任务,将转码任务按优先级(视频热度)在优先级任务队列中排序,一旦转码集群空闲,就从优先级任务队列中取出当前优先级最高的任务来执行,从而使得转码集群永远处在满负荷状态,高热度视频可以立即被转码,同等数量服务器可转码的视频数量更多,使更多用户观看到经过高压缩率压缩的视频,节约公司带宽成本,同时减少用户的流量消耗和观看时的卡顿。
此外,根据本公开的视频转码资源调度方法及装置,可支持使用hash将转码任务打散到多个分区,每个分区使用独立的分布式锁保证一致性,消费时局部有序。此外,优先级任务队列在访问方式上可支持批量读写任务,使用redis pipeline来提升读写性能。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种视频转码资源调度方法,其特征在于,包括:
接收第一转码任务;
在转码集群中当前没有空闲线程并且确定开启抢占功能的情况下,将第一转码任务的优先级与正在执行的转码任务的优先级进行比较;并且
在正在执行的转码任务中存在优先级比第一转码任务的优先级更低的第二转码任务的情况下,控制执行第二转码任务的服务器停止执行第二转码任务,并向所述停止执行第二转码任务的服务器发送执行第一转码任务的请求。
2.根据权利要求1所述的视频转码资源调度方法,其特征在于,转码集群是同步转码和异步转码统一调度集群。
3.根据权利要求1所述的视频转码资源调度方法,其特征在于,所述第一转码任务被分类为同步转码任务和异步转码任务,其中,会员用户的同步转码任务的优先级>普通用户的同步转码任务的优先级>会员用户的异步转码任务的优先级>普通用户的异步转码任务的优先级。
4.根据权利要求1所述的视频转码资源调度方法,其特征在于,还包括:通过下面的步骤确定在转码集群中当前是否有空闲线程:
获取转码集群中的每个服务器的当前空闲线程数,并根据每个服务器的当前空闲线程数判断转码集群中当前是否有空闲线程,
其中,各个服务器的当前空闲线程数分别被独立地缓存。
5.根据权利要求1所述的视频转码资源调度方法,其特征在于,还包括:
在转码集群中当前有空闲线程的情况下,通过加权随机算法从当前有空闲线程的服务器中选择的一个服务器,以向被选择的服务器发送执行第一转码任务的请求。
6.根据权利要求5所述的视频转码资源调度方法,其特征在于,还包括:
在被选择的服务器的线程池满的情况下或者在执行第一转码任务的线程被抢占的情况下,重新选择服务器重试执行第一转码任务。
7.根据权利要求6所述的视频转码资源调度方法,其特征在于,还包括:
根据第一转码任务的重试次数确定重新选择服务器重试执行第一转码任务、开启抢占功能或将第一转码任务加入排队队列。
8.一种视频转码资源调度装置,其特征在于,包括:
任务接收单元,被配置为接收第一转码任务;
优先级比较单元,被配置为在转码集群中当前没有空闲线程并且确定开启抢占功能的情况下,将第一转码任务的优先级与正在执行的转码任务的优先级进行比较;和
请求发送单元,被配置为在正在执行的转码任务中存在优先级比第一转码任务的优先级更低的第二转码任务的情况下,控制执行第二转码任务的服务器停止执行第二转码任务,并向所述停止执行第二转码任务的服务器发送执行第一转码任务的请求。
9.一种存储有计算机程序的计算机可读存储介质,其中,当所述计算机程序被处理器执行时,实现权利要求1至7中任一项所述的视频转码资源调度方法。
10.一种电子设备,包括:
至少一个处理器;
至少一个存储器,存储有计算机程序,当所述计算机程序被所述至少一个处理器执行时,实现权利要求1至7中任一项所述的视频转码资源调度方法。
CN202011348988.2A 2020-11-26 2020-11-26 视频转码资源调度方法及装置 Active CN112565774B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011348988.2A CN112565774B (zh) 2020-11-26 2020-11-26 视频转码资源调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011348988.2A CN112565774B (zh) 2020-11-26 2020-11-26 视频转码资源调度方法及装置

Publications (2)

Publication Number Publication Date
CN112565774A true CN112565774A (zh) 2021-03-26
CN112565774B CN112565774B (zh) 2023-05-02

Family

ID=75046873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011348988.2A Active CN112565774B (zh) 2020-11-26 2020-11-26 视频转码资源调度方法及装置

Country Status (1)

Country Link
CN (1) CN112565774B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473183A (zh) * 2021-06-29 2021-10-01 华夏城视网络电视股份有限公司 一种应用于融合媒体的动静态媒体流批处理方法
CN113676754A (zh) * 2021-08-18 2021-11-19 上海哔哩哔哩科技有限公司 直播视频转码方法及装置
CN114598927A (zh) * 2022-03-03 2022-06-07 京东科技信息技术有限公司 转码资源的调度方法、系统以及调度装置
CN114679593A (zh) * 2022-02-09 2022-06-28 上海哔哩哔哩科技有限公司 直播转码处理方法、装置及系统
CN115174948A (zh) * 2022-06-30 2022-10-11 上海哔哩哔哩科技有限公司 基于转码资源的调度方法及装置
CN115297334A (zh) * 2022-10-09 2022-11-04 卓望数码技术(深圳)有限公司 基于云边协同转码实现窄带传输视频的系统、方法和设备
WO2023024410A1 (zh) * 2021-08-27 2023-03-02 上海商汤智能科技有限公司 任务调度方法、装置、设备、存储介质及计算机程序产品、计算机程序

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101909048A (zh) * 2009-12-08 2010-12-08 新奥特(北京)视频技术有限公司 一种集中式转码处理方法和装置
CN101917384A (zh) * 2009-11-17 2010-12-15 新奥特(北京)视频技术有限公司 一种分布式转码系统的任务分发方法及装置
CN103686207A (zh) * 2013-12-04 2014-03-26 乐视网信息技术(北京)股份有限公司 转码任务的调度方法和系统
CN103686224A (zh) * 2013-12-26 2014-03-26 乐视网信息技术(北京)股份有限公司 基于分布式锁的转码任务获取的方法和系统
US20150281301A1 (en) * 2014-03-28 2015-10-01 Pelco, Inc. Dynamic Media Transcoding for P2P Communications
CN109788315A (zh) * 2019-01-31 2019-05-21 湖南快乐阳光互动娱乐传媒有限公司 视频转码方法、装置及系统
CN111565316A (zh) * 2020-07-15 2020-08-21 腾讯科技(深圳)有限公司 视频处理方法、装置、计算机设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101917384A (zh) * 2009-11-17 2010-12-15 新奥特(北京)视频技术有限公司 一种分布式转码系统的任务分发方法及装置
CN101909048A (zh) * 2009-12-08 2010-12-08 新奥特(北京)视频技术有限公司 一种集中式转码处理方法和装置
CN103686207A (zh) * 2013-12-04 2014-03-26 乐视网信息技术(北京)股份有限公司 转码任务的调度方法和系统
CN103686224A (zh) * 2013-12-26 2014-03-26 乐视网信息技术(北京)股份有限公司 基于分布式锁的转码任务获取的方法和系统
US20150281301A1 (en) * 2014-03-28 2015-10-01 Pelco, Inc. Dynamic Media Transcoding for P2P Communications
CN109788315A (zh) * 2019-01-31 2019-05-21 湖南快乐阳光互动娱乐传媒有限公司 视频转码方法、装置及系统
CN111565316A (zh) * 2020-07-15 2020-08-21 腾讯科技(深圳)有限公司 视频处理方法、装置、计算机设备及存储介质

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473183A (zh) * 2021-06-29 2021-10-01 华夏城视网络电视股份有限公司 一种应用于融合媒体的动静态媒体流批处理方法
CN113473183B (zh) * 2021-06-29 2023-05-05 华夏城视网络电视股份有限公司 一种应用于融合媒体的动静态媒体流批处理方法
CN113676754A (zh) * 2021-08-18 2021-11-19 上海哔哩哔哩科技有限公司 直播视频转码方法及装置
CN113676754B (zh) * 2021-08-18 2023-08-29 上海哔哩哔哩科技有限公司 直播视频转码方法及装置
WO2023024410A1 (zh) * 2021-08-27 2023-03-02 上海商汤智能科技有限公司 任务调度方法、装置、设备、存储介质及计算机程序产品、计算机程序
CN114679593A (zh) * 2022-02-09 2022-06-28 上海哔哩哔哩科技有限公司 直播转码处理方法、装置及系统
CN114679593B (zh) * 2022-02-09 2023-09-22 上海哔哩哔哩科技有限公司 直播转码处理方法、装置及系统
CN114598927A (zh) * 2022-03-03 2022-06-07 京东科技信息技术有限公司 转码资源的调度方法、系统以及调度装置
CN115174948A (zh) * 2022-06-30 2022-10-11 上海哔哩哔哩科技有限公司 基于转码资源的调度方法及装置
CN115174948B (zh) * 2022-06-30 2023-12-15 上海哔哩哔哩科技有限公司 基于转码资源的调度方法及装置
CN115297334A (zh) * 2022-10-09 2022-11-04 卓望数码技术(深圳)有限公司 基于云边协同转码实现窄带传输视频的系统、方法和设备

Also Published As

Publication number Publication date
CN112565774B (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
CN112565774B (zh) 视频转码资源调度方法及装置
US10985989B2 (en) Cross layer signaling for network resource scaling
US7076553B2 (en) Method and apparatus for real-time parallel delivery of segments of a large payload file
US9146884B2 (en) Push pull adaptive capture
US5854887A (en) System for the management of multiple time-critical data streams
US9391857B2 (en) Scheduling requests for data transfers in a multi-device storage system
US10601901B2 (en) Methods, systems, and media for stored content distribution and access
Chou et al. Striping doesn't scale: How to achieve scalability for continuous media servers with replication
US10810143B2 (en) Distributed storage system and method for managing storage access bandwidth for multiple clients
CN102197386A (zh) 远程计算会话中的文件类型关联
TWI394074B (zh) 管理儲存之存取之方法,裝置及電腦程式
US9645747B2 (en) Management of allocation for alias devices
CN111881116A (zh) 数据迁移方法、数据迁移系统、计算机系统和存储介质
KR100671635B1 (ko) 스트리밍 미디어 서비스 관리 방법
CN113038190A (zh) 内容分发网络的调度方法和内容分发网络的调度装置
US20100030931A1 (en) Scheduling proportional storage share for storage systems
GB2508403A (en) Request queue scheduler based on deadlines
CN116069493A (zh) 一种数据处理方法、装置、设备以及可读存储介质
US20220222013A1 (en) Scheduling storage system tasks to promote low latency and sustainability
Huang et al. Load balancing for clusters of VOD servers
CN114296891A (zh) 任务的调度方法、系统、计算设备、存储介质及程序产品
CN112965796B (zh) 一种任务调度系统、方法和装置
Christodoulakis et al. The KYDONIA multimedia information server
CN1138224C (zh) 一种计算机网络服务装置
US11972287B2 (en) Data transfer prioritization for services in a service chain

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant