一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

任务处理方法、装置、设备及存储介质与流程

2021-11-05 20:56:00 来源:中国专利 TAG:


1.本技术实施例涉及程序设计和任务处理技术领域,特别涉及一种任务处理方法、装置、设备及存储介质。


背景技术:

2.分布式系统技术是当今互联网企业,应对高并发场景下经常采用的任务处理技术。
3.在相关技术中,采用的是抢占式任务处理方案,在到达开始抢占时间后,各个节点立刻抢占任务并进行处理。但是,在上述相关技术中,由于各个节点的时钟存在细微偏差,某些节点中时钟的时间会快于其他节点中时钟的时间,这样,即便预先设置好抢占任务的开始抢占时间,实际上也无法实现各个节点同时开始抢占任务,从而不可避免地导致某些节点抢占的任务过多,其它节点抢占的任务较少或抢不到,进而造成分布式系统负载失衡。


技术实现要素:

4.本技术实施例提供了一种任务处理方法、装置、设备及存储介质,能够提升分布式系统的负载均衡性。所述技术方案如下:
5.根据本技术实施例的一个方面,提供了一种任务处理方法,所述方法包括:
6.获取多个待处理任务以及多个可用处理节点,所述多个待处理任务为需要在目标时段内处理完成的任务;
7.基于hash算法,将所述多个待处理任务划分为多个待处理任务集合,所述待处理任务集合的数量,与所述可用处理节点的数量相等;
8.将所述多个待处理任务集合分配给对应的可用处理节点,在所述目标时段内,一个待处理任务集合对应一个可用处理节点;
9.采用所述多个可用处理节点分别处理对应待处理任务集合中的待处理任务。
10.根据本技术实施例的一个方面,提供了一种任务处理装置,所述装置包括:
11.第一获取模块,用于获取多个待处理任务以及多个可用处理节点,所述多个待处理任务为需要在目标时段内处理完成的任务;
12.任务划分模块,用于基于hash算法,将所述多个待处理任务划分为多个待处理任务集合,所述待处理任务集合的数量,与所述可用处理节点的数量相等;
13.任务分配模块,用于将所述多个待处理任务集合分配给对应的可用处理节点,在所述目标时段内,一个待处理任务集合对应一个可用处理节点;
14.任务处理模块,用于采用所述多个可用处理节点分别处理对应待处理任务集合中的待处理任务。
15.根据本技术实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述任务处理方法。
16.根据本技术实施例的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现上述任务处理方法。
17.根据本技术实施例的一个方面,提供了一种计算机程序产品,所述计算机程序产品由处理器加载并执行以实现上述任务处理方法。
18.本技术实施例提供的技术方案可以包括如下有益效果:
19.通过获取多个待处理任务,和多个可用处理节点,基于hash算法将多个待处理任务分配给多个可用处理节点,由于hash算法的随机性较强,多个可用处理节点所需处理的任务的数量较为平均,从而提升了分布式系统任务处理的均衡性。
20.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
21.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1是本技术一个实施例提供的任务处理方法的流程图;
23.图2是本技术另一个实施例提供的任务处理方法的流程图;
24.图3是本技术另一个实施例提供的任务处理方法的流程图;
25.图4是本技术一个实施例提供的任务处理装置的框图;
26.图5是本技术另一个实施例提供的任务处理装置的框图;
27.图6是本技术一个实施例提供的终端的框图。
具体实施方式
28.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的方法的例子。
29.本技术实施例提供的方法,各步骤的执行主体可以是计算机设备,该计算机设备是指具备数据计算、处理和存储能力的电子设备。该计算机设备可以是诸如pc(personal computer,个人计算机)、平板电脑、智能手机、可穿戴设备、智能机器人等终端;也可以是服务器。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。
30.下面,通过几个实施例对本技术技术方案进行介绍说明。
31.请参考图1,其示出了本技术一个实施例提供的任务处理方法的流程图。在本实施例中,主要以该方法应用于上文介绍的计算机设备中来举例说明。该方法可以包括如下几个步骤:
32.步骤101,获取多个待处理任务以及多个可用处理节点。
33.在一些实施例中,多个待处理任务为需要在目标时段内处理完成的任务。也即,多个待处理任务只能在目标时段内开始进行处理,且需要在目标时段内处理完成。其中,目标时段具体的起止时间可以由相关技术人员根据实际情况进行设定,本技术实施例对此不作限定。可选地,目标时段为目标周期,多个待处理任务为周期性任务(如cron(command run on,计划任务)任务,即一种周期性的运行代码任务),需要在目标周期内处理完成的任务。可选地,目标周期的时长为30秒、5分钟、15分钟、30分钟、1小时等等,目标周期的的具体时长可以由相关技术人员根据实际情况进行设定,本技术实施例对此不作具体限定。当该周期性任务的周期,为时间上连续的周期时,每个周期内都有固定的待处理任务,各个周期的待处理任务(包括目标周期内的多个待处理任务)必须在对应的周期内进行处理并在对应的周期内处理完成,无法提前或延后处理,这对任务处理的时效性要求较高。可选地,多个待处理任务预先存储在存储单元(如数据库)中,可以从存储单元中获取多个待处理任务。
34.在一些实施例中,计算机设备控制有分布式系统(如zookeeper,一个分布式的、开放源码的分布式应用程序协调服务),该分布式系统中包括多个处理节点。可选地,多个处理节点之间相互独立。其中,可用处理节点为能够在目标时段内对多个待处理任务进行处理的处理节点,而不能对多个待处理任务进行处理的处理节点为不可用节点。其中,处理节点可以是计算机设备(如pc、智能手机、平板电脑、可穿戴设备等终端,或者是服务器),也可以是处理器。可选地,多个可用处理节点的配置参数相同,因而各个可用处理节点的任务处理能力也相同,从而在分配待处理任务时,无需考虑可用处理节点的任务处理能力的不同,节省了整体的任务处理时间,进而提升了任务处理效率。
35.需要说明的是,不可用节点可以是损坏的节点,也可以是未被损坏的节点;当不可用节点为未被损坏的处理节点时,不可用节点可以是用于处理多个待处理任务之外的其他任务的处理节点,本技术实施例对此不作具体限定。
36.步骤102,基于哈希hash算法,将多个待处理任务划分为多个待处理任务集合。
37.可选地,待处理任务集合的数量,与可用处理节点的数量相等。
38.在一些实施例中,将多个待处理任务分别对应的标识作为输入,基于hash算法得到对应的输出,并基于该输出将多个待处理任务划分到多个待处理任务集合中。可选地,一个待处理任务仅对应于一个待处理任务集合,从而避免了待处理任务重复存储或重复处理的问题。其中,hash算法(也可称为散列算法)是把任意长度的输入,变换成固定长度的输出的算法。在本实施例中,该固定长度的输出为整数。
39.步骤103,将多个待处理任务集合分配给对应的可用处理节点。
40.可选地,在目标时段内,一个待处理任务集合对应一个可用处理节点。在一些实施例中,多个可用处理节点的配置参数相同,可以将多个待处理任务集合随机分配给各个可用处理节点。在另一些实施例中,每个待处理任务集合对应有集合标识,一个集合标识对应于一个可用处理节点,将多个待处理任务集合,分配给与其集合标识对应的可用处理节点。
41.在本实施例中,由于一个待处理任务对应于一个待处理任务集合,因而,一个待处理任务对应于一个可用处理节点。避免了待处理任务被不同的可用处理节点重复处理,从而避免了处理资源的浪费。
42.步骤104,采用多个可用处理节点分别处理对应待处理任务集合中的待处理任务。
43.在一些实施例中,对于一个可用处理节点,在目标时段内,处理完与其对应的待处
理任务集合中的所有待处理任务。可选地,针对待处理任务集合中的待处理任务生成一个标识字符串(如task_id_202006301530),并将其以redis setnx(redis命令参考)指令写入redis(一种数据库),并对待处理任务的key(密码)设置超时时间,redis命令执行成功才执行待处理任务。超时时间可以为5分钟、15分钟、30分钟、1小时等等,超时时间的具体时长由相关技术人员根据实际情况进行设定,本技术实施例对此不作具体限定。
44.综上所述,本技术实施例提供的技术方案中,通过获取多个待处理任务,和多个可用处理节点,基于hash算法将多个待处理任务分配给多个可用处理节点,由于hash算法的随机性较强,多个可用处理节点所需处理的任务的数量较为平均,从而提升了分布式系统任务处理的均衡性。
45.请参考图2,其示出了本技术另一个实施例提供的任务处理方法的流程图。在本实施例中,主要以该方法应用于上文介绍的计算机设备中来举例说明。该方法可以包括如下几个步骤(201~209):
46.步骤201,获取多个待处理任务以及多个可用处理节点。
47.本步骤201与上述图1实施例中步骤101的内容相同或相似,此处不再赘述。
48.步骤202,对多个可用处理节点进行编号。
49.可选地,多个可用处理节点的编号从0开始递增,编号相邻的两个可用处理节点的编号的差值为1。在一些实施例中,多个可用处理节点分别对应的编号为:0、1、2、3
……
编号为大于或等于0的整数。在另一些实施例中,多个可用处理节点分别对应的编号为:a、b、c、d、e、f
……
需要说明的是,多个可用处理节点还可以按照其他方式进行编号,本技术实施例对此不作具体限定。
50.步骤203,对于多个待处理任务中的第i个待处理任务,基于hash算法,获取第i个待处理任务对应的整数,i为正整数。
51.在一些实施例中,本步骤203还包括如下子步骤:
52.1、获取第i个待处理任务对应的标识;
53.2、采用hash算法对第i个待处理任务对应的标识进行处理,得到第i个待处理任务对应的整数。
54.在一些实施例中,对于第i个待处理任务,将第i个待处理任务对应的标识输入hash算法,得到hash算法输出的第i个待处理任务对应的散列,散列为随机的正整数。
55.步骤204,基于可用处理节点的数量,对第i个待处理任务对应的整数进行取余计算,得到第i个待处理任务对应的余数。
56.在一些实施例中,将第i个待处理任务对应的整数除以可用处理节点的数量,得到第i个待处理任务对应的余数。显然,第i个待处理任务对应的余数为大于或等于0的正整数,且第i个待处理任务对应的余数小于可用处理节点的数量。
57.步骤205,根据第i个待处理任务对应的余数,将第i个待处理任务划分到对应的待处理任务集合中。
58.可选地,根据第i个待处理任务对应的余数,确定第i个待处理任务对应的待处理任务集合,也即,确定第i个待处理任务对应的可用处理节点。
59.在一些实施例中,响应于第i个待处理任务对应的余数与第j个可用处理节点的编号匹配,将第i个待处理任务划分到第j个可用处理节点对应的待处理任务集合中,j为正整
数。
60.在一个示例中,待处理任务的标识为uuid(universally unique identifier,通用唯一识别码),3个待处理任务分别对应的uuid如下表1所示:
61.表1
62.待处理任务uuid待处理任务1eeb7a6d6

