基于RAFT的高可用分布式任务调度方法和设备技术

技术编号:36986927 阅读:16 留言:0更新日期:2023-03-25 18:04
本发明专利技术的实施例提供了基于RAFT的高可用分布式任务调度方法和设备。所述方法包括实时扫描数据库的命令表,获取待执行的流程的命令,转化为DAG,将DAG中入度为0的任务节点对应的任务提交到待派发任务队列中;计算执行服务器的执行负载,得到最优执行服务器,将待派发任务队列中的任务发送至最优执行服务器;响应于任务执行结果,更新DAG,判断更新后的DAG中是否存在入度为0的任务节点,流程执行结束。以此方式,可以最大化利用集群资源,利用RAFT分布式一致性协议实现了调度服务器和执行服务器的水平拓展能力,提高了任务调度系统的可靠性和高可用,降低了部署和运维的难度。降低了部署和运维的难度。降低了部署和运维的难度。

【技术实现步骤摘要】
基于RAFT的高可用分布式任务调度方法和设备


[0001]本专利技术一般涉及任务调度领域,并且更具体地,涉及基于RAFT的高可用分布式任务调度方法和设备。

技术介绍

[0002]在大数据项目的开发、运行及维护的过程中,不可避免地会产生很多不同类型的作业或者任务。如ETL(Extract

Transform

Load的缩写)作业,需要将数据从源数据库通过抽取、转换后加载到目标数据库;如数据清洗作业,需要检查数据质量是否达标,如果不达标则执行相对应的清洗脚本;如数据分析作业,需要执行SQL或者Python脚本生成统计报表等。这些任务需要定时周期性执行,任务之间存在复杂的上下游依赖关系。
[0003]目前任务调度的方法一般有两种,方法一:通过crontab手动维护定时作业,任务间的依赖关系通过指定执行时间控制;这种方式的任务分散在不同服务器上,不能集中化管理,任务间依赖关系不能保证,无法做到实时监控更无法有效利用服务器集群的计算能力。方法二:利用Azkaban等大数据调度工具;现有的调度工具通常是分布式部署,在满足不同类型任务的集中化管理的同时支持任务的分布式执行,但是由于调度服务器不支持水平拓展,其分布式作业的能力存在单点故障的风险,而一些支持调度服务器水平拓展的工具,通常依赖于第三方分布式协调服务Zookeeper,增加了部署难度的同时也降低了整体的可靠性和可用性。

技术实现思路

