quartz web

基于Quartz编写一个可复用的分布式调度任务管理WebUI组件

不打扰是莪最后的温柔 提交于 2020-04-12 07:49:52
前提 创业小团队,无论选择任何方案,都优先考虑节省成本。关于分布式定时调度框架,成熟的候选方案有 XXL-JOB 、 Easy Scheduler 、 Light Task Scheduler 和 Elastic Job 等等,其实这些之前都在生产环境使用过。但是想要搭建高可用的分布式调度平台,这些框架(无论是否去中心化)都需要额外的服务器资源去部署中心调度管理服务实例,甚至有时候还会依赖一些中间件如 Zookeeper 。回想之前花过一段时间看 Quartz 的源码去分析它的线程模型,想到了它可以基于 MySQL ,通过一个不是很推荐的 X 锁方案( SELECT FOR UPDATE 加锁)实现服务集群中单个触发器只有一个节点(加锁成功的那个节点)能够执行,这样子,就能够仅仅依赖于现有的 MySQL 实例资源实现分布式调度任务管理。一般来说,有关系型数据保存需求的业务应用都会有自己的 MySQL 实例,这样子就能几乎零成本引入一个分布式调度管理模块。某个加班的周六下午敲定了初步方案之后,花了几个小时把这个轮子造出来了,效果如下: 方案设计 先说说用到的所有依赖: Uikit :选用的前端的一个轻量级的 UI 框架,主要是考虑到轻量、文档和组件相对齐全。 JQuery :选用 js 框架,原因只有一个:简单。 Freemarker :模板引擎,主观上比 Jsp 和