本申请涉及分布式系统技术领域,尤其涉及一种分布式动态调度方法、装置、电子设备及存储介质。
背景技术:
随着业务量的增长,现有视频图像产品的计算能力也将受到严峻考验,为了达到对巨大计算能力的要求,分布式系统成为视频图像产品发展的重要方向。分布式系统是建立在网络之上的软件系统,目前采用分布式系统的视频图像产品多属于有状态应用,所谓有状态应用是指数据的计算处理依赖于一定的上下文关系,即前后的处理之间存在关联与影响,例如:任务、会话的计算或数据处理受配置信息或上下文信息的影响和控制。然而,正是这种关联与影响,使有状态应用计算难以实现灵活迁移。
技术实现要素:
针对上述问题,本申请提供了一种分布式动态调度方法、装置、电子设备及存储介质,通过状态与计算的分离,有利于使有状态的应用在调度层面实现无状态化,使计算灵活迁移。
为实现上述目的,本申请实施例第一方面提供了一种分布式动态调度方法,该方法包括:
调度节点获取数据处理请求,并将所述数据处理请求加入请求缓冲队列进行缓存;
所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点,将所述数据处理请求下发给所述目标处理节点;
若所述数据处理请求是所述目标处理节点未处理的会话,则所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步;
所述目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。
结合第一方面,在一种示例中,所述调度节点将所述数据处理请求加入请求缓冲队列进行缓存,包括:
将所述数据处理请求加入处理等待队列;
从所述处理等待队列中取出所述数据处理请求进行下发操作,若所述数据处理请求下发成功,则将所述数据处理请求加入ack等待队列;若下发失败,则将所述数据处理放回所述处理等待队列。
结合第一方面,在一种示例中,所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点,包括:
获取候选处理节点集合;
若所述数据处理请求的会话在所述分布式状态缓存中属于第一类别会话,则进行均衡调度从所述候选处理节点集合中选择出所述目标处理节点;
若所述数据处理请求的会话在所述分布式状态缓存中属于第二类别会话,则从所述候选处理节点集合中将所述数据处理请求的会话的上一次处理节点选为所述目标处理节点;
若所述数据处理请求的会话在所述分布式状态缓存中属于第二类别会话,且所述数据处理请求的会话的上一次处理节点已失效,则进行均衡调度从所述候选处理节点集合中选择出所述目标处理节点。
结合第一方面,在一种示例中,所述调度节点获取候选处理节点集合,包括:
初始化所述候选处理节点集合为空;
对节点信息库中的所有处理节点进行遍历,将处于准备状态的处理节点加入所述候选处理节点集合。
结合第一方面,在一种示例中,所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步,包括:
从所述分布式状态缓存中,获取所述数据处理请求的会话的配置信息和状态信息;
将所述数据处理请求的会话的配置信息和状态信息同步到本地。
结合第一方面,在一种示例中,所述目标处理节点向所述调度节点同步所述数据处理请求的处理状态,包括:
从所述数据处理请求的处理状态中获取所述数据处理请求的会话标识;
若所述处理状态为成功,则向所述调度节点发送ack信息,所述ack信息携带有所述数据处理请求的会话标识;
若所述处理状态为失败,则向所述调度节点发送nack信息,所述nack信息携带有所述数据处理请求的会话标识。
结合第一方面,在一种示例中,所述方法还包括:
所述调度节点在接收到所述ack信息的情况下,确定完成所述数据处理请求的处理;
所述调度节点在接收到所述nack信息的情况下,将所述数据处理请求从所述ack等待队列移回所述处理等待队列;
若所述数据处理请求在所述ack等待队列中等待的时间超过预设时间,则所述调度节点将所述数据处理请求从所述ack等待队列移回所述处理等待队列;
若所述数据处理请求在所述ack等待队列中等待的时间未超过预设时间,则不做任何处理,继续等待。
本申请实施例第二方面提供了一种分布式动态调度装置,该装置包括:
请求缓冲模块,用于通过调度节点获取数据处理请求,并将所述数据处理请求加入请求缓冲队列进行缓存;
调度执行模块,用于通过所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点,将所述数据处理请求下发给所述目标处理节点;
配置状态同步模块,用于若所述数据处理请求是所述目标处理节点未处理过的会话,则所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步;
计算状态同步模块,用于通过所述目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。
本申请实施例第三方面提供了一种电子设备,所述电子设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的分布式动态调度方法中的步骤。
本申请实施例第四方面提供了一种计算机存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的分布式动态调度方法中的步骤。
本申请的上述方案至少包括以下有益效果:通过调度节点获取数据处理请求,并将所述数据处理请求加入请求缓冲队列进行缓存;调度节点执行调度操作为所述数据处理请求选择出目标处理节点,将所述数据处理请求下发给所述目标处理节点;若所述数据处理请求是所述目标处理节点未处理的会话,则目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步;目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。这样通过调度节点执行调度策略为数据处理请求选择一个目标处理节点,有利于使有状态的应用在调度层面实现无状态化,易于实现计算的均衡、计算的高可用和计算的动态伸缩,同时,通过分布式状态缓存对所有会话的配置状态进行存储和维护、通过目标处理节点实现当前数据处理请求的会话的配置状态同步和处理状态同步,实现了状态与计算的分离,有利于使计算灵活迁移。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种分布式架构图;
图2为本申请实施例提供的一种分布式架构内的处理过程示意图;
图3为本申请实施例提供的一种分布式动态调度方法的流程示意图;
图4为本申请实施例提供的一种请求缓冲队列的示意图;
图5为本申请实施例提供的一种节点信息库的示意图;
图6为本申请实施例提供的一种分布式状态缓存的示意图;
图7为本申请实施例提供的一种配置状态同步的示意图;
图8为本申请实施例提供的另一种分布式动态调度方法的流程示意图;
图9为本申请实施例提供的一种分布式动态调度装置的结构示意图;
图10为本申请提供一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。
首先结合相关附图来举例介绍下本申请实施例的方案可能应用到的网络系统架构。请参见图1,图1为本申请实施例提供的一种分布式架构图,如图1所示,包括客户端、调度节点、处理节点和分布式状态缓存,具体如图2所示,调度节点中计算请求缓冲队列用于缓存客户端提交的数据处理请求,节点状态维护单元用于对系统中所有节点的状态进行维护,以提供调度过程所需的信息,调度单元用于根据节点状态维护单元中节点的信息执行高可用调度、均衡调度或者亲和性调度。分布式状态缓存用于对所有会话的配置状态进行存储和维护,其可在本地实现,也可以在云端实现。处理节点在接收到新的数据处理请求时,任务处理单元触发配置状态同步单元,配置状态同步单元根据分布式状态缓存对数据处理请求的会话进行同步,同步完成由任务处理单元执行处理,并将数据处理请求的处理状态传递给计算状态同步单元,计算状态同步单元将数据处理请求的处理状态反馈至调度节点中的计算请求缓冲队列。基于图1所示的分布式架构,以下结合其他附图对本申请实施例提供的分布式动态调度方法进行详细阐述。
请参见图3,图3为本申请实施例提供的一种分布式动态调度方法的流程示意图,如图3所示,包括步骤s31-s34:
s31,调度节点获取数据处理请求,并将所述数据处理请求加入请求缓冲队列进行缓存。
本申请具体实施例中,调度节点也可以是一种分布式调度器,客户端提交的数据处理请求从请求入口进入系统,由调度节点将数据处理请求加入请求缓冲队列进行缓存。如图4所示,请求缓冲队列中缓存有多个数据处理请求的会话(任务),每个数据处理请求在请求缓冲队列中是一个map数据结构,其中key为会话或任务id,每个数据处理请求元素中还包括处理等待(pending)队列和ack(acknowledgecharacter,确认字符)等待队列。具体的,调度节点在对数据处理请求进行缓存时,先将数据处理请求加入处理等待队列,在为数据处理请求选出目标处理节点进行下发处理时,从处理等待队列中取出数据处理请求,当数据处理请求成功下发至目标处理节点时,将数据处理请求加入ack等待队列,等待目标处理节点同步该数据处理请求的处理状态;当数据处理请求下发至目标处理节点失败时,将该数据处理请求放回处理等待队列缓存。
s32,所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点,将所述数据处理请求下发给所述目标处理节点。
本申请具体实施例中,目标处理节点即需要对当前数据处理请求进行计算的处理节点,节点状态维护单元对节点信息库中的所有处理节点的状态、调度的配额/余量进行维护,如图5所示,节点信息库中的每个处理节点元素均包括节点id(identitydocument,标识)、节点的配置信息(如调度的配额、余量)、节点的状态信息(如准备状态ready、未准备状态notready),每个处理节点元素同样是一个map数据结构,key为节点id。调度节点对数据处理请求进行缓存时,触发该数据处理请求执行高可用调度策略,通过节点状态维护单元获取节点信息库中各处理节点状态信息,由当前可用的处理节点构成候选处理节点集合,具体实施为:初始化候选处理节点集合nodeready为空,遍历节点信息库中的所有处理节点,将处于ready状态的处理节点加入候选处理节点集合中,遍历过程中,如果某个处理节点处于notready状态,则跳过该处理节点,在本次调度中不考虑该处理节点。
在得到候选处理节点集合后,调度节点从数据处理请求中获取其会话id,遍历分布式动态缓存中的所有会话,如图6所示,分布式状态缓存用于对系统内所有会话的配置信息和状态信息进行维护,每个会话的状态管理同样以map数据结构缓存,key为会话id,结构中会话的配置信息可以是会话的输入数据源、处理结果的存储路径、回调的接收者等,会话的状态信息可以是会话处理的偏移量等。
若当前数据处理请求的会话已经存在分布式动态缓存中,但没有该数据处理请求的会话上一次调度处理节点的信息,则将该数据处理请求的会话标识为第一类别会话,即一个新的会话;若有该数据处理请求的会话上一次调度处理节点的信息,则将该数据处理请求的会话标识为第二类别会话,即历史存在的会话;若当前数据处理请求的会话在分布式状态缓存中不存在,则中止当前处理。如果该数据处理请求的会话属于新的会话,则进行均衡调度,采用轮询策略或其他策略从候选处理节点集合中选择一个处理节点作为目标处理节点,并存储此次的调度选择;如果该数据处理请求的会话属于历史存在的会话,则进行亲和性调度,根据历史存储的调度选择,从候选处理节点集合中将数据处理请求的会话的上一次处理节点选为目标处理节点;如果该数据处理请求的会话属于历史存在的会话,但是执行亲和性调度选择的上一次处理节点已失效,则再进行均衡调度,从候选处理节点集合中选择一个处理节点作为目标处理节点,存储此次的调度选择。选择出目标处理节点后,调度节点从处理等待队列中取出数据处理请求,将所述数据处理请求下发给目标处理节点,下发成功则将数据处理请求加入ack等待队列。
s33,若所述数据处理请求是所述目标处理节点未处理的会话,则所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步。
本申请具体实施例中,目标处理节点根据数据处理请求的会话id对该数据处理请求进行判断,如果调度节点向目标处理节点下发的数据处理请求是目标处理节点未处理的新会话,则如图7所示,目标处理节点的任务处理单元会触发配置状态同步单元,使配置状态同步单元根据会话id从分布式状态缓存中,获取该数据处理请求的会话的配置信息和状态信息,将获取到的配置信息和会话信息同步到本地,以完成本地处理会话的更新或同步。
s34,所述目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。
本申请具体实施例中,数据处理请求的处理状态包括成功success或失败failed,在对数据处理请求的会话的配置信息和状态信息进行同步后,目标处理节点的任务处理单元执行该数据处理请求的处理操作,将处理状态传递给计算状态同步单元,计算状态同步单元在接收到所述处理状态的输入时,从数据处理请求的处理状态中获取数据处理请求的会话id,若任务处理单元传递的处理状态为成功,则计算状态同步单元向调度节点发送ack信息,调度节点在接收到该ack信息的情况下,可根据ack信息中携带的会话id确定本次数据处理请求已完成,若任务处理单元传递的处理状态为失败,则计算状态同步单元向调度节点发送nack(非确认字符)信息,调度节点在接收到该nack信息的情况下,将数据处理请求从所述ack等待队列移回处理等待队列。进一步的,如果调度节点一直未收到目标处理节点的任何信息,导致数据处理请求在ack等待队列中等待的时间超过预设时间,则调度节点将数据处理请求从ack等待队列移回处理等待队列,当然,如果数据处理请求在ack等待队列中等待的时间未超过预设时间,则不做任何处理,继续等待。进一步的,如果调度节点向目标处理节点下发的数据处理请求是目标处理节点已经在处理的会话,表明本次处理所依赖的上下文、配置、状态等信息已经存在,无需再同步,则目标处理节点的任务处理单元直接对数据处理请求进行处理,通过计算状态同步单元向调度节点同步处理状态。
可以看出,本申请实施例通过调度节点获取数据处理请求,并将所述数据处理请求加入请求缓冲队列进行缓存;调度节点执行调度操作为所述数据处理请求选择出目标处理节点,将所述数据处理请求下发给所述目标处理节点;若所述数据处理请求是所述目标处理节点未处理的会话,则目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步;目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。这样通过调度节点执行调度策略为数据处理请求选择一个目标处理节点,有利于使有状态的应用在调度层面实现无状态化,易于实现计算的均衡、计算的高可用和计算的动态伸缩,同时,通过分布式状态缓存对所有会话的配置状态进行存储和维护、通过目标处理节点实现当前数据处理请求的会话的配置状态同步和处理状态同步,实现了状态与计算的分离,有利于使计算灵活迁移。
请参加图8,图8为本申请实施例提供的另一种分布式动态调度方法的流程示意图,如图8所示,包括步骤s81-s86:
s81,调度节点获取数据处理请求;
s82,所述调度节点将所述数据处理请求加入处理等待队列;
s83,所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点;
s84,所述调度节点从所述处理等待队列中取出所述数据处理请求,向所述目标处理节点下发所述数据处理请求,若所述数据处理请求下发成功,则将所述数据处理请求加入ack等待队列;若下发失败,则将所述数据处理放回所述处理等待队列;
s85,若所述数据处理请求是所述目标处理节点未处理的会话,则所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步;
s86,所述目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。
其中,图8所示的实施例的步骤在图3所示的实施例中已有相关说明,且能达到相同或相似的有益效果,为避免重复,此处不再赘述。
进一步的,本申请在系统初始化时,还设置有同步更新定时器,该定时器的定时周期为t,每个定时周期t结束时,定时器触发目标处理节点,所述方法还包括:目标处理节点遍历分布式状态缓存,从分布式状态缓存中获取数据处理请求的会话,获取数据处理请求的会话id,使用数据处理请求的会话id查询本地会话,若本地已经存在数据处理请求的会话,则确认数据处理请求的会话的配置信息和状态信息已经同步,若本地不存在数据处理请求的会话,则从分布式状态缓存中获取数据处理请求的会话的配置信息和状态信息同步到本地,对数据处理请求进行处理,向调度节点同步所述数据处理请求的处理状态,等待定时器的下一次触发。
请参见图9,图9为本申请实施例提供的一种分布式动态调度装置的结构示意图,如图9所示,该装置包括:
请求缓冲模块91,用于通过调度节点获取数据处理请求,并将所述数据处理请求加入请求缓冲队列进行缓存;
调度执行模块92,用于通过所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点,将所述数据处理请求下发给所述目标处理节点;
配置状态同步模块93,用于若所述数据处理请求是所述目标处理节点未处理过的会话,则所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步;
计算状态同步模块94,用于通过所述目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。
在一种示例中,在将所述数据处理请求加入请求缓冲队列进行缓存方面,请求缓冲模块91具体用于:
通过所述调度节点将所述数据处理请求加入处理等待队列;从所述处理等待队列中取出所述数据处理请求进行下发操作,若所述数据处理请求下发成功,则将所述数据处理请求加入ack等待队列;若下发失败,则将所述数据处理放回所述处理等待队列。
在一种示例中,在执行调度操作为所述数据处理请求选择出目标处理节点方面,调度执行模块92具体用于:
通过所述调度节点获取候选处理节点集合;若所述数据处理请求的会话在所述分布式状态缓存中属于第一类别会话,则进行均衡调度从所述候选处理节点集合中选择出所述目标处理节点;若所述数据处理请求的会话在所述分布式状态缓存中属于第二类别会话,则从所述候选处理节点集合中将所述数据处理请求的会话的上一次处理节点选为所述目标处理节点;若所述数据处理请求的会话在所述分布式状态缓存中属于第二类别会话,且所述数据处理请求的会话的上一次处理节点已失效,则进行均衡调度从所述候选处理节点集合中选择出所述目标处理节点。
在一种示例中,在获取候选处理节点集合方面,调度执行模块92具体用于:
通过调度节点初始化所述候选处理节点集合为空;对节点信息库中的所有处理节点进行遍历,将处于准备状态的处理节点加入所述候选处理节点集合。
在一种示例中,在通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步方面,配置状态同步模块93具体用于:
通过所述目标处理节点从所述分布式状态缓存中获取所述数据处理请求的会话的配置信息和状态信息;将所述数据处理请求的会话的配置信息和状态信息同步到本地。
在一种示例中,在向所述调度节点同步所述数据处理请求的处理状态方面,计算状态同步模块94具体用于:
通过所述目标处理节点从所述数据处理请求的处理状态中获取所述数据处理请求的会话标识;若所述处理状态为成功,则向所述调度节点发送ack信息,所述ack信息携带有所述数据处理请求的会话标识;若所述处理状态为失败,则向所述调度节点发送nack信息,所述nack信息携带有所述数据处理请求的会话标识。
在一种示例中,请求缓冲模块91具体还用于:
所述调度节点在接收到所述ack信息的情况下,确定完成所述数据处理请求的处理;
所述调度节点在接收到所述nack信息的情况下,将所述数据处理请求从所述ack等待队列移回所述处理等待队列;
若所述数据处理请求在所述ack等待队列中等待的时间超过预设时间,则通过所述调度节点将所述数据处理请求从所述ack等待队列移回所述处理等待队列;
若所述数据处理请求在所述ack等待队列中等待的时间未超过预设时间,则不做任何处理,继续等待。
根据本申请的一个实施例,图9所示的分布式动态调度装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,分布式动态调度装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图3或图8中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图9所示的装置设备,以及来实现本发明实施例的上述方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
基于上述方法实施例以及装置实施例的描述,本发明实施例还提供一种电子设备。请参见图10,该电子设备至少包括处理器1001、输入设备1002、输出设备1003以及计算机存储介质1004。其中,电子设备内的处理器1001、输入设备1002、输出设备1003以及计算机存储介质1004可通过总线或其他方式连接。
计算机存储介质1004可以存储在电子设备的存储器中,所述计算机存储介质1004用于存储计算机程序,所述计算机程序包括程序指令,所述处理器1001用于执行所述计算机存储介质1004存储的程序指令。处理器1001(或称cpu(centralprocessingunit,中央处理器))是电子设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例提供的电子设备的处理器1001可以用于进行一系列动态调度处理,包括:
通过调度节点获取数据处理请求,并将所述数据处理请求加入请求缓冲队列进行缓存;
通过所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点,将所述数据处理请求下发给所述目标处理节点;
若所述数据处理请求是所述目标处理节点未处理的会话,则通过所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步;
通过所述目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。
在一种示例中,处理器1001执行所述将所述数据处理请求加入请求缓冲队列进行缓存,包括:
通过所述调度节点将所述数据处理请求加入处理等待队列;从所述处理等待队列中取出所述数据处理请求进行下发操作,若所述数据处理请求下发成功,则将所述数据处理请求加入ack等待队列;若下发失败,则将所述数据处理放回所述处理等待队列。
在一种示例中,处理器1001执行调度操作为所述数据处理请求选择出目标处理节点,包括:
通过所述调度节点获取候选处理节点集合;若所述数据处理请求的会话在所述分布式状态缓存中属于第一类别会话,则进行均衡调度从所述候选处理节点集合中选择出所述目标处理节点;若所述数据处理请求的会话在所述分布式状态缓存中属于第二类别会话,则从所述候选处理节点集合中将所述数据处理请求的会话的上一次处理节点选为所述目标处理节点;若所述数据处理请求的会话在所述分布式状态缓存中属于第二类别会话,且所述数据处理请求的会话的上一次处理节点已失效,则进行均衡调度从所述候选处理节点集合中选择出所述目标处理节点。
在一种示例中,处理器1001执行所述获取候选处理节点集合,包括:
通过调度节点初始化所述候选处理节点集合为空;对节点信息库中的所有处理节点进行遍历,将处于准备状态的处理节点加入所述候选处理节点集合。
在一种示例中,处理器1001执行所述通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步,包括:
通过所述目标处理节点从所述分布式状态缓存中获取所述数据处理请求的会话的配置信息和状态信息;将所述数据处理请求的会话的配置信息和状态信息同步到本地。
在一种示例中,处理器1001执行所述向所述调度节点同步所述数据处理请求的处理状态,包括:
通过所述目标处理节点从所述数据处理请求的处理状态中获取所述数据处理请求的会话标识;若所述处理状态为成功,则向所述调度节点发送ack信息,所述ack信息携带有所述数据处理请求的会话标识;若所述处理状态为失败,则向所述调度节点发送nack信息,所述nack信息携带有所述数据处理请求的会话标识。
在一种示例中,处理器1001还用于:
所述调度节点在接收到所述ack信息的情况下,确定完成所述数据处理请求的处理;
所述调度节点在接收到所述nack信息的情况下,将所述数据处理请求从所述ack等待队列移回所述处理等待队列;
若所述数据处理请求在所述ack等待队列中等待的时间超过预设时间,则通过所述调度节点将所述数据处理请求从所述ack等待队列移回所述处理等待队列;
若所述数据处理请求在所述ack等待队列中等待的时间未超过预设时间,则不做任何处理,继续等待。
示例性的,上述电子设备可以是计算机、笔记本电脑、平板电脑、掌上电脑、服务器等设备。电子设备可包括但不仅限于处理器1001、输入设备1002、输出设备1003以及计算机存储介质1004。本领域技术人员可以理解,所述示意图仅仅是电子设备的示例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
需要说明的是,由于电子设备的处理器1001执行计算机程序时实现上述的分布式动态调度方法中的步骤,因此上述分布式动态调度方法的实施例均适用于该电子设备,且均能达到相同或相似的有益效果。
本申请实施例还提供了一种计算机存储介质(memory),所述计算机存储介质是电子设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端中的内置存储介质,当然也可以包括终端所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器1001加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器1001的计算机存储介质。在一个实施例中,可由处理器1001加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关分布式动态调度方法的相应步骤。
示例性的,计算机存储介质的计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,由于计算机存储介质的计算机程序被处理器执行时实现上述的分布式动态调度方法中的步骤,因此上述分布式动态调度方法的所有例均适用于该计算机可读存储介质,且均能达到相同或相似的有益效果。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
1.一种分布式动态调度方法,其特征在于,所述方法包括:
调度节点获取数据处理请求,并将所述数据处理请求加入请求缓冲队列进行缓存;
所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点,将所述数据处理请求下发给所述目标处理节点;
若所述数据处理请求是所述目标处理节点未处理的会话,则所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步;
所述目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。
2.根据权利要求1所述的方法,其特征在于,所述调度节点将所述数据处理请求加入请求缓冲队列进行缓存,包括:
将所述数据处理请求加入处理等待队列;
从所述处理等待队列中取出所述数据处理请求进行下发操作,若所述数据处理请求下发成功,则将所述数据处理请求加入ack等待队列;若下发失败,则将所述数据处理放回所述处理等待队列。
3.根据权利要求1所述的方法,其特征在于,所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点,包括:
获取候选处理节点集合;
若所述数据处理请求的会话在所述分布式状态缓存中属于第一类别会话,则进行均衡调度从所述候选处理节点集合中选择出所述目标处理节点;
若所述数据处理请求的会话在所述分布式状态缓存中属于第二类别会话,则从所述候选处理节点集合中将所述数据处理请求的会话的上一次处理节点选为所述目标处理节点;
若所述数据处理请求的会话在所述分布式状态缓存中属于第二类别会话,且所述数据处理请求的会话的上一次处理节点已失效,则进行均衡调度从所述候选处理节点集合中选择出所述目标处理节点。
4.根据权利要求3所述的方法,其特征在于,所述调度节点获取候选处理节点集合,包括:
初始化所述候选处理节点集合为空;
对节点信息库中的所有处理节点进行遍历,将处于准备状态的处理节点加入所述候选处理节点集合。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步,包括:
从所述分布式状态缓存中,获取所述数据处理请求的会话的配置信息和状态信息;
将所述数据处理请求的会话的配置信息和状态信息同步到本地。
6.根据权利要求2所述的方法,其特征在于,所述目标处理节点向所述调度节点同步所述数据处理请求的处理状态,包括:
从所述数据处理请求的处理状态中获取所述数据处理请求的会话标识;
若所述处理状态为成功,则向所述调度节点发送ack信息,所述ack信息携带有所述数据处理请求的会话标识;
若所述处理状态为失败,则向所述调度节点发送nack信息,所述nack信息携带有所述数据处理请求的会话标识。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述调度节点在接收到所述ack信息的情况下,确定完成所述数据处理请求的处理;
所述调度节点在接收到所述nack信息的情况下,将所述数据处理请求从所述ack等待队列移回所述处理等待队列;
若所述数据处理请求在所述ack等待队列中等待的时间超过预设时间,则所述调度节点将所述数据处理请求从所述ack等待队列移回所述处理等待队列;
若所述数据处理请求在所述ack等待队列中等待的时间未超过预设时间,则不做任何处理,继续等待。
8.一种分布式动态调度装置,其特征在于,所述装置包括:
请求缓冲模块,用于通过调度节点获取数据处理请求,并将所述数据处理请求加入请求缓冲队列进行缓存;
调度执行模块,用于通过所述调度节点执行调度操作为所述数据处理请求选择出目标处理节点,将所述数据处理请求下发给所述目标处理节点;
配置状态同步模块,用于若所述数据处理请求是所述目标处理节点未处理的会话,则所述目标处理节点通过分布式状态缓存对所述数据处理请求的会话的配置信息和状态信息进行同步;
计算状态同步模块,用于通过所述目标处理节点对所述数据处理请求进行处理,并向所述调度节点同步所述数据处理请求的处理状态。
9.一种电子设备,包括输入设备和输出设备,其特征在于,还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-7任一项所述的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1-7任一项所述的方法。
技术总结