Elastic-Job
elastic-job(quartz的扩展)使用了quartz的调度机制,内部原理一致,使用注册中心(zookeeper)替换了quartz的jdbc数据存储方式,支持分片等特殊功能
zk部署在有状态容器中会增加运维成本(或者可以先部署在非容器中)
- 分布式调度协调,去中心化(主节点选举机制)
- 无数据库瓶颈,性能高,任务数大且要求低延迟时,一般不需要做二次分发(只要划分更多的分片,分片粒度更细)
- 弹性扩容缩容
- 失效转移
- 错过执行作业重触发
- 作业分片一致性,保证同一分片在分布式环境中仅一个执行实例
- 支持单独配置单个任务的策略配置
- 支持脚本任务
作业类型
- Simple 类型作业:Simple 类型用于一般任务的处理,只需实现SimpleJob接口。该接口仅提供单一方法用于覆盖,此方法将定时执行,与Quartz原生接口相似。
- Dataflow 类型作业:Dataflow 类型用于处理数据流,需实现DataflowJob接口。该接口提供2个方法可供覆盖,分别用于抓取(fetchData)和处理(processData)数据。
- Script类型作业:Script 类型作业意为脚本类型作业,支持 shell,python,perl等所有类型脚本。只需通过控制台或代码配置 scriptCommandLine 即可,无需编码。执行脚本路径可包含参数,参数传递完毕后,作业框架会自动追加最后一个