本发明涉及企业管理,具体是一种基于xxl-job与kafka的分布式任务并发管理方法。
背景技术:
1、在部分具有复杂业务场景的管理业务系统中,以大型集团级企业人力系统薪酬计算为例,通常会有一些耗时工作需要执行,这些耗时工作具有配置复杂、逻辑处理复杂、一次配置多次执行、计算量大、耗时长等特点,如果采用通常意义上的用户前端配置、提交后端执行然后返回给客户端的方式实现的话,一方面部分功能无法实现,另一方面耗时长,且处理期间客户无法处理其他业务,用户体验差。
2、oracle的ebs人力系统引入请求集的概念,实现用户配置和执行的分离,勉强解决了这一问题。随着客户业务量的大幅度增加,目前oracle的这一实现思路在人员庞大、业务量大且复杂的大型集成公司业务中,已经无法满足需要。而且这一处理思路是基于oracle数据库的强大执行效率和稳定性的基础上的,在目前去o的大环境中,这一处理思路并不适用于基于国产数据库或开放源代码的数据库的环境实现。
3、请求集的实现并不难,其难点在于对耗时业务的任务的并发管理,基于对人力核心业务的任务处理思路,我们总结了一套分布式任务并发管理方法,来解决现在大型企业运营过程中的复杂业务和并发耗时请求问题。这一方法基于xxl-job和kafka实现,具有业务扩展性好、性能扩展能力强、执行效率高、稳定性好的特点。
技术实现思路
1、本发明提供一种业务扩展性好,性能扩展能力强,执行效率高,稳定性好的基于xxl-job与kafka的分布式任务并发管理方法。
2、本发明所采用的技术方案为:一种基于xxl-job与kafka的分布式任务并发管理方法,包括请求集处理流程,其分为立即执行和延迟执行。
3、对于立即执行的业务,其执行流程如下:
4、s1:业务记录;
5、s2:业务分解;
6、s3:推送请求;
7、s4:消费端处理;
8、对于延迟执行的业务,其执行流程如下:
9、s1:业务记录;
10、s2:推送业务延迟任务;
11、s3:业务分解;
12、s4:推送请求;
13、s5:消费端处理;
14、在任务完成的过程中,使用的主要技术为kafka和xxl-job;
15、对于该方法在薪酬服务中的支撑,其流程如下:
16、s1:薪酬业务终端用户在线配置薪酬计算参数和薪酬基础数据,保证后续计算的需要;
17、s2:业务记录薪酬业务配置和数据;
18、s3:根据用户配置实时或者延迟推送任务:解析主任务,将主任务分解为可并发计算的子任务,并将子任务推送到消息服务器kafka,这一步分解可以有多个实现思路,比如按照人员分解,或者按照组织部门分解,或者按照工资单分解,或者按照计算项分解;
19、s4:薪酬计算服务拉取kafka任务,并计算薪酬数据,同时更新主任务状态,这一步是整个计算的核心,可以通过热插拔式扩展来加速计算效率;
20、s5:财务比对计算结果,确定最终结果;
21、s6:推送薪酬发放模块完成发放。
22、作为本发明进一步的方案:所述立即执行的业务,具体解释如下:
23、业务记录:记录业务配置基本信息和流程状态机信息,包括提交请求集、记录请求集提交数据两个操作,作为后续业务处理和业务稽核的基本配置记录;
24、业务分解:将主业务m分解为多个阶段需要执行的任务(s),然后将每个阶段的任务s分解为可并发处理的子请求p,这样就将一个业务分解为多个阶段执行的多个原子业务,可以分别分配给不同的主机执行,从而大所述推送请求:将最后分解的任务p分别推送到kafka消息队列,供空闲的业务处理服务做业务处理;
25、消费端处理:执行任务p,并完成对任务记录的状态机改变。
26、作为本发明进一步的方案:所述延迟执行的业务,具体解释如下:
27、业务记录:和立即执行的业务一样,首先记录业务配置基本信息和流程状态机信息,作为后续业务处理和业务稽核的基本配置记录;
28、推送业务延迟任务:生成主业务m,并将m推送到xxl-job,由xxl-job实现业务的延迟执行和推送;
29、业务分解:和立即执行的业务分解阶段一致,将主业务m分解为多个阶段需要执行的任务(s),然后将每个阶段的任务s分解为可并发处理的子请求p;
30、推送请求:将最后分解的任务p分别推送到kafka消息队列,供空闲的业务处理服务做业务处理;
31、消费端处理:执行任务p,并完成对任务记录的状态机改变,同时根据任务配置逻辑,推送下一阶段的主任务m到xxl-job,供后续的定时任务处理。
32、本发明的有益效果:
33、本发明通过xxl-job实现任务的延迟执行或者定时执行,保障业务的需求通过kafka实现任务的分离和调度,保证执行效率。
34、本发明业务扩展性好,新业务只需要实现其分解逻辑和处理逻辑并配置到系统即可,任务的调度、处理结果的收集展示、后续的业务查看该方法统一支撑。
35、本发明性能扩展能力强,kafka本身可以支撑百万级的qps,在业务量大幅度增加的情况下,消费者支持热插拔,可以随时扩展。
36、本发明执行效率高,稳定性好。
1.一种基于xxl-job与kafka的分布式任务并发管理方法,其特征在于:包括请求集处理流程,其分为立即执行和延迟执行;
2.根据权利要求1所述的一种基于xxl-job与kafka的分布式任务并发管理方法,其特征在于:所述立即执行的业务,具体解释如下:
3.根据权利要求1所述的一种基于xxl-job与kafka的分布式任务并发管理方法,其特征在于:所述延迟执行的业务,具体解释如下: