quartz详解1:初步了解quartz
http://blog.itpub.NET/11627468/viewspace-1763389/
一、引入
你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行。一个自动执行而无须干预的任务在执行过程中如果发生一个严重错误,应用能够知到其执行失败并尝试重新执行吗?你和你的团队是用Java编程吗?如果这些问题中任何一个你回答是,那么你应该使用Quartz调度器。
旁注:Matrix目前就大量使用到了Quartz。比如,排名统计功能的实现,在Jmatrix里通过Quartz定义了一个定时调度作业,在每天凌晨一点,作业开始工作,重新统计大家的Karma和排名等。还有,RSS文件的生成,也是通过Quartz定义作业,每隔半个小时生成一次RSS XML文件。
二、为什么研发团队会选择quartz
- java编写的开源作业调度框架设计,用于J2SE和J2EE应用方便集成。
- 资历够老,创立于1998年,比struts1还早,而且一直在更新(24 Sept 2013: Quartz 2.2.1 Released),文档齐全。
- 设计清晰简单:核心概念scheduler,trigger,job,jobDetail,listener,calendar
- 支持集群:org.quartz.jobStore.isClustered 最重要的一点原因是quartz是支持集群的。不然JDK自带Timer就可以实现相同的功能。
- 支持任务恢复:requestsRecovery
- 普及面很广,JAVA开发人员比较熟悉。
- Apache2.0开源协议,允许代码修改,再商业发布。
关于quartz集群网上文章介绍很多,拿一张常见的图来说明。

- Quartz集群中的每个节点是一个独立的Quartz应用,它又管理其它的节点。
- 需要分别对每个节点分别启动或停止。不像应用服务器的集群,独立的Quartz节点并不与另一个节点或是管理节点通信。
- Quartz应用是通过数据库表来感知到另一应用。
- Quartz应用定时15秒同步一次心跳到数据库。
- Quartz通过数据库行锁来解决分布式环境下数据一致性问题。

Quartz官网: http://quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-11
问题:由于Quartz的集群基于对表进行行锁,Quartz内部的DB操作大量Trigger存在严重竞争问题,瞬间大量trigger执行。
答:目前只能通过(org.quartz.jobStore.tablePrefix = QRTZ)分表操作,存在长时间lock_wait(新版本据说有提高)。Quartz2.x已经支持可选节点执行job,需要测试spring最新版本是否支持Quartz的集成。
关于锁的机制,后续文章会对quartz源码进行分析。
四、如何使定时任务的开发方便,易于管理。
阿里开源项目easySchedule在quartz集群的基础上搭建了一个简单的管理平台。解决了可视化、易配置、统一监控告警功能。
实现调度与执行的分离,使任务不需要再去关注定时,只需要实现任务接口即可。
调度通过HTTP来调用执行任务。
easySchedule系统特点:
1、 Server和Client分别支持集群和分布式部署
2、 任务的执行与调度分离
3、 可视化管理所有任务
4、 任务状态持久化于DB
5、 完善的日志跟踪和告警策略
6、 任务支持异步调度
7、 灵活支持各种自定义任务,扩展方便
quartz详解1:初步了解quartz的更多相关文章
- quartz详解3:quartz数据库集群-锁机制
http://blog.itpub.NET/11627468/viewspace-1764753/ 一.quartz数据库锁 其中,QRTZ_LOCKS就是Quartz集群实现同步机制的行锁表,其表结 ...
- quartz详解4:quartz线程管理
http://blog.itpub.NET/11627468/viewspace-1766967/ quartz启动后有多个线程同时在跑.启动时会启动主线程.集群线程.检漏线程.工作线程.主线程负责查 ...
- quartz详解2:quartz由浅入深
http://blog.itpub.net/11627468/viewspace-1763498/ 一.quartz核心概念 先来看一张图: scheduler 任务调度器 trigger 触 ...
- 转载:quartz详解:quartz由浅入深
转载网址:http://blog.itpub.net/11627468/viewspace-1763498/ 一.quartz核心概念 先来看一张图: scheduler 任务调度器 ...
- EventBus使用详解(一)——初步使用EventBus
一.概述 EventBus是一款针对Android优化的发布/订阅事件总线.主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间 ...
- SqlHelper 帮助文档及详解--项目初步搭建
微软SqlHelper类中文注释和使用方法 相关链接: http://blog.csdn.net/itmaxin/article/details/7609566 SqlHelper.cs是N年前微软出 ...
- quartz配置文件详解
quartz配置文件详解(转载) quartz学习总结: 一.关于job: 用Quartz的行话讲,作业是一个执行任务的简单Java类.任务可以是任何Java代码.只需你实现org.qu ...
- quartz (从原理到应用)详解篇(转)
一.Quartz 基本介绍 1.1 Quartz 概述 1.2 Quartz特点 1.3 Quartz 集群配置 二.Quartz 原理及流程 2.1 quartz基本原理 2.2 quartz启动流 ...
- EventBus (一) 使用详解——初步使用EventBus
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 前言:EventBus是上周项目中用到的,网上的文章大都一样,或者过时,有用的没几篇,经过琢磨,请教他人,也终于弄清楚点眉目,记 ...
随机推荐
- 15 SQL中的安全问题
SQL中的安全问题 1.SQL注入 demo1: SELECT * FROM user WHERE username = ? AND password ...
- 拷贝Maven工程依赖的jar包出来
参考:https://blog.csdn.net/fengsheng5210/article/details/80491731
- P1075 链表元素分类
P1075 链表元素分类 转跳点:
- 51nod 1433:0和5
1433 0和5 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 取消关注 小K手中有n张牌,每张牌上有一个一位数的数, ...
- 数据库-----catalog与schema简介
在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题 一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表 ...
- Oracle delete 之后恢复数据
当我们粗心大意直接delete from不加条件而又没有回滚的时候有一个很简单的方法能够将数据恢复到delete之前的状态 第一种方案已经帮助我解决了实际问题.第二种方案暂未实践 在此记录下以便日后查 ...
- SSM 整合配置以及一个简单登陆案例(个人记录)
SSM 文件以及大部分参考博客 https://blog.csdn.net/qq598535550/article/details/51703190 简答的登陆注册案例下载链接在末尾补贴图了 我建立的 ...
- jmeter常见错误及解决方法
jmeter常见错误: 错误一: Response code: Non HTTP response code: java.net.SocketTimeoutException Response m ...
- JuJu团队11月25号工作汇报
JuJu团队11月25号工作汇报 JuJu Scrum 团队成员 今日工作 剩余任务 困难 于达 实现随机采样函数,进行onehot处理 预处理数据集,将数据集转为矩阵读入 数据集预处理比想象中麻 ...
- MSDN原版系统镜像ISO下载站
官网 网址1:http://www.imsdn.cn/ Windows 10 最新版本 1909 正式版 ISO 镜像下载 (微软 MSDN / VL 官方原版系统) 网址2:https://www. ...