当前位置:   article > 正文

分布式定时任务解决方案-spring boot整合JMS以及Redis实现_springboot定时任务+redis分布式所

springboot定时任务+redis分布式所

最近需要设计一个分布式的定时任务的方案,从理论上来说,Quartz已经提供了一套完善的分布式定时任务的解决方案,但是由于系统目前已有JMS集群和Redis Sentinel集群,如果想要在目前已有的架构上,实现了一个简单的分布式定时任务的话,如何来做了?总体架构设计图如下:

redis集群:提供分布式的缓存,以及实现简单的分布式锁http://blog.csdn.net/liuchuanhong1/article/details/54668460

Node1~Node3节点:定时从数据库中查询需要执行的任务,由于查询的结果是List,如果3个Node节点同时查库,并将查询的结果推送到中间件集群中,那么待执行的任务肯定是会重复的(分库的话,另说)。换句话说,同一时间,只允许一个Node节点活动,没有获取到分布式锁的节点则阻塞,直到获取到锁,同时避免出现单节点故障。

JMS集群:解耦,Node节点会将从数据库中查询出的待处理任务打散后(充分利用多个任务Node的特性,比如此时查询出来的待执行任务有10个,则可以将这10个任务分别推送到不同的Execute Node上执行,避免这10个任务在一个Node上执行)推送到JMS对应的队列中。

Execute Node节点:监听JMS的队列,并从队列中取出待执行的任务,并异步执行http://blog.csdn.net/liuchuanhong1/article/details/54603546

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/728112
推荐阅读
相关标签
  

闽ICP备14008679号