一种基于Raft的分布式任务调度系统

文档序号:26496313发布日期:2021-09-04 00:09阅读:178来源:国知局
一种基于Raft的分布式任务调度系统
一种基于raft的分布式任务调度系统
技术领域
1.本发明属于分布式任务调度技术领域,具体涉及一种基于raft的分布式任务调度系统。


背景技术:

2.分布式任务是指将一组独立任务或一个任务拆分成多个独立的任务项,由分布式系统中的计算机分别执行其中某一个或几个任务项;raft算法是一个共识算法,解决了在分布式环境中多节点之间数据一致性的问题,同时保证了在网络延迟、数据包丢失等非拜占庭问题下系统的安全性;
3.现有的分布式任务调度系统与方法,一类指定主节点,由主节点实现任务调度的功能,保证数据的一致性。但是该类方法依赖主节点的存活,一旦主节点宕机或者出错,会导致整个任务调度的数据错误或者丢失;另一类依赖诸如zookeeper、redis的中间件存储数据,由中间件保证数据一致性,但是系统中的计算机依然被动接收任务,不能根据执行上下文选择任务,提高执行效率。


技术实现要素:

4.针对上述存在的问题,本发明提出一种基于raft的分布式任务调度系统,以解决现有分布式任务调度中的一致性、高性能和可靠性问题;
5.为实现上述目的,本发明提出一种基于raft的分布式任务调度系统由多台互相连接的计算机组成;每台计算机分别包括任务执行器、远程调用通讯器、联合调度器和任务请求器;根据联合调度器的状态不同,联合调度器又分为领导者、追随者和候选者;计算机通过远程调用通讯器与另一台计算机通信,另一台计算机进行相应操作;所述系统通过以下步骤实现任务调度:
6.1)联合调度器选举领导者;
7.2)计算机j通过任务请求器j向联合调度器j发送任务请求;
8.3)联合调度器j将任务请求转发给领导者;
9.4)领导者接收任务请求,同步给其它联合调度器,并根据同步情况,对任务请求做出响应;
10.5)任务请求器j如果收到领导者的同意响应,将任务派发给任务执行器j执行;如果收到领导者的拒绝响应,重新申请任务;
11.6)任务请求器j在任务执行器j执行完成任务后,向领导者申请新的任务;
12.进一步地,上述步骤1)联合调度器选举领导者包含以下步骤:
13.1.1)联合调度器k的初始状态为追随者,当联合调度器k在超时期限t未收到作为领导者的联合调度器的追加日志请求,则认为领导者出现故障,联合调度器k变更状态为候选者,并向其他联合调度器发送成为领导者的选举投票请求;选举投票请求包含申请成为领导者的任期和联合调度器k的标识id;
14.1.2)联合调度器n收到联合调度器k的选举投票请求,做返回响应:如选举投票请求中的任期大于联合调度器n的任期,则将联合调度器n的任期更新为选举投票请求中的任期,并返回同意申请;如果选举投票请求中的任期小于或等于联合调度器n的任期,则返回不同意申请和联合调度器n的任期;
15.1.3)联合调度器k收到其它联合调度器的响应返回信息,如果收到同意的返回响应数量超过所有联合调度器总数的一半,则联合调度器k变更为领导者;如果收到返回信息中的联合调度器n的任期大于联合调度器k的任期,则联合调度器k变更为追随者,将联合调度器k的任期更新为联合调度器n的任期;
16.1.4)在联合调度器k作为候选者选举期间,收到其它候选者抢先选举成功的消息,即同步日志请求,则联合调度器k变更为追随者;
17.1.5)在领导者任期期间,如果收到候选者发来的选举投票请求且请求的任期大于领导者的任期,则该领导者变更为追随者。
18.进一步地,上述步骤4)领导者接收任务请求,并同步给其它联合调度器包含如下步骤:
19.4.1)领导者接收到联合调度器j发送的任务请求,记录该请求并标记任务请求为追加状态;
20.4.2)领导者向其它联合调度器发送同步任务请求;
21.4.3)追随者x收到同步任务请求,记录该任务请求,向领导者返回确认响应;
22.4.4)候选者y收到同步任务请求,变更自身状态为追随者,之后记录该任务请求,向领导者返回确认响应;
23.4.5)领导者在收到超过半数联合调度器的确认响应后,将该任务请求标记为确认状态,向联合调度器j返回同意该任务请求的响应;
24.4.6)如果在超时期限t内,领导者未收到超过半数的联合调度器的确认响应,则将任务请求标记为失败状态,向联合调度器j返回拒绝该任务请求的响应。
25.与现有技术相比,本发明具备宕机、断连容错能力和确保任务有且只执行一次的能力;在系统中追随者宕机或断连数量不超过一半时,领导者仍能获得超过半数的任务请求确认信息,系统依然能够正常运行;在系统中的领导者宕机或断连时,系统中剩余的追随者会重新选举出新的领导者,保障系统的正常运行;任务的申请和领导者的选举需要系统中超过半数的任务调度器确认,以此保证了一个任务只被申请执行一次,系统中同一时间至多存在一个领导者。
附图说明
26.图1为本发明的结构示意图。
27.图2为基于raft的分布式任务调度方法流程示意图。
28.图3为本发明的联合调度器状态转换示意图。
具体实施方式
29.下面结合附图以及具体实施例对本发明作进一步的说明,需要指出的是,下面仅以一种最优化的技术方案对本发明的技术方案以及设计原理进行详细阐述,但本发明的保
护范围并不限于此。
30.所述实施例为本发明的优选的实施方式,但本发明并不限于上述实施方式,在不背离本发明的实质内容的情况下,本领域技术人员能够做出的任何显而易见的改进、替换或变型均属于本发明的保护范围。
31.图1所示是基于raft算法的分布式任务调度系统示意图,系统包括n个计算机;每个计算机包含远程调用通讯器、联合调度器、任务请求器和任务执行器。
32.其中,计算机通过远程调用通讯器互相连接建立信道;远程调用通讯器接收来自联合调度器的请求和响应,发送给其它远程调用通讯器;远程调用通讯器同时也会接收来自其它远程调用通讯器的请求和响应,并将其发送给联合调度器。
33.任务请求器向联合调度器申请任务和向任务执行器派发任务;在任务执行器空闲时,任务请求器向联合调度器发送申请任务的请求;如果获得申请成功响应,任务请求器向任务执行器派发申请的任务;如果获得申请失败响应,任务请求器重试申请任务。
34.任务执行器具体执行任务,执行任务请求器申请成功的任务;任务执行完成后,任务执行器通知任务请求器申请新的任务。
35.联合调度器包含三种状态,领导者、候选者和追随者;领导者在系统中同一时间有且只存在一个;只有领导者可以响应来自任务请求器的任务申请;追随者接收到申请任务请求时,通过远程调用通讯器将请求转发给领导者;候选者接口到申请任务请求时,向任务请求器返回失败响应。
36.如图2所示,本发明的基于raft的分布式任务调度系统通过以下步骤实现任务调度:
37.1)联合调度器选举领导者;
38.2)计算机j通过任务请求器j向联合调度器j发送任务请求;
39.3)联合调度器j将任务请求转发给领导者;
40.4)领导者接收任务请求,同步给其它联合调度器,并根据同步情况,对任务请求做出响应;
41.5)如任务请求器j收到领导者的同意响应,则将任务派发给任务执行器j执行;如任务请求器j收到领导者的拒绝响应,则任务请求器j重新申请任务;
42.6)任务请求器j在任务执行器j执行完成任务后,向领导者申请新的任务。
43.作为本发明的优选实施例,步骤4)具体包括以下内容:
44.4.1)领导者接收到联合调度器j发送的任务请求,记录该请求并标记任务请求为追加状态;
45.4.2)领导者向其它联合调度器发送同步任务请求;
46.4.3)追随者x收到同步任务请求,记录该任务请求,向领导者返回确认响应;
47.4.4)候选者y收到同步任务请求,变更自身状态为追随者,之后记录该任务请求,向领导者返回确认响应;
48.4.5)领导者在收到超过半数联合调度器的确认响应后,将该任务请求标记为确认状态,向联合调度器j返回同意该任务请求的响应;
49.4.6)如果在超时期限t内,领导者未收到超过半数的联合调度器的确认响应,则将任务请求标记为失败状态,向联合调度器j返回拒绝该任务请求的响应。
50.图3所示是联合调度器的状态转移示意图,具体包括以下内容:
51.1.1)联合调度器k的初始状态为追随者,当联合调度器k在超时期限t未收到作为领导者的联合调度器的追加日志请求,则认为领导者出现故障,联合调度器k变更状态为候选者,并向其他联合调度器发送成为领导者的选举投票请求;选举投票请求包含申请成为领导者的任期和联合调度器k的标识id;
52.作为本发明的优选实施例,超时期限t需要大于调度器之间的平均响应时间,若平均响应时间为20ms,则可以将超时期限设定为30ms到50ms;
53.1.2)联合调度器n收到联合调度器k的选举投票请求,做返回响应:如选举投票请求中的任期大于联合调度器n的任期,则将联合调度器n的任期更新为选举投票请求中的任期,并返回同意申请;如果选举投票请求中的任期小于或等于联合调度器n的任期,则返回不同意申请和联合调度器n的任期;
54.1.3)联合调度器k收到其它联合调度器的响应返回信息,如果收到同意的返回响应数量超过所有联合调度器总数的一半,则联合调度器k变更为领导者;如果收到返回信息中的联合调度器n的任期大于联合调度器k的任期,则联合调度器k变更为追随者,将联合调度器k的任期更新为联合调度器n的任期;
55.1.4)在联合调度器k作为候选者选举期间,收到其它候选者抢先选举成功的消息,即同步日志请求,则联合调度器k变更为追随者;
56.1.5)在领导者任期期间,如果收到候选者发来的选举投票请求且请求的任期大于领导者的任期,则该领导者变更为追随者。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1