ed09

5891

b4a1

c03ad3220302待处理任务27cd8583b

1a02

5ae6

bd5b

b762d0b86f4a待处理任务31877d37e

4c4c

5589

9f4c

d2c44f3e508b
63.可选地,可用节点的数量为3。将3个待处理任务分别对应的uuid输入hash算法,输出3个待处理任务分别对应的整数,将3个待处理任务分别对应的整数对3取余,得到3个待处理任务分别对应的余数。参见下表2,若待处理任务对应的余数为2,则对应的可用处理节点是编号为2的可用处理节点;若待处理任务对应的余数为1,则对应的可用处理节点是编号为1的可用处理节点;若待处理任务对应的余数为0,则对应的可用处理节点是编号为0的可用处理节点。
64.表2
65.可用处理节点(可用节点数量,编号) 可用处理节点1(3,2)编号为2的可用处理节点可用处理节点2(3,1)编号为1的可用处理节点可用处理节点3(3,0)编号为0的可用处理节点
66.步骤206,将多个待处理任务集合分配给对应的可用处理节点。
67.本步骤206与上述图1实施例中步骤103的内容相同或相似,此处不再赘述。
68.步骤207,采用多个可用处理节点分别处理对应待处理任务集合中的待处理任务。
69.本步骤207与上述图1实施例中步骤104的内容相同或相似,此处不再赘述。
70.步骤208,在目标时段内的目标时刻,检测是否仍存在待处理任务。
71.在一些实施例中,目标时刻为目标时段内预设的时刻,也即,在目标时段内的某确定时刻检测是否仍存在待处理任务。在另一些实施例中,当所有可用处理节点都处于空闲状态(空闲状态可以指不进行任务处理的状态)时,检测是否仍存在待处理任务。
72.步骤209,若仍存在待处理任务,采用抢占式处理方式将待处理任务处理完成。
73.在一些实施例中,若存在未被分配的待处理任务,或存在因可用处理节点发生异常而未处理完的待处理任务时,采用抢占式处理方式将待处理任务处理完成。可选地,抢占式处理方式是指:若发现一个遗漏的待处理任务,则处于空闲状态的可用处理节点争抢该遗漏的待处理任务并进行处理。
74.在一些可能的实现方式中,若某个或某一些可用处理节点发生异常(即down掉),或新增可用处理节点,则可用处理节点的数量会发生变化。例如,若一个可用处理节点发生异常,无法继续处理待处理任务,则可用节点的数量相应减一。相应地,各个可用处理节点的编号,也会随着可用节点的数量的变化而变化。
75.综上所述,本技术实施例提供的技术方案中,基于hash算法,通过取余的方式分配待处理任务的方式,对任意数量的可用节点数量均可实现方便、快捷、准确地任务分配,避免了因可用节点的数量发生变化而导致的任务分配不均的问题,进而提升了分布式系统的
负载均衡性。
76.下面,结合图3对本技术另一个实施例提供的任务处理方法进行总结介绍。如图3所示,该方法包括如下几个步骤(301~308):
77.步骤301,生成多个待处理任务分别对应的标识,并将多个处理节点注册到分布式系统中;
78.步骤302,触发分布式系统开始处理多个待处理任务;
79.步骤303,从分布式系统的多个处理节点中,获取多个可用处理节点;
80.步骤304,确定多个可用处理节点分别对应的编号;
81.步骤305,从数据库中获取多个待处理任务的列表;
82.步骤306,对于第i个待处理任务,通过基于hash算法进行取余处理,判断第i个待处理任务对应的余数与第j个可用处理节点是否匹配,若是,则执行步骤307;若否,对下一个待处理任务继续执行步骤306;
83.步骤307,将第i个待处理任务分配给第j个可用处理节点,并处理第i个待处理任务,并继续执行步骤306;
84.步骤308,处理遗漏的待处理任务。
85.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
86.请参考图4,其示出了本技术一个实施例提供的任务处理装置的框图。该装置具有实现上述任务处理方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的计算机设备,也可以设置在计算机设备上。该装置400可以包括:第一获取模块410、任务划分模块420、任务分配模块430和任务处理模块440。
87.所述第一获取模块410,用于获取多个待处理任务以及多个可用处理节点,所述多个待处理任务为需要在目标时段内处理完成的任务。
88.所述任务划分模块420,用于基于hash算法,将所述多个待处理任务划分为多个待处理任务集合,所述待处理任务集合的数量,与所述可用处理节点的数量相等。
89.所述任务分配模块430,用于将所述多个待处理任务集合分配给对应的可用处理节点,在所述目标时段内,一个待处理任务集合对应一个可用处理节点。
90.所述任务处理模块440,用于采用所述多个可用处理节点分别处理对应待处理任务集合中的待处理任务。
91.综上所述,本技术实施例提供的技术方案中,通过获取多个待处理任务,和多个可用处理节点,基于hash算法将多个待处理任务分配给多个可用处理节点,由于hash算法的随机性较强,多个可用处理节点所需处理的任务的数量较为平均,从而提升了分布式系统任务处理的均衡性。
92.在示例性实施例中,所述目标时段为目标周期,所述多个待处理任务为周期性任务中,需要在所述目标周期内处理完成的任务。
93.在示例性实施例中,如图5所示,所述任务划分模块420包括:整数获取子模块421、取余计算子模块422和任务划分子模块423。
94.所述整数获取子模块421,用于对于所述多个待处理任务中的第i个待处理任务,基于所述hash算法,获取所述第i个待处理任务对应的整数,所述i为正整数。
95.所述取余计算子模块422,用于基于所述可用处理节点的数量,对所述第i个待处理任务对应的整数进行取余计算,得到所述第i个待处理任务对应的余数。
96.所述任务划分子模块423,用于根据所述第i个待处理任务对应的余数,将所述第i个待处理任务划分到对应的待处理任务集合中。
97.在示例性实施例中,如图5所示,所述如图5所示,用于:
98.获取所述第i个待处理任务对应的标识;
99.采用所述hash算法对所述第i个待处理任务对应的标识进行处理,得到所述第i个待处理任务对应的整数。
100.在示例性实施例中,如图5所示,所述装置400包括:节点编号模块450。
101.所述节点编号模块450,用于对所述多个可用处理节点进行编号,其中,所述多个可用处理节点的编号从0开始递增,编号相邻的两个可用处理节点的编号的差值为1。
102.在示例性实施例中,如图5所示,所述任务划分子模块423,用于响应于所述第i个待处理任务对应的余数与第j个可用处理节点的编号匹配,将所述第i个待处理任务划分到所述第j个可用处理节点对应的待处理任务集合中,所述j为正整数。
103.在示例性实施例中,所述多个可用处理节点的配置参数相同。
104.在示例性实施例中,如图5所示,所述装置400包括:任务检测模块460。
105.所述任务检测模块460,用于在所述目标时段内的目标时刻,检测是否仍存在所述待处理任务。
106.所述任务处理模块440,还用于若仍存在所述待处理任务,采用抢占式处理方式将所述待处理任务处理完成。
107.需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
108.请参考图6,其示出了本技术一个实施例提供的计算机设备的结构框图。该计算机设备用于实施上述实施例中提供的任务处理方法。具体来讲:
109.所述计算机设备600包括cpu(central processing unit,中央处理单元)601、包括ram(random access memory,随机存取存储器)602和rom(read

only memory,只读存储器)603的系统存储器604,以及连接系统存储器604和中央处理单元601的系统总线605。所述计算机设备600还包括帮助计算机内的各个器件之间传输信息的基本i/o(input/output,输入/输出)系统606,和用于存储操作系统613、应用程序614和其他程序模块615的大容量存储设备607。
110.所述基本输入/输出系统606包括有用于显示信息的显示器608和用于用户输入信息的诸如鼠标、键盘之类的输入设备609。其中所述显示器608和输入设备609都通过连接到系统总线605的输入输出控制器610连接到中央处理单元601。所述基本输入/输出系统606还可以包括输入输出控制器610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器610还提供输出到显示屏、打印机或其他类型的输出设备。
111.所述大容量存储设备607通过连接到系统总线605的大容量存储控制器(未示出)连接到中央处理单元601。所述大容量存储设备607及其相关联的计算机可读介质为计算机设备600提供非易失性存储。也就是说,所述大容量存储设备607可以包括诸如硬盘或者cd

rom(compact disc read

only memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
112.不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom(erasable programmable read only memory,可擦除可编程只读存储器)、eeprom(electrically erasable programmable read only memory,可擦除可编程只读存储器)、闪存或其他固态存储其技术,cd

rom、dvd(digital video disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器604和大容量存储设备607可以统称为存储器。
113.根据本技术的各种实施例,所述计算机设备600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备600可以通过连接在所述系统总线605上的网络接口单元611连接到网络612,或者说,也可以使用网络接口单元611来连接到其他类型的网络或远程计算机系统(未示出)。
114.在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,所述计算机程序在被处理器执行时以实现上述任务处理方法。
115.在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被处理器执行时,其用于实现上述任务处理方法。
116.应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
117.以上所述仅为本技术的示例性实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献