本篇主要讲基于 spring quartz的多数据源、动态数据源,多任务调度中心架构原理与实现,源码分享。
在企业应用中,很多服务都是依托数据来展开的,数据是各企业的核心资源之一。大量的业务场景产生大量的数据,这些数据要被各种工具进行加工处理,最后返哺整个业务链。定时任务是最常见的数据处理手段之一。任务调度场景几乎出现在所有的企业应用中,这些任务的调度在比较庞大的场景下,就显得不好管理,因此进行任务调度的总体集成,对其进行统一管理是不得不考虑的事情了。
一、场景
某个项目是由微服务构成,有四套数据源,有两套系统完全一致的环境用在几个不同的项目中,任务调度都在各自不同的微服务里面。造成的现状就是,在各应用系统里面,调度任务与业务系统揉合在一块,高度耦合。各任务调度的配置和执行显得臃肿累赘,代码的复用率极低,又因为几个项目又略有不同,导致依然存在有不同的调度任务,各系统之间的差异性开发、测试、部署等各软件生命周期中,大型的任务调度有可能严重影响业务系统效率。
二、目标
我们要构建一套任务调度中心,要实现以下几个核心内容
- 首先要满足调度任务的常规基础需求,如:调度任务
- 满足基础需求后,还要可以热加载,无缝切换等常规操作,如:实时修改调度计划、启动时间等等。
- 支持多数据源、支持数据源动态切换、支持数据源热加载等等多数据源机制,如:一个模块实现不同数据源的切换,在线添加一个数据源并切换等等。
- 分布式事务的处理