elastic-job学习笔记

一概念

elastic-job 是基于Zookepper和Quartz开发并开源的分布式定时任务,解决了Quartz不支持分布式的弊端。支持扩容,由Zookepper监控和管理job,支持失效转移(失效转移是一种备份模式,当主要组件无法工作时,系统组件功能转嫁到二级组件)

二Quartz,Spring-task存在的问题

1不敢轻易随服务节点部署,可能会重复多次执行导致系统逻辑发生问题

2Quartz 的寄去仅仅用作HA随着节点的增加每次的执行效率并不能提高,即不支持水平扩展

三Quartz,Spring-task,elastic-job的区别

Spring-task:

                     1量级轻,配置简单

                      2调度任务是串行,每次执行任务都只有一个对象如果定义了多个定时任务,当前一个定时任务没有跑完,那么就                         算 是下一个任务到了定时的时间也不会执行

                      3当定时任务出现异常时,整个定时器任务生命周期结束,不会在继续执行别的定时任务

                      4可以通过注解配置job

Quartz:1每次执行任务都会创建一个任务对象,调度任务可以控制,默认情况下当前一个定时任务没有执行完毕,下一个定时任                 务也会执行,但是可以通过配置使他串行执行

              2Quartz用有Spring-task的所有功能

              3当执行定时任务抛出异常时,下一个定时任务仍然可以正常执行

              4需要手动配置job

              5可以采用集群方式分布式部署在多台机器,分配执行定时任务

elastic-job:elastic-job是基于Zookepper和Quartz开发的,开源的定时任务,具备Quarz的全部功能

elastic-job的组成

elastic-job由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成,一般来说使用Elastic-Job-Lite就能够满足需求

elastic-job工作原理

当用户数量庞大时,elastic-job底层调用Quartz通过zookeeper动态给任务进行分片处理,再执行任务时可以通过集群水平扩展,集群的每个节点都负责处理一定数量的数据,当任务量庞大时,可以通过增加集群节点来解决,若需n台机器跑任务,则可以将任务分为n片,框架通过zk协调最终让n台机器分到任务片,再此基础上在增加一台机器n+1,此时n+1无法获取到任务分片,作业程序将不会执行,但是如果n台机器中有某一台出现问题挂了,那么这台问题机器的任务分片会被n+1这台机器执行,替代这台问题机器;如果又有一台机器挂了,那么他的任务分片会随机分配到已存在且正常运行的机器上,这种特性成为弹性扩容

1分片概念:分布式任务的执行将一个任务拆分为多个独立的子任务,由分布式机器执行一个或多个子任务

定时任务分类:1Simple类型定时任务:需要实现SimpleJob接口,是未经过任何封装的定时任务的简单实现

                         2Dataflow类型定时任务:主要用于处理数据流,需要实现DataflowJob接口,接口可以提供2个方法可供覆盖,分                            别用于抓取(fetchData)和处理(processData)数据。

                        3Script类型定时任务:意为脚本类型作业,支持shell,python和perl等所有类型脚本,应用得不太多

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值