首页 / 专利库 / 电信 / 节点 / 子节点 / 一种分布式调度系统的控制方法及控制装置

一种分布式调度系统的控制方法及控制装置

阅读:1037发布:2020-05-16

专利汇可以提供一种分布式调度系统的控制方法及控制装置专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种分布式调度系统的控制方法及控制装置,应用于所述分布式调度系统的 服务器 ,该控制方法包括:按照预设时间间隔获取目标任务未处理的消息的数量;根据未处理的消息的数量确定目标任务对应的目标线程数,其中,未处理消息的数量与目标任务对应的目标线程数呈正相关关系;在当前处理目标任务的线程的数量与目标任务对应的目标线程数不同时,调整处理目标任务的线程,使得处理目标任务的线程的数量为所述目标线程数。基于本申请公开的控制方法,在业务高峰期时,能够避免出现消息队列积压的问题。,下面是一种分布式调度系统的控制方法及控制装置专利的具体信息内容。

1.一种分布式调度系统的控制方法,应用于所述分布式调度系统的服务器,其特征在于,所述控制方法包括:
按照预设时间间隔获取目标任务未处理的消息的数量;
根据所述未处理的消息的数量确定所述目标任务对应的目标线程数,其中,所述未处理消息的数量与所述目标任务对应的目标线程数呈正相关关系;
在当前处理所述目标任务的线程的数量与所述目标任务对应的目标线程数不同的情况下,调整处理所述目标任务的线程,使得处理所述目标任务的线程的数量为所述目标线程数。
2.根据权利要求1所述的控制方法,其特征在于,所述根据所述未处理的消息的数量确定所述目标任务对应的目标线程数,包括:
比较所述未处理的消息的数量、第一阈值和第二阈值,其中,所述第一阈值和所述第二阈值为正数,且所述第一阈值大于或等于所述第二阈值;
如果所述未处理的消息的数量大于所述第一阈值,则将当前处理所述目标任务的线程的数量与第一数值的和值作为所述目标任务对应的目标线程数;
如果所述未处理的消息的数量小于所述第二阈值,则将当前处理所述目标任务的线程的数量与所述第一数值的差值作为所述目标任务对应的目标线程数。
3.根据权利要求1所述的控制方法,其特征在于,所述根据所述未处理的消息的数量确定所述目标任务对应的目标线程数,包括:
比较所述未处理的消息的数量、第一阈值和第二阈值,其中,所述第一阈值和所述第二阈值为正数,且所述第一阈值大于或等于所述第二阈值;
如果所述未处理的消息的数量大于所述第一阈值,则计算当前处理所述目标任务的线程的数量与第一数值的和值,如果所述和值小于或等于预先设置的最大进程数,则将所述和值作为所述目标任务对应的目标线程数,如果所述和值大于所述最大进程数,则将所述最大进程数作为所述目标任务对应的目标线程数;
如果所述未处理的消息的数量小于所述第二阈值,则计算当前处理所述任务的线程的数量与第一数值的差值,如果所述差值大于或等于预先设置的最小进程数,则将所述差值作为所述目标任务对应的目标线程数,如果所述差值小于所述最小进程数,则将所述最小进程数作为所述目标任务对应的目标线程数。
4.根据权利要求1、2或3所述的控制方法,其特征在于,所述调整所述目标任务的线程,使得处理所述目标任务的线程的数量为所述目标线程数,包括:
在所述目标任务对应的目标线程数大于当前处理所述目标任务的线程的数量的情况下,执行一次或多次第一操作,直至处理所述目标任务的线程的数量达到所述目标线程数;
其中,所述第一操作包括:在处理所述目标任务的多个执行节点中查找第一目标节点,所述第一目标节点为所述多个执行节点中开启处理所述目标任务的线程数量最少的一个执行节点;控制所述第一目标节点开启一个新的线程处理所述目标任务。
5.根据权利要求4所述的控制方法,其特征在于,所述调整所述目标任务的线程,使得处理所述目标任务的线程的数量为所述目标线程数,还包括:
在所述目标任务对应的目标线程数小于当前处理所述目标任务的线程的数量的情况下,执行一次或多次第二操作,直至处理所述目标任务的线程的数量达到所述目标线程数;
其中,所述第二操作包括:在处理所述目标任务的多个执行节点中查找第二目标节点,所述第二目标节点为所述多个执行节点中开启处理所述目标任务的线程数量最多的一个执行节点;控制所述第二目标节点关闭一个处理所述目标任务的线程。
6.一种分布式调度系统的控制装置,其特征在于,应用于所述分布式调度系统的服务器,所述控制装置包括:
消息数量获取单元,用于按照预设时间间隔获取目标任务未处理的消息的数量;
目标线程数确定单元,用于根据所述未处理的消息的数量确定所述目标任务对应的目标线程数,其中,所述未处理消息的数量与所述目标任务对应的目标线程数呈正相关关系;
线程处理单元,用于在当前处理所述目标任务的线程的数量与所述目标任务对应的目标线程数不同的情况下,调整处理所述目标任务的线程,使得处理所述目标任务的线程的数量为所述目标线程数。
7.根据权利要求6所述的控制装置,其特征在于,所述目标线程数确定单元包括:
数值比较子单元,用于比较所述未处理的消息的数量、第一阈值和第二阈值,其中,所述第一阈值和所述第二阈值为正数,且所述第一阈值大于或等于所述第二阈值;
第一处理子单元,用于在所述未处理的消息的数量大于所述第一阈值的情况下,将当前处理所述目标任务的线程的数量与第一数值的和值作为所述目标任务对应的目标线程数;
第二处理子单元,用于在所述未处理的消息的数量小于所述第二阈值的情况下,将当前处理所述目标任务的线程的数量与所述第一数值的差值作为所述目标任务对应的目标线程数。
8.根据权利要求6所述的控制装置,其特征在于,所述目标线程数确定单元包括:
数值比较子单元,用于比较所述未处理的消息的数量、第一阈值和第二阈值,其中,所述第一阈值和所述第二阈值为正数,且所述第一阈值大于或等于所述第二阈值;
第三处理子单元,用于在所述未处理的消息的数量大于所述第一阈值的情况下,计算当前处理所述目标任务的线程的数量与第一数值的和值,如果所述和值小于或等于预先设置的最大进程数,则将所述和值作为所述目标任务对应的目标线程数,如果所述和值大于所述最大进程数,则将所述最大进程数作为所述目标任务对应的目标线程数;
第四处理子单元,用于在所述未处理的消息的数量小于所述第二阈值的情况下,计算当前处理所述任务的线程的数量与第一数值的差值,如果所述差值大于或等于预先设置的最小进程数,则将所述差值作为所述目标任务对应的目标线程数,如果所述差值小于所述最小进程数,则将所述最小进程数作为所述目标任务对应的目标线程数。
9.根据权利要求6、7或8所述的控制装置,其特征在于,所述线程处理单元包括:
第一线程调整子单元,用于在所述目标任务对应的目标线程数大于当前处理所述目标任务的线程的数量的情况下,执行一次或多次第一操作,直至处理所述目标任务的线程的数量达到所述目标线程数;其中,所述第一操作包括:在处理所述目标任务的多个执行节点中查找第一目标节点,所述第一目标节点为所述多个执行节点中开启处理所述目标任务的线程数量最少的一个执行节点;控制所述第一目标节点开启一个新的线程处理所述目标任务。
10.根据权利要求9所述的控制装置,其特征在于,所述线程处理单元还包括:
第二线程调整子单元,用于在所述目标任务对应的目标线程数小于当前处理所述目标任务的线程的数量的情况下,执行一次或多次第二操作,直至处理所述目标任务的线程的数量达到所述目标线程数;其中,所述第二操作包括:在处理所述目标任务的多个执行节点中查找第二目标节点,所述第二目标节点为所述多个执行节点中开启处理所述目标任务的线程数量最多的一个执行节点;控制所述第二目标节点关闭一个处理所述目标任务的线程。

