分布式任务分配处理方法与流程

文档序号:28868478发布日期:2022-02-12 10:35阅读:405来源:国知局
分布式任务分配处理方法与流程

1.本发明涉及计算机技术领域,具体涉及了一种分布式任务分配处理方法。


背景技术:

2.在高并发、请求量大的系统设计中,为了提升性能,会有涉及很多异步任务,且在复杂系统中任务的数量可能比实时业务的数量还要多,因此任务处理方案显得尤为重要,否则会导致大量的任务囤积,特别时在实时业务处理效率高于任务处理效率的时候,会导致任务永远也无法处理完。目前常见的任务处理方案有两种,一种是采用单机排队定时按批次处理,二是选取一个主节点将任务切片,然后分发给每个节点进行处理。不过第一种方案只适合任务量较少的系统,第二种实现复杂度高,当任务产生达到一定速度后也会导致任务囤积。


技术实现要素:

3.本发明所解决的技术问题在于提供一种分布式任务分配处理方法,实现复杂度低,不会导致任务阻塞。
4.本发明提供的基础方案:分布式任务分配处理方法,包括以下步骤:
5.s100:获取待处理的异步任务生成异步任务队列,并给每个异步任务设置唯一标识;
6.s300:节点中的空闲线程每隔一段时间从异步任务队列中,由队列尾部向队列首部方向,获取预设的每次处理个数的待处理的异步任务,逐个进行处理;
7.s400:将处理完成的异步任务,通过唯一标识从异步任务队列中清除。
8.本发明的原理及优点在于:本发明通过将需要处理的异步任务统一存放,生成队列。节点中的空闲线程每次从队列尾部向队列首部取固定个数的异步任务进行处理,处理完成之后再将异步任务从队列中清除。相比于现有技术,由线程采用队尾窃取机制,每次获取固定个异步任务,无需分片中心,也能够对任务进行分片,分片容错高,实现复杂度低,并且也不会因为部分任务一直执行失败而阻塞其他任务执行。
9.进一步,所述步骤s100和s300之间还包括以下步骤:
10.s200:设置获取时间;
11.所述步骤s300还包括以下步骤:
12.s310:每经过一次获取时间,线程从异步任务队列中获取每次处理个数的待处理的异步任务。
13.通过设定获取时间,使节点中的线程定时从异步任务队列中获取异步任务并处理。
14.进一步,包括单机方案和集群方案,所述集群方案还包括以下步骤:
15.s210:通过外部定时任务系统,轮询调用集群中每个节点执行步骤s300。
16.通过外部的定时任务系统,使集群中的每个节点依次从异步任务队列中获取异步
任务进行处理,提高效率,并且即使其中某个节点崩溃,仍有其他节点进行处理。
17.进一步,所述步骤s300还包括以下任务:
18.s320:线程获取异步任务后,通过唯一标识将获取到的异步任务标记为处理中后进行处理。
19.避免其他线程重复获取。
20.进一步,所述步骤s310具体包括以下步骤:
21.s311:经过一次获取时间后,获取异步任务队列中的待处理的异步任务数量;
22.s312:判断待处理的异步任务数量是否大于等于每次处理个数,若否则执行步骤s313,若是则执行步骤s314;
23.s313:获取异步任务队列中所有待处理的异步任务;
24.s314:从异步任务队列中获取每次处理个数的待处理的异步任务。
25.每次获取异步任务前,判断待处理的异步任务数量是否大于每次处理个数,若小于则将异步任务队列中的,所有待处理的异步任务全部获取并处理,而非等待下一次再进行获取,防止任务堆积,若大于等于便直接获取每次处理个数的待处理异步任务。
26.进一步,所述步骤s300还包括以下步骤:
27.s330:设置处理时间;
28.s340:线程在处理时间内处理所获取到的异步任务。
29.规定线程处理异步任务的时间。
30.进一步,还包括以下步骤:
31.s510:设置更新时间;
32.s520:经过一次更新时间后,获取在本次更新时间内,异步任务队列中的异步任务的新增速度;
33.s530:根据异步任务的新增速度和处理时间,对每次处理个数进行更新,使每次处理个数和处理时间的商大于等于异步任务的新增速度。
34.通过设置更新时间,每经过一段时间便检查异步任务的新增速度,从而对每次获取任务个数进行更新,实现了自适应的变速机制。在异步任务的新增速度较低时,减少系统资源浪费,在异步任务的新增速度较高时,避免任务囤积。
35.进一步,所述s305具体包括以下步骤:
36.根据任务处理时效性的要求,设置处理时间。
37.由于每次获取任务个数和处理时间的商大于等于异步任务的新增速度,因此,当确定异步任务的新增速度后,若处理时间的值越小,那么每次获取任务个数也越少,从而产生的分片数就越多,并行度就越高,任务处理效率也就越高。因此可以根据任务处理的时效性要求,设置处理时间,改变任务处理效率。
38.进一步,所述步骤s100还包括以下步骤:
39.s101:将异步任务按照创建时间的顺序排列。
附图说明
40.图1为本发明分布式任务分配处理方法实施例的流程示意图;
41.图2为本发明分布式任务分配处理方法实施例中s300的流程示意图;
42.图3为本发明分布式任务分配处理方法实施例集群方案的逻辑示意图。
具体实施方式
43.下面通过具体实施方式进一步详细说明:
44.实施例基本如附图1所示:
45.分布式任务分配处理方法,包括以下步骤:
46.s100:获取待处理的异步任务,生成异步任务队列,并给每个异步任务设置唯一标识;
47.s110:将异步任务按照创建时间的顺序排列;
48.s200:设置获取时间;
49.s300:节点中的空闲线程每经过一次获取时间,从异步任务队列中,由队列尾部向队列首部方向,获取预设的每次处理个数的待处理的异步任务,逐个处理;
50.s400:将处理完成的异步任务,通过唯一标识从异步任务队列中清除。
51.并且,本发明的分布式任务分配处理方法还包括单机方案和集群方案,在集群方案时,还包括步骤s210:
52.s210:通过外部定时任务系统,轮询调用集群中每个节点执行步骤s300。
53.s300具体如图2所示,包括以下步骤:
54.s310:每经过一次获取时间,线程从异步任务队列中获取每次处理个数的待处理的异步任务。所述步骤s310具体包括以下步骤:
55.s311:经过一次获取时间后,获取异步任务队列中的待处理的异步任务数量;
56.s312:判断待处理的异步任务数量是否大于等于每次处理个数,若否则执行步骤s313,若是则执行步骤s314;
57.s313:获取异步任务队列中所有待处理的异步任务;
58.s314:从异步任务队列中获取每次处理个数的待处理的异步任务;
59.s320:线程获取异步任务后,通过唯一识别表示将获取到的异步任务标记为处理中后进行处理;
60.s320:设置处理时间;
61.s340:线程在处理时间内处理获取到的异步任务。
62.下面结合图3详细讲解本发明分布式任务分配处理方法的具体实施过程:
63.图3为本发明分布式任务分配处理方法集群方案的一个简易版的理想处理流程。假设获取时间为1秒,每次获取个数为3个,每秒的新增的任务个数为3个,处理时间为3秒。
64.在第一秒时,节点1中的线程1从队列尾部开始获取到任务3、任务2、任务1,并将任务3、任务2、任务1标记为处理中后开始进行处理。
65.第二秒时,节点2的线程1从队列尾部开始获取到任务6、任务5、任务4,并将任务6、任务5、任务4标记为处理中后开始进行处理。节点1的线程1此时处理完任务3,将任务3从异步任务队列中移除,继续处理任务2、任务1。
66.第三秒时,节点1的线程2从队列尾部开始获取到任务9、任务8、任务7,并将任务9、任务8、任务7标记为处理中后开始处理。节点2的线程1此时处理完任务6,将任务6从异步任务队列中移除,并继续处理任务5、任务4。节点1的线程1此时处理完任务2,将任务2从异步
任务队列中移除,并继续处理任务1。
67.本发明通过将需要处理的异步任务统一存放,由节点中的空闲线程从队列尾部向首部取固定个异步任务进行处理,并在经过一个获取时间后,由下一个线程继续进行获取。无需分片中心进行分片,分片容错高,实现复杂度低,也不会因为部分任务一直执行失败而阻塞其他任务的执行。并且在集群方案下,通过外部定时任务系统,轮询调用每个节点的线程进行处理,即使其中某个节点崩溃,也还有其他节点继续执行。
68.还包括以下步骤:
69.s510:设置更新时间,所述更新时间为获取时间的倍数;
70.s520:经过一次更新时间后,获取在本次更新时间内,异步任务队列中的异步任务的新增速度;
71.s530:根据异步任务的新增速度和处理时间,对每次处理个数进行更新,使每次处理个数和处理时间的商大于等于异步任务的新增速度。
72.由于异步任务队列中的异步任务新增速度可能会发生变化,因此每过一段时间,便检查一次异步任务队列中的异步任务新增速度,在本实施例中,更新时间为获取时间的五倍。设异步任务的新增速度为s个/秒,每次处理个数为n,处理时间为t。为了保证任务不囤积,就需要保证每个任务处理的速度大于任务新增速度,即n
÷
t≥s。处理时间为给定,在检查出异步任务的新增速度s后,对每次处理个数n进行调整。从而实现了自适应变速机制,在异步任务的新增速度较低时,减少系统资源浪费,在异步任务的新增速度较高时,提升任务处理效率。
73.并且通过n
÷
t≥s可知,若在异步任务的更新速度s已知时,处理时间t越小,每次获取个数n也就越小,产生的分片数越多,并行度越高,任务处理效率就越高。因此根据任务处理时效性要求设定t的值,改变任务处理效率。
74.以上的仅是本发明的实施例,方案中公知的具体结构及特性等常识在此未作过多描述,所属领域普通技术人员知晓申请日或者优先权日之前发明所属技术领域所有的普通技术知识,能够获知该领域中所有的现有技术,并且具有应用该日期之前常规实验手段的能力,所属领域普通技术人员可以在本技术给出的启示下,结合自身能力完善并实施本方案,一些典型的公知结构或者公知方法不应当成为所属领域普通技术人员实施本技术的障碍。应当指出,对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些也应该视为本发明的保护范围,这些都不会影响本发明实施的效果和专利的实用性。本技术要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以用于解释权利要求的内容。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1