2019独角兽企业重金招聘Python工程师标准>>>

功能列表

  • 分布式调度协调
  • 弹性扩容缩容
  • 失效转移
  • 错过执行作业重触发
  • 作业分片一致性,保证同一分片在分布式环境中仅一个执行实例
  • 自诊断并修复分布式不稳定造成的问题
  • 支持并行调度
  • 支持作业生命周期操作
  • 丰富的作业类型
  • Spring整合以及命名空间提供
  • 运维平台

作业类型

SimpleJob类型的作业 。 Quartz原生接口相似,但提供了弹性扩缩容和分片等功能

Dataflow类型作业,需实现DataflowJob接口。该接口提供2个方法可供覆盖,分别用于抓取(fetchData)和处理(processData)数据。

流式处理

可通过DataflowJobConfiguration配置是否流式处理。

流式处理数据只有fetchData方法的返回值为null或集合长度为空时,作业才停止抓取,否则作业将一直运行下去; 非流式处理数据则只会在每次作业执行过程中执行一次fetchData方法和processData方法,随即完成本次作业。

如果采用流式作业处理方式,建议processData处理数据后更新其状态,避免fetchData再次抓取到,从而使得作业永不停止。 流式数据处理参照TbSchedule设计,适用于不间歇的数据处理。

Script类型作业

script类型作业意为脚本类型作业,支持shell,python,perl等所有类型脚本。只需通过控制台或代码配置scriptCommandLine即可,无需编码。执行脚本路径可包含参数,参数传递完毕后,作业框架会自动追加最后一个参数为作业运行时信息。

作业配置

Elastic-Job配置分为3个层级,分别是Core, Type和Root。每个层级使用相似于装饰者模式的方式装配。

Core对应JobCoreConfiguration,用于提供作业核心配置信息,如:作业名称、分片总数、CRON表达式等。

Type对应JobTypeConfiguration,有3个子类分别对应SIMPLE, DATAFLOW和SCRIPT类型作业,提供3种作业需要的不同配置,如:DATAFLOW类型是否流式处理或SCRIPT类型的命令行等。

Root对应JobRootConfiguration,有2个子类分别对应Lite和Cloud部署类型,提供不同部署类型所需的配置,如:Lite类型的是否需要覆盖本地配置或Cloud占用CPU或Memory数量等。

一 java代码配置

二spring 命名空间配置

作业分片的策略

job-sharding-strategy-class

AverageAllocationJobShardingStrategy

全路径:

com.dangdang.ddframe.job.lite.api.strategy.impl.AverageAllocationJobShardingStrategy

策略说明:

基于平均分配算法的分片策略,也是默认的分片策略。

如果分片不能整除,则不能整除的多余分片将依次追加到序号小的服务器。如:

如果有3台服务器,分成9片,则每台服务器分到的分片是:1=[0,1,2], 2=[3,4,5], 3=[6,7,8]

如果有3台服务器,分成8片,则每台服务器分到的分片是:1=[0,1,6], 2=[2,3,7], 3=[4,5]

如果有3台服务器,分成10片,则每台服务器分到的分片是:1=[0,1,2,9], 2=[3,4,5], 3=[6,7,8]

OdevitySortByNameJobShardingStrategy

全路径:

com.dangdang.ddframe.job.lite.api.strategy.impl.OdevitySortByNameJobShardingStrategy

策略说明:

根据作业名的哈希值奇偶数决定IP升降序算法的分片策略。

作业名的哈希值为奇数则IP升序。

作业名的哈希值为偶数则IP降序。

用于不同的作业平均分配负载至不同的服务器。

AverageAllocationJobShardingStrategy的缺点是,一旦分片数小于作业服务器数,作业将永远分配至IP地址靠前的服务器,导致IP地址靠后的服务器空闲。而OdevitySortByNameJobShardingStrategy则可以根据作业名称重新分配服务器负载。如:

如果有3台服务器,分成2片,作业名称的哈希值为奇数,则每台服务器分到的分片是:1=[0], 2=[1], 3=[]

如果有3台服务器,分成2片,作业名称的哈希值为偶数,则每台服务器分到的分片是:3=[0], 2=[1], 1=[]

RotateServerByNameJobShardingStrategy

全路径:

com.dangdang.ddframe.job.lite.api.strategy.impl.RotateServerByNameJobShardingStrategy

策略说明:

根据作业名的哈希值对服务器列表进行轮转的分片策略。

自定义分片策略

实现JobShardingStrategy接口并实现sharding方法,接口方法参数为作业服务器IP列表和分片策略选项,分片策略选项包括作业名称,分片总数以及分片序列号和个性化参数对照表,可以根据需求定制化自己的分片策略。

