任务调度方法、装置及计算机程序产品与流程

文档序号:16530464发布日期:2019-01-05 10:42阅读:259来源:国知局
任务调度方法、装置及计算机程序产品与流程

本发明涉及信息技术领域,更具体地,涉及一种任务调度方法、装置及计算机程序产品。



背景技术:

在公有云中,与用户操作时延息息相关的前台业务只需要完成流程较简单的标记操作即可以将操作结果返回给客户,然后再由后台任务定时处理所有的数据。比如用户删除某一个有着1百万文件的文件夹,客户端选择这个文件夹点击删除后,公有云的服务端在收到这个批量删除的请求后,前台业务只需要在缓存或者数据库里将这个文件夹打上一个删除的标签,就可以向用户返回删除操作已经成功的响应消息。此次业务处理只涉及一次缓存或数据库的读写操作,时延在毫秒数据级,下一次在查询用户的数据资源时会剔除有删除标记的记录,客户端所见删除操作马上生效,几乎是实时的反馈。而接下来真正的清理这批被打上“删除”标签的文件夹中的文件全部属于后台任务。

在公有云的服务当中,尽管需要数量巨大的后台任务,然而,为了满足前台业务的可接入性、接入质量与性能,后台任务的优先级要低于前台业务。

现有技术中,公有云中基于时间配置来调度后台任务,比如一般认为凌晨0-6点用户使用公有云业务比较少,设置公有云在这个时间段大量执行后台任务。然而现有操作对经验要求太高,灵活性和易用性不足,后台任务调度缺乏准确性。



技术实现要素:

本发明实施例第一方面,提供了一种分布式系统中任务调度方法,所述分布式系统中包含多个业务节点,所述多个业务节点中的一个为主业务节点;所述主业务节点获取所述分布式系统在前一个逻辑时钟周期的负载指数,根据所述负载指数生成当前逻辑时钟周期后台任务的配额,将所述配额分配给所述多个业务节点。从而实现基于分布式系统负载在逻辑时钟周期对后台任务的灵活调度,提高了后台任务调度的灵活性和实时性,保障了后台任务调度的准确性。进一步的,由于主业务节点根据前一个逻辑时钟周期内负载指数生成后台任务,可以根据分布式系统中的负载调整后台任务的配额,实现分布式系统中后台任务的统一规划,避免无效的后台任务和分布式系统中资源的浪费。

结合本发明实施例第一方面,在第一种可能的实现方式中,所述前一个逻辑时钟周期的负载指数是基于所述分布式系统的业务失败率、时延、令牌消耗量、每一个业务节点的中央处理单元和内存使用率中的至少一个参数确定的。

结合本发明实施例第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述主业务节点根据所述负载指数生成当前逻辑时钟周期内后台任务的配额,具体包括:

所述主业务节点根据所述负载指数以及所述分布式系统的后台任务总量生成所述当前逻辑时钟周期内后台任务的配额。分布式系统在基于逻辑时钟进行后台任务调度时,同时考虑分布式系统的负载指数,在对后台任务进行调度时,不影响前台业务,从而保证分布式系统的前台业务性能。由于主业务节点根据前一个逻辑时钟周期内负载指数生成后台任务,可以根据分布式系统中的负载调整后台任务的配额,实现分布式系统中后台任务的统一规划,避免无效的后台任务和分布式系统中资源的浪费。

结合本发明实施例第一方面或第一方面的第一或第二种可能的实现方式,在第三种可能的实现方式中,分布式系统还包括服务节点,服务节点用于生成逻辑时钟,向主业务节点发送逻辑时钟。分布式系统使用服务节点生成的逻辑时钟,从而保证分布式系统中节点进展之间的相对一致性。

结合本发明实施例第一方面或第一方面的第一至第三种任一可能的实现方式,在第四种可能的实现方式中,分布式系统还包括管理节点,管理节点用于收集分布式系统中的负载信息,生成负载指数。其中,负载指数用于指示分布式系统当前的负载状态。进一步的,管理节点还用于向主业务节点发送负载指数。具体的,管理节点用于生成前一个逻辑时钟周期内分布式系统的负载指数。进一步的,管理节点还用于生成当前逻辑时钟周期内分布式系统的负载指数。

