一种分布式作业调度方法技术

技术编号:23099035 阅读:29 留言:0更新日期:2020-01-14 20:35
本发明专利技术公开了一种分布式作业调度方法,属于分布式任务调度框架下的作业编排技术领域,解决现有技术中的依赖作业只能有一个分片,从而造成作业的水平扩容被牺牲的问题。本发明专利技术根据应用场景,将每个作业进行分片,得到作业分片;在每个作业中都有一个用于描述其依赖作业的字段,若作业不是起始作业,在字段中配置依赖作业的相关信息,配置后得到所有JAVA依赖作业,所有JAVA依赖作业包括起始作业和配置了字段的JAVA依赖作业;基于作业分片和所有JAVA依赖作业,周期性触发各JAVA依赖作业执行逻辑判断,根据判断结果执行或不执行作业,直到整个流程中所有作业正常完成。本发明专利技术用于分布式作业调度。

【技术实现步骤摘要】
一种分布式作业调度方法
一种分布式作业调度方法,用于分布式作业调度,属于分布式任务调度框架下的作业编排

技术介绍
现有技术中,把定时任务通过集群的方式进行管理调度,并采用分布式部署,保证系统的高可用,提高了容错。这就是分布式作业调度平台可以实现的。现有技术中,Saturn3.3.0已经有自己的依赖作业实现,其实现方案如下:1)通过作业对应的worker每秒一次的立即执行检测来判断作业是否执行。2)作业类型的选择:作业编排是一个有序无环的流程,所以第一个作业和其他作业是两个作业类型(第一个作业为JAVA/SHELL定时作业,其它作业为JAVA/SHELL依赖作业)。3)每次定时作业成功后检测是否有下游作业(即JAVA/SHELL依赖作业),如果有,则通过1)去触发,直至所有依赖作业执行正常完成。上述所有依赖作业都只能有一个分片,从而造成作业的水平扩容(作业并发)被牺牲掉了。
技术实现思路
针对上述研究的问题,本专利技术的目的在于提供一种分布式作业调度方法,解决现有技术中的依赖作业只能有一个分片,从而造成作业的水平扩容被牺牲的问题。为了达到上述目的,本专利技术采用如下技术方案:一种分布式作业调度方法,包括如下步骤:S1、根据作业依赖应用场景,将每个作业进行分片,得到作业分片;S2、在每个作业中都有一个用于描述其依赖作业的字段,若作业不是起始作业,在字段中配置依赖作业的相关信息,配置后得到所有JAVA依赖作业,所有JAVA依赖作业包括起始作业和配置了字段的JAVA依赖作业;S3、基于作业分片和所有JAVA依赖作业,周期性触发各JAVA依赖作业执行逻辑判断,根据判断结果执行或不执行作业,直到整个流程中所有作业正常完成。进一步,所述步骤S1通过web页面配置分片数量以及每个分片的任务来将每个作业拆分成多个作业分片。进一步,所述步骤S2中的字段是用于描述依赖作业的作业名,即相关信息为作业名;依赖作业即指当前JAVA依赖作业所要依赖的其它JAVA依赖作业。进一步,所述步骤S2中,在字段中配置依赖作业的相关信息的方式为手工配置。进一步,所述步骤S3的具体步骤为:S3.1、判断JAVA依赖作业的作业分片是否是起始作业,即判断描述依赖作业的字段中是否配置有相关信息,若是起始作业,转到步骤S3.7,若否,转到步骤S3.2;S3.2、周期性触发各JAVA依赖作业的各作业分片执行逻辑判断,即针对各JAVA依赖作业的各作业分片,周期性的检查作业分片是否有流程记录,若是,转到步骤S3.3,若否,转到步骤S3.4,流程记录包括起始作业产生的用于标志一个流程的流程ID和作业分片执行记录,作业分片执行记录即为作业分片执行结果;S3.3、判断作业分片是否已成功执行,若否,返回true,并转到步骤S3.8,若是,返回false;S3.4、检查作业分片的依赖作业是否都有执行记录,若是,转到步骤S3.5,若否,返回false,即作业分片执行失败,整个流程都停在出错的作业,从web页面查看依赖作业以及日志,排错后清除作业分片的执行记录,再次执行步骤S3.2,其中,执行记录包括起始作业产生的用于标志一个流程的流程ID和作业分片执行记录,作业分片执行记录包括执行成功或者失败的记录、执行过程和执行结果;S3.5、检查作业分片的依赖作业的作业分片的执行数量是否与该依赖作业的作业分片数量相同,若是,转到步骤S3.6,若否,返回false,即作业分片执行失败,整个流程都停在出错的作业,从web页面查看依赖作业以及日志,排错后清除作业分片的执行记录,再次执行步骤S3.2;S3.6、检查作业分片的依赖作业的作业分片是否都正常执行完成,若是,返回true,并转到步骤S3.8,若否,返回false,即作业分片执行失败,整个流程都停在出错的作业,从web页面查看依赖作业以及日志,排错后清除作业分片的执行记录,再次执行步骤S3.2;S3.7、检查是否有作业分片执行记录,若有,判断是否已成功执行,若是成功执行,表示起始作业的作业分片已正常执行完成,返回false,若不是成功执行或没有作业分片执行记录,返回true,并转到步骤S3.8;S3.8、执行JAVA依赖作业的该作业分片,并对执行后的结果进行处理,若JAVA依赖作业的作业分片是结束作业,正常执行后清除所有JAVA依赖作业的记录,若否,则不作处理。进一步,所述步骤S3.2中,通过Cron表达式周期性触发作业分片执行判断逻辑,其中,超始作业的执行周期按照当前需要进行设置,包括日切任务,即设置日切为每天的某个时间点,JAVA依赖作业的执行周期设置为1-5秒一次,超始作业的周期要比JAVA依赖作业的周期要长。进一步,所述步骤S3.8中,执行JAVA依赖作业的该作业分片,并对执行后的结果进行处理的具体步骤为:S3.8.1、执行器执行当前JAVA依赖作业的该作业分片,若作业分片执行异常,转到步骤S3.8.2,若作业分片执行正常,转到步骤S3.8.3;S3.8.2、返回失败以及异常信息,异常信息会以http的方式被发送到对应的告警平台,作业分片的执行结果会被记录在Zookeeper和MySQL数据库中,其中,Zookeeper的数据用来判断作业执行与否,数据库的数据是用在控制台页面展示,即图形化方式展示作业执行状态,包括历史执行记录,现在运行状态;S3.8.3、作业分片的执行结果会被记录在Zookeeper和MySQL数据库中。本专利技术同现有技术相比,其有益效果表现在:一、本专利技术将一个作业拆分为多个作业分片的性能与单分片的性能差距与两者分片数比值成正比,如果是大批量的数据处理,此时多分片的优势就会非常明显,如:现有作业JobA,作业处理时间单分片用时T1,作业处理时间多分片用时T2,多分片数量N,T1和T2比值在一定硬件条件下满足T2∶T1≈1∶N,则两种分片方式在性能上的差异与分片数的大小明显相关;二、本专利技术将一个作业拆分为多个作业分片,每个作业分片处理对应的资源,使得效率和性能更佳,若直接通过web页面配置分片数量以及每个分片的任务更加高效,即相对于手动配置更高效;三、本专利技术分片的水平扩容通过分片的配置,即分片数量和分片参数(作业分片在程序中体现为一个线程,执行该作业线程的数量等于这个作业的分片数量,同理,分片参数描述了每个作业分片的具体分工)来控制该作业的分片并发数量,从而实现对其运行性能的控制;四、本专利技术的JAVA依赖作业执行过程中某一个依赖作业失败了,在人为解决了之后可以无限次数重跑失败作业;五、本专利技术将作业类型的判断交由程序判断,即相对于现有的实现方案将第一个作业和后面的依赖作业分为两个类型,在配置时如果两者作业类型没有对应,则会出现错误;然而本方案统一两者为一个作业类型JAVA依赖作业,则避免了配置上出错的风险,因为第一个作业和其他作业的判断过程在程序中,完全避免了作业本文档来自技高网...