[0004]根据本专利技术的实施例,提供了一种基于RAFT的高可用分布式任务调度方案。本方案能够最大化利用集群资源,利用RAFT分布式一致性协议实现了调度服务器和执行服务器的水平拓展能力,提高了任务调度系统的可靠性和高可用,降低了部署和运维的难度。
[0005]在本专利技术的第一方面,提供了一种基于RAFT的高可用分布式任务调度方法。该方法应用于调度服务器,所述调度服务器所属于RAFT集群,该方法包括:步骤1:实时扫描数据库的命令表,从所述命令表中获取待执行的流程的命令,转化为DAG,将所述DAG中入度为0的任务节点对应的任务提交到待派发任务队列中;步骤2:计算执行服务器的执行负载,得到最优执行服务器,将所述待派发任务队列中的任务发送至所述最优执行服务器,使所述最优执行服务器执行所述任务,返回任务执行结果;步骤3:响应于所述任务执行结果,更新所述DAG,判断更新后的DAG中是否存在入度为0的任务节点,若是,则将所述入度为0的任务节点对应的任务提交到待派发任务队列中,重新执行步骤2;否则所述流程执行结束。
[0006]进一步地,所述数据库的命令表用于存储流程的命令,所述流程的命令由流程定义信息和调度信息封装得到;所述调度信息通过接口服务器轮询数据库中的流程定义信息,按照所述流程定义信息中的执行时间从所述数据库中读出;所述流程定义信息为通过
所述接口服务器验证的流程信息,包括流程执行参数、流程中的任务定义和任务间的依赖关系。
[0007]进一步地,所述流程中的任务定义通过拖拽任务组件生成任务,输入执行任务所需要的流程执行参数进行完成任务定义;所述任务间的依赖关系为任务组件之间的单向箭头连接关系;在所述单向箭头连接关系中,箭头指向方向的任务为下游任务,非箭头指向方向的任务为上游任务。
[0008]进一步地,所述RAFT集群中的调度服务器具有调度服务器ID,所述调度服务器ID用于唯一标识所述RAFT集群中的调度服务器;当调度服务器从所述命令表中获取待执行的流程的命令时,对所述流程的命令进行预领取,将预领取信息发送至所述调度服务器所属RAFT集群的Leader;所述调度服务器响应于所属RAFT集群的Leader生成的提交日志,对所述流程的命令进行确认领取;所述提交日志由所述Leader将所述预领取信息同步到RAFT集群,取得多数一致后生成,并向所属RAFT集群中的其他调度服务器发布。
[0009]进一步地,所述计算执行服务器的执行负载,得到最优执行服务器,包括:所述调度服务器获取执行服务器信息;所述执行服务器信息包括各个执行服务器的执行负载信息;利用线性加权算法对各个执行服务器的执行负载信息配置负载权重,进行加权计算,生成执行服务器的执行负载值,根据所述执行负载值将执行负载最少的执行服务器作为最优执行服务器。
[0010]进一步地,当所述执行服务器启动时,将所述执行服务器的地址信息、所述工作组信息和执行负载信息发送至所述Leader;若所述执行服务器处于工作状态,则将执行负载信息以心跳包形式发送至所述Leader,使所述Leader更新所述执行服务器的执行负载信息。
[0011]进一步地,所述任务执行结果由所述最优执行服务器依次从优先队列中取出任务执行生成;所述优先队列用于按照任务优先级顺序存储任务实例;所述任务实例由所述最优执行服务器将分配到的任务根据任务类型解析得到。
[0012]进一步地,所述响应于所述任务执行结果,更新所述DAG,包括:若所述任务执行结果为任务执行成功,则所述DAG中所述执行成功的任务的直接下游任务的入度减1;若所述任务执行结果为任务执行失败,则将所述流程执行参数中的失败重试次数减1;若失败重试次数是为0,则将所述执行失败的任务以及直接或间接依赖该任务的所有下游任务从所述DAG中删除,执行所述流程执行参数中的失败告警策略,并标记所述流程的执行状态为失败状态。
[0013]进一步地,在将所述待派发任务队列中的任务发送至所述最优执行服务器后,若所述最优执行服务器与所述调度服务器失去连接且未收到所述最优执行服务器返回的任务执行结果,则返回步骤2,对所述任务重新调度。
[0014]在本专利技术的第二方面,提供了一种电子设备。该电子设备至少一个处理器;以及与所述至少一个处理器通信连接的存储器;所述存储器存储有可被所述至少一个处理器执行
的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本专利技术第一方面的方法。
[0015]应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本专利技术的实施例的关键或重要特征,亦非用于限制本专利技术的范围。本专利技术的其它特征将通过以下的描述变得容易理解。
附图说明
[0016]结合附图并参考以下详细说明,本专利技术各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:图1示出了根据本专利技术的实施例的服务器架构示意图;图2示出了根据本专利技术的实施例的基于RAFT的高可用分布式任务调度方法的流程图;图3示出了根据本专利技术的实施例的RAFT选举示意图;图4示出了能够实施本专利技术的实施例的示例性电子设备的方框图;其中,400为电子设备、401为CPU、402为ROM、403为RAM、404为总线、405为I/O接口、406为输入单元、407为输出单元、408为存储单元、409为通信单元。
具体实施方式
[0017]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于RAFT的高可用分布式任务调度方法,应用于调度服务器,所述调度服务器所属于RAFT集群,其特征在于,包括:步骤1:实时扫描数据库的命令表,从所述命令表中获取待执行的流程的命令,转化为DAG,将所述DAG中入度为0的任务节点对应的任务提交到待派发任务队列中;步骤2:计算执行服务器的执行负载,得到最优执行服务器,将所述待派发任务队列中的任务发送至所述最优执行服务器,使所述最优执行服务器执行所述任务,返回任务执行结果;步骤3:响应于所述任务执行结果,更新所述DAG,判断更新后的DAG中是否存在入度为0的任务节点,若是,则将所述入度为0的任务节点对应的任务提交到待派发任务队列中,重新执行步骤2;否则所述流程执行结束。2.根据权利要求1所述的方法,其特征在于,所述数据库的命令表用于存储流程的命令,所述流程的命令由流程定义信息和调度信息封装得到;所述调度信息通过接口服务器轮询数据库中的流程定义信息,按照所述流程定义信息中的执行时间从所述数据库中读出;所述流程定义信息为通过所述接口服务器验证的流程信息,包括流程执行参数、流程中的任务定义和任务间的依赖关系。3.根据权利要求2所述的方法,其特征在于,所述流程中的任务定义通过拖拽任务组件生成任务,输入执行任务所需要的流程执行参数进行完成任务定义;所述任务间的依赖关系为任务组件之间的单向箭头连接关系;在所述单向箭头连接关系中,箭头指向方向的任务为下游任务,非箭头指向方向的任务为上游任务。4.根据权利要求1所述的方法,其特征在于,所述RAFT集群中的调度服务器具有调度服务器ID,所述调度服务器ID用于唯一标识所述RAFT集群中的调度服务器;当调度服务器从所述命令表中获取待执行的流程的命令时,对所述流程的命令进行预领取,将预领取信息发送至所述调度服务器所属RAFT集群的Leader;所述调度服务器响应于所属RAFT集群的Leader生成的提交日志,对所述流程的命令进行确认领取;所述提交日志由所述Leader将所述预领取信息同步到RAFT集群,取得多数一致后生成,并向所属RAFT集群中的其他调度服务器发布。5.根据权利要求4所述...

【专利技术属性】
技术研发人员:魏楠方金云曲涵石陈祥帅
申请(专利权)人:中科金瑞北京大数据科技有限公司
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1