本发明实施例第一方面及第一方面的各种实现方式中,所述分布式系统为分布式对象存储系统、分布式文件系统和分布式块存储系统中的一种。

本发明实施例第二方面,提供了一种分布式系统中的任务调度装置,其中,分布式系统中包含多个业务节点,所述任务调度装置包括各种单元,用于实现本发明实施例第一方面及本发明实施例第一方面的各种实现方式中的方案。

本发明实施例第三方面提供了一种分布式系统中的任务调度装置,包括接口和处理器,接口和处理器通信,处理器用于执行用于实现本发明实施例第一方面及本发明实施例第一方面的各种实现方式中的方案。

相应地,本发明实施例第五方面还提供了计算机可读存储介质和计算机程序产品,计算机可读存储介质和计算机程序产品中包含计算机指令用于实现本发明实施例第一方面各方案。

附图说明

图1是分布式块存储系统示意图。

图2是分布式块存储系统的服务器的示意性结构框图。

图3是本发明实施例任务调度的示意性流程图。

图4是本发明实施例任务调度装置示意图。

具体实施方式

下面将结合附图,对本发明实施例中的技术方案进行描述。

本发明实施例以逻辑时钟为单位,根据分布式系统在前一个逻辑时钟周期内的负载情况,生成当前逻辑时钟周期的后台任务数量,以逻辑时钟为周期,基于分布式系统负载进行后台任务调度。

本发明实施例的分布式系统可以为分布式文件存储系统或分布式对象存储系统(如9000系列),还可以是分布式块存储系统(如系列)等,也可以是公有云中的分布式系统,或者其他分布式计算系统。以系列。示例性的如图1所示,分布式块存储系统包括多台服务器,如服务器1、服务器2、服务器3,……,服务器6,服务器间通过infiniband或以太网络等互相通信。在实际应用当中,分布式块存储系统中服务器的数量可以根据实际需求增加或减少,本发明实施例对此不作限定。

分布式块存储系统的服务器中包含如图2所示的结构。如图2所示,分布式块存储系统中的每台服务器包含中央处理单元(centralprocessingunit,cpu)201、内存202、接口203、硬盘1、硬盘2和硬盘3,内存202中存储计算机指令,cpu201执行内存202中的程序指令执行相应的操作。接口203可以为硬件接口,如网络接口卡(networkinterfacecard,nic)或主机总线适配器(hostbusadaptor,hba)等,也可以为程序接口模块等。硬盘包含固态硬盘(solidstatedisk,ssd)、机械硬盘或者混合硬盘。机械硬盘如hdd(harddiskdrive)。另外,为节省cpu201的计算资源,现场可编程门阵列(fieldprogrammablegatearray,fpga)或其他拥有计算功能的硬件也可以代替cpu201执行上述相应的操作,或者,fpga或其他硬件与cpu201共同执行上述相应的操作。为方便描述,本发明实施例将cpu201或者cpu201与内存202的组合称为处理器,处理器也可以是fpga及其他替代cpu201的硬件,或者处理器也可以是fpga及其他替代cpu201的硬件与cpu201的组合。接口203可以为网络接口卡(networkinginterfacecard,nic)、主机总线适配器(hostbusadaptor,hba)等。

如图1和图2所描述的分布式块存储系统,服务器1、服务器2、服务器3,……,服务器6作为业务节点,调度和执行后台任务,使用本发明实施例提供的业务调度方法进行业务调度。一种实现方式,图1所示的服务器,可以划分为一个或多个组,一个组中的服务器作为业务节点调度和执行一种后台任务。另一种实现方式,一个组中的服务器作为业务节点调度和执行多种后台任务。另一种实现方式,分布式系统中的服务器不进行分组。本发明实施例对此不作限定。

