一.LTS功能:
1.可以定义实时任务和Cron定时任务
2.可以暂停,删除任务,并且可以动态的修改任务执行时间
3.可以查看正在执行的任务和等待执行的任务
4.可以通过节点组进行应用服务隔离管理.
二.LTS主要由以下四个组件节点组成
1.JobClient: 主要负责提交任务,和接收任务执行的结果
2.TaskTracker: 负责执行任务,执行完任务反馈给JobTracker
3.JobTracker: 负责接收和分配任务,调度任务
4.admin: 节点管理和任务队列管理,查看日志,监控报警等
三.组件介绍
其中JobClient和TaskTracker是在jvm里面的线程,JobTracker是部署的LTS服务端组件,以上三个组件节点都是无状态的,可以动态的随着应用服务部署节点增加或者减少,来实现负载均衡,并且框架采用failStore容错策略.
LTS注册中心可以由zookeeper或者Redis实现,注册中心的作用进行节点暴露,master节点选举,主要针对JobTracker进行管理.
任务队列和执行日志存储可以选择mysql或者mongodb
底层通信可以用netty或者mina
FailStore
顾名思义,这个主要是用于失败了存储的,主要用于节点容错,当远程数据交互失败之后,存储在本地,等待远程通信恢复的时候,再将数据提交。
FailStore主要用户JobClient的任务提交,TaskTracker的任务反馈,TaskTracker的业务日志传输的场景下。
FailStore目前提供几种实现:leveldb,rocksdb,berkeleydb,mapdb,ltsdb,用于可以自由选择使用哪种,用户也可以采用SPI扩展使用自己的实现
四:LTS执行流程图
五.使用建议
一个jvm里面只需要一个JobClient就可以,TaskTracker也尽量保持一个,如果需要执行多种任务,可以将多个JobRunner线程提交到统一的taskTracker里面去执行.
详情请看官方Git地址介绍: GitHub - ltsopensource/light-task-scheduler: Distributed Scheduled Job Framework