定制化处理

Elastic-Job在配置中提供了JobProperties,用于定制化处理,目前支持自定义异常处理及作业处理线程池。

异常处理

可扩展JobExceptionHandler接口,并设置job_exception_handler定制异常处理流程,默认实现是记录日志但不抛出异常。

作业处理线程池

可扩展ExecutorServiceHandler接口,并设置executor_service_handler定制线程池

转载于:https://my.oschina.net/iioschina/blog/1925996

elastic job review相关推荐

  1. aws cloud map_Amazon EC2 – AWS Elastic Compute Cloud

    aws cloud map Amazon EC2 is an abbreviation for Elastic Compute Cloud. It's elastic in nature which ...

  2. Elasticsearch:如何在 Elastic Agents 中配置 Beats 来采集定制日志

    在我之前的文章 "Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0",我详细地描述了如何安装 Elastics ...

  3. 如何在团队中做好Code Review

    一.Code Review的好处 想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处 1.互相学习,彼此成就 无论是高手云集的架构师团队,还是以CURD为主的业务 ...

  4. 2021年大数据ELK(一):集中式日志协议栈Elastic Stack简介

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.简介 二.ELK 协议栈介绍及体系结构 三.集中式日志协议栈 ...

  5. git review devops过程

    自己搭建的devops环境是gitlab/gerrit/jenkins 1. 首先自己checkout一个自己的代码分支,一般不要在master上做直接修改 2. 修改后git add file,   ...

  6. 【Elastic Stack(一)】Elastic Stack简介

    如果你没有听说过Elastic Stack,那你一定听说过ELK.实际上ELK是三款软件的简称,分别是Elasticsearch.Logstash.Kibana组成,在发展的过程中,又有新成员Beat ...

  7. Google是如何做Code Review的?| CSDN原力计划

    作者 | 帅昕 xindoo 编辑 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...

  8. Elastic Job从单点到高可用、同城主备、同城双活

    以下文章来源方志朋的博客,回复"666"获面试宝典 来源:https://jaskey.github.io/blog/2020/05/25/elastic-job-timmer-a ...

  9. 刚进美团,就被各种Code Review,真的有必要吗?

    点击关注公众号,Java干货及时送达 众所周知,Code Review是开发过程中一个非常重要的环节,但是很多公司或者团队是没有这一环节的,今天笔者结合自己所在团队,浅谈Code Review的价值及 ...

最新文章

  1. 将MPM雪模拟移植到Maya
  2. 宁波大学计算机网络,宁波大学计算机网络TCP与UDP题目
  3. Spring5参考指南:JSR 330标准注解
  4. java session 详解
  5. 【Oracle】数据库热备
  6. 条形图设置颜色Java_java – 如何在条形图中显示每个条形的条形值?
  7. Pr常见问题,如何找回不小心删除的视频音频
  8. w3c+android,w3cschool官方版app
  9. mac adb环境变量配置
  10. 发送文件夹不存在或被删除
  11. Redis 列表(List) Redis Lpush 命令
  12. CSS-线性渐变无畸变-环形普通进度条-环形能量块进度条-局部环形普通进度条
  13. “互联网+”带给云计算的机会
  14. 联想计算机怎么设置硬盘,计算机设置硬盘启动的具体方法_如何在联想计算机上设置硬盘启动...
  15. org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont.addNewFamily()
  16. DNF之架设搭建游戏流程讲解
  17. BBEdit 12.6.3 FIXED 特别版 Mac 强大的文本和HTML编辑器及汉化工具
  18. 微信小程序接口调用渲染
  19. dm.jdbc.driver.DMException: 网络通信异常
  20. linux病毒库离线升级,更新clamav病毒库的方法

热门文章

  1. 计算机基础算法棋盘覆盖,分治算法求解棋盘覆盖问题互动教学过程.doc
  2. python字符串命名_从输入字符串到命名复制python 2.7
  3. 计算机导论第一章试题及答案,计算机导论第一章测试题
  4. mysql parametertype_MyBatis传入参数与parameterType
  5. 图解法求最优解的例题_【第四章 最优化理论】4.2 带约束最优化
  6. 阿里云centos 7.6安装mysql_阿里云服务器中Linux下centos7.6安装mysql8.0.11
  7. matlab怎么调用DeepLearn,使用DeepLearnToolbox-master中DBN工具箱做数据分类出现问题,求......
  8. 全国大学生智能车竞赛赛场准备好,就等同学们入驻展示
  9. CSDN 中秋节日礼品盒 | 中秋节快乐
  10. 利用Arduino Nano 对于另外的Arduino控制板下载Bootloader