说明书全文

一种分布式调度系统的控制方法及控制装置

技术领域

[0001] 本申请属于数据处理技术领域,尤其涉及一种分布式调度系统的控制方法及控制装置。

背景技术

[0002] 分布式调度系统是一个对任务进行管理和跨机房调度的系统。
[0003] 图1示出了分布式调度系统的一种结构,包括:服务器和多个终端,其中,服务器作为分布式调度系统的主控节点,多个终端为分布式调度系统的执行节点。服务器接收客户端发送的任务处理请求,根据预定的策略为待处理的任务分配资源,也就是分配一个或者多个终端处理该任务,终端将处理结果上报至服务器。
[0004] 但是,申请人发现在分布式调度系统运行过程中存在以下问题:在业务高峰期,极易出现消息队列积压的问题。发明内容
[0005] 有鉴于此,本申请的目的在于提供一种分布式调度系统的控制方法及控制装置,以解决分布式调度系统在业务高峰期极易出现消息队列积压的问题。
[0006] 为实现上述目的,本申请提供如下技术方案:
[0007] 一方面,本申请提供一种分布式调度系统的控制方法,应用于该分布式调度系统的服务器,该控制方法包括:
[0008] 按照预设时间间隔获取目标任务未处理的消息的数量;
[0009] 根据所述未处理的消息的数量确定所述目标任务对应的目标线程数,其中,所述未处理消息的数量与所述目标任务对应的目标线程数呈正相关关系;
[0010] 在当前处理所述目标任务的线程的数量与所述目标任务对应的目标线程数不同的情况下,调整处理所述目标任务的线程,使得处理所述目标任务的线程的数量为所述目标线程数。
[0011] 可选的,所述根据所述未处理的消息的数量确定所述目标任务对应的目标线程数,包括:
[0012] 比较所述未处理的消息的数量、第一阈值和第二阈值,其中,所述第一阈值和所述第二阈值为正数,且所述第一阈值大于或等于所述第二阈值;
[0013] 如果所述未处理的消息的数量大于所述第一阈值,则将当前处理所述目标任务的线程的数量与第一数值的和值作为所述目标任务对应的目标线程数;
[0014] 如果所述未处理的消息的数量小于所述第二阈值,则将当前处理所述目标任务的线程的数量与所述第一数值的差值作为所述目标任务对应的目标线程数。
[0015] 可选的,所述根据所述未处理的消息的数量确定所述目标任务对应的目标线程数,包括:
[0016] 比较所述未处理的消息的数量、第一阈值和第二阈值,其中,所述第一阈值和所述第二阈值为正数,且所述第一阈值大于或等于所述第二阈值;
[0017] 如果所述未处理的消息的数量大于所述第一阈值,则计算当前处理所述目标任务的线程的数量与第一数值的和值,如果所述和值小于或等于预先设置的最大进程数,则将所述和值作为所述目标任务对应的目标线程数,如果所述和值大于所述最大进程数,则将所述最大进程数作为所述目标任务对应的目标线程数;
[0018] 如果所述未处理的消息的数量小于所述第二阈值,则计算当前处理所述任务的线程的数量与第一数值的差值,如果所述差值大于或等于预先设置的最小进程数,则将所述差值作为所述目标任务对应的目标线程数,如果所述差值小于所述最小进程数,则将所述最小进程数作为所述目标任务对应的目标线程数。
[0019] 可选的,所述调整所述目标任务的线程,使得处理所述目标任务的线程的数量为所述目标线程数,包括:
[0020] 在所述目标任务对应的目标线程数大于当前处理所述目标任务的线程的数量的情况下,执行一次或多次第一操作,直至处理所述目标任务的线程的数量达到所述目标线程数;
[0021] 其中,所述第一操作包括:在处理所述目标任务的多个执行节点中查找第一目标节点,所述第一目标节点为所述多个执行节点中开启处理所述目标任务的线程数量最少的一个执行节点;控制所述第一目标节点开启一个新的线程处理所述目标任务。
[0022] 可选的,所述调整所述目标任务的线程,使得处理所述目标任务的线程的数量为所述目标线程数,还包括:
[0023] 在所述目标任务对应的目标线程数小于当前处理所述目标任务的线程的数量的情况下,执行一次或多次第二操作,直至处理所述目标任务的线程的数量达到所述目标线程数;
[0024] 其中,所述第二操作包括:在处理所述目标任务的多个执行节点中查找第二目标节点,所述第二目标节点为所述多个执行节点中开启处理所述目标任务的线程数量最多的一个执行节点;控制所述第二目标节点关闭一个处理所述目标任务的线程。
[0025] 另一方面,本申请提供一种分布式调度系统的控制装置,应用于该分布式调度系统的服务器,该控制装置包括:
[0026] 消息数量获取单元,用于按照预设时间间隔获取目标任务未处理的消息的数量;
[0027] 目标线程数确定单元,用于根据所述未处理的消息的数量确定所述目标任务对应的目标线程数,其中,所述未处理消息的数量与所述目标任务对应的目标线程数呈正相关关系;
[0028] 线程处理单元,用于在当前处理所述目标任务的线程的数量与所述目标任务对应的目标线程数不同的情况下,调整处理所述目标任务的线程,使得处理所述目标任务的线程的数量为所述目标线程数。
[0029] 可选的,所述目标线程数确定单元包括:
[0030] 数值比较子单元,用于比较所述未处理的消息的数量、第一阈值和第二阈值,其中,所述第一阈值和所述第二阈值为正数,且所述第一阈值大于或等于所述第二阈值;
[0031] 第一处理子单元,用于在所述未处理的消息的数量大于所述第一阈值的情况下,将当前处理所述目标任务的线程的数量与第一数值的和值作为所述目标任务对应的目标线程数;
[0032] 第二处理子单元,用于在所述未处理的消息的数量小于所述第二阈值的情况下,将当前处理所述目标任务的线程的数量与所述第一数值的差值作为所述目标任务对应的目标线程数。
[0033] 可选的,所述目标线程数确定单元包括:
[0034] 数值比较子单元,用于比较所述未处理的消息的数量、第一阈值和第二阈值,其中,所述第一阈值和所述第二阈值为正数,且所述第一阈值大于或等于所述第二阈值;
[0035] 第三处理子单元,用于在所述未处理的消息的数量大于所述第一阈值的情况下,计算当前处理所述目标任务的线程的数量与第一数值的和值,如果所述和值小于或等于预先设置的最大进程数,则将所述和值作为所述目标任务对应的目标线程数,如果所述和值大于所述最大进程数,则将所述最大进程数作为所述目标任务对应的目标线程数;
[0036] 第四处理子单元,用于在所述未处理的消息的数量小于所述第二阈值的情况下,计算当前处理所述任务的线程的数量与第一数值的差值,如果所述差值大于或等于预先设置的最小进程数,则将所述差值作为所述目标任务对应的目标线程数,如果所述差值小于所述最小进程数,则将所述最小进程数作为所述目标任务对应的目标线程数。
[0037] 可选的,所述线程处理单元包括:
[0038] 第一线程调整子单元,用于在所述目标任务对应的目标线程数大于当前处理所述目标任务的线程的数量的情况下,执行一次或多次第一操作,直至处理所述目标任务的线程的数量达到所述目标线程数;其中,所述第一操作包括:在处理所述目标任务的多个执行节点中查找第一目标节点,所述第一目标节点为所述多个执行节点中开启处理所述目标任务的线程数量最少的一个执行节点;控制所述第一目标节点开启一个新的线程处理所述目标任务。
[0039] 可选的,所述线程处理单元还包括:
[0040] 第二线程调整子单元,用于在所述目标任务对应的目标线程数小于当前处理所述目标任务的线程的数量的情况下,执行一次或多次第二操作,直至处理所述目标任务的线程的数量达到所述目标线程数;其中,所述第二操作包括:在处理所述目标任务的多个执行节点中查找第二目标节点,所述第二目标节点为所述多个执行节点中开启处理所述目标任务的线程数量最多的一个执行节点;控制所述第二目标节点关闭一个处理所述目标任务的线程。
[0041] 由此可见,本申请的有益效果为:
[0042] 本申请公开的分布式调度系统的控制方法,服务器按照预设时间间隔获取目标任务未处理的消息的数量,并根据目标任务未处理的消息的数量确定该目标任务对应的目标线程数,之后服务器调整处理该目标任务的线程,使得处理该目标任务的线程的数量与该目标线程数一致,其中,目标任务未处理消息的数量与该目标任务对应的目标线程数呈正相关关系,这使得在出现业务高峰导致目标任务未处理的消息较多时,服务器自动分配更多的线程处理该目标任务,能够避免出现消息队列积压的问题,在目标任务未处理的消息较少时,服务器自动减少处理该目标任务的线程,从而释放执行节点中更多的资源用于处理其他任务。附图说明
[0043] 为了更清楚地说明本申请实施例现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044] 图1为现有的一种分布式调度系统的结构示意图;
[0045] 图2为本申请公开的一种分布式调度系统的控制方法的流程图
[0046] 图3为本申请公开的另一种分布式调度系统的控制方法的流程图;
[0047] 图4为本申请公开的另一种分布式调度系统的控制方法的流程图;
[0048] 图5为本申请公开的另一种分布式调度系统的控制方法的流程图;
[0049] 图6为本申请公开的一种分布式调度系统的控制装置的结构示意图;
[0050] 图7为本申请公开的一种分布式调度系统的控制系统的结构示意图。