【技术保护点】
1.一种分布式作业调度方法,其特征在于,包括如下步骤:/nS1、根据作业依赖应用场景,将每个作业进行分片,得到作业分片;/nS2、在每个作业中都有一个用于描述其依赖作业的字段,若作业不是起始作业,在字段中配置依赖作业的相关信息,配置后得到所有JAVA依赖作业,所有JAVA依赖作业包括起始作业和配置了字段的JAVA依赖作业;/nS3、基于作业分片和所有JAVA依赖作业,周期性触发各JAVA依赖作业执行逻辑判断,根据判断结果执行或不执行作业,直到整个流程中所有作业正常完成。/n

【技术特征摘要】
1.一种分布式作业调度方法,其特征在于,包括如下步骤:
S1、根据作业依赖应用场景,将每个作业进行分片,得到作业分片;
S2、在每个作业中都有一个用于描述其依赖作业的字段,若作业不是起始作业,在字段中配置依赖作业的相关信息,配置后得到所有JAVA依赖作业,所有JAVA依赖作业包括起始作业和配置了字段的JAVA依赖作业;
S3、基于作业分片和所有JAVA依赖作业,周期性触发各JAVA依赖作业执行逻辑判断,根据判断结果执行或不执行作业,直到整个流程中所有作业正常完成。


2.根据权利要求1所述的一种分布式作业调度方法,其特征在于,所述步骤S1通过web页面配置分片数量以及每个分片的任务来将每个作业拆分成多个作业分片。


3.根据权利要求1所述的一种分布式作业调度方法,其特征在于,所述步骤S2中的字段是用于描述依赖作业的作业名,即相关信息为作业名;依赖作业即指当前JAVA依赖作业所要依赖的其它JAVA依赖作业。


4.根据权利要求1所述的一种分布式作业调度方法,其特征在于,所述步骤S2中,在字段中配置依赖作业的相关信息的方式为手工配置。


5.根据权利要求1-4任意一项所述的一种分布式作业调度方法,其特征在于,所述步骤S3的具体步骤为:
S3.1、判断JAVA依赖作业的作业分片是否是起始作业,即判断描述依赖作业的字段中是否配置有相关信息,若是起始作业,转到步骤S3.7,若否,转到步骤S3.2;
S3.2、周期性触发各JAVA依赖作业的各作业分片执行逻辑判断,即针对各JAVA依赖作业的各作业分片,周期性的检查作业分片是否有流程记录,若是,转到步骤S3.3,若否,转到步骤S3.4,流程记录包括起始作业产生的用于标志一个流程的流程ID和作业分片执行记录,作业分片执行记录即为作业分片执行结果;
S3.3、判断作业分片是否已成功执行,若否,返回true,并转到步骤S3.8,若是,返回false;
S3.4、检查作业分片的依赖作业是否都有执行记录,若是,转到步骤S3.5,若否,返回false,即作业分片执行失败,整个流程都停在出错的作业,从web页面查看依赖作业以及日志,排错后清除作业分片的执行记录,再次执行步骤S3.2,其中,执行记录包括起始作业产生的用于标志一个流程的流程ID和作业分片执行记录,作业分片...

【专利技术属性】
技术研发人员:谢延泽李佳明周勇
申请(专利权)人:四川新网银行股份有限公司
类型:发明
国别省市:四川;51

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

1