Home - fengkar/elastic-job GitHub Wiki

Welcome to the elastic-job wiki!

Introduction Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架。去掉了和dd-job中的监控和ddframe接入规范部分。 ddframe其他模块也有可独立开源的部分,之前当当曾开源过dd-soa的基石模块DubboX。

任务规划分级

开发中任务

  • ISSUE 26 [功能提升] 增加作业和ip对应的运行关系

开源爱好者可认领的任务

  • ISSUE 18 [功能提升] 增加上次作业运行消耗时间记录功能
  • ISSUE 27 [BUG] 运维平台缺少disable服务器的开关
  • ISSUE 29 英文版的job-console
  • 作业删除功能,包含作业进程停止,zk信息删除和console操作支持

待明确范围的任务

  • ISSUE 2 [未确定的问题] 不能创建前置任务
  • ISSUE 4 [未确定的问题] 任务不能保证全局成功
  • ISSUE 24 [功能提升] 增加与DataFlow平行的MQFlow类型的作业
  • ISSUE 25 [功能提升] 多维度SLA监控报告

未确定的任务

  • 稳定性提升
  • 事件触发
  • 细粒度的缓存监听,使用NodeCache和childrenCache代替TreeCache
  • 使用主动心跳监测机制代替zk session过期监测作业健康状态

采用的公司和使用场景

希望加入的功能

  • 暂无,欢迎更新

目前发现的较为常见的问题

  • 使用Curator不同版本可能会导致问题。如:leaderlatch无法选举的问题,经过排查是curator-recipe版本问题,我用了2.9.1,和2.8.0不兼容,改成2.8就ok了。

常见问题解答

  • Cron设置为每隔1分钟执行,但实际每次执行的时间需要1.5分钟,EJ会不会放弃下次任务? (lengfo,2016-02-29) --支持misfire,如果启用则任务错过重新执行。

  • getOffsetService().getOffsets() 和 上下文context.getOffsets()有什么区别,是否会影响到失败转移? (Sean,2016-02-29) --getOffsetService().getOffsets():从zk取offset;context.getOffsets()从内存取offset。 zk和内存是使用curator的treecache同步的,但是有短时间的不一致。 如果每次处理作业都实时从ZK取offset会导致性能问题,zk可能撑不住,所以建议offset存在客户端内存中;但当前机器挂掉了会丢失offset进度。

  • 可否在业务代码中定义故障转移的情况? 比如数据库连接在1台节点上失败,是否可以将任务转移到正常节点上? (Sean,2016-03-01) --关闭failover后,执行失败的分片会在下次触发作业时重分片到正常节点执行