具体实施方式

[0051] 本申请公开分布式调度系统的控制方法及控制装置,能够避免分布式调度系统在业务高峰期出现消息队列积压的问题。
[0052] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0053] 参见图2,图2为本申请公开的一种分布式调度系统的控制方法的流程图,该控制方法应用于分布式调度系统的服务器,具体包括:
[0054] 步骤S1:按照预设时间间隔获取目标任务未处理的消息的数量。
[0055] 通过配置中心预先配置需要监控的任务,该任务即为目标任务。需要说明的是,目标任务可以为一个或者多个。
[0056] 服务器根据配置中心的配置,按照预设时间间隔获取目标任务未处理的消息的数量,未处理的消息也可以称为未消费的消息。其中,消息主要包括Redis、ActiveMQ和RocketMQ。
[0057] 实施中,该预设时间间隔可以为固定时间间隔,例如,将预设时间间隔设置为3秒。另外,该预设时间间隔也可以是动态变化的,例如,在业务量较大时,将预设时间间隔设置为较小的数值,在业务量较小时,将预设时间间隔设置为较大的数值。
[0058] 步骤S2:根据未处理的消息的数量确定该目标任务对应的目标线程数。
[0059] 步骤S3:在当前处理目标任务的线程的数量与该目标任务对应的目标线程数不同的情况下,调整处理该目标任务的线程,使得处理该目标任务的线程的数量为该目标线程数。
[0060] 服务器获取目标任务未处理的消息的数量,根据未处理消息的数量确定该目标任务对应的目标线程数,其中,目标任务未处理消息的数量与该目标任务对应的目标线程数呈正相关关系。也就是说,当目标任务未处理消息的数量较大时,该目标任务对应的目标线程数为较大的数值,当目标任务未处理消息的数量较小时,该目标任务对应的目标线程数为较小的数值。服务器调整处理该目标任务的线程,使得处理该目标任务的线程的数量与目标线程数一致。
[0061] 本申请公开的分布式调度系统的控制方法,服务器按照预设时间间隔获取目标任务未处理的消息的数量,并根据目标任务未处理的消息的数量确定该目标任务对应的目标线程数,之后服务器调整处理该目标任务的线程,使得处理该目标任务的线程的数量与该目标线程数一致,其中,目标任务未处理消息的数量与该目标任务对应的目标线程数呈正相关关系,这使得在出现业务高峰导致目标任务未处理的消息较多时,服务器自动分配更多的线程处理该目标任务,能够避免出现消息队列积压的问题,在目标任务未处理的消息较少时,服务器自动减少处理该目标任务的线程,从而释放执行节点中更多的资源用于处理其他任务。
[0062] 实施中,根据目标任务未处理的消息的数量确定该目标任务对应的目标线程数,可以采用多种方案实现。下面结合图3和图4分别进行说明。
[0063] 参见图3,图3为本申请公开的另一种分布式调度系统的控制方法的流程图,该控制方法应用于分布式调度系统的服务器,具体包括:
[0064] 步骤S1:按照预设时间间隔获取目标任务未处理的消息的数量。
[0065] 步骤S201:比较未处理的消息的数量、第一阈值和第二阈值。
[0066] 其中,第一阈值和第二阈值均为正数,且第一阈值大于或等于第二阈值。
[0067] 步骤S202:如果未处理的消息的数量大于第一阈值,则将当前处理目标任务的线程的数量与第一数值的和值作为目标任务对应的目标线程数。
[0068] 步骤S203:如果未处理的消息的数量小于第二阈值,则将当前处理目标任务的线程的数量与第一数值的差值作为目标任务对应的目标线程数。
[0069] 步骤S3:在当前处理目标任务的线程的数量与该目标任务对应的目标线程数不同的情况下,调整处理该目标任务的线程,使得处理该目标任务的线程的数量为该目标线程数。
[0070] 服务器获取目标任务未处理的消息的数量,比较未处理的消息的数量、第一阈值和第二阈值,根据比较结果采用不同的策略确定该目标任务对应的目标线程数。
[0071] 在目标任务未处理的消息的数量大于第一阈值的情况下,服务器将当前处理该目标任务的线程的数量与第一数值的和作为该目标任务对应的目标线程数,相应的,在步骤S3中,服务器增加处理该目标任务的线程,使得处理该目标任务的线程的数量与该目标任务的目标线程数一致。
[0072] 在目标任务未处理的消息的数量小于第二阈值的情况下,服务器将当前处理该目标任务的线程的数量与第一数值的差作为该目标任务对应的目标线程数,相应的,在步骤S3中,服务器减少处理该目标任务的线程,使得处理该目标任务的线程的数量与该目标任务的目标线程数一致。
[0073] 另外,在未处理的消息的数量位于第二阈值和第一阈值之间(包括第一阈值和第二阈值这两个端点值)时,服务器将当前处理该目标任务的线程的数量作为该目标任务对应的目标线程数,这种情况下,可以不再调整处理该目标任务的线程。
[0074] 本申请图3所示的控制方法中,当目标任务未处理的消息的数量大于第一阈值时,服务器将当前处理该目标任务的线程的数量与第一数值的和值作为目标任务对应的目标线程数,从而增加处理该目标任务的线程,能够避免出现消息队列积压的问题。当目标任务未处理的消息的数量小于第二阈值时,服务器将当前处理该目标任务的线程的数量与第一数值的差值作为目标任务对应的目标线程数,从而减少处理该目标任务的线程,释放执行节点中更多的资源用于处理其他任务。
[0075] 参见图4,图4为本申请公开的另一种分布式调度系统的控制方法的流程图,该控制方法应用于分布式调度系统的服务器,具体包括:
[0076] 步骤S1:按照预设时间间隔获取目标任务未处理的消息的数量。
[0077] 步骤S211:比较未处理的消息的数量、第一阈值和第二阈值。
[0078] 其中,第一阈值和第二阈值均为正数,且第一阈值大于或等于第二阈值。
[0079] 步骤S212:如果未处理的消息的数量大于第一阈值,则计算当前处理目标任务的线程的数量与第一数值的和值。
[0080] 步骤S213:如果该和值小于或等于预先设置的最大进程数,则将该和值作为目标任务对应的目标线程数,如果该和值大于最大进程数,则将最大进程数作为目标任务对应的目标线程数。
[0081] 步骤S214:如果未处理的消息的数量小于第二阈值,则计算当前处理任务的线程的数量与第一数值的差值。
[0082] 步骤S215:如果该差值大于或等于预先设置的最小进程数,则将该差值作为目标任务对应的目标线程数,如果该差值小于最小进程数,则将最小进程数作为目标任务对应的目标线程数。
[0083] 服务器获取目标任务未处理的消息的数量,比较未处理的消息的数量、第一阈值和第二阈值,根据比较结果采用不同的策略确定该目标任务对应的目标线程数。
[0084] 在目标任务未处理的消息的数量大于第一阈值的情况下,服务器计算当前处理该目标任务的线程的数量与第一数值的和值,比较该和值和预先设置的最大进程数,如果该和值小于或等于该最大进程数,那么将该和值作为该目标任务对应的目标线程数,如果该和值大于该最大进程数,那么将该最大进程数作为该目标任务对应的目标线程数。
[0085] 在目标任务未处理的消息的数量小于第二阈值的情况下,服务器计算当前处理该目标任务的线程的数量与第一数值的差值,比较该差值和预先设置的最小进程数,如果该差值大于或等于该最小进程数,那么将该差值作为该目标任务对应的目标线程数,如果该差值小于该最小进程数,那么将该最小进程数作为该目标任务对应的目标线程数。
[0086] 步骤S3:在当前处理目标任务的线程的数量与该目标任务对应的目标线程数不同的情况下,调整处理该目标任务的线程,使得处理该目标任务的线程的数量为该目标线程数。
[0087] 与图3所示的控制方法相比,服务器根据目标任务未处理的消息的数量所确定的该目标任务对应的目标线程数,不会超出针对该目标任务预先配置的最大进程数和最小进程数,能够避免某个任务占用过多的资源,有利于分布式调度系统的稳定运行。
[0088] 在本申请上述图2和图3所示的控制方法中,优选的将第一数值设置为1。在这种情况下,服务器是循序渐进地增加或者关闭用于处理目标任务的线程,能够对分布式调度系统的稳定性进行很好的保护。
[0089] 在分布式调度系统中,一个任务通常是有多个执行节点处理。服务器在执行步骤S3的过程中,当需要增加新的线程处理目标任务时,可以选择任意一个或多个执行节点开启新的用于处理该目标任务的线程,当需要减少处理该目标任务的线程时,可以选择任意一个或多个执行节点关闭用于处理该目标任务的线程。
[0090] 作为一种优选方案,服务器在执行步骤S3的过程中,基于平均分配的原则调整处理目标任务的线程,以均衡分布式调度系统中各个执行节点的负载。
[0091] 参见图5,图5为本申请公开的另一种分布式调度系统的控制方法的流程图。该控制方法应用于分布式调度系统的服务器,具体包括:
[0092] 步骤S1:按照预设时间间隔获取目标任务未处理的消息的数量。
[0093] 步骤S2:根据未处理的消息的数量确定该目标任务对应的目标线程数。
[0094] 步骤S301:在目标任务对应的目标线程数大于当前处理目标任务的线程的数量的情况下,执行一次或多次第一操作,直至处理目标任务的线程的数量达到目标线程数。
[0095] 其中,第一操作包括:在处理目标任务的多个执行节点中查找第一目标节点,第一目标节点为多个执行节点中开启处理该目标任务的线程数量最少的一个执行节点;控制第一目标节点开启一个新的线程处理目标任务。
[0096] 也就是说,在确定目标任务对应的目标线程数之后,如果当前处理该目标任务的线程的数量小于该目标任务对应的目标线程数,那么在处理该目标任务的多个执行节点中查找开启处理该目标任务的线程数量最少的执行节点,控制该执行节点开启一个新的线程处理该目标任务,重复第一操作,直至处理目标任务的线程的数量增加至该目标任务对应的目标线程数。
[0097] 可选的,第一目标节点还满足:第一目标节点针对目标任务开启一个新的线程后,该第一目标节点开启的全部线程的数量不超过预设的线程上限值。
[0098] 可选的,第一操作还可以包括:在未针对该目标任务开启线程的多个执行节点中查找第三目标节点,控制第三目标节点开启一个新的线程处理该目标任务。
[0099] 也就是说,除了在当前处理目标任务的多个执行节点中查找第一目标节点,控制第一目标节点开启一个新的线程处理目标任务之外,还可以增加一个新的执行节点来处理目标任务。
[0100] 步骤S302:在目标任务对应的目标线程数小于当前处理目标任务的线程的数量的情况下,执行一次或多次第二操作,直至处理目标任务的线程的数量达到目标线程数。
[0101] 其中,第二操作包括:在处理目标任务的多个执行节点中查找第二目标节点,第二目标节点为多个执行节点中开启处理该目标任务的线程数量最多的一个执行节点;控制第二目标节点关闭一个处理目标任务的线程。
[0102] 也就是说,在确定目标任务对应的目标线程数之后,如果当前处理该目标任务的线程的数量大于该目标任务对应的目标线程数,那么在处理该目标任务的多个执行节点中查找开启处理该目标任务的线程数量最多的执行节点,控制该执行节点关闭一个用于处理该目标任务的线程,重复第二操作,直至处理目标任务的线程的数量减少至该目标任务对应的目标线程数。
[0103] 本申请图5所示的控制方法中,服务器根据目标任务未处理的消息的数量确定该目标任务对应的目标线程数之后,如果当前处理该目标任务的线程的数量小于该目标任务对应的目标线程数,那么在处理该目标任务的多个执行节点中查找开启处理该目标任务的线程数量最少的执行节点,控制该执行节点开启一个新的线程处理该目标任务,重复上述操作,直至处理目标任务的线程的数量增加至该目标任务对应的目标线程数,如果当前处理该目标任务的线程的数量大于该目标任务对应的目标线程数,那么在处理该目标任务的多个执行节点中查找开启处理该目标任务的线程数量最多的执行节点,控制该执行节点关闭一个用于处理该目标任务的线程,重复上述操作,直至处理目标任务的线程的数量减少至该目标任务对应的目标线程数。可以看到,基于本申请图5所示的控制方法,服务器按照平均分配的原则调整处理目标任务的线程,这使得分布式调度系统中各个执行节点的负载更为均衡。
[0104] 本申请上述公开了分布式调度系统的控制方法,相应的,本申请还公开分布式调度系统的控制装置,该控制装置布置于分布式调度系统的服务器中。上文中关于控制方法的描述与下文中关于控制装置的描述,可以相互参考。
[0105] 参见图6,图6为本申请公开的一种分布式调度系统的控制装置的结构示意图,具体包括:
[0106] 消息数量获取单元100,用于按照预设时间间隔获取目标任务未处理的消息的数量;
[0107] 目标线程数确定单元200,用于根据未处理的消息的数量确定目标任务对应的目标线程数,其中,未处理消息的数量与目标任务对应的目标线程数呈正相关关系;
[0108] 线程处理单元300,用于在当前处理目标任务的线程的数量与目标任务对应的目标线程数不同的情况下,调整处理目标任务的线程,使得处理目标任务的线程的数量为目标线程数。
[0109] 基于本申请公开的控制装置,在出现业务高峰导致目标任务未处理的消息较多时,服务器自动分配更多的线程处理该目标任务,能够避免出现消息队列积压的问题,在目标任务未处理的消息较少时,服务器自动减少处理该目标任务的线程,从而释放执行节点中更多的资源用于处理其他任务。
[0110] 作为一个示例,目标线程数确定单元200包括:
[0111] 数值比较子单元,用于比较未处理的消息的数量、第一阈值和第二阈值,其中,第一阈值和第二阈值为正数,且第一阈值大于或等于第二阈值;
[0112] 第一处理子单元,用于在未处理的消息的数量大于第一阈值的情况下,将当前处理目标任务的线程的数量与第一数值的和值作为目标任务对应的目标线程数;
[0113] 第二处理子单元,用于在未处理的消息的数量小于第二阈值的情况下,将当前处理目标任务的线程的数量与第一数值的差值作为目标任务对应的目标线程数。
[0114] 作为另一个示例,目标线程数确定单元200包括:
[0115] 数值比较子单元,用于比较未处理的消息的数量、第一阈值和第二阈值,其中,第一阈值和第二阈值为正数,且第一阈值大于或等于第二阈值;
[0116] 第三处理子单元,用于在未处理的消息的数量大于第一阈值的情况下,计算当前处理目标任务的线程的数量与第一数值的和值,如果和值小于或等于预先设置的最大进程数,则将和值作为目标任务对应的目标线程数,如果和值大于最大进程数,则将最大进程数作为目标任务对应的目标线程数;
[0117] 第四处理子单元,用于在未处理的消息的数量小于第二阈值的情况下,计算当前处理任务的线程的数量与第一数值的差值,如果差值大于或等于预先设置的最小进程数,则将差值作为目标任务对应的目标线程数,如果差值小于最小进程数,则将最小进程数作为目标任务对应的目标线程数。
[0118] 在分布式调度系统中,一个任务通常是有多个执行节点处理。当需要增加新的线程处理目标任务时,线程处理单元300可以选择任意一个或多个执行节点开启新的用于处理该目标任务的线程,当需要减少处理该目标任务的线程时,线程处理单元300可以选择任意一个或多个执行节点关闭用于处理该目标任务的线程。
[0119] 作为一种优选实施方式,线程处理单元300基于平均分配的原则调整处理目标任务的线程,以均衡分布式调度系统中各个执行节点的负载。
[0120] 作为一个示例,线程处理单元300包括第一线程调整子单元和第二线程调整子单元。其中:
[0121] 第一线程调整子单元,用于在目标任务对应的目标线程数大于当前处理目标任务的线程的数量的情况下,执行一次或多次第一操作,直至处理目标任务的线程的数量达到目标线程数;其中,第一操作包括:在处理目标任务的多个执行节点中查找第一目标节点,第一目标节点为多个执行节点中开启处理该目标任务的线程数量最少的一个执行节点;控制第一目标节点开启一个新的线程处理目标任务。
[0122] 第二线程调整子单元,用于在目标任务对应的目标线程数小于当前处理目标任务的线程的数量的情况下,执行一次或多次第二操作,直至处理目标任务的线程的数量达到目标线程数;其中,第二操作包括:在处理目标任务的多个执行节点中查找第二目标节点,第二目标节点为多个执行节点中开启处理该目标任务的线程数量最多的一个执行节点;控制第二目标节点关闭一个处理目标任务的线程。
[0123] 本申请上述公开的控制方法可以由分布式调度系统的控制系统实施。参见图7,图7为本申请公开的一种分布式调度系统的控制系统的结构示意图。该控制系统包括配置中心10、服务器20和管理器30。
[0124] 配置中心10用于:确定需要监控的目标任务,确定该目标任务对应的队列节点,确定该队列节点的队列Key,确定第一阈值和第二阈值。其中,该队列节点用于存储该目标任务未处理的消息,基于队列Key能够读取目标任务未处理的消息的数量。
[0125] 服务器20用于:按照预设时间间隔(如3秒)读取目标任务未处理的消息的数量,将目标任务未处理的消息的数量与第一阈值和第二阈值进行比较;如果目标任务未处理的消息的数量大于第一阈值,则在当前处理目标任务的线程的数量的基础上加第一数值(如1),如果该和值小于或等于预先设置的最大进程数,则将该和值作为目标线程数,如果该和值大于预先设置的最大进程数,则将该最大进程数作为目标线程数,向管理器30发送请求,该请求携带有目标线程数;如果目标任务未处理的消息的数量小于第二阈值,则在当前处理目标任务的线程的数量的基础上减第一数值(如1),如果差值大于或等于预先设置的最小进程数,则将该差值作为目标线程数,如果该差值小于预先设置的最小进程数,则将最小进程数作为目标线程数,向管理器30发送请求,该请求携带有目标线程数。
[0126] 管理器30用于:接收服务器20发送的请求,如果目标线程数大于当前处理目标任务的线程的数量,则执行一次或多次第一操作,直至处理目标任务的线程的数量与目标线程数相同;如果目标线程数小于当前处理目标任务的线程的数量,则执行一次或多次第二操作,直至处理目标任务的线程的数量与目标线程数相同。
[0127] 关于第一操作和第二操作,可以参见前文中的说明。
[0128] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0129] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0130] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