Elastic-Job原理

Elastic-Job

elastic-job(quartz的扩展)使用了quartz的调度机制,内部原理一致,使用注册中心(zookeeper)替换了quartz的jdbc数据存储方式,支持分片等特殊功能

zk部署在有状态容器中会增加运维成本(或者可以先部署在非容器中)

  1. 分布式调度协调,去中心化(主节点选举机制)
  2. 无数据库瓶颈,性能高,任务数大且要求低延迟时,一般不需要做二次分发(只要划分更多的分片,分片粒度更细)
  3. 弹性扩容缩容
  4. 失效转移
  5. 错过执行作业重触发
  6. 作业分片一致性,保证同一分片在分布式环境中仅一个执行实例
  7. 支持单独配置单个任务的策略配置
  8. 支持脚本任务

作业类型

  • Simple 类型作业:Simple 类型用于一般任务的处理,只需实现SimpleJob接口。该接口仅提供单一方法用于覆盖,此方法将定时执行,与Quartz原生接口相似。
  • Dataflow 类型作业:Dataflow 类型用于处理数据流,需实现DataflowJob接口。该接口提供2个方法可供覆盖,分别用于抓取(fetchData)和处理(processData)数据。
  • Script类型作业:Script 类型作业意为脚本类型作业,支持 shell,python,perl等所有类型脚本。只需通过控制台或代码配置 scriptCommandLine 即可,无需编码。执行脚本路径可包含参数,参数传递完毕后,作业框架会自动追加最后一个
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elastic-Job是一个分布式任务调度框架,基于ZooKeeper实现了分布式的任务协调和调度。它的原理可以概括为以下几个步骤: 1. 注册中心的连接:Elastic-Job通过连接ZooKeeper注册中心来进行任务的注册和协调。每个任务节点都会在注册中心进行注册,以便其他节点可以发现和协调任务。 2. 任务的分片:Elastic-Job将任务分成多个片段(shard),每个片段由一个或多个任务节点执行。分片的目的是将任务拆分成多个部分,以便并行执行和负载均衡。 3. 任务的调度:Elastic-Job根据任务配置的调度表达式(cron表达式)来触发任务的执行。调度器会根据表达式计算下一次任务执行的时间,并通知对应的任务节点执行任务。 4. 任务的协调:在多节点环境下,Elastic-Job通过ZooKeeper实现了分布式锁和协调机制,确保同一时间只有一个节点执行特定的任务片段。其他节点会等待锁释放后再去执行其他片段。 5. 任务的执行:任务节点收到调度器的通知后,根据配置的任务逻辑执行具体的业务逻辑。每个节点只负责执行自己被分配到的任务片段。 6. 任务的监控和统计:Elastic-Job提供了丰富的监控和统计功能,可以通过控制台或API获取任务的执行情况、成功率、失败率等信息,方便进行任务的管理和监控。 通过以上步骤,Elastic-Job实现了分布式任务的调度和执行,并提供了高可用、负载均衡、故障恢复等功能,使得分布式任务的开发和管理变得更加简单和可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值