CN107249029A - 主动领取任务的方法、工作节点、系统及存储介质 - Google Patents
主动领取任务的方法、工作节点、系统及存储介质 Download PDFInfo
- Publication number
- CN107249029A CN107249029A CN201710439793.0A CN201710439793A CN107249029A CN 107249029 A CN107249029 A CN 107249029A CN 201710439793 A CN201710439793 A CN 201710439793A CN 107249029 A CN107249029 A CN 107249029A
- Authority
- CN
- China
- Prior art keywords
- task
- work
- state
- current
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
Abstract
本发明提供一种主动领取任务的方法、工作节点、系统、非易失性存储介质,该系统包括数据中心以及多个工作节点,多个工作节点中的每个工作节点周期地从数据中心领取属于自已的任务,同时交出不属于自己的任务。每个工作节点周期地将本地任务列表传送给数据中心,用于更新数据中心的配置信息。通过本发明,可以确保由多个工作节点组成的集群中的每个工作节点领取到属于自己的任务。同时,整个集群架构的异构程度性被减少,同时有利于在集群中动态地增删工作节点。
Description
技术领域
本发明涉及工作节点领取任务,尤其涉及主动领取任务的方法、工作节点、系统及存储介质。
背景技术
为了保证服务的可扩展性和高可用性,将服务从单一服务实体扩展成集群协同工作的服务实体(工作节点)是非常有意义的。通过负载均衡算法,主工作节点选举,广播系统等方法管理集群中各个工作节点的地址信息(IP地址),可以实现某个任务能够被分发到集群的某台工作节点。为了能够协同工作,集群中的各个工作节点需要定期发送一个心跳信息。在没有客户端的集群中,通常需要一个主工作节点负责任务的分配。主工作节点将所有任务分别分配给各个工作节点,也就是说,各个工作节点根据主工作节点的分配来被动地领取任务,然后对领取的任务进行处理。
在这种情况下,主工作节点中除了具有与其他工作节点相同的处理逻辑之外,不可避免地增加有用于分配的计算逻辑,因此,主工作节点的工作方式与其他各个工作节点的工作方式不同。这就导致整个集群架构的差异性,从而增加了整个集群架构的异构程度性。另一方面,在某个任务错误地同时被两个工作节点领取的情况下,还会导致任务领取冲突的问题。
发明内容
本发明提供了一种主动领取任务的方法,多个工作节点中的每个工作节点周期地进行以下步骤,以从数据中心主动领取任务:
S0)从所述数据中心中获取多个任务以及多个当前工作节点信息,并根据所述多个任务以及所述多个当前工作节点信息,进行一致性哈希计算,得到多个实际工作节点信息;
S1)根据所述多个当前工作节点信息,判断所述多个任务中的当前任务是否被领取,如果否,则进入步骤S2),如果是,则进入步骤S3);
S2)根据所述多个实际工作节点信息,将所述当前任务添加到所述数据中心中的所述多个当前工作节点信息中,并进入步骤S10);
S3)根据所述多个当前工作节点信息,判断所述当前任务是否被本地领取,如果是,则进入S4,否则进入S10;
S4)判断所述当前任务在多个当前工作节点信息中对应的当前工作节点是否与所述当前任务在所述多个实际工作节点信息中对应的实际工作节点相同,如果是,则进入S6,否则进入S5;
S5)从本地任务列表中判断所述当前任务的处理状态,如果是第一状态或第二状态,则进入步骤S9,如果是第三状态或第四状态,则进入S8;
S6)判断所述当前任务是否在所述本地任务列表中,如果是,则进入S10,否则进入S7;
S7)将所述当前任务添加到所述本地任务列表中,并进入S10;
S8)从所述本地任务列表中删除所述当前任务,并根据所述多个实际工作节点信息,将所述当前任务更新到所述数据中心中的多个当前工作节点信息中,并且进入S10;
S9)将所述当前任务的所述处理状态设置为所述第二状态,并且进入S10;
S10)判断所述当前任务是否是所述多个任务中的最后一个任务,如果是,则返回S0,否则进入S11;
S11)将所述多个任务中的下一个任务确定作为所述当前任务,并返回S1。
所述第一状态是指所述当前任务正在被本地处理,所述第二状态是指所述当前任务正在被本地处理、且不能被本地再次处理,所述第三状态是指所述当前任务已被本地处理结束,所述第四状态是指所述当前任务已被本地处理结束、且不能被本地再次处理。
所述每个工作节点周期地将所述本地任务列表传送给所述数据中心,用于更新所述多个当前工作节点信息。
所述多个当前工作节点信息中的每个当前工作节点信息包括当前工作节点、当前领取任务、以及当前更新时间,
其中,所述每个工作节点将所述本地任务列表传送给所述数据中心的时间作为所述当前更新时间。
所述多个实际工作节点信息中的每个实际工作节点信息包括所述当前任务和实际工作节点,
其中,在步骤S2)中,将所述当前任务对应的所述实际工作节点作为所述当前工作节点,并将所述当前任务添加作为与所述当前工作节点对应的所述当前领取任务。
所述本地任务列表包含本地领取任务以及对应的处理状态,所述处理状态包括所述第一状态、所述第二状态、所述第三状态、所述第四状态,
其中,当时是本地领取任务处于所述第二状态、且已被本地工作节点处理结束时,将所述本地领取任务的所述处理状态设置为所述第四状态。
步骤S8)中,将所述当前任务对应的所述实际工作节点作为所述当前工作节点,并将所述当前任务更新作为与所述当前工作节点对应的所述当前领取任务。
所述数据中心周期地判断所述当前工作节点信息中的所述当前更新时间与当前实际时间的差是否大于预定时间,如果是,则删除所述当前更新时间所对应的当前工作节点信息。
本发明还提供一种主动领取任务的工作节点,所述工作节点包括:
获取和计算单元,从数据中心中获取多个任务以及多个当前工作节点信息,并根据所述多个任务以及所述多个当前工作节点信息,进行一致性哈希计算,得到多个实际工作节点信息;
第一判断单元,根据所述多个当前工作节点信息,判断所述多个任务中的当前任务是否被领取,如果否,则进入第一添加单元,如果是,则进入第二判断单元;
第一添加单元,根据所述多个实际工作节点信息,将所述当前任务添加到所述数据中心中的所述多个当前工作节点信息中,并进入第五判断单元;
第二判断单元,根据所述多个当前工作节点信息,判断所述当前任务是否被本地工作节点领取,如果是,则进入第三判断单元,否则进入第五判断单元;
第三判断单元,判断所述当前任务在多个当前工作节点信息中对应的当前工作节点是否与所述当前任务在所述多个实际工作节点信息中对应的实际工作节点相同,如果是,则进入第四判断单元,否则进入状态判断单元;
状态判断单元,从本地任务列表中判断所述当前任务的处理状态,如果是第一状态或第二状态,则进入状态设置单元,如果是第三状态或第四状态,则进入删除和更新单元;
第四判断单元,判断所述当前任务是否在所述本地任务列表中,如果是,则进入所述第五判断单元,否则进入第二添加单元;
第二添加单元,将所述当前任务添加到所述本地任务列表中,并进入所述第五判断单元;
删除和更新单元,从所述本地任务列表中删除所述当前任务,并根据所述多个实际工作节点信息,将所述当前任务更新到所述数据中心中的多个当前工作节点信息中,并且进入所述第五判断单元;
状态设置单元,将所述当前任务的所述处理状态设置为所述第二状态,并且进入所述第五判断单元;
第五判断单元,判断所述当前任务是否是所述多个任务中的最后一个任务,如果是,则返回所述获取和计算单元,否则进入当前任务确定单元;
当前任务确定单元,将所述多个任务中的下一个任务确定作为所述当前任务,并返回所述第一判断单元。
本发明提供一种主动领取任务的系统,所述系统包括:
数据中心,所述数据中心中存储多个任务以及多个当前工作节点信息,
多个如权利要求9-16中任一项所述的工作节点,每个工作节点周期地从所述数据中心领取任务。
进一步,本发明提供一种非易失性存储介质,在所述非易失性存储介质上存储有主动领取任务的程序,所述程序被计算机执行以实施主动领取任务的方法,所述程序包括:
获取和计算指令,从数据中心中获取多个任务以及多个当前工作节点信息,并根据所述多个任务以及所述多个当前工作节点信息,进行一致性哈希计算,得到多个实际工作节点信息;
第一判断指令,根据所述多个当前工作节点信息,判断所述多个任务中的当前任务是否被领取,如果否,则进入第一添加指令,如果是,则进入第二判断指令;
第一添加指令,根据所述多个实际工作节点信息,将所述当前任务添加到所述数据中心中的所述多个当前工作节点信息中;
第二判断指令,根据所述多个当前工作节点信息,判断所述当前任务是否被本地工作节点领取,如果是,则进入第三判断指令,否则进入第五判断指令;
第三判断指令,判断所述当前任务在多个当前工作节点信息中对应的当前工作节点是否与所述当前任务在所述多个实际工作节点信息中对应的实际工作节点相同,如果是,则进入第四判断指令,否则进入状态判断指令;
状态判断指令,从本地任务列表中判断所述当前任务的处理状态,如果是第一状态或第二状态,则进入状态设置指令,如果是第三状态或第四状态,则进入删除和更新指令;
第四判断指令,判断所述当前任务是否在所述本地任务列表中,如果是,则进入所述第五判断指令,否则进入第二添加指令;
第二添加指令,将所述当前任务添加到所述本地任务列表中,并进入所述第五判断指令;
删除和更新指令,从所述本地任务列表中删除所述当前任务,并根据所述多个实际工作节点信息,将所述当前任务更新到所述数据中心中的多个当前工作节点信息中,并且进入所述第五判断指令;
状态设置指令,将所述当前任务的所述处理状态设置为所述第二状态,并且进入所述第五判断指令;
第五判断指令,判断所述当前任务是否是所述多个任务中的最后一个任务,如果是,则返回所述获取和计算指令,否则进入当前任务确定指令;
当前任务确定指令,将所述多个任务中的下一个任务确定作为所述当前任务,并返回所述第一判断指令。
通过本发明,每个工作节点能够主动地领取属于自己的任务,因此不产生遗漏和冲突。另外,每个工作节点都以相同的方式来主动地领取属于自己的任务,因此,由多个工作节点组成的集群的架构的异构程度性被减少。
附图说明
图1是根据本发明实施例的主动领取任务的系统的示意图;
图2是根据本发明实施例的工作节点的结构图;
图3是根据本发明实施例的主动领取任务的方法的流程图。
具体实施方式
下面结合附图,对本发明的实施例进行详细说明。
图1是根据本发明实施例的主动领取任务的系统10的示意图。该系统10包括数据中心11,多个工作节点12a、12b、12c……(以下说明某个工作节点时,称为工作节点12)。其中,数据中心11中存储多个任务(所有任务)以及多个当前工作节点信息,每个工作节点周期地从数据中心11领取任务。数据中心11例如可以是数据库。
图2是根据本发明实施例的某个工作节点12的结构图,如图2所示,工作节点12包括获取和计算单元1200,第一判断单元1201,第一添加单元1202,第二判断单元1203,第三判断单元1204,状态判断单元1205,第四判断单元1206,第二添加单元1207,删除和更新单元1208,状态设置单元1209,第五判断单元1210,当前任务确定单元1211。
图3是根据本发明实施例的主动领取任务的方法的流程图,多个工作节点中的每个工作节点周期地进行图3中的步骤,以从数据中心11主动领取任务。本实施例以工作节点12a为例,结合图1、图2、图3,进行详细说明。
如图3所示,在步骤S0,工作节点12a中的获取和计算单元1200从数据中心11中获取多个任务以及多个当前工作节点信息,并根据多个任务以及多个当前工作节点信息,进行一致性哈希计算,得到多个实际工作节点信息。
本实施例中,多个任务例如是5个任务(T1,T2,T3,T4,T5),多个工作节点例如是3个工作节点12a、12b、12c,但是任务和工作节点的个数不限于此。
多个当前工作节点信息中的每个当前工作节点信息包括当前工作节点、当前领取任务、以及当前更新时间。本例中,例如,多个当前工作节点信息如表1所示。
表1
当前工作节点 | 当前领取任务 | 当前更新时间 |
12a | T1,T2 | t1 |
12b | T3,T4 | t2 |
12c | 无 | t3 |
如表1所示,本例中具有3个当前工作节点信息,每个当前工作节点具有对应的当前领取任务和当前更新时间。以下,3个当前工作节点信息也称为表1。
一致性哈希计算是现有技术中的一种特殊的哈希算法,该术语由David RonKarger首次提出,当时主要用于解决分布式缓存的问题。算法基于一个环状的映射表,将任务和工作节点置于环上,顺时针查找任务所属的工作节点。当工作节点移出集群时,其所属任务会被环中下一个工作节点接管,而当工作节点添加到集群中时,将会负责其下一个工作节点的部分任务。
本例中,例如根据5个任务,3个当前工作节点,进行一致性哈希计算,得到多个实际工作节点信息,多个实际工作节点信息中的每个实际工作节点信息包括当前任务和实际工作节点,本例中,例如表2所示。
表2
当前任务 | 实际工作节点 |
T1 | 12a |
T2 | 12b |
T3 | 12b |
T4 | 12b |
T5 | 12c |
如表2所示,本例中具有5个实际工作节点信息,每个实际工作节点具有对应的当前任务。以下,5个实际工作节点信息也称为表2。
下面以T1为当前任务,进行说明。
在步骤S1,工作节点12a中的第一判断单元1201根据表1,判断5个任务中的当前任务T1是否被领取,如果否,则进入步骤S2,如果是,则进入步骤S3。
这里,从表1可以判断出T1是当前领取任务,即,判断出T1被领取,则进入步骤S3。
在步骤S3,工作节点12a中的第二判断单元1203根据表1,判断当前任务T1是否被本地领取,如果是,则进入步骤S4,否则进入步骤S10。
这里,从表1可以判断出当前任务T1是当前领取任务,且被工作节点12a所领取,因此判断出当前任务T1被本地领取,并进入步骤S4。
在步骤S4,工作节点12a中的第三判断单元1204判断当前任务T1在多个当前工作节点信息中对应的当前工作节点是否与当前任务T1在多个实际工作节点信息中对应的实际工作节点相同,如果是,则进入步骤S6,否则进入步骤S5。
当前任务T1在表1中对应的当前工作节点是工作节点12a,T1在表2中对应的实际工作节点是工作节点12a,判断出两者相同,那么进入步骤S6。
在步骤S6,工作节点12a中的第四判断单元1206判断当前任务T1是否在本地任务列表中,如果是,则进入步骤S10,否则进入步骤S7。
本地任务列表包含本地领取任务以及对应的处理状态,处理状态包括第一状态、第二状态、第三状态和第四状态。
例如,当前在工作节点12a中的本地任务列表如表3所示。
表3
本地领取任务 | 处理状态 |
T1 | 第一状态 |
T2 | 第三状态 |
如图3所示,工作节点12a中的本地任务列表在当前具有T1,T2这两个本地领取任务,且T1的处理状态为第一状态,T2的处理状态为第三状态。关于处理状态,将在后面详细说明。本发明中,本地任务列表是工作节点12a当前领取的任务列表,每个任务的处理状态会随着工作节点12a对任务进行的处理而变化。
这里,从表3可以判断出,当前任务T1在本地任务列表中,那么进行步骤S10。
在步骤S10,工作节点12a中的第五判断单元1210判断当前任务T1是否是5个任务中的最后一个任务,如果是,则返回S0,否则进入S11。
本例中,判断出T1不是5个任务中的最后一个任务,因此进入步骤S11。
在步骤S11,工作节点12a中的当前任务确定单元1211将5个任务中的下一个任务确定作为当前任务,并返回步骤S1。这里,下一个任务是T2,那么将T2作为当前任务,并返回步骤S1。
接下来,以T2为当前任务,进行说明。
在步骤S1,工作节点12a中的第一判断单元1201从表1判断出T2是当前领取任务,即,判断出T2被领取,则进入步骤S3。
在步骤S3,工作节点12a中的第二判断单元1203从表1判断出当前任务T2是当前领取任务,且被工作节点12a所领取,因此判断出当前任务T2被本地领取,并进入步骤S4。
在步骤S4,工作节点12a中的第三判断单元1204判断出当前任务T2在表1中对应的当前工作节点是工作节点12a,T2在表2中对应的实际工作节点是工作节点12b,即,判断出两者不同,那么进入步骤S5。
在步骤S5,状态判断单元1205从本地任务列表中判断当前任务T2的处理状态,如果是第一状态或第二状态,则进入步骤S9,如果是第三状态或第四状态,则进入S8。
例如,从上述表3判断出当前任务T2的处理状态是第一状态,则进入步骤S9。
这里,第一状态是指当前任务正在被本地处理,第二状态是指当前任务正在被本地处理、且不能被本地再次处理,第三状态是指当前任务已被本地处理结束,第四状态是指当前任务已被本地处理结束、且不能被本地再次处理。其中,当表3中的某个任务的工作状态是第二状态时,在该任务被本地的工作节点处理完成后,其工作状态在表3中被修改为第四状态,且不会再改变。
在步骤S9,状态设置单元1209将当前任务T2的处理状态设置为第二状态,并且进入步骤S10。
这时,表3中T2对应的处理状态被更新为第二状态。另外,工作节点12a会周期地处理表3中的T1、T2,当处于第二状态的任务T2被工作节点12a处理结束时,其工作状态就被修改为第四状态,即,表3中T2对应的处理状态被再次更新为第四状态,且不会再改变。
在这种状态下,当T2在下一个周期被工作节点12a作为当前任务时,在步骤S5,状态判断单元1205从本地任务列表(即,表3)中判断出当前任务T2的处理状态是第四状态,则进入S8。
在步骤S8,工作节点12a的删除和更新单元1208从本地任务列表中删除当前任务T2,并根据表2,将当前任务T2更新到数据中心11中的表1中,并且进入S10。
其中,删除和更新单元1208从表3中删除T2,另外,将当前任务T2对应的实际工作节点作为当前工作节点,并将当前任务更新作为与当前工作节点对应的当前领取任务。本例中,根据表2可以看出当前任务T2对应的实际工作节点是工作节点12b,即,确定与T2对应的当前工作节点是工作节点12b,然后将T2更新作为表1中工作节点12b对应的当前领取任务。
此时,工作节点12a中的表3被更新为表3’
本地领取任务 | 处理状态 |
T1 | 第一状态 |
接着,依序对后面的任务T3、T4执行图3中的流程。
下面以T5作为当前任务,进行说明。
当将T5作为当前任务时,在步骤S1,第一判断单元1201根据表1,判断出当前任务T5没有被任何工作节点领取,即,表1中的当前任务中没有T5,那么进入步骤S2。
在步骤S2,工作节点12a中的第一添加单元1202根据多个实际工作节点信息(即,表2),将当前任务T5添加到数据中心11中的多个当前工作节点信息(即,表1)中,并进入步骤S10。其中,从表2可以看出当前任务T5对应的实际工作节点是工作节点c,并将其作为当前工作节点,将当前任务T5添加作为与T3对应的当前领取任务,然后进入步骤S10。
在步骤S10,判断出T5是所有5个任务中的最后一个任务,那么返回步骤S0。
这里,在工作节点12a从数据中心11获取表1时,T5并不在表1中,即T5是新增加的任务,尚未被任何工作节点领取。通过步骤S1和S2,可以将T5添加到数据中心11的表1中,如此,当其他工作节点读取添加有T5的表1时,可以无需重复执行步骤S2,从而提高整个集群的领取任务的效率。
如上所述,在工作节点12a从数据中心11读取表1,并依序对所有5个任务进行图3中的处理流程之后,一个领取任务周期结束,并且,此时的表1被更新为表1’
表1’
工作节点12a周期地进行从数据中心11领取任务的领取任务周期。
进一步,每个工作节点周期地将本地任务列表传送给数据中心11,用于更新多个当前工作节点信息。每个工作节点将本地任务列表传送给数据中心11的时间作为当前更新时间。
这里,以工作节点12a为例,例如传送时的本地任务列表是上述表3’,传送的时间是t1’,那么此时数据中心11中的表1’被再次更新为表1”。
表1”
当前工作节点 | 当前领取任务 | 当前更新时间 |
12a | T1 | t1’ |
12b | T3,T4,T2 | t2 |
12c | T5 | t3 |
本发明中,每个工作节点周期地向数据中心11传送本地任务列表,并且每个工作节点周期地执行从数据中心11领取任务的领取任务周期,两者是并行的。
本发明中,当第三判断单元1204在步骤S4判断出T2在表1中的当前工作节点与T2在表2中的实际工作节点不同时,可以判断出T2在当前时刻已经不属于工作节点12a处理的任务,应当将T2交还给应当领取它的工作节点12b。但是,如果T2正在被工作节点12a处理时将其交还给工作节点12b,那么就会出现T2同时被两个工作节点领取和处理的情况,即产生了冲突,这是不允许的。因此,本发明包括步骤S5和S8,从而在T2被工作节点12a处理结束的情况下,将T2从本地任务列表中删除,并立刻将T2修改为表1中的工作节点12b的当前领取任务,即,立刻将T2交还给工作节点12b。因此,可以避免产生领取冲突。同时,工作节点12a也可以领取到数据自己的任务T1(如表3’所示)。
另外,如果工作节点12b从数据中心11获取更新后的表1’,并且将T2作为当前任务,当按照上述图3中的流程,在步骤S6判断出T2不在工作节点12b的本地任务列表中时,则进入步骤S7。
在步骤S7,第二添加单元1207将T2添加到工作节点12b的本地任务列表中,然后进行后续步骤。如此,工作节点12b可以主动地领取到属于自己的任务T2。
本发明中,当本地任务列表中的某个任务被新添加时,其工作状态被默认设置为第二状态。在该任务被本地工作节点进行周期性处理之后,其工作状态会随之改变。
如上所述,当某个工作节点(例如工作节点12b)新增到集群时,在实际领取属于其的某个任务(例如T2)之前,T2的当前负责工作节点(例如工作节点12a)能够主动将任务交到新增的工作节点12b上,从而可防止出现任务领取冲突。如此,集群中的每个工作节点可以主动地领取到属于自己的任务。
进一步,数据中心11周期地判断当前工作节点信息中的当前更新时间与当前实际时间的差是否大于预定时间,如果是,则删除当前更新时间所对应的当前工作节点信息。
例如,本例中的预定时间是30秒。如表1”所示,工作节点12a对应的当前更新时间是t1’,当前实际时间是ta,且ta与t1’的差例如是35秒,大于预定时间30秒,那么就删除t1’对应的当前工作节点信息,即,删除工作节点12a及其对应的信息。
此时,数据中心中的表1”被再次更新为表1”’。
表1”’
当前工作节点 | 当前领取任务 | 当前更新时间 |
12b | T3,T4,T2 | t2 |
12c | T5 | t3 |
另外,如果ta与t1’的差例如是15秒,小于预定时间30秒,那么不做任何处理,即,表1”不变。
当集群中的某个工作节点(例如,工作节点12a)从集群中移出时,就不会周期地向数据中心11传送其本地任务列表,因此,数据中心11通过周期地进行上述判断,就可以得知工作节点12a已从集群中移出,并将工作节点12a从表”中删除。如此,当其他工作节点(例如工作节点12b、工作节点12c)从数据中心11获取到更新的表1”’之后,就会根据例如5个任务,2个工作节点进行一致性哈希计算,得到相应的实际工作节点信息。因此,可以确保集群中的每个工作节点领取到属于自己的任务。
另外,本发明中,集群中的每个工作节点都进行如图3所示的流程,并周期地将本地任务列表传送给数据中心,即,每个工作节点的处理逻辑都是相同的。如此,整个集群架构的异构程度性被减少,同时有利于在集群中动态地增删工作节点。
此外,每个工作节点都具有各自的节点标识符,例如IP地址,用于区分每个工作节点,每个任务也具有各自的任务标识符,用于对每个任务进行区分。
虽然经过对本发明结合具体实施例进行描述,对于本领域的技术技术人员而言,根据上文的叙述后作出的许多替代、修改与变化将是显而易见。因此,当这样的替代、修改和变化落入附后的权利要求的精神和范围之内时,应该被包括在本发明中。
Claims (18)
1.一种主动领取任务的方法,其特征在于,多个工作节点中的每个工作节点周期地进行以下步骤,以从数据中心主动领取任务:
S0)从所述数据中心中获取多个任务以及多个当前工作节点信息,并根据所述多个任务以及所述多个当前工作节点信息,进行一致性哈希计算,得到多个实际工作节点信息;
S1)根据所述多个当前工作节点信息,判断所述多个任务中的当前任务是否被领取,如果否,则进入步骤S2),如果是,则进入步骤S3);
S2)根据所述多个实际工作节点信息,将所述当前任务添加到所述数据中心中的所述多个当前工作节点信息中,并进入步骤S10);
S3)根据所述多个当前工作节点信息,判断所述当前任务是否被本地领取,如果是,则进入S4,否则进入S10;
S4)判断所述当前任务在多个当前工作节点信息中对应的当前工作节点是否与所述当前任务在所述多个实际工作节点信息中对应的实际工作节点相同,如果是,则进入S6,否则进入S5;
S5)从本地任务列表中判断所述当前任务的处理状态,如果是第一状态或第二状态,则进入步骤S9,如果是第三状态或第四状态,则进入S8;
S6)判断所述当前任务是否在所述本地任务列表中,如果是,则进入S10,否则进入S7;
S7)将所述当前任务添加到所述本地任务列表中,并进入S10;
S8)从所述本地任务列表中删除所述当前任务,并根据所述多个实际工作节点信息,将所述当前任务更新到所述数据中心中的多个当前工作节点信息中,并且进入S10;
S9)将所述当前任务的所述处理状态设置为所述第二状态,并且进入S10;
S10)判断所述当前任务是否是所述多个任务中的最后一个任务,如果是,则返回S0,否则进入S11;
S11)将所述多个任务中的下一个任务确定作为所述当前任务,并返回S1。
2.如权利要求1所述的主动领取任务的方法,其特征在于,所述第一状态是指所述当前任务正在被本地处理,所述第二状态是指所述当前任务正在被本地处理、且不能被本地再次处理,所述第三状态是指所述当前任务已被本地处理结束,所述第四状态是指所述当前任务已被本地处理结束、且不能被本地再次处理。
3.如权利要求2所述的主动领取任务的方法,其特征在于,所述每个工作节点周期地将所述本地任务列表传送给所述数据中心,用于更新所述多个当前工作节点信息。
4.如权利要求3所述的主动领取任务的方法,其特征在于,所述多个当前工作节点信息中的每个当前工作节点信息包括当前工作节点、当前领取任务、以及当前更新时间,
其中,所述每个工作节点将所述本地任务列表传送给所述数据中心的时间作为所述当前更新时间。
5.如权利要求4所述的主动领取任务的方法,其特征在于,所述多个实际工作节点信息中的每个实际工作节点信息包括所述当前任务和实际工作节点,
其中,在步骤S2)中,将所述当前任务对应的所述实际工作节点作为所述当前工作节点,并将所述当前任务添加作为与所述当前工作节点对应的所述当前领取任务。
6.如权利要求5所述的主动领取任务的方法,其特征在于,所述本地任务列表包含本地领取任务以及对应的处理状态,所述处理状态包括所述第一状态、所述第二状态、所述第三状态、所述第四状态,
其中,当时是本地领取任务处于所述第二状态、且已被本地工作节点处理结束时,将所述本地领取任务的所述处理状态设置为所述第四状态。
7.如权利要求6所述的主动领取任务的方法,其特征在于,步骤S8)中,将所述当前任务对应的所述实际工作节点作为所述当前工作节点,并将所述当前任务更新作为与所述当前工作节点对应的所述当前领取任务。
8.如权利要求1-7中任一项所述的主动领取任务的方法,其特征在于,所述数据中心周期地判断所述当前工作节点信息中的所述当前更新时间与当前实际时间的差是否大于预定时间,如果是,则删除所述当前更新时间所对应的当前工作节点信息。
9.一种主动领取任务的工作节点,其特征在于,所述工作节点包括:
获取和计算单元,从数据中心中获取多个任务以及多个当前工作节点信息,并根据所述多个任务以及所述多个当前工作节点信息,进行一致性哈希计算,得到多个实际工作节点信息;
第一判断单元,根据所述多个当前工作节点信息,判断所述多个任务中的当前任务是否被领取,如果否,则进入第一添加单元,如果是,则进入第二判断单元;
第一添加单元,根据所述多个实际工作节点信息,将所述当前任务添加到所述数据中心中的所述多个当前工作节点信息中,并进入第五判断单元;
第二判断单元,根据所述多个当前工作节点信息,判断所述当前任务是否被本地工作节点领取,如果是,则进入第三判断单元,否则进入第五判断单元;
第三判断单元,判断所述当前任务在多个当前工作节点信息中对应的当前工作节点是否与所述当前任务在所述多个实际工作节点信息中对应的实际工作节点相同,如果是,则进入第四判断单元,否则进入状态判断单元;
状态判断单元,从本地任务列表中判断所述当前任务的处理状态,如果是第一状态或第二状态,则进入状态设置单元,如果是第三状态或第四状态,则进入删除和更新单元;
第四判断单元,判断所述当前任务是否在所述本地任务列表中,如果是,则进入所述第五判断单元,否则进入第二添加单元;
第二添加单元,将所述当前任务添加到所述本地任务列表中,并进入所述第五判断单元;
删除和更新单元,从所述本地任务列表中删除所述当前任务,并根据所述多个实际工作节点信息,将所述当前任务更新到所述数据中心中的多个当前工作节点信息中,并且进入所述第五判断单元;
状态设置单元,将所述当前任务的所述处理状态设置为所述第二状态,并且进入所述第五判断单元;
第五判断单元,判断所述当前任务是否是所述多个任务中的最后一个任务,如果是,则返回所述获取和计算单元,否则进入当前任务确定单元;
当前任务确定单元,将所述多个任务中的下一个任务确定作为所述当前任务,并返回所述第一判断单元。
10.如权利要求9所述的主动领取任务的工作节点,其特征在于,所述第一状态是指所述当前任务正在被所述工作节点处理,所述第二状态是指所述当前任务正在被所述工作节点处理、且不能被所述工作节点再次处理,所述第三状态是指所述当前任务已被所述工作节点处理结束,所述第四状态是指所述当前任务已被所述工作节点处理结束、且不能被所述工作节点再次处理。
11.如权利要求10所述的主动领取任务的工作节点,其特征在于,所述工作节点周期地将所述本地任务列表传送给所述数据中心,用于更新所述多个当前工作节点信息。
12.如权利要求11所述的主动领取任务的工作节点,其特征在于,所述多个当前工作节点信息中的每个当前工作节点信息包括当前工作节点、当前领取任务、以及当前更新时间,
其中,所述每个工作节点将所述本地任务列表传送给所述数据中心的时间作为所述当前更新时间。
13.如权利要求12所述的主动领取任务的工作节点,其特征在于,所述多个实际工作节点信息中的每个实际工作节点信息包括所述当前任务和实际工作节点,
其中,所述第一添加单元将所述当前任务对应的所述实际工作节点作为所述当前工作节点,并将所述当前任务添加作为与所述当前工作节点对应的所述当前领取任务。
14.如权利要求13所述的主动领取任务的工作节点,其特征在于,所述本地任务列表包含本地领取任务以及对应的处理状态,所述处理状态包括所述第一状态、所述第二状态、所述第三状态、所述第四状态,
其中,当时是本地领取任务处于所述第二状态、且已被本地工作节点处理结束时,将所述本地领取任务的所述处理状态设置为所述第四状态。
15.如权利要求14所述的主动领取任务的工作节点,其特征在于,所述删除和更新单元将所述当前任务对应的所述实际工作节点作为所述当前工作节点,并将所述当前任务更新作为与所述当前工作节点对应的所述当前领取任务。
16.如权利要求9-15中任一项所述的主动领取任务的方法,其特征在于,所述数据中心周期地判断所述当前工作节点信息中的所述当前更新时间与当前实际时间的差是否大于预定时间,如果是,则删除所述当前更新时间所对应的当前工作节点信息。
17.一种主动领取任务的系统,其特征在于,所述系统包括:
数据中心,所述数据中心中存储多个任务以及多个当前工作节点信息,
多个如权利要求9-16中任一项所述的工作节点,每个工作节点周期地从所述数据中心领取任务。
18.一种非易失性存储介质,在所述非易失性存储介质上存储有主动领取任务的程序,所述程序被计算机执行以实施主动领取任务的方法,其特征在于,所述程序包括:
获取和计算指令,从数据中心中获取多个任务以及多个当前工作节点信息,并根据所述多个任务以及所述多个当前工作节点信息,进行一致性哈希计算,得到多个实际工作节点信息;
第一判断指令,根据所述多个当前工作节点信息,判断所述多个任务中的当前任务是否被领取,如果否,则进入第一添加指令,如果是,则进入第二判断指令;
第一添加指令,根据所述多个实际工作节点信息,将所述当前任务添加到所述数据中心中的所述多个当前工作节点信息中;
第二判断指令,根据所述多个当前工作节点信息,判断所述当前任务是否被本地工作节点领取,如果是,则进入第三判断指令,否则进入第五判断指令;
第三判断指令,判断所述当前任务在多个当前工作节点信息中对应的当前工作节点是否与所述当前任务在所述多个实际工作节点信息中对应的实际工作节点相同,如果是,则进入第四判断指令,否则进入状态判断指令;
状态判断指令,从本地任务列表中判断所述当前任务的处理状态,如果是第一状态或第二状态,则进入状态设置指令,如果是第三状态或第四状态,则进入删除和更新指令;
第四判断指令,判断所述当前任务是否在所述本地任务列表中,如果是,则进入所述第五判断指令,否则进入第二添加指令;
第二添加指令,将所述当前任务添加到所述本地任务列表中,并进入所述第五判断指令;
删除和更新指令,从所述本地任务列表中删除所述当前任务,并根据所述多个实际工作节点信息,将所述当前任务更新到所述数据中心中的多个当前工作节点信息中,并且进入所述第五判断指令;
状态设置指令,将所述当前任务的所述处理状态设置为所述第二状态,并且进入所述第五判断指令;
第五判断指令,判断所述当前任务是否是所述多个任务中的最后一个任务,如果是,则返回所述获取和计算指令,否则进入当前任务确定指令;
当前任务确定指令,将所述多个任务中的下一个任务确定作为所述当前任务,并返回所述第一判断指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710439793.0A CN107249029B (zh) | 2017-06-12 | 2017-06-12 | 主动领取任务的方法、工作节点、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710439793.0A CN107249029B (zh) | 2017-06-12 | 2017-06-12 | 主动领取任务的方法、工作节点、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107249029A true CN107249029A (zh) | 2017-10-13 |
CN107249029B CN107249029B (zh) | 2019-09-06 |
Family
ID=60019066
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710439793.0A Active CN107249029B (zh) | 2017-06-12 | 2017-06-12 | 主动领取任务的方法、工作节点、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107249029B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324508A (zh) * | 2020-02-04 | 2020-06-23 | 联想(北京)有限公司 | 一种分布式集群的监控方法、装置、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105871603A (zh) * | 2016-03-29 | 2016-08-17 | 中国科学院软件研究所 | 一种基于内存数据网格的实时流式数据处理失效恢复系统及方法 |
CN106250226A (zh) * | 2016-08-02 | 2016-12-21 | 福建华渔未来教育科技有限公司 | 基于一致性哈希算法的任务调度机制及系统 |
CN106572153A (zh) * | 2016-10-21 | 2017-04-19 | 乐视控股(北京)有限公司 | 集群的数据存储方法及装置 |
-
2017
- 2017-06-12 CN CN201710439793.0A patent/CN107249029B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105871603A (zh) * | 2016-03-29 | 2016-08-17 | 中国科学院软件研究所 | 一种基于内存数据网格的实时流式数据处理失效恢复系统及方法 |
CN106250226A (zh) * | 2016-08-02 | 2016-12-21 | 福建华渔未来教育科技有限公司 | 基于一致性哈希算法的任务调度机制及系统 |
CN106572153A (zh) * | 2016-10-21 | 2017-04-19 | 乐视控股(北京)有限公司 | 集群的数据存储方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324508A (zh) * | 2020-02-04 | 2020-06-23 | 联想(北京)有限公司 | 一种分布式集群的监控方法、装置、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107249029B (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104065741B (zh) | 数据采集系统和数据采集方法 | |
CN105338113B (zh) | 一种针对城市数据资源共享的多平台数据互联系统 | |
DE112012005533B4 (de) | Unterstützende Abfrage und ein Abfragen | |
CN105117171B (zh) | 一种能源scada海量数据分布式处理系统及其方法 | |
WO2017084016A1 (zh) | 模型参数融合方法及装置 | |
CN111339071A (zh) | 一种多源异构数据的处理方法及装置 | |
CN110134714A (zh) | 一种适用于大数据迭代计算的分布式计算框架缓存索引 | |
CN105978711B (zh) | 一种基于最小生成树的最佳交换边查找方法 | |
CN105843933B (zh) | 分布式内存列式数据库的索引建立方法 | |
CN104809130A (zh) | 数据查询的方法、设备及系统 | |
CN106802947A (zh) | 实体关系图的数据处理系统及方法 | |
CN110825733A (zh) | 一种面向多采样流的时间序列数据管理方法及系统 | |
CN107870949A (zh) | 数据分析作业依赖关系生成方法和系统 | |
CN110941251A (zh) | 基于数字孪生体的生产控制方法、装置、设备及介质 | |
CN110471935B (zh) | 一种数据操作的执行方法、装置、设备和存储介质 | |
CN106161193B (zh) | 一种邮件处理方法、装置和系统 | |
CN104601364A (zh) | 一种管理集群中成员管理方法及装置 | |
CN105701128B (zh) | 一种查询语句的优化方法和装置 | |
CN107249029B (zh) | 主动领取任务的方法、工作节点、系统及存储介质 | |
CN112686418A (zh) | 一种履约时效预测方法和装置 | |
CN112182031B (zh) | 数据查询方法及装置、存储介质、电子装置 | |
CN105847358A (zh) | 一种云计算环境下大数据节点分布的实现方法及其系统 | |
CN106776810B (zh) | 一种大数据的数据处理系统及方法 | |
WO2020147335A1 (zh) | 用于电商平台的会员数据圈选方法及系统 | |
US20200364268A1 (en) | Management of graphs using secondary index vertices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 200090 Room 201, 10 B, 619 Longchang Road, Yangpu District, Shanghai. Applicant after: Excellent Polytron Technologies Inc Address before: 200090 Shanghai city Yangpu District road 619 Longchang city concept 10 building B block. Applicant before: SHANGHAI UCLOUD INFORMATION TECHNOLOGY CO., LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |