分布式定时任务解决方案-spring boot整合JMS以及Redis实现
2017-03-20 18:29
791 查看
最近需要设计一个分布式的定时任务的方案,从理论上来说,Quartz已经提供了一套完善的分布式定时任务的解决方案,但是由于系统目前已有JMS集群和Redis Sentinel集群,如果想要在目前已有的架构上,实现了一个简单的分布式定时任务的话,如何来做了?总体架构设计图如下:
redis集群:提供分布式的缓存,以及实现简单的分布式锁http://blog.csdn.net/liuchuanhong1/article/details/54668460
Node1~Node3节点:定时从数据库中查询需要执行的任务,由于查询的结果是List,如果3个Node节点同时查库,并将查询的结果推送到中间件集群中,那么待执行的任务肯定是会重复的(分库的话,另说)。换句话说,同一时间,只允许一个Node节点活动,没有获取到分布式锁的节点则阻塞,直到获取到锁,同时避免出现单节点故障。
JMS集群:解耦,Node节点会将从数据库中查询出的待处理任务推送到JMS对应的队列中。
Execute Node节点:监听JMS的队列,并从队列中取出待执行的任务,并异步执行http://blog.csdn.net/liuchuanhong1/article/details/54603546
redis集群:提供分布式的缓存,以及实现简单的分布式锁http://blog.csdn.net/liuchuanhong1/article/details/54668460
Node1~Node3节点:定时从数据库中查询需要执行的任务,由于查询的结果是List,如果3个Node节点同时查库,并将查询的结果推送到中间件集群中,那么待执行的任务肯定是会重复的(分库的话,另说)。换句话说,同一时间,只允许一个Node节点活动,没有获取到分布式锁的节点则阻塞,直到获取到锁,同时避免出现单节点故障。
JMS集群:解耦,Node节点会将从数据库中查询出的待处理任务推送到JMS对应的队列中。
Execute Node节点:监听JMS的队列,并从队列中取出待执行的任务,并异步执行http://blog.csdn.net/liuchuanhong1/article/details/54603546
相关文章推荐
- 2种基于简单定时任务实现分布式定时任务的技术解决方案(zookeeper、redis和内联MQ)
- SpringMVC整合Quartz实现定时任务以及Tomcat服务执行初始化定时任务
- Spring与Quartz的整合实现定时任务调度 以及crontab的用法
- 基于Redis实现分布式锁以及任务队列
- SpringCloud定时任务需要用redis实现分布式全局锁的相关操作
- quarzy实现定时任务以及和spring整合
- 定时任务分布式锁的简单实现-Redis
- 基于Redis实现分布式锁以及任务队列
- SpringMVC整合Quartz实现定时任务以及Tomcat服务执行初始化定时任务
- Spring Boot与Quartz集成实现分布式定时任务集群
- Spring与Quartz的整合实现定时任务
- Spring整合quart 实现动态配置定时任务
- php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理
- Spring 3整合Quartz 2实现定时任务--转
- Spring 3整合Quartz 2实现定时任务一:常规整合
- php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理
- php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理
- Spring 3整合Quartz 2实现定时任务二:动态添加任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring 3整合Quartz 2实现定时任务