【Elastic-Job】分布式调度任务概览篇
前言
本司主要现在业务使用的技术就是当当网的Elastic-Job,刚刚使用的时候只是为了快速满足业务需求而引入的一项技术,符合主要的功能特征就是支持分布式的分片处理机制,非常适用于我司大数量的处理
内容
在开始之前先了解一些基础概念
什么是调度任务
任务调度是系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力由系统自动去执行任务
什么是分布式调度任务
将一个任务拆分成多个独立的任务项,由分布式的服务器分别执行某一个或几个分片项
分布式任务调度需求市场上的产品
- Elastic-job:当当网基于quartz二次开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分布式协调,实现任务高可用以及分片
- Saturn:唯品会开源的一个分布式任务调度平台,可以全域统一配置,统一监控,任务高可用以及分片并发,它是基于elastic-job基础之上改良出来的
- xxl-job:大众点评上的分布式任务调度平台,是一个轻量级分布式任务调度平台,其核心设计目的是开发迅速,学习简单,轻量级,易拓展,现已开发源代码并接入多家公司线上产品线开箱即用
- TBSchedule:淘宝的一款非常优秀的高性能分布式调度框架,目前被应用于阿里、京东、支付宝、国美等很多互联网企业的流程调度系统中
- Elastic-job是一个分布式调度的解决方案,由当当网开源,它由两个相互独立的子项目elastic-job-lite和elastic=cloud组成,使用elastic-job可以快速实现分布式任务调度
分布式调度任务实现目标
1.并行任务调度
2.高可用 如果一台宕机,不影响其他实例来执行任务
3.弹性扩容
当集群增加实例就可以增加并行执行任务的效率
4.任务管理与监控
对系统中存在的定时任务进行统一的管理和监测,让开发人员和运维人员能够及时了解任务执行情况,从而作出快速的应急处理响应
5.避免任务重复执行
Elastic-job的主要功能
1. 分布式调度协调
在分布式环境中,任务能够按指定的调度策略执行,并且能够避免同一个任务多实例重复执行
2. 丰富的调度策略
基于成熟的定时任务作业框架quartz corn表达式执行定时任务
3. 弹性扩容缩容
当集群中增加某一个实例,它应当能够被选举并执行任务,当集群中减少一个实例时,它所执行的任务能被转到别的实例来执行
4. 失效转移
某实例在任务执行失败后,会被转移到其他实例执行
5. 错误执行作业重触发
若因某种原因导致作业错过执行时间,自动记录错过执行的作业,并在上次作业完成后自动触发
6. 支持并行调度
支持任务分片,任务分片是指将一个任务氛围多个小任务项在多个实例同时执行
7. 作业分片一致性
当任务被分片后,保证同一分片在分布式环境中仅有一个执行实例
8. 支持作业生命周期操作
可以动态对任务进行开启以及停止操作
9. 丰富的作业类型
支持simple,dataFlow,script三种作业类型
【总结】
无论哪一种调度任务,其内部的机理都是有相通的地方,只要能理清楚一种内部的实现机制,那么使用另外一种调度任务也会得心应手,后续针对这部分内容会继续学习