为什么要用分布式集群任务调度?
作为一个开发者,避免不了定时任务的问题,最粗暴和简单直接的解决方案就是crontab。当然在机器少,任务不多,定时任务之间关联少的情况下,crontab效率还是比较高和便捷的。但当机器越多、定时任务越多,各个任务联系越紧密的情况下,用crontab进行定时任务的管理配置,就会非常混乱,严重影响工作效率。
机器多、定时任务多的情况下,就会遇到以下问题:
1、每个服务器各个用户下的crontab任务管理混乱,生命周期无法统一协调管理
2、定时任务运行异常告警难以统一对接
3、任务A和任务B如果存在互斥关系,crontab很难进行互斥处理
4、随着时间增长,当定时任务达到几千上万的时候,定时任务就非常难以管理,线上跑了多个定时任务,每个定时任务什么时候运行,属于哪个应用和哪个开发负责等等问题变得很难解决。
Linux原生Crontab调度系统和Quartz对比:
1、执行粒度方面:
Crontab:进程调度
Quartz:线程调度
线程调度优势:一是更节省资源,二是可以在进程内做数据交换,做数据交换这点很重要。
2、平台依赖性:
Crontab支持Linux系统
Quartz由于是Java实现,所以支持跨平台。
3、调度操作集上:
Quartz的设置更为灵活,可以很方便的通过代码完成各种自定义需求,而且完全闭包Crontab。
但是Crontab的最小调度单元为分钟级,而Quartz可以更细,Crontab实现自定义需求比较麻烦。
4、Job监控方面:
Quartz支持Listener,对job运行情况监控很方便,并且能用JobStores进行调度信息的持久化(内存、DB均可),进而可以实现job可视化。
5、高可用:
Quartz支持分布式集群,这一点很重要,而且实现很方便。
为什么要用分布式集群任务调度?
想象一下,现在有 A 、B、 C 3 台机器同时作为集群服务器对外统一提供 SERVICE,3 台机器上各有一个 QUARTZ Job,它们会按照即定的 SCHEDULE 自动执行各自的任务。由于三台SERVER 里都有 QUARTZ ,因此会存在重复处理 TASK 的现象。一般的解决方案是只在一台服务器上装 QUARTZ ,其它两台不装,这样的话其实就是单机了,quartz会存在单点问题,一旦装有quartz的服务器宕了,服务就无法提供了。当然通过改 QUARTZ JOB 的代码也可以实现,但是这对开发人员要求比较高,而且可能会出现其他问题。然而quartz本身就提供了很好的集群方案。quartz集群需要数据库的支持(JobStore TX或者JobStoreCMT),从本质上来说,是使集群上的每一个节点通过共享同一个数据库来工作而达到高可用的。分布式集群任务调度,quartz是一个比较好的选择。简单,强大,稳定。
分布式集群时有个问题,就是所有服务器时钟应当要同步,以免出现离奇且不可预知的问题。
基于spring+quartz的分布式任务调度
http://www.roncoo.com/course/view/e2b459016e2e477dbd5d67c8b23fe86d
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
把zabbix图形整合至运维平台
龙果运维平台开源项目地址: https://github.com/roncoo/roncoo-cmdb 龙果运维平台安装使用视频教程: http://www.roncoo.com/course/view/a2d58fe08172447696412fb7af1de620 今天把运维平台加上图形功能,就是把zabbix的图片整合到CMDB平台;当然要是想要非常美观的显示图形的话也是不要建议这样做;参考了好几篇博客之后,自己也写篇总结文档: 主要思路是: 1、找到zabbix图片对应的url。 2、读取URL的所有内容生成jpg文件。 3、遍历图片目录把图片文件返回前端js整合。 1、打开zabbix,找到图片的路径: http://192.168.63.216/zabbix/chart2.php?graphid=567&period=60&stime=20160907160153&updateProfile=1&profileIdx=web.screens&profileIdx2=567&width=1224&sid=0afb...
- 下一篇
Spring Boot框架如何通过Redis实现Session共享
首先了解一下Spring Boot,Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 Spring Boot特点包含如下: 1. 创建独立的Spring应用程序 2. 嵌入的Tomcat,无需部署WAR文件 3. 简化Maven配置 4. 自动配置Spring 5. 提供生产就绪型功能,如指标,健康检查和外部配置 6. 绝对没有代码生成和对XML没有要求配置 下面讲述一下如何通过Spring Boot框架实现Redis Session共享,首先准备一个Redis服务本地启动即可。 步骤一引入相关依赖jar包,在maven的pom.xml文件中增加如下依赖: <dependencies> <!--...省略其他jar包--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>sp...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6