一种分布式定时任务分配方法和装置与流程
- 国知局
- 2024-08-08 16:56:48
本申请属于分布式架构,具体涉及一种分布式定时任务分配方法和装置。
背景技术:
1、分布式定时框架,要求在分布式架构下的微服务集群中,单个定时任务只在集群中的一个应用节点上执行,与传统的内存中独立触发的单机定时相比,分布式定时的场景更复杂,需要管理与维护集群中节点的状态与定时任务的状态,保证定时任务只在一个节点上执行,也往往依赖于定时任务状态的持久化存储。
2、当前技术领域中的分布式定时任务的调度策略,大多是对某张数据库表通过乐观锁或者悲观锁的竞争方式获取到定时任务触发执行,这种竞争方式对数据库压力大,负载能力差,可能会导致单台服务运行了大多数的定时任务,集群资源出现严重浪费,同时,对数据库表的悲观锁竞争方式,会拉长事务的时间,额外造成数据库的压力。
3、具体而言,基于数据库竞争方式获取定时任务记录,问题有三点:
4、第一点,基于数据库竞争方式去获取每个微服务节点自身待处理的定时任务,对应用节点自身来说,扫描获取的定时任务数量取决于竞争的结果,本身的资源数量会限制可以获取到的定时任务数量,不会出现扫描到的定时任务无法执行的问题,但在资源限制范围内,每个节点都会尽力获取更多定时任务去执行,对于集群中的定时任务来说,就会导致集群的资源分配不均,可能某个节点在满负载运行,但其余节点仍然空闲。
5、第二点,如果按照在触发时间每次获取一条的方式竞争定时任务,则在集群的资源分配上,稍好于批量获取的模式,但对数据库的访问次数大幅增加,反而增加了对网络带宽与数据库资源的占用。
6、第三点,竞争的模式,在获取自身需要执行的定时任务时,每个节点都在频繁访问数据库,在悲观锁的模式下还会产生很多长事务,对于数据库本身的影响较大,大概率影响数据库的性能与资源回收。
技术实现思路
1、本申请提出了一种分布式定时任务分配方法和装置,旨在解决分布式定时场景下,定时任务在微服务集群中多个应用节点上负载不均与多节点竞争导致的执行效率降低,资源利用不充分问题,以及因为多节点频繁并发访问同一张数据库表,竞争获取定时任务导致的数据库压力变大,性能变差问题。
2、依据本申请的第一方面,提出了一种分布式定时任务分配方法,所述方法应用于微服务集群中的每个应用节点,所述微服务集群的数据库中设置有节点心跳表、节点选举表和定时任务记录表,其中所述节点心跳表的字段包括;节点地址、节点服务启动时间、心跳更新时间,所述节点选举表的字段包括:集群名称、主节点地址,所述定时任务记录表用于存储定时任务的状态信息;每个应用节点服务启动后执行如下步骤:
3、s1,启动心跳维护线程,定时在所述节点心跳表中维护自身节点的心跳记录;
4、s2,启动选举线程,利用所述节点选举表和所述节点心跳表,定时通过选举的方式竞争集群主节点;
5、s3,一旦选举成为主节点,则初始化定时任务信息到所述定时任务记录表中,并定时扫描所述定时任务记录表获取待执行定时任务;
6、s4,扫描所述节点心跳表获取可用节点的数量和地址;
7、s5,根据所述可用节点的数量和地址,采用设定的分配策略将所述待执行定时任务分配给各个可用节点进行执行。。
8、依据本申请的第二方面,提出了一种分布式定时任务的分配装置,所述装置应用于微服务集群中的每个应用节点,所述微服务集群的数据库中设置有节点心跳表、节点选举表和定时任务记录表,其中所述节点心跳表的字段包括;节点地址、节点服务启动时间、心跳更新时间,所述节点选举表的字段包括:集群名称、主节点地址,所述定时任务记录表用于存储定时任务的状态信息;每个应用节点包括如下单元:
9、心跳维护单元,用于服务启动后,启动心跳维护线程,定时在所述节点心跳表中维护自身节点的心跳记录;
10、主节点选举单元,用于启动选举线程,利用所述节点选举表和所述节点心跳表,定时通过选举的方式竞争集群主节点;
11、定时任务获取单元,用于一旦选举成为主节点,则初始化定时任务信息到所述定时任务记录表中,并定时扫描所述定时任务记录表获取待执行定时任务;
12、可用节点获取单元,用于扫描所述节点心跳表获取可用节点的数量和地址;
13、定时任务分配单元,用于根据所述可用节点的数量和地址,采用设定的分配策略将所述待执行定时任务分配给各个可用节点进行执行。
14、依据本申请的第三方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或多个程序,在所述程序运行时控制所述计算机可读存储介质所在设备执行前述的方法。
15、依据本申请的第四方面,提出了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述的方法。
16、相比于现有技术,本申请方案的特点及优点是:
17、本申请方案基于在微服务集群的数据库中设置的节点心跳表、节点选举表和定时任务记录表,实现了对集群中的应用节点的状态信息、主节点信息以及定时任务的状态信息进行管理和维护。相比于现有技术的基于数据库竞争方式获取定时任务记录,本申请实施例的方案基于原有的分布式定时设计方案,将数据库竞争模式优化为选取主节点,通过选举的方式获得集群主节点后,在主节点上进行定时任务的获取和分配,优化了定时任务分配策略,既减轻了多节点基于数据库竞争时对数据库产生的压力,释放了数据库资源,降低了数据库节点的故障概率,综合提升了定时任务的执行效率与数据库性能;同时也优化了微服务集群的资源分配,由主节点统一分配资源,更为方便地对整个集群中的多个定时任务并发进行统一控制,保证了分布式定时任务在集群中的合理分配与高效触发。
技术特征:1.一种分布式定时任务分配方法,其特征在于,所述方法应用于微服务集群中的每个应用节点,所述微服务集群的数据库中设置有节点心跳表、节点选举表和定时任务记录表,其中所述节点心跳表的字段包括;节点地址、节点服务启动时间、心跳更新时间,所述节点选举表的字段包括:集群名称、主节点地址,所述定时任务记录表用于存储定时任务的状态信息;每个应用节点服务启动后执行如下步骤:
2.根据权利要求1所述的方法,其特征在于,所述步骤s2包括:
3.根据权利要求1或2所述的方法,其特征在于,所述步骤s5具体包括:
4.根据权利要求1或2所述的方法,其特征在于,所述步骤s5具体包括:
5.一种分布式定时任务的分配装置,其特征在于,所述装置应用于微服务集群中的每个应用节点,所述微服务集群的数据库中设置有节点心跳表、节点选举表和定时任务记录表,其中所述节点心跳表的字段包括;节点地址、节点服务启动时间、心跳更新时间,所述节点选举表的字段包括:集群名称、主节点地址,所述定时任务记录表用于存储定时任务的状态信息;每个应用节点包括如下单元:
6.根据权利要求5所述的装置,其特征在于,所述主节点选举单元包括:
7.根据权利要求5或6所述的装置,其特征在于,所述定时任务分配单元具体用于:
8.根据权利要求5或6所述的装置,其特征在于,所述定时任务分配单元具体用于:
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至4任一所述的方法。
10.一种电子设备,其特征在于,包括:
技术总结本申请公开了一种分布式定时任务分配方法和装置。其方法应用于微服务集群中的每个应用节点,集群的数据库中设置节点心跳表、节点选举表和定时任务记录表,每个应用节点执行如下步骤:服务启动后启动心跳维护线程,定时在节点心跳表中维护自身节点的心跳记录;启动选举线程,利用节点选举表和节点心跳表,定时通过选举的方式竞争主节点;一旦选举成为主节点,则初始化定时任务信息到定时任务记录表中,并定时扫描定时任务记录表获取待执行定时任务;扫描节点心跳表获取可用节点信息;采用设定的分配策略将待执行定时任务分配给各个可用节点。本申请方案通过选举获得集群主节点后,在主节点上进行定时任务的获取和分配,优化了定时任务分配策略。技术研发人员:李辉,朱萌萌,薛亮,胡保祥受保护的技术使用者:中国邮政储蓄银行股份有限公司技术研发日:技术公布日:2024/8/5本文地址:https://www.jishuxx.com/zhuanli/20240808/271373.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。