本发明实施例中的分布式存储系统还包括服务节点,用于为分布式系统提供逻辑时钟。本发明实施例的分布式系统中,不依赖物理时钟,由服务节点提供逻辑时钟、负责逻辑时钟管理(如逻辑时钟的递增)。逻辑时钟要求分布式系统中节点进展之间的相对一致性(同步)。一种实现,逻辑时钟用时间戳表示,如正整数,具体到本发明实施例,可以为逻辑时钟1、逻辑时钟2等。

本发明实施例以1个逻辑时钟周期为10分钟为例进行描述。逻辑时钟1为00:00-00:09,服务节点在逻辑时钟1周期结束后递增为逻辑时钟2,即00:10-00:19。服务节点将逻辑时钟推送到各业务节点,各业务节点获得逻辑时钟。本发明实施例中,服务节点具体可以为包括如图2所示结构的独立的服务器。服务节点也可以是图1所示的集成服务节点功能的某一台服务器。本发明实施例中1个逻辑时钟表示一个周期,也称为逻辑时钟周期。

本发明实施例的分布式系统中,还可以包括管理节点,管理节点用于收集分布式系统中的负载信息,生成负载指数。其中,负载指数用于指示分布式系统当前的负载状态。本发明实施例根据分布式系统负载状态生成需要执行的后台任务,即配额的后台任务,配额描述了生成的后台任务的总数。具体实现中,管理节点可以收集分布式系统中数据业务失败率、时延、令牌消耗量、每一个业务节点的中央处理单元和内存使用率中的至少一个参数确定的,参数还可以包含分布式所有设备的cpu使用率、内存资源使用率、硬盘每秒输入输出(inputoutputpersecond,iops)、网络带宽使用率等。进一步的,管理节点可以为每一个参数分配权重,从而计算出分布式系统的负载指数。管理节点通常以1个逻辑时钟为周期计算分布式系统的负载指数。本发明实施例中,管理节点具体可以为包括如图2所示结构的独立的服务器。管理节点也可以是图1所示的集成管理节点功能的某一台服务器。

本发明实施例结合前面描述,以执行垃圾回收的后台任务调度为例进行描述。在分布式系统中,后台任务通常由多个业务节点执行,其中多个业务节点中的一个业务节点作为主业务节点。具体执行如图3所示的流程:

步骤301:主业务节点获取分布式系统在前一个逻辑时钟周期的负载指数。

管理节点以逻辑时钟周期为粒度计算分布式系统的负载指数,向主业务节点发送前一个逻辑时钟周期分布式系统的负载指数,从而主业务节点获取到前一个逻辑时钟周期的负载指数。例如分布式系统中负载为空时,负载指数为0,分布式系统满负载时,负载指数为1。

步骤302:主业务节点根据所述负载指数生成当前逻辑时钟周期后台任务的配额。

例如,分布式系统中需要垃圾回收的后台任务数量为100(也就是说,在上个时钟周期结束后,余下的垃圾回收后台任务的需求量是100),主业务节点根据负载指数生成当前逻辑时钟周期内后台任务的配额,即垃圾回收后台任务的配额。后台任务的需求量是指分布式系统中需求的后台任务数总量,即需求执行的后台任务数量,例如垃圾回收后台任务的总量。本发明实施例根据后台任务的需求量和分布式系统在前一个逻辑时钟周期的负载指数,生成当前逻辑时钟周期后台任务的配额。由于后台任务的优先级低于前台业务的优先级,因此要基于负载指数生成后台任务的配额。

其中,一种实现可以参考下面的公式:

gctask=(1-tr)*100

其中,gctask表示垃圾回收后台任务的配额,tr表示负载指数。可选的,上述公式还可以进行变形,例如gctask=(1-tr)*100*0.9,或者gctask=(1-tr)*100-1。

另一种实现方式,可以根据负载指数所位于的区间,设置后台任务的配额。例如,当负载指数位于0.00-0.19的区间,后台任务的配额为90,当负载指数位于0.20-0.39的区间,后台任务的配额为80。

由此可以看出,在后务任务的需求量确定的情况下,负载指数和配额负相关,负载指数越高,生成分布式系统的后台任务的配额越低。步骤303:主业务节点将配额分配给多个业务节点。

主业务节点将配额分配给多个业务节点,即主业务节点将该配额的后台任务分发给多个业务节点。例如,主业务节点使用mapreduce算法,生成垃圾回收后台任务的配额,将该配额的后台任务分发给给各个业务节点。主业务节点作为其中一个业务节点,也会被分配一部分配额的垃圾回收后台任务。垃圾回收后台任务的配额用于描述分布式系统中在当前逻辑时钟周期内需要执行的后台任务的数量,各业务节点分别执行当前逻辑时钟周期相应数量的垃圾回收后台任务。具体实现,主业务节点可以在分配给各业务节点的后台任务属性中携带当前逻辑时钟值。

需要说明的是,本实施例中,执行垃圾回收一共需要100个后台任务,经过执行配额为80的后台任务之后,还需要20个后台任务,可以在后续的时钟周期中根据前面实施例描述的方法,生成相应的后台任务的配额,继续执行这些后台任务,由于原理和上述步骤相同,因此不再赘述。

本发明实施例实现基于分布式系统负载在逻辑时钟周期后台任务的灵活调度,提高了后台任务调度的灵活性和实时性,保障了后台任务调度的准确性。进一步的,由主业务节点根据前一个逻辑时钟周期负载指数生成后台任务的配额,可以根据分布式系统中的负载调整后台任务的配额,实现分布式系统中后台任务的统一规划,避免无效的后台任务和分布式系统中资源的浪费。

本发明实施例分布式系统在基于逻辑时钟进行后台任务调度时,同时考虑分布式系统的负载指数,在对后台任务进行调度时,不影响前台业务,从而保证分布式系统的前台业务性能。

进一步的,分布式系统在执行当前逻辑时钟周期内的后台任务时,分布式系统的负载会发生相应的变化,因此管理节点根据前面描述的方法,计算当前逻辑时钟周期内分布式系统的负载指数。在当前逻辑时钟周期的下一逻辑时钟周期开始时,主业务节点可以获得当前逻辑时钟周期内分布式系统的负载指数,从而循环执行垃圾回收后台任务。

本发明实施例中,分布式系统在一个逻辑时钟周期执行的后台任务可以为同一种类型的后台任务,也可以为不同类型的后台任务。

本发明实施例以垃圾回收后台任务为例进行了描述,但本发明也适用于其他类型的后台任务,如数据删除、数据整理、硬盘巡检等,本发明实施例对此不作限定。

结合本发明实施例上述描述,如图4所示,本发明实施例还提供了一种分布式系统中任务调度装置,包括获取单元401,生成单元402和分配单元403。其中,获取单元401,用于获取所述分布式系统在前一个逻辑时钟周期的负载指数;生成单元402,用于根据所述负载指数生成当前逻辑时钟周期后台任务的配额;分配单元403,用于将所述配额分配给所述多个业务节点。进一步的,生成单元402,具体用于根据所述负载指数以及所述分布式系统的后台任务总量生成所述当前逻辑时钟周期后台任务的配额。

本发明实施例分布式系统中任务调度装置中上述各单元分别用于执行本发明实施例各方案对应的实现,各种单元具体实现可以是本发明实施例的设备结构,也可以为软件模块,可以运行在服务器上,从而使设备完成本发明实施例中描述的各种实现。各种单元也可以为硬件设备,例如各单元可以处理器或接口实现。上述设备包括各种单元实现可以参考前面方法实施例描述,在此不再赘述。

本发明另一实施例分布式系统中任务调度装置包括接口和处理器,接口和处理器通信,处理器用于执行本发明实施例各方案。

本发明实施例的又一方面提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述各实施例。

本发明实施例的又一方面提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述各实施例。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1