【Elastic-Job】分布式调度任务概览篇

前言

本司使用任务调度,从spring自带单机任务框架演化到采用分布式调度ElasticJob,主要是本司业务和数据量的逐步增大,单机模型已经严重影响性能。但市场上比较成熟的分布式任务框架还是比较多的,比较知名的就是Elastic-Job和xxl-Job,为什么我司选择了Elastic-Job呢?

参考文档:

内容

在开始之前先了解一些基础概念
什么是调度任务
   任务调度是系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力由系统自动去执行任务
什么是分布式调度任务
  将一个任务拆分成多个独立的任务项,由分布式的服务器分别执行某一个或几个分片项

任务调度的单机模式
1.timer:是一个定时器类,通过该类可以为指定的定时任务进行配置。timerTask类是一个定时任务类,该类实现了Runnable接口,缺点是异常未肩擦魂会终止线程
2.scheduleExecutorService:相对延迟或者周期作为定时任务调度,缺点是没有决定的日期或时间
3.spring定时框架:配置的功能较多,如果系统使用单机的话可以优先考虑spring定时器

分布式任务调度需求市场上的产品

  • Elastic-job:当当网基于quartz二次开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分布式协调,实现任务高可用以及分片
  • Saturn:唯品会开源的一个分布式任务调度平台,可以全域统一配置,统一监控,任务高可用以及分片并发,它是基于elastic-job基础之上改良出来的
  • xxl-job:大众点评上的分布式任务调度平台,是一个轻量级分布式任务调度平台,其核心设计目的是开发迅速,学习简单,轻量级,易拓展,现已开发源代码并接入多家公司线上产品线开箱即用
  • TBSchedule:淘宝的一款非常优秀的高性能分布式调度框架,目前被应用于阿里、京东、支付宝、国美等很多互联网企业的流程调度系统中
  • Elastic-job是一个分布式调度的解决方案,由当当网开源,它由两个相互独立的子项目elastic-job-lite和elastic=cloud组成,使用elastic-job可以快速实现分布式任务调度

Elastic-job的主要功能
1. 分布式调度协调
在分布式环境中,任务能够按指定的调度策略执行,并且能够避免同一个任务多实例重复执
2. 丰富的调度策略
基于成熟的定时任务作业框架quartz corn表达式执行定时任务
3. 弹性扩容缩容
当集群中增加某一个实例,它应当能够被选举并执行任务,当集群中减少一个实例时,它所执行的任务能被转到别的实例来执行
4. 失效转移
某实例在任务执行失败后,会被转移到其他实例执行
5. 错误执行作业重触发
若因某种原因导致作业错过执行时间,自动记录错过执行的作业,并在上次作业完成后自动触发
6. 支持并行调度
支持任务分片,任务分片是指将一个任务氛围多个小任务项在多个实例同时执行
7. 作业分片一致性
当任务被分片后,保证同一分片在分布式环境中仅有一个执行实例
8. 支持作业生命周期操作
可以动态对任务进行开启以及停止操作
9. 丰富的作业类型
支持simple,dataFlow,script三种作业类型

【总结】

无论哪一种调度任务,其内部的机理都是有相通的地方,只要能理清楚一种内部的实现机制,那么使用另外一种调度任务也会得心应手,后续针对这部分内容会继续学习

猜你喜欢

转载自blog.csdn.net/changyinling520/article/details/109967831