基于分布式锁的转码任务获取的方法和系统的制作方法
【专利摘要】本发明公开了基于分布式锁的转码任务获取的方法和系统,该方法包括:注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求;在确定出所述注册节点接收的所有转码任务获取请求中不包含特定转码任务获取请求时,删除所有转码任务获取请求;在确定出所述注册节点接收的所有转码任务获取请求中包含所述特定转码任务获取请求时,为所述特定转码任务获取请求分配读写锁;将被分配了所述读写锁的任务获取请求发送给控制中心,以使得向所述注册节点发送所述特定转码任务获取请求的转码服务器从所述控制中心处获得需在所述转码任务获取周期内执行的转码任务并进行处理。本发明解决了不能对控制中心的转码队列生成分布式锁的问题。
【专利说明】基于分布式锁的转码任务获取的方法和系统
【技术领域】
[0001]本申请涉及分布式控制领域,更具体地,涉及一种基于分布式锁的转码任务获取的方法和系统。
【背景技术】
[0002]现有技术中,视频网站中的视频文件由于受到网络传输协议、网络数据传输特性等条件的限制,并不是所有的视频格式都适合于网络传输播放,进行播放的视频都需要经过转码处理,转换成适合于网络播放的格式(如flv”格式适合于电视终端传输及播放,
mp4”格式适合于计算机及移动终端网络传输及播放)。为了保证用户的观看体验,视频网站通常都会提供大量的视频共用户自由选择播放。也就是说,视频网站需要建立大量的转码任务,并通过其内部的转码系统(由转码服务器构成)来执行视频的转码处理。
[0003]对于转码系统而言,其中包括控制中心和注册到控制中心的多个转码服务器。控制中心根据相应的视频数据库中存储的视频资源生成对应的转码任务,以转码队列的方式将所有的转码任务进行共享,所有的转码服务器(或转码服务器中的转码进程)都可以通过向控制中心发送转码任务获取请求的方式获取到控制中心的转码队列,并针对转码队列中的转码任务进行转码处理。
[0004]由于转码系统中不同的转码服务器(或是其中的转码进程)都可以获取控制中心的转码队列进行转码处理,所以可能出现处理任务重复的情况,如:多台转码服务器都针对所获取的转码队列中的“转码任务X”进行处理,从而造成了转码资源的严重浪费。
【发明内容】
[0005]有鉴于此,本申请所要解决的技术问题是提供了一种基于分布式锁的转码任务获取的方法和系统,以解决不能对控制中心的转码队列生成分布式锁的问题。
[0006]为了解决上述技术问题,本申请公开了一种基于分布式锁的转码任务获取的方法,包括:
[0007]注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求;
[0008]在确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含特定转码任务获取请求时,删除在所述转码任务获取周期内接收到的所有转码任务获取请求;其中,所述特定转码任务获取请求是在所述转码任务获取周期内最早被发送至转码系统中的注册节点的转码任务获取请求;或者,所述特定转码任务获取请求是所述转码系统中级别最高的转码服务器发送的转码任务获取请求;所述转码系统为所述注册节点所属的转码系统,且所述转码系统至少包含一个注册节点;转码服务器的所述级别是根据转码服务器的属性信息预先设置的;
[0009]在确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求时,为所述特定转码任务获取请求分配读写锁;
[0010]将被分配了所述读写锁的任务获取请求发送给控制中心,以使得向所述注册节点发送所述特定转码任务获取请求的转码服务器从所述控制中心处获得需在所述转码任务获取周期内执行的转码任务并进行处理。
[0011]优选地,当所述转码系统中包含至少两个注册节点时,所述注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求后,所述方法还包括:
[0012]所述注册节点将所述所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的其他注册节点,并接收所述其他注册节点发送的、由所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求和相应的接收时间戳;
[0013]所述注册节点根据所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序;
[0014]当确定排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求;
[0015]当确定排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
[0016]优选地,所述注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求后,所述方法还包括:
[0017]所述注册节点将所述所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的控制中心;
[0018]所述注册节点接收所述控制中心发送的关于转码任务获取请求优先级的通知消息;其中,所述通知消息是所述控制中心根据所述转码系统中的各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后发送的;
[0019]在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求;
[0020]在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
[0021]优选地,所述属性信息包括下述信息的一种或多种:
[0022]额定负载信息;
[0023]CPU处理能力信息;
[0024]内存大小的信息;[0025]与所述控制中心之间的数据传输链路的带宽信息。
[0026]为了解决上述技术问题,本申请还公开了一种基于分布式锁的转码任务获取的系统,与注册节点、转码服务器以及控制中心相耦接,其特征在于,该系统包括:接收单元、识别处理单元以及获取单元,其中,
[0027]所述接收单元,用于指示所述注册节点接收所述转码服务器在转码任务获取周期内发送的转码任务获取请求;
[0028]所述识别处理单元,用于确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含特定转码任务获取请求时,删除所述注册节点在所述转码任务获取周期内接收到的所有转码任务获取请求;
[0029]确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求时,为所述特定转码任务获取请求分配读写锁;
[0030]其中,所述特定转码任务获取请求是在所述转码任务获取周期内最早被发送至转码系统中的注册节点的转码任务获取请求;或者,所述特定转码任务获取请求是所述转码系统中级别最高的转码服务器发送的转码任务获取请求;所述转码系统为所述注册节点所属的转码系统,且所述转码系统至少包含一个注册节点;转码服务器的所述级别是根据转码服务器的属性信息预先设置的;
[0031]所述获取单元,用于将所述注册节点中被分配了所述读写锁的任务获取请求发送给所述控制中心,以使得向所述注册节点发送所述特定转码任务获取请求的转码服务器从所述控制中心处获得需在所述转码任务获取周期内执行的转码任务并进行处理。
[0032]优选地,当所述转码系统中包含至少两个注册节点时,所述注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求后,所述识别处理单元,还用于:
[0033]将一所述注册节点中所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的其他注册节点,并指示该注册节点接收所述其他注册节点发送的、由所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求和相应的接收时间戳;
[0034]根据所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序;
[0035]当确定排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求;
[0036]当确定排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
[0037]优选地,所述识别处理单元,还用于:
[0038]将所述注册节中所述所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的控制中心;[0039]接收所述控制中心发送的关于转码任务获取请求优先级的通知消息;其中,所述通知消息是所述控制中心根据所述转码系统中的各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后发送的;
[0040]在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求;
[0041]在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
[0042]优选地,所述属性信息包括下述信息的一种或多种:
[0043]额定负载信息;
[0044]CPU处理能力信息;
[0045]内存大小的信息;
[0046]与所述控制中心之间的数据传输链路的带宽信息。
[0047]与现有技术相比,本申请所述的一种基于分布式锁的转码任务获取的方法和系统,达到了如下效果:
[0048]I)本申请通过控制中心创建的多个注册节点,将分布式锁设置于其中一个注册节点中,多个转码服务器或转码处理进程访问多个注册节点时,只有一个转码服务器或转码处理进程访问到带有分布式锁的节点,有效解决了不能对控制中心的转码队列生成分布式锁的问题。
[0049]2)本申请还可以针对分布式的转码系统进行转码服务器的统一命名服务、状态同步服务、集群管理、分布式应用配置项等统一的数据管理。
[0050]当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。【专利附图】
【附图说明】
[0051]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0052]图1是本申请实施例一所述的基于分布式锁的转码任务获取的方法的流程图。
[0053]图2是本申请实施例二所述的基于分布式锁的转码任务获取的方法的流程图。
[0054]图3和4是本申请实施例三所述的基于分布式锁的转码任务获取的方法的在转码系统中的具体应用示意图。
[0055]图5是本申请实施例四所述的基于分布式锁的转码任务获取的系统的结构框图。【具体实施方式】
[0056]如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
[0057]实施例一
[0058]如图1所示,为本申请实施例一所述的一种基于分布式锁的转码任务获取的方法,该方法包括:
[0059]步骤101,注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求。
[0060]对于步骤101,具体地,视频网站的原始视频资源(也可称为片源)存储于相应的片源服务器中,片源都是未经转码处理的视频,当视频网站需要进行视频转码时,会指示服务端的转码系统(可以由转码服务器构成)通过在所述服务端中的控制中心调取片源服务器中存储的片源进行转码处理,建立相应的转码任务,再由转码系统中不同的转码服务器或其中的转码进程访问控制中心获取任务进行转码处理。本实施例中,采用云构架的转码系统进行转码处理,即各地用户均可以将视频资源上传到相应的片源服务器,在生成相应的转码任务发送到本实施例中的转码服务器中进行转码处理,经过转码处理后,其他各地区的用户便可通过计算机终端、移动终端或电视终端访问该视频网站观看或下载相应的视频资源。当然,对于本实施例中的转码服务器还可以是其他构架结构,并不构成对本申请的限定。
[0061]其中,所述控制中心可以是具有统一数据管理能力的服务器或相应装置,该控制中心可以在其内部创建多个注册节点,也可以在转码系统中通过代理服务器创建多个注册节点,当然,所述控制中心也可以采用其他方式创建不同的注册节点,并不构成对本申请的限定。其中,所述注册节点的数量与该转码系统中的转码服务器或其转码进程的数量相适应。
[0062]步骤102,在确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含特定转码任务获取请求时,删除在所述转码任务获取周期内接收到的所有转码任务获取请求;在确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求时,为所述特定转码任务获取请求分配读写锁。
[0063]其中,所述特定转码任务获取请求是在所述转码任务获取周期内最早被发送至转码系统中的注册节点的转码任务获取请求;或者,所述特定转码任务获取请求是所述转码系统中级别最高的转码服务器发送的转码任务获取请求;所述转码系统为所述注册节点所属的转码系统,且所述转码系统至少包含一个注册节点;转码服务器的所述级别是根据转码服务器的属性信息预先设置的。
[0064]对于步骤102,由所述控制中心创建的多个所述注册节点接收来自不同所述转码服务器或转码线程发出的转码任务获取请求,多个所述转码任务获取请求随机地发送到不同的所述注册节点中,形成“抢节点”的过程。在多个所述转码任务获取请求被所述注册节点接收的过程中,各所述转码任务获取请求被所述注册节点接收的时间不相同,有先后之分,所以,在步骤102中,将在所述转码任务获取周期内最早被发送至转码系统中的注册节点的转码任务获取请求作为所述特定转码任务获取请求;另外,各所述转码任务获取请求中也含有不同的转码服务器的级别信息,所以,在步骤102中,也可以将所述转码系统中级别最高的转码服务器发送的转码任务获取请求作为所述特定转码任务获取请求。当然,对于所述特定转码任务获取请求的划分,还可以是其他类型或方式,并不构成对本申请的限定。
[0065]步骤103,将被分配了所述读写锁的任务获取请求发送给控制中心,以使得向所述注册节点发送所述特定转码任务获取请求的转码服务器从所述控制中心处获得需在所述转码任务获取周期内执行的转码任务并进行处理。
[0066]在步骤103中,所述读写锁具体为分布式锁,其数量为一个,所述注册节点只有在含有所述特定转码任务获取请求时才被分配该分布式锁(只有该节点获得了该分布式锁),在本实施例中,所述分布式锁由所述控制中心分配。所述注册节点获得该分布式锁后,即是将所述分布式锁与发出请求的所述转码服务器或转码进程进行绑定,同时删除其他注册节点或该节点收到的所有转码任务获取请求。
[0067]需要说明的是,分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,尤其对于视频网站服务端的分布式转码系统,资源共享端需要协调不同的获取端的同步访问操作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么对于访问这些资源的获取端来说,就需要分布式锁的互斥特性来防止彼此干扰从而保证资源的一致性。
[0068]在本实施例中,所述控制中心,一般是将生成的转码队列存储于mongodb (分布式文档存储数据库)中,由于该数据库本身的特性限制,不能对存储于该数据库中的转码队列生成分布式锁,那么,对于数量巨大的转码任务,多台转码服务器极有可能进行多次重复的转码操作,从而也会导致转码资源的严重浪费,延误转码系统的转码处理进度。所以,采用设置所述注册节点以获得分布式锁的方式,对多个所述转码服务器进行管理,克服了mongodb的特性限制。
[0069]实施例二
[0070]如图2所示,为本申请实施例二所述的一种基于分布式锁的转码任务获取的方法,该方法包括:
[0071]步骤201,由控制中心创建的注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求。
[0072]其中,所述转码任务获取周期,具体为周期时长为至少I秒的获取转码任务的周期,即该转码任务获取周期就是各所述转码服务器发送所述转码任务获取请求至所述注册节点,获取所述分布式锁的周期。
[0073]另外,对于步骤201,在有多个所述注册节点的情况下,为了便于对不同的所述注册节点的监测管理,可以针对每一个所述注册节点设置对应的编号。当然,在本实施例中,还可以采用其他方式对所述注册节点进行监测管理,上述内容并不构成对本申请的限定。[0074]步骤202,在确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含最早被发送至转码系统中的注册节点的转码任务获取请求或所述转码系统中级别最高的转码服务器发送的转码任务获取请求时,删除在所述转码任务获取周期内接收到的所有转码任务获取请求;
[0075]在确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含最早被发送至转码系统中的注册节点的转码任务获取请求或所述转码系统中级别最高的转码服务器发送的转码任务获取请求时,为所述特定转码任务获取请求分配读写锁。
[0076]其中,所述特定转码任务获取请求是在所述转码任务获取周期内最早被发送至转码系统中的注册节点的转码任务获取请求;或者,所述特定转码任务获取请求是所述转码系统中级别最高的转码服务器发送的转码任务获取请求;所述转码系统为所述注册节点所属的转码系统,且所述转码系统至少包含一个注册节点;转码服务器的所述级别是根据转码服务器的属性信息预先设置的。
[0077]在本实施例中,当所述转码系统中包含至少两个注册节点时,所述注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求后,需要确定所有所述注册节点接收的所述转码任务获取请求的时间先后顺序,即还包括:
[0078]所述注册节点将所述所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的其他注册节点,并接收所述其他注册节点发送的、由所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求和相应的接收时间戳;
[0079]所述注册节点根据所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序;
[0080]当确定排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求;
[0081]当确定排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
[0082]步骤203,将被分配了所述读写锁的任务获取请求发送给控制中心,以使得向所述注册节点发送所述特定转码任务获取请求的转码服务器从所述控制中心处获得需在所述转码任务获取周期内执行的转码任务并进行处理。
[0083]在本实施例中的另一种方式,还包括:
[0084]所述注册节点将所述所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的控制中心;
[0085]所述注册节点接收所述控制中心发送的关于转码任务获取请求优先级的通知消息;其中,所述通知消息是所述控制中心根据所述转码系统中的各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后发送的;
[0086]在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求;
[0087]在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
[0088]其中,所述属性信息包括下述信息的一种或多种:额定负载信息;CPU处理能力信息;内存大小的信息;与所述控制中心之间的数据传输链路的带宽信息。
[0089]另外,在本实施例中,监测到设置有分布式锁的注册节点所对应的所述转码服务器将转码任务处理完成时,解除该注册节点中的所述分布式锁,该注册节点可以继续接收其他所述转码服务器发送的所述请求信息。
[0090]需要说明的是,在本实施例中,所述转码服务器或转码线程在接收到所述控制中心预置的任务处理指令后,便可以进行相应的任务处理操作,任务处理的状态实时反映到该注册节点中,为了避免其他转码服务器或转码进程的等待状态造成转码资源的浪费,所以,任务处理完成,无论处理成功还是失败,都将所述分布式锁解除,其中,所述转码任务处理成功,进一步为所述转码任务处理完成后生成视频成品;所述转码任务处理失败,进一步为所述转码任务处理完成后未生成视频成品。
[0091]可以将设置有所述分布式锁的注册节点上形成相应的标识(在此对标识的种类和标识的形成方法不进行限定,当然也可以采用其他的方式),从而,具有标识的所述注册节点就表明设置了所述分布式锁,在重新设置所述分布式锁时,将带有所述标识的注册节点排除,未设置有所述分布式锁的注册节点接续接收所述转码服务器发送的所述请求信息。
[0092]实施例三
[0093]下面结合图3和4,对所述基于分布式锁的转码任务获取的方法的具体应用进行详细说明:
[0094]设定:在如图3所示的转码系统中,转码服务器I至4从所述控制中心获取相应的转码任务进行转码处理。
[0095]基于分布式锁的转码任务获取的过程为:
[0096]步骤一,如图3所示,转码任务获取周期内,由控制中心创建的不同的注册节点接收与该注册节点对应的转码服务器I至4发送的请求信息。
[0097]步骤二,各所述注册节点确定其接收的所述转码任务获取请求中是否包含所述特定转码任务获取请求,当然,也可以由所述控制中心监测确定,确定出145号注册节点中包含所述特定转码任务获取请求最先接收到该请求信息(所述特定转码任务获取请求是在所述转码任务获取周期内最早被发送至注册节点的转码任务获取请求,该特定转码任务获取请求由转码服务器I发送)。
[0098]步骤三,将所述分布式锁分配在145号注册节点中的特定转码任务获取请求,并指示该145号注册节点对应的转码服务器I对转码任务处理,同时,删除其他注册节点收到的转码服务器2至4所述转码任务获取请求。
[0099]当然,控制中心可以实时监测145号注册节点中所述特定转码任务获取请求所对应的所述转码服务器I对转码任务的处理状态,任务处理完成,解除145号注册节点中的所述分布式锁。其中,所述任务处理成功,具体为转码任务处理完成后生成视频成品;所述任务处理失败,具体为转码任务处理完成后未生成视频成品。
[0100]具体地:
[0101]对于步骤一,如图3所示,转码服务器I至4分别将转码处理请求发送至控制中心创建的多个所述注册节点。当然,在实际应用中,所述转码系统中包括几十或上百台服务器,图3为了便于说明只示出4台,并不构成对本申请的限定。
[0102]为了便于对不同的所述注册节点的监测管理,该控制中心针对每一个所述注册节点设置对应的编号(本实施例中以阿拉伯数字进行编号),便于对所述分布式锁进行分配时,在本实施例中将该分布式锁指定分配于其中的一个所述注册节点中(如图4所示,将所述分布式锁分配于145号注册节点中)。
[0103]对于步骤二,转码服务器I至4共同向多个所述注册节点发出请求信息,按照时间先后的顺序,所述转码服务器I所发出的所述请求信息最先被145号注册节点接收。
[0104]所以,对于步骤三来说,如图4所示,此时,将所述分布式锁分配给该145号注册节点同时,所述控制中心指示所述转码服务器I对所述转码任务处理,该转码服务器I便可以进行转码任务的处理。
[0105]在图4中,146号注册节点接收了转码服务器2发出的请求信息,但是,由于该146号注册节接收的所述转码服务器2发出的请求信息晚于所述145号注册节点,所以,146号注册节点并未分配所述分布式锁,即转码服务器2并不能进行转码任务的处理。
[0106]另外,为了避免其他转码服务器的等待状态造成转码资源的浪费,无论所述转码服务器I所处理的转码任务是否成功,只要该转码任务处理完成(可能失败),都将145号注册节点中的所述分布式锁进行解除,解除该分布式锁后,145号注册节点可以再接收所述转码服务器发送的所述请求信息。
[0107]实施例四
[0108]本申请实施例四中所述的一种针对转码服务升级处理的系统,可以设置于所述注册节点内部,也可以设置于所述注册节点外部并与该注册节点相耦接,本实施例中,如图5所示,该系统设置于所述注册节点内,与注册节点、转码服务器以及控制中心相耦接,该系统包括:接收单元501、识别处理单元502和获取单元503,其中,
[0109]所述接收单元501,与所述注册节点、转码服务器以及识别处理单元502相耦接,用于指示所述注册节点接收所述转码服务器在转码任务获取周期内发送的转码任务获取请求。
[0110]所述识别处理单元502,与所述接收单元501和获取单元503相耦接,用于
[0111]确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含特定转码任务获取请求时,删除所述注册节点在所述转码任务获取周期内接收到的所有转码任务获取请求;
[0112]确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求时,为所述特定转码任务获取请求分配读写锁。
[0113]其中,所述特定转码任务获取请求是在所述转码任务获取周期内最早被发送至转码系统中的注册节点的转码任务获取请求;或者,所述特定转码任务获取请求是所述转码系统中级别最高的转码服务器发送的转码任务获取请求;所述转码系统为所述注册节点所属的转码系统,且所述转码系统至少包含一个注册节点;转码服务器的所述级别是根据转码服务器的属性信息预先设置的。
[0114]所述获取单元503,与所述识别处理单元502、控制中心相耦接,用于将所述注册节点中被分配了所述读写锁的任务获取请求发送给所述控制中心,以使得向所述注册节点发送所述特定转码任务获取请求的转码服务器从所述控制中心处获得需在所述转码任务获取周期内执行的转码任务并进行处理。
[0115]在本实施例中,所述控制中心可以是具有统一数据管理能力的服务器或相应装置,该控制中心可以在其内部创建多个注册节点,也可以在转码系统中通过代理服务器创建多个注册节点,当然,所述控制中心也可以采用其他方式创建不同的注册节点,并不构成对本申请的限定。其中,所述注册节点的数量与该转码系统中的转码服务器或其转码进程的数量相适应。
[0116]需要说明的是,所述控制中心创建多个所述注册节点,为了便于对不同的所述注册节点的监测管理,可以针对每一个所述注册节点设置对应的编号。当然,在本实施例中,该系统还可以采用其他方式进行监测管理,设置所述上述内容并不构成对本申请的限定。
[0117]对于识别处理单元502,由所述控制中心创建的多个所述注册节点接收来自不同所述转码服务器或转码线程发出的转码任务获取请求,多个所述转码任务获取请求随机地发送到不同的所述注册节点中,形成“抢节点”的过程。在多个所述转码任务获取请求被所述注册节点接收的过程中,各所述转码任务获取请求被所述注册节点接收的时间不相同,有先后之分,所以,所述识别处理单元502,将在所述转码任务获取周期内最早被发送至转码系统中的注册节点的转码任务获取请求作为所述特定转码任务获取请求;另外,各所述转码任务获取请求中也含有不同的转码服务器的级别信息,所以,所述识别处理单元502,也可以将所述转码系统中级别最高的转码服务器发送的转码任务获取请求作为所述特定转码任务获取请求。当然,对于所述特定转码任务获取请求的划分,还可以是其他类型或方式,并不构成对本申请的限定。
[0118]在本实施例中,当所述转码系统中包含至少两个注册节点时,所述注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求后,所述识别处理单元502,还用于:
[0119]将一所述注册节点中所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的其他注册节点,并指示该注册节点接收所述其他注册节点发送的、由所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求和相应的接收时间戳;
[0120]根据所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序;
[0121]当确定排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求;
[0122]当确定排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
[0123]在本实施例中的另一种情况下,
[0124]所述识别处理单元502,还用于:
[0125]将所述注册节中所述所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的控制中心;
[0126]接收所述控制中心发送的关于转码任务获取请求优先级的通知消息;其中,所述通知消息是所述控制中心根据所述转码系统中的各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后发送的;
[0127]在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求;
[0128]在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
[0129]其中,所述属性信息包括下述信息的一种或多种:额定负载信息;
[0130]CPU处理能力信息;内存大小的信息;与所述控制中心之间的数据传输链路的带宽信息。
[0131]由所述识别处理单元502所分配的读写锁具体为分布式锁,其数量为一个,根据针对所述注册节点的优先级的排序判定为优先级最高的所述注册节点,被分配该分布式锁(只有该节点获得了该分布式锁),在本实施例中,所述分布式锁由所述控制中心分配。所述注册节点获得该分布式锁后,即是将所述分布式锁与发出请求的所述转码服务器或转码进程进行绑定,同时删除其他注册节点收到的所述请求信息。
[0132]另外,在本实施例中,所述获取单元503,还用于监测到设置有分布式锁的注册节点所对应的所述转码服务器将转码任务处理完成时,解除该注册节点中的所述分布式锁,该注册节点可以继续接收其他所述转码服务器发送的所述请求信息。
[0133]需要说明的是,所述转码服务器或转码线程在接收到所述控制中心的指示后,便可以进行相应的任务处理操作,任务处理的状态实时反映到该注册节点中,为了避免其他转码服务器或转码进程的等待状态造成转码资源的浪费,所以,任务处理完成,无论处理成功还是失败,都将所述分布式锁解除。其中,具体地,所述转码任务处理成功,具体为所述转码任务处理完成后生成视频成品;所述转码任务处理失败,具体为所述转码任务处理完成后未生成视频成品。
[0134]具体来说,可以将设置有所述分布式锁的注册节点上形成相应的标识(在此对标识的种类和标识的形成方法不进行限定,当然也可以采用其他的方式),从而,具有标识的所述注册节点就表明设置了所述分布式锁,在重新设置所述分布式锁时,将带有所述标识的注册节点排除,未设置有所述分布式锁的注册节点接续接收所述转码服务器发送的所述请求信息。
[0135]在本实施例中,所述转码任务获取周期,具体为周期时长为至少I秒的获取转码任务的周期,即该转码任务获取周期就是各所述转码服务器发送所述请求信息至所述注册节点,获取所述分布式锁的周期。
[0136]由于方法部分已经对本申请实施例进行了详细描述,这里对实施例中涉及的系统与方法对应部分的展开描述省略,不再赘述。对于系统中具体内容的描述可参考方法实施例的内容,这里不再具体限定。
[0137]与现有技术相比,本申请所述的一种基于分布式锁的转码任务获取的方法和系统,达到了如下效果:
[0138]I)本申请通过预先设置视频的属性规则对需要转码的视频进行优先级、码率高低的判定,同时根据转码机的性能进行分组,有效解决了目前视频网站的转码机不能根据服务器状态和转码任务属性合理进行转码任务调度的问题。
[0139]2)本申请可以对不同的转码机进行角色配置,划定不同的转码任务处理对象,尤其对于特定视频转码任务,由划定的特定转码机专门进行处理,从而可以有效保证某些特定任务的快速转码,将重要视频及时发布。
[0140]还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者系统中还存在另外的相同要素。
[0141]本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0142]以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
【权利要求】
1.一种基于分布式锁的转码任务获取的方法,其特征在于,包括: 注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求; 在确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含特定转码任务获取请求时,删除在所述转码任务获取周期内接收到的所有转码任务获取请求;其中,所述特定转码任务获取请求是在所述转码任务获取周期内最早被发送至转码系统中的注册节点的转码任务获取请求;或者,所述特定转码任务获取请求是所述转码系统中级别最高的转码服务器发送的转码任务获取请求;所述转码系统为所述注册节点所属的转码系统,且所述转码系统至少包含一个注册节点;转码服务器的所述级别是根据转码服务器的属性信息预先设置的; 在确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求时,为所述特定转码任务获取请求分配读写锁; 将被分配了所述读写锁的任务获取请求发送给控制中心,以使得向所述注册节点发送所述特定转码任务获取请求的转码服务器从所述控制中心处获得需在所述转码任务获取周期内执行的转码任务并进行处理。
2.如权利要求1所述的基于分布式锁的转码任务获取的方法,其特征在于,当所述转码系统中包含至少两个注册节点时,所述注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求后,所述方法还包括: 所述注册节点将所述所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的其他注册节点,并接收所述其他注册节点发送的、由所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求和相应的接收时间戳; 所述注册节点根据所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求`以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序; 当确定排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求; 当确定排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
3.如权利要求如权利要求1所述的基于分布式锁的转码任务获取的方法,其特征在于,所述注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求后,所述方法还包括: 所述注册节点将所述所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的控制中心; 所述注册节点接收所述控制中心发送的关于转码任务获取请求优先级的通知消息;其中,所述通知消息是所述控制中心根据所述转码系统中的各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后发送的; 在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求; 在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
4.如权利要求3所述的基于分布式锁的转码任务获取的方法,其特征在于,所述属性信息包括下述信息的一种或多种: 额定负载信息; CPU处理能力信息; 内存大小的信息; 与所述控制中心之间的数据传输链路的带宽信息。
5.一种基于分布式锁的转码任务获取的系统,与注册节点、转码服务器以及控制中心相耦接,其特征在于,该系统包括:接收单元、识别处理单元以及获取单元,其中, 所述接收单元,用于指示所述注册节点接收所述转码服务器在转码任务获取周期内发送的转码任务获取请求;` 所述识别处理单元,用于确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含特定转码任务获取请求时,删除所述注册节点在所述转码任务获取周期内接收到的所有转码任务获取请求; 确定出所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求时,为所述特定转码任务获取请求分配读写锁; 其中,所述特定转码任务获取请求是在所述转码任务获取周期内最早被发送至转码系统中的注册节点的转码任务获取请求;或者,所述特定转码任务获取请求是所述转码系统中级别最高的转码服务器发送的转码任务获取请求;所述转码系统为所述注册节点所属的转码系统,且所述转码系统至少包含一个注册节点;转码服务器的所述级别是根据转码服务器的属性信息预先设置的; 所述获取单元,用于将所述注册节点中被分配了所述读写锁的任务获取请求发送给所述控制中心,以使得向所述注册节点发送所述特定转码任务获取请求的转码服务器从所述控制中心处获得需在所述转码任务获取周期内执行的转码任务并进行处理。
6.如权利要求5所述的基于分布式锁的转码任务获取的系统,其特征在于,当所述转码系统中包含至少两个注册节点时,所述注册节点接收转码服务器在转码任务获取周期内发送的转码任务获取请求后,所述识别处理单元,还用于: 将一所述注册节点中所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的其他注册节点,并指示该注册节点接收所述其他注册节点发送的、由所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求和相应的接收时间戳;根据所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述注册节点在所述转码任务获取周期接收到的所有转码任务获取请求以及所述其他注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序; 当确定排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求; 当确定排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
7.如权利要求5所述的基于分布式锁的转码任务获取的系统,其特征在于,所述识别处理单元,还用于: 将所述注册节中所述所有转码任务获取请求和相应的接收时间戳发送给所述转码系统中的控制中心; 接收所述控制中心发送的关于转码任务获取请求优先级的通知消息;其中,所述通知消息是所述控制中心根据所述转码系统中的各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求的接收时间戳,按照接收时间由先至后的顺序,对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后发送的; 在解析出所述通知消息表示对所述各注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求为所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中包含所述特定转码任务获取请求; 在解析出所述通知消息表示对所述各`注册节点在所述转码任务获取周期接收到的所有转码任务获取请求进行排序后,排列在第一位的转码任务获取请求不是所述注册节点所接收的转码任务获取请求时,确定所述注册节点在所述转码任务获取周期内接收的所有转码任务获取请求中不包含所述特定转码任务获取请求。
8.如权利要求7所述的基于分布式锁的转码任务获取的系统,其特征在于,所述属性信息包括下述信息的一种或多种: 额定负载信息; CPU处理能力信息; 内存大小的信息; 与所述控制中心之间的数据传输链路的带宽信息。
【文档编号】H04N21/262GK103686224SQ201310738633
【公开日】2014年3月26日 申请日期:2013年12月26日 优先权日:2013年12月26日
【发明者】李超, 刘钧石, 邢波, 鲍大磊, 王孝庆 申请人:乐视网信息技术(北京)股份有限公司