Group为组,可以理解为部门,所有资源按部门隔离(Netty除外)
一个独立运行线程,用于扫描超过时间的触发器并发送邮件通知
一个独立运行线程,用于扫描失去心跳的Executor Detail 并发送邮件通知 这里理解为执行任务机器即可
一个独立运行线程,为调度线程,通过提取执行触发器并放入TaskThreadPool线程池执行任务
线程池,用于执行任务,创建执行请求发送给机器执行任务
线程池,为客户端使用,Netty接收到执行请求后将任务扔给线程池执行并响应服务端接收到请求
netty的HTTP服务器,序列化采用Hessian,服务端和客户端均有一个
netty client端的池子,用于缓存server端调度客户端的netty client 提高性能
客户端注册+心跳的组合操作线程,提供心跳与注册功能,server 依据此判断机器是否还活着
spring boot admin server 端
调度服务端,也包括web端,分为两块:1、tomcat 2、netty tomcat主要用于服务于web管理端,netty 用于调度任务端
服务端和客户端公用的结构和逻辑
客户端,用于接收调度端的请求,在执行完成后通知调度端
一个使用例子,提供非spring项目和spring项目例子,spring boot和spring相同只是配置不同,参考spring官方手册
调度端采用DB的行锁,所以请务必按照sql脚本的引擎创建lock表,对于并发访问的结构已经采用db锁,所以可以部署多台调度端,采用NGINX来做负载均衡。至于client端也可部署多台,调度端支持任务失败重试。
任务明细,包含字段及注释参考sql源码
触发器明细,包含字段及注释参考sql源码
正在执行的触发器,包含字段及注释参考sql源码
触发器所属的执行器,包含字段及注释参考sql源码
执行器下面的机器列表,包含字段及注释参考sql源码
数据库锁,包含字段及注释参考sql源码
用户信息,包含字段及注释参考sql源码
日志信息,包含字段及注释参考sql源码
用户组(部门),包含字段及注释参考sql源码
按钮信息,包含字段及注释参考sql源码
菜单信息,包含字段及注释参考sql源码
角色信息,包含字段及注释参考sql源码
角色、菜单多对多关联表,包含字段及注释参考sql源码
角色、按钮多对多关联表,包含字段及注释参考sql源码
角色、用户多对多关联表,包含字段及注释参考sql源码