如何自己设计一个定时任务分布式调度器
为什么要使用分布式调度器
分布式调度器主要应用于系统中一些任务定时调度处理。通常我们设计一个定时任务,最简单的就是直接使用@scheduled
注解配置好定时任务,这样开发工作也简单。但是也许会有一种情况,如果发生在生产环境上,需要不重启就去变更定时任务时间,或者可能由于某些原因我们需要关闭某个定时任务,那么这时候就无法做到动态化。分布式调度器就能很好的解决这些疑难杂症。
有的人可能会问:现在开源的调度器也有一些很流行的,比如xxl-job
,为什么还要自己设计一套。其实我们也不能说开源的设计不好,原因是它的功能太完善,如果要用好还要有人专门运维处理,功能过于强大,大部分功能都是鸡肋,所以自研一套简单的调度服务有些时候还是很有必要的。
分布式调度流程
首先分布式调度器需要依赖数据库配置,主要配置调度服务接口和调度时间。通过调度服务集群获取数据库配置,解析完需要进行调度的任务,由于是job服务的一个集群(也可以单机部署)所以也要考虑到加锁,防止多个job
服务同时对一个任务多次调度。最终job
服务将解析完的服务接口,检测到触发时间点就对应用服务接口发起任务调度。
分布式调度细节设计分析
数据库设计
job_info表设计:主要记录一些job任务的配置,下面分析一下主要字段:</
还没有评论,来说两句吧...