Distributed scheduled job framework

Overview

ElasticJob - distributed scheduled job solution

Official website: https://shardingsphere.apache.org/elasticjob/

Stargazers over time

ElasticJob is a distributed scheduling solution consisting of two separate projects, ElasticJob-Lite and ElasticJob-Cloud.

Through the functions of flexible scheduling, resource management and job management, it creates a distributed scheduling solution suitable for Internet scenarios, and provides a diversified job ecosystem through open architecture design. It uses a unified job API for each project. Developers only need code one time and can deploy at will.

ElasticJob became an Apache ShardingSphere Sub-project on May 28 2020.

Welcome communicate with community via mail list.

License

GitHub release

Maven Status Build Status GitHub Workflow codecov

Introduction

Using ElasticJob can make developers no longer worry about the non functional requirements such as jobs scale out, so that they can focus more on business coding; At the same time, it can release operators too, so that they do not have to worry about jobs high availability and management, and can automatic operation by simply adding servers.

ElasticJob-Lite

A lightweight, decentralized solution that provides distributed task sharding services.

ElasticJob-Lite Architecture

ElasticJob-Cloud

Uses Mesos to manage and isolate resources.

ElasticJob-Cloud Architecture

ElasticJob-Lite ElasticJob-Cloud
Decentralization Yes No
Resource Assign No Yes
Job Execution Daemon Daemon + Transient
Deploy Dependency ZooKeeper ZooKeeper + Mesos

Features

  • Elastic Schedule

    • Support job sharding and high availability in distributed system
    • Scale out for throughput and efficiency improvement
    • Job processing capacity is flexible and scalable with the allocation of resources
  • Resource Assign

    • Execute job on suitable time and assigned resources
    • Aggregation same job to same job executor
    • Append resources to newly assigned jobs dynamically
  • Job Governance

    • Failover
    • Misfired
    • Self diagnose and recover when distribute environment unstable
  • Job Dependency (TODO)

    • DAG based job dependency
    • DAG based job item dependency
  • Job Open Ecosystem

    • Unify job api for extension
    • Support rich job type lib, such as dataflow, script, HTTP, file, big data
    • Focus business SDK, can work with Spring IOC
  • Admin Console

    • Job administration
    • Job event trace query
    • Registry center management

Environment Required

Java

Java 8 or above required.

Maven

Maven 3.5.0 or above required.

ZooKeeper

ZooKeeper 3.6.0 or above required. See details

Mesos (ElasticJob-Cloud only)

Mesos 1.1.0 or compatible version required (For ElasticJob-Cloud only). See details

Comments
  • Discuss about donate Elastic-Job as a subproject of Apache ShardingSphere

    Discuss about donate Elastic-Job as a subproject of Apache ShardingSphere

    Hello everyone,

    I am the founder of Elastic-Job, the project is established by dangdang.com. I have no time to develop Elastic-Job and maintain the community during recent 3 years.

    Currently, we need a distribute scheduler framework to process data migration of Apache ShardingSphere(https://github.com/apache/shardingsphere), I am VP of Apache ShardingSphere too. I want start a discussion about donate elastic-job as a subproject of Apache ShardingSphere.

    The benefits are:

    1. Apache ShardingSphere is an active community, there are more contributors to deal with Elastic-Job.
    2. We can continuous develop more features of Elastic-Job.

    The challenge for current community is:

    1. All issue and pull request need change to English.

    Please give some advice. If no suitable reason to reject, I will try to ask dangdang.com provide SGA for donation and start to write the proposal.

    Welcome give me some feedback, thank you very much.

    disscussion 
    opened by terrymanu 40
  • Job conflict with register center

    Job conflict with register center

    There is a problem with elasitcjob 3. X. I have two nodes for task scheduling service. The first node starts normally, and the second node reports job conflict with register center exception. What is the reason?

    duplicate 
    opened by xiebin2015 17
  •  ReconcileService线程数一直在陡增

    ReconcileService线程数一直在陡增

    Please answer these questions before submitting your issue. Thanks! 开源不易,我们希望将精力放在完成新功能和解决有价值的问题上,为了让大家的配合更具有效率,请填写以下列出的全部问题

    Which version of Elastic-Job do you using?(您使用的Elastic-Job版本为?) elastic-job-lite:2.1.5 Expected behavior (您预期的结果是) 如何把ReconcileService和Curator-TreeCache 线程数稳定住,现在一直在增加 Actual behavior (实际运行的结果是) 每天这两个线程大概增加一倍的数量 Steps to reproduce the behavior (可重现问题的操作步骤)

    1.手工创建任务 new SpringJobScheduler(elasticJob, regCenter, liteJobConfiguration, jobEventRdbConfiguration, elasticJobListeners).init(); 2.手工删除任务 JobRegistry.getInstance().shutdown(jobName); //清除对象和zookepper缓存 regCenter.remove("/" + jobName); //清除目录

    1. 提供接口触发elasticjob任务,然后延迟30s执行
    2. 实时触发的时候实际是修改定时任务的cron的值
    3. 但是发现"ReconcileService" prio=5 os_prio=0 tid=0x00007f9330386800 nid=0x2dae1 waiting on condition [0x00007f9220ad1000] 和"Curator-TreeCache-2" daemon prio=5 os_prio=0 tid=0x00007f94f0010800 nid=0x29a6f waiting on condition [0x00007f93196dd000] 线程数一直在增加. 其实我们的定时任务只有10个,每天就是修改这10个任务的相应执行实际;
    4. 不知道这样使用是否有什么问题? 以前我们是要实现实时任务就是新增定时任务,就是延迟1min来执行,但是这样会产生大量的任务;线程数同样也是没法控制住;最终我们采用修改时间的办法来实现,发现这两个线程的数量是一致的.

    Please provide the reproduce example codes (such as github link),otherwise we will label the issue as Invalid and close it.(为了节省复现问题的时间,请务必提供可重现的代码,否则我们会将issue直接标记为invalid并关闭) Code should based on https://github.com/elasticjob/elastic-job-example (代码请基于 https://github.com/elasticjob/elastic-job-example)

    duplicate 
    opened by caozhenhuamail 17
  • 有服务器节点挂掉,没有实现失效转移,从源码看应该是bug

    有服务器节点挂掉,没有实现失效转移,从源码看应该是bug

    试了各种办法模拟失效转移都不成功,仔细研究了源码,发现源码中有个小bug。 `class JobCrashedJobListener extends AbstractJobListener {

        @Override
        protected void dataChanged(final String path, final Type eventType, final String data) {
            if (isFailoverEnabled() && Type.NODE_REMOVED == eventType && instanceNode.isInstancePath(path)) {
                String jobInstanceId = path.substring(instanceNode.getInstanceFullPath().length() + 1);
                if (jobInstanceId.equals(JobRegistry.getInstance().getJobInstance(jobName).getJobInstanceId())) {
                    return;
                }
                List<Integer> failoverItems = failoverService.getFailoverItems(jobInstanceId);
                if (!failoverItems.isEmpty()) {
                    for (int each : failoverItems) {
                        failoverService.setCrashedFailoverFlag(each);
                        failoverService.failoverIfNecessary();
                    }
                } else {
                    for (int each : shardingService.getShardingItems(jobInstanceId)) {
                        failoverService.setCrashedFailoverFlag(each);
                        failoverService.failoverIfNecessary();
                    }
                }
            }
        }
    }`
    

    失效转移是从这个监听器开始的,当zookeeper上有服务器节点被Removed时,触发监听,查询该服务器被分配的任务项 public List<Integer> getShardingItems(final String jobInstanceId) { JobInstance jobInstance = new JobInstance(jobInstanceId); if (!serverService.isAvailableServer(jobInstance.getIp())) { return Collections.emptyList(); } List<Integer> result = new LinkedList<>(); int shardingTotalCount = configService.load(true).getTypeConfig().getCoreConfig().getShardingTotalCount(); for (int i = 0; i < shardingTotalCount; i++) { if (jobInstance.getJobInstanceId().equals(jobNodeStorage.getJobNodeData(ShardingNode.getInstanceNode(i)))) { result.add(i); } } return result; } 在查询宕机服务器分配的任务项时,先判断该服务器是否可用,如果可用,才继续查询 `public boolean isAvailableServer(final String ip) { return isEnableServer(ip) && hasOnlineInstances(ip); }

    private boolean hasOnlineInstances(final String ip) {
        for (String each : jobNodeStorage.getJobNodeChildrenKeys(InstanceNode.ROOT)) {
            if (each.startsWith(ip)) {
                return true;
            }
        }
        return false;
    }`
    

    判断服务器节点是否可用的方法如上,如果服务器节点存在,认为可用,这与上面失效转移监听被触发的条件(服务器节点被removed)相矛盾

    bug 
    opened by huuusome 17
  • 任务重复执行BUG

    任务重复执行BUG

    Please answer these questions before submitting your issue. Thanks!

    Which version of Elastic-Job do you using?

    2.0.5

    Expected behavior

    启动task后,在Job平台上点击触发,触发任务执行,执行完后,下一次任务按schedule设定的time触发下一次执行。

    Actual behavior

    启动task后,在Job平台上点击触发,触发任务执行,执行完后,没到配置的时间,立即开始了下一次的执行。两次执行完后,Job停止执行。

    Steps to reproduce the behavior

    任务schedule的CRON:0 * 12 10 * ? 第一次执行完的时间:01/11 22:50:14.142 第二次开始执行的时间:01/11 22:50:14.163

    Please provide the reproduce example codes (such as github link) if possible.

    作业的xml配置:

    <!--配置作业注册中心 -->
        <reg:zookeeper id="regCenter" server-lists="#{systemEnvironment.JAVA_ZOOKEEPER_HOST}"
                       namespace="task/dsp-ps-dts" base-sleep-time-milliseconds="1000"
                       max-sleep-time-milliseconds="3000" max-retries="3"/>
    
    <job:simple id="adtsJobA" class="dsp.ps.dts.task.job.DtsJobA" registry-center-ref="regCenter"
                    cron="0 * 12 10 * ?" sharding-total-count="1" description="数据迁移任务A"/>
    

    Job平台上: 支持自动失效转移 未勾选 支持misfire 已勾选

    invalid 
    opened by kevinye1227 17
  • 集群有6个节点,任务有上万个,集群重启后部分定时服务无论如何都无法运行

    集群有6个节点,任务有上万个,集群重启后部分定时服务无论如何都无法运行

    以下为生产的线程镜像: `"order-autoconfirmreceive-job-0ff1c802d8df43dca22c251cd159d0d0_QuartzSchedulerThread" #6964 prio=5 os_prio=0 tid=0x00007f375dd9a800 nid=0x8a3f in Object.wait() [0x00007f36033c2000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.quartz.simpl.SimpleThreadPool.blockForAvailableThreads(SimpleThreadPool.java:452) - locked <0x00000000c7d59588> (a java.lang.Object) at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:263)

    "order-autoconfirmreceive-job-0ff1c802d8df43dca22c251cd159d0d0_Worker-1" #6963 prio=5 os_prio=0 tid=0x00007f375dd98800 nid=0x8a3e waiting on condition [0x00007f36034c3000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at com.dangdang.ddframe.job.util.concurrent.BlockUtils.sleep(BlockUtils.java:32) at com.dangdang.ddframe.job.util.concurrent.BlockUtils.waitingShortTime(BlockUtils.java:27) at com.dangdang.ddframe.job.lite.internal.sharding.ShardingService.blockUntilShardingCompleted(ShardingService.java:125) at com.dangdang.ddframe.job.lite.internal.sharding.ShardingService.shardingIfNecessary(ShardingService.java:108) at com.dangdang.ddframe.job.lite.internal.schedule.LiteJobFacade.getShardingContexts(LiteJobFacade.java:115) at com.dangdang.ddframe.job.executor.AbstractElasticJobExecutor.execute(AbstractElasticJobExecutor.java:103) at com.dangdang.ddframe.job.lite.internal.schedule.LiteJob.execute(LiteJob.java:26) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) - locked <0x00000000c7d59880> (a java.lang.Object) `

    这种任务无需sharding, 但是被block,一旦修改里面其对于zk的某个的属性值,对应目录就会消失掉,但是任务没执行。。

    例如: set /elastic-job-lite/order-autoconfirmreceive-job-0ff1c802d8df43dca22c251cd159d0d0/leader/election/instance 10.72.27.53@-@86594

    求助有没解决办法。正在研习源代码中

    invalid 
    opened by rongmin 14
  • One sharding item is stuck

    One sharding item is stuck

    I have one job named “cronJob” running on two servers。I found that three sharding items was stuck at the moment,I manually triggered the job,then sharding item 0、2 started to run as the cron principle,but sharding item 1 was still stuck。The dumped information is below:

    /cronJob/sharding | /cronJob/sharding/2 | /cronJob/sharding/2/running | /cronJob/sharding/2/instance | ip1@-@102156 /cronJob/sharding/1 | /cronJob/sharding/1/instance | ip2@-@165035 /cronJob/sharding/0 | /cronJob/sharding/0/running | /cronJob/sharding/0/instance | ip1@-@102156 /cronJob/servers | /cronJob/servers/ip1 | ENABLED /cronJob/servers/ip2 | ENABLED /cronJob/leader | /cronJob/leader/sharding | /cronJob/leader/failover | /cronJob/leader/failover/items | /cronJob/leader/election | /cronJob/leader/election/instance | ip1@-@102156 /cronJob/instances | /cronJob/instances/ip1@-@102156 | /cronJob/instances/ip2@-@165035 | /cronJob/config | cron: 0/10 * * * * ? description: '' disabled: false failover: true jobErrorHandlerType: '' jobExecutorServiceHandlerType: '' jobName: cronJob jobParameter: 0=Beijing1,1=Shanghai,2=Guangzhou,3=Guangzhou jobShardingStrategyType: '' maxTimeDiffSeconds: -1 misfire: true monitorExecution: true overwrite: true reconcileIntervalMinutes: -1 shardingItemParameters: 0=Beijing,1=Shanghai,2=Guangzhou,3=Guangzhou shardingTotalCount: 3

    need more info 
    opened by kaihekaihe 13
  • #1720 Let user can customize the jobInstanceId

    #1720 Let user can customize the jobInstanceId

    Fixes #1720 .

    Changes proposed in this pull request: Detect System Property "jobInstanceId", if it is exists, use IP concat with this property instead of jvm name.

    opened by johnny2002 12
  •  失效转移导致任务重复执行

    失效转移导致任务重复执行

    Which version of Elastic-Job do you using?(您使用的Elastic-Job版本为?)

    2.1.5

    Expected behavior (您预期的结果是)

    任务不要重复执行

    Actual behavior (实际运行的结果是)

    任务重复执行

    Steps to reproduce the behavior (可重现问题的操作步骤)

    3个节点 1分钟执行一次任务。0 * * * * ? 场景一、 在 25秒的时候, kill掉其中一个节点, 这个节点的任务会迅速被其它节点获取并立即执行。 (备注: 假设修复了https://github.com/elasticjob/elastic-job-lite/issues/669 这个bug) 在下一个分钟的0秒的时候,重新分片,全部分片执行。

    那么这次失效转移的分片 不就是提前重复执行了一次吗?

    场景二、 存活的节点每抢占一个分片,都会触发jobScheduleController.triggerJob(), 但是job在执行的时候,是批量获取的failover分片啊

        @Override
        public ShardingContexts getShardingContexts() {
            boolean isFailover = configService.load(true).isFailover();
            if (isFailover) {
                **List<Integer> failoverShardingItems** = failoverService.getLocalFailoverItems();
                if (!failoverShardingItems.isEmpty()) {
                    return executionContextService.getJobShardingContext(failoverShardingItems);
                }
            }
    

    那么触发的job执行次数就是过剩的,最后剩下的job 就会执行分片操作,并执行属于本节点的分片任务。 重复执行。

    wontfix 
    opened by johnyannj 12
  • 2.0.2版本里面Zookeeper异步连接有问题

    2.0.2版本里面Zookeeper异步连接有问题

    ZookeeperRegistryCenter#init第100行、101行,这里实际上采用的异步方式发起连接,但在本机(4核8线程)上测试时发现,ConnectionStateManager状态改变后立刻返回,几乎不可能出现线程切换,在101行对客户端连接状态的判断实际上取得仍然是未连接状态。既然是初始化,这里为何要采用异步连接?既然是异步连接为何在返回后立刻取值判断?线程没有切换之前,获取的值肯定是未连接状态。这里的处理逻辑是否有问题还请看看!

    disscussion 
    opened by cloorc 12
  • Tracing Module may be unavailable if overwrite is false in 3.0.0-beta

    Tracing Module may be unavailable if overwrite is false in 3.0.0-beta

    Bug Report

    I use elasticjob with spring-boot, datasource config correctly, while I cannot get any job trace data and job history data.

    Which version of ElasticJob did you use?

    3.0.0-beta

    Which project did you use? ElasticJob-Lite or ElasticJob-Cloud?

    ElasticJob-Lite

    Expected behavior

    Can see job trance and history in ui console at: http://localhost:8088/#/history-trace

    Actual behavior

    Empty table

    Reason analyze (If you can)

    JobScheduler.findTracingConfiguration() returns empty result.

    Steps to reproduce the behavior.

    Use the official example, "elasticjob-example-lite-springboot“, datasource as:

    spring:
      datasource:
        driver-class-name: org.h2.Driver
        url: jdbc:h2:tcp://localhost/~/test
        username: sa
        password: 
    

    Example codes for reproduce this issue (such as a github link).

    bug 
    opened by johnny2002 11
  • Failed to run SpringBoot project

    Failed to run SpringBoot project

    I want to run a demo for Elastic-Job, when i add elastic-job-springboot-starter dependence,it does not work, if remove it that is work normal.

    version

    • SpringBoot 2.3.3
    • Mybatis SpringBoot Starter 2.2.2
    • elastic-job springBoot Starter 3.0.2

    this is my pom file

    `

    	<dependency>
    		<groupId>org.projectlombok</groupId>
    		<artifactId>lombok</artifactId>
    		<optional>true</optional>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    
    	<dependency>
    		<groupId>org.apache.shardingsphere.elasticjob</groupId>
    		<artifactId>elasticjob-lite-spring-boot-starter</artifactId>
    		<version>3.0.2</version>
    	</dependency>
    
    	<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
    	<dependency>
    		<groupId>org.mybatis.spring.boot</groupId>
    		<artifactId>mybatis-spring-boot-starter</artifactId>
    		<version>2.2.2</version>
    	</dependency>
    
    
    	<dependency>
    		<groupId>com.oracle.database.jdbc</groupId>
    		<artifactId>ojdbc8</artifactId>
    	</dependency>
    
    	<dependency>
    		<groupId>com.oracle.database.nls</groupId>
    		<artifactId>orai18n</artifactId>
    	</dependency>`
    

    this is the error message Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required at org.springframework.util.Assert.notNull(Assert.java:201) at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:122) at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:73) at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1790) ... 95 more

    opened by tbj-825 0
  • [ISSUE #2142]add distributed lock to avoid onceListener invoke multi times

    [ISSUE #2142]add distributed lock to avoid onceListener invoke multi times

    Fixes #2142 .

    Changes proposed in this pull request:

    one job, multi instances completed on concurrency, can cause once listener execute some times, my current system use redis lock to avoid, but source code should add a distributed lock to avoid this, use curator InterProcessMutex now, please help review and give some advice.

    opened by xlcn 3
  • ejob-lite why not let servers as ephemeral node? What other considerations are there?

    ejob-lite why not let servers as ephemeral node? What other considerations are there?

    When we use k8s deploy our service which integrated with ejob-lite,service IP is always not fixed. Zookeeper Servers node list is getting longer and longer. JobShutdownHookPlugin won't clear services node, and servers node also not as ephemeral node, both have other considerations?

    opened by huaronghao 0
  • When one appliacation instance pod restart, the last compeleted job will executed  immediately in other instance not in next trigger time

    When one appliacation instance pod restart, the last compeleted job will executed immediately in other instance not in next trigger time

    Version: ElasticJob-Lite 3.0.1 problem:

    1. Applicatoin in k8s has two instance when failover enabled;
    2. Job execute and has finish in one of instance;
    3. Restart the sharding pod, job will executed in another instance not in next trigger time. I think with failover enabled, the job will be sharding in new node and wait to execute
    question 
    opened by wsYdd 1
  • When I register a transient task, the result returned is

    When I register a transient task, the result returned is "Name cannot be null."

    When I register a transient task, the result returned is "Name cannot be null."

    image

    elasticjob-cloud version :3.0.2 mesos version: 1.11.0 zookeeper version: 3.7.1

    How to solve this problem

    question 
    opened by huangyi81 3
  • fix(sec): upgrade commons-codec:commons-codec to 1.13

    fix(sec): upgrade commons-codec:commons-codec to 1.13

    What happened?

    There are 1 security vulnerabilities found in commons-codec:commons-codec 1.10

    What did I do?

    Upgrade commons-codec:commons-codec from 1.10 to 1.13 for vulnerability fix

    What did you expect to happen?

    Ideally, no insecure libs should be used.

    The specification of the pull request

    PR Specification from OSCS Signed-off-by:pen4[email protected]

    opened by pen4 0
Releases(3.0.2)
  • 3.0.2(Oct 23, 2022)

    Bug Fixes

    1. Fix itemErrorMessages not cleared after job finished.
    2. Fix Curator notify thread may be blocked and avoid probably endless loop in ServerService.
    3. NPE occur when job instance could not be unmarshalled.
    4. Fix failover too sensitive.

    Enhancements

    1. Script Job exception's stack was ignored.
    2. Support using different event trace data source when using Spring Boot.
    3. Supports building project by Java 19.

    Change Logs

    1. MILESTONE 3.0.2
    Source code(tar.gz)
    Source code(zip)
  • 3.0.1(Oct 12, 2021)

    Enhancements

    1. Avoids creating too many threads for JobTracingEventBus
    2. Job listeners can be ordered
    3. Supports setting timezone for job
    4. Some enhancements in Spring Boot Starter
    5. Supports configuring preferred ip by regex

    Bug Fixes

    1. Lifecycle module: JobOperateAPIImpl#trigger does not work
    2. Job conflict may occur when using Spring Boot Starter

    Change Logs

    1. MILESTONE 3.0.1
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(Jul 6, 2021)

    Enhancements

    1. Support configuring Mail SMTP SSL trust in elasticjob-error-handler-email

    Bug Fixes

    1. The failover may not work in distributed deployment
    2. ReconcileService is still running after the job shutdown

    Dependencies

    1. Make the spring-boot-starter-jdbc optional in ElasticJob Spring Boot Starter

    Change Logs

    1. MILESTONE 3.0.0
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0-RC1(Dec 25, 2020)

    API Changes

    1. Simplify usage of injecting OneOffJob when using Spring Boot Starter
    2. Refactor job tracing configuration to support persistence

    New Features

    1. Support reloading JobErrorHandler and ExecutorService when configuration changed
    2. Add authentication support in Cloud Scheduler

    Bug Fixes

    1. Fix TracingConfiguration doesn't work when the property overwrite is false
    2. Fix SnapshotService may be unavailable in specific situation
    3. Fix some minor problems in Restful module

    Build & Dependencies

    1. Upgrade commons-dbcp to commons-dbcp2 in Cloud Scheduler

    Change Logs

    1. MILESTONE 3.0.0-RC1
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0-beta(Nov 5, 2020)

    API Changes

    1. Refactor job listener configuration
    2. Refactor job error handler configuration
    3. Refactor job tracing configuration

    New Features

    1. Support HTTP job
    2. Remove spring boot dependencies from job kernel module
    3. Support email notification when job execute error
    4. Support wechat notification when job execute error
    5. Support dingtalk notification when job execute error

    Bug Fixes

    1. Fix bug of one-off job cannot work with sharding
    2. Fix bug of table and index name case-insensitive for event trace using database
    3. Fix bug of dead lock when resharding flag set incorrectly

    Change Logs

    1. MILESTONE
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0-alpha(Aug 8, 2020)

    Build & Dependencies

    1. Upgrade to Java 8
    2. Upgrade ZooKeeper to 3.6.x

    API Changes

    1. Change maven groupId to org.apache.shardingsphere.elasticjob
    2. Change package name to org.apache.shardingsphere.elasticjob
    3. Change spring namespace name to http://shardingsphere.apache.org/schema/elasticjob
    4. New job API, use SPI to customize job type
    5. Use SPI to introduce configuration strategies
    6. Split console and UI from job core modules

    New Features

    1. Add One-off job executor
    2. Add Spring Boot Starter for ElasticJob-Lite
    3. Add more databases support for event trace persist
    4. User indicate IP address via system environment supported

    Bug Fixes

    1. Fix bug for executor thread ContextClassLoader is empty with ElasticJob-Cloud
    2. Fix bug for enable job from web console have no effect
    3. Shutdown job when application exit
    4. Fix NPE when failover out-of-order in Curator asynchronized persist
    5. Get correct job class name when using CGLIB proxy

    Change Logs

    1. MILESTONE
    Source code(tar.gz)
    Source code(zip)
  • 2.1.5(Jul 10, 2017)

    New Features

    1. ISSUE #373 Cloud can distinguish processing TASK_UNREACHABLE,TASK_UNKNOWN,TASK_DROPPED,TASK_GONE,etc

    Bug Fixes

    1. ISSUE #367 Massive stacked jobs performed after Cloud restart because disabled job does not stop Ready queue
    2. ISSUE #382 UI verification error, maximum number of shards should not be verified
    3. ISSUE #383 UI verification error, minimum number of listening port should not be verified
    Source code(tar.gz)
    Source code(zip)
  • 2.1.4(Jun 13, 2017)

    Enhancement

    1. ISSUE #29 Console support english
    2. ISSUE #352 Running elastic-job-cloud-executor locally without mesos environment

    Bug Fixes

    1. ISSUE #322 Schedule tasks to evaluate resources when considering the use of resources for executor in elastic-job-cloud-scheduler module
    2. ISSUE #341 Script task configuration in elastic-job-cloud-console is missing execution script
    3. ISSUE #343 Script task execution script is incorrect in elastic-job-cloud-console module
    4. ISSUE #345 The status is not displayed correctly when the task is all disabled in elastic-job-lite-console module
    5. ISSUE #351 Manage background add registry, login credentials bar can not enter ':' in elastic-job-lite-console module
    Source code(tar.gz)
    Source code(zip)
  • 2.1.3(May 27, 2017)

    Enhancement

    1. ISSUE #327 spring namespace supports use xml to config beans
    2. ISSUE #336 Cloud task submission failure returns error details to framework

    Bug Fixes

    1. ISSUE #321 elastic-job-lite The namespace is not support / when UI adds the registry
    2. ISSUE #333 elastic-job-lite Registration center configuration login credentials in the UI implicit display
    3. ISSUE #334 elastic-job-lite UI can't find conf\auth.properties file on windows platform
    4. ISSUE #335 elastic-job-lite UI guest account configuration does not work in conf\auth.properties file
    Source code(tar.gz)
    Source code(zip)
  • 2.1.2(May 12, 2017)

    New Features

    1. ISSUE #301 Console add guest permission configuration, guest only allows viewing, not allowed to change
    2. ISSUE #312 Cloud support self-healing

    Enhancement

    1. ISSUE #293 Lite Console datasource configuration adds connection testing capabilities
    2. ISSUE #296 Cloud operational UI refactoring, consistent with lite style
    3. ISSUE #302 Failure transfer and task run state monitoring separation
    4. ISSUE #304 Cloud add associated features with Mesos roles
    5. ISSUE #316 Lite running task association process ID

    Bug Fixes

    1. ISSUE #291 elastic-job console failure reason display is not complete
    2. ISSUE #306 Switch whether to monitor job execution status and task intervals are short may occur when the task cannot continue to run
    3. ISSUE #310 Create to many sequential nodes after configuration check time error seconds for this machine and registry
    Source code(tar.gz)
    Source code(zip)
  • 2.1.1(Apr 19, 2017)

    New Features

    1. ISSUE #242 Elastic-Job-Cloud supports delete application and task
    2. ISSUE #243 Elastic-Job-Cloud supports enable/disable application and task

    Enhancement

    1. ISSUE #268 Simplify POM dependency

    Bug Fixes

    1. ISSUE #266 Elastic-Job-Lite start script specifies that the port is invalid
    2. ISSUE #269 EventTrace failure record is not affected by sample rate and the time of failure is recorded
    3. ISSUE #270 Console send two requests after clicks the button
    4. ISSUE #272 Elastic-Job-Lite UI job dimensions that should appear as disabled only if all servers are disabled
    5. ISSUE #275 After stopping Zookeeper, restart Zookeeper and the task does not continue
    6. ISSUE #276 When fail transfer is turned on and the shard task is performed, the task is repeated
    7. ISSUE #279 Add event tracking data source, database connection address can not have parameters
    8. ISSUE #280 The historical status of the task history page is not displayed correctly
    9. ISSUE #283 Task is not set overwrite and local configuration is inconsistent with the registration center, the cron started by the task shall be based on the registry
    10. ISSUE #290 Elastic-Job-Cloud when deleting a disabled APP or JOB, the corresponding disabled node data cannot be deleted
    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Apr 7, 2017)

    New Features

    1. ISSUE #195 Elastic-Job-Lite self-diagnose and fix problems caused by distributed instability
    2. ISSUE #248 Elastic-Job-Lite the same job server can run multiple JVM instances with the same job name(Cloud Native)
    3. ISSUE #249 Elastic-Job-Lite Operations UI supports incident tracking queries

    Enhancement

    1. ISSUE #240 Elastic-Job-Lite operational UI refactoring.
    2. ISSUE #262 Elastic-Job-Lite console delete job configuration.

    Bug Fixes

    1. ISSUE #237 Add the REST API check on the total number of shards not less than 1
    2. ISSUE #238 IP regular expression error
    3. ISSUE #246 After using JobOperateAPI.remove(),JobScheduler.init() triggers execution multiple times after creating the same job
    4. ISSUE #250 Misfire task triggers more than once

    Refactor

    1. ISSUE #263 Elastic-Job-Lite Job OperationAPI Re-grooming
    2. ISSUE #264 Elastic-Job-Lite Data storage restructuring, but forward compatibility
    Source code(tar.gz)
    Source code(zip)
  • 2.0.5(Feb 16, 2017)

    New Features

    1. ISSUE #191 Framework's HA feature
    2. ISSUE #217 cloud add APP dimension configuration
    3. ISSUE #223 cloud resident job event tracking sample rate

    Bug Fixes

    1. ISSUE 222 elastic-job-lite-spring reg configuration parameter max-retries does not work
    2. ISSUE 231 When a cloud job is deleted in bulk, mesos synchronizes TASK_LOST message to the framework in advance, causing the job to be re-arranged in the ready queue and executed
    Source code(tar.gz)
    Source code(zip)
  • 2.0.4(Jan 12, 2017)

    New Features

    1. ISSUE #203 Cloud task add run statistics and provide REST API queries
    2. ISSUE #215 cloud operations management UI

    Enhancement

    1. ISSUE #187 ShardingContext add task attribute to business side

    Bug Fixes

    1. ISSUE #189 Manage background to perform a failure operation, but the task is still being executed
    2. ISSUE #204 Async execution of messages in consistency results in inaccurate database data
    3. ISSUE #209 cloud task resource allocation algorithm improvement
    Source code(tar.gz)
    Source code(zip)
  • 2.0.3(Nov 30, 2016)

    Refactor

    1. ISSUE #184 ExecutorServiceHandler interface method adjustment, add jobName used to distinguish between different job thread names
    2. ISSUE #186 Simplify SpringJobScheduler use by removing Spring Namespace DTO-related code

    New Features

    1. ISSUE #178 Event-driven trigger jobs

    Enhancement

    1. ISSUE #179 Transient's Script-type task optimization, no Java Executor support required
    2. ISSUE #182 add support for spring boot

    Bug Fixes

    1. ISSUE #177 Spring Namespace Job: Script Null Pointer in version 2.0.2
    2. ISSUE #185 Executor over-occupancy of sharding resources leads to waste of resources
    Source code(tar.gz)
    Source code(zip)
  • 2.0.2(Nov 21, 2016)

    Refactor

    1. ISSUE #153 Centralization of event tracking configuration
    2. ISSUE #160 Adjust the maven module structure to provide elastic-job-common and its secondary modules, the original elastic-job-core module migration to elastic-job-common-core

    Enhancement

    1. ISSUE #159 Available in any version from Spring 3.1.0.RELEASE to Spring 4
    2. ISSUE #164 JobBeans that have been declared in the job Spring namespace no longer need to declare @Component or define in Spring xml

    Bug Fixes

    1. ISSUE #64 Spring namespace, if you register multiple job beans of the same class, will cause job beans to look up inaccurately
    2. ISSUE #115 Console add new registry, no connection success, back stage has been repeatedly connected and reported errors
    3. ISSUE #151 Lack of support for relational database-based event tracking for databases outside MySQL
    4. ISSUE #152 Job custom exception processor is invalid and is always handled by Default JobExceptionHandler
    5. ISSUE #156 Job event tracking overall call link data acquisition
    6. ISSUE #158 Job misses sharding when it is paused and will no longer shard
    7. ISSUE #161 Version of Lite deployed to some versions of Tomcat cannot be started
    8. ISSUE #163 The project is started or the task is automatically performed after the task is set to disable true
    9. ISSUE #165 Shard thread deadlock when all service nodes are disable
    10. ISSUE #167 Failover job adds task ID record
    Source code(tar.gz)
    Source code(zip)
  • 2.0.1(Nov 4, 2016)

    Bug Fixes

    1. ISSUE #141 Remove the reg module to read information from zk, making the reg namespace's placeholder fully available
    2. ISSUE #143 elastic-job-cloud-scheduler memory leak
    3. ISSUE #145 After modifying the database connection of the task log, the log is still written to the old database
    4. ISSUE #146 Thread pool reuse problem for a task
    5. ISSUE #147 console task does not load, background there is an null pointer exception
    6. ISSUE #149 Operations platform delete tasks, occasionally encounter deletion incomplete situation
    7. ISSUE #150 Cloud's misfire feature will be performed as jobs pile up
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Oct 21, 2016)

    New Features

    1. Elastic-Job-Cloud initial version
    2. Reconstruct the original Elastic-Job to Elastic-Job-Lite

    Bug Fixes

    1. ISSUE #119 Quartz does not close properly when spring container is closed
    2. ISSUE #123 Stand-alone running timing task, zk disconnect after reconnecting, did not trigger the leader election
    3. ISSUE #127 Spring configuration task id cannot use placeholders
    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Jun 27, 2016)

  • 1.1.0(Jun 18, 2016)

  • 1.0.8(May 24, 2016)

  • 1.0.7(May 19, 2016)

    Refactor

    1. ISSUE #88 Stop task renamed pause

    New Features

    1. ISSUE #91 Job Lifecycle Action API

    Enhancement

    1. ISSUE #84 The console provides job enable/disable button action
    2. ISSUE #87 Adjusting the master node election process, job shutdown, disabling and pausing will trigger the master node election
    3. ISSUE #93 The registry configuration provides default values for baseSleepTimeMilliseconds, maxSleepTimeMilliseconds, and maxRetries

    Bug Fixes

    1. ISSUE #92 Modifying the total shard parameter results in a listening throw timeout exception performed by only a single node
    Source code(tar.gz)
    Source code(zip)
  • 1.0.6(Mar 29, 2016)

    Enhancement

    1. ISSUE #71 Task off function(shutdown)
    2. ISSUE #72 Closed jobs can be deleted
    3. ISSUE #81 Using the last end state of a centralized cleanup job instead of the respective cleanup, each cleaning may result in an uncleaned end state due to offline

    Bug Fixes

    1. ISSUE #74 When streaming and fail transfer, the failover shard item cannot be executed once and stopped
    2. ISSUE #77 Dataflow type task, fetchData if there is data, should be executed in pairs with processData
    3. ISSUE #78 Spring configuration job monitoring enable AOP causes problems that do not work properly
    Source code(tar.gz)
    Source code(zip)
  • 1.0.5(Mar 29, 2016)

    Refactor

    1. ISSUE #59 elastic-job upgrade curator from 2.8.0 to 2.10.0

    Enhancement

    1. ISSUE #2 Add front and post tasks
    2. ISSUE #60 Dataflow type task customized thread pool configuration
    3. ISSUE #62 Job status cleanup speed-up
    4. ISSUE #65 Add spring namespace support for front and post tasks

    Bug Fixes

    1. ISSUE #61 Deadlock problem solved when sharding and primary node elections occur at the same time
    2. ISSUE #63 You may get TreeCache for other jobs with the same prefix when you get the job TreeCache
    3. ISSUE #69 If the job server sharding node in Zk does not exist when sharding, it will not be able to reshard
    Source code(tar.gz)
    Source code(zip)
  • 1.0.4(Mar 29, 2016)

  • 1.0.3(Feb 3, 2016)

    Enhancement

    1. ISSUE #39 Add job assisted listening and fetch job runtime information with dump command
    2. ISSUE #43 Add job exception handling callback interface

    Bug Fixes

    1. ISSUE #30 Registry is down for a long time and resumes, and the job cannot continue
    2. ISSUE #36 Task cannot resume after console pause
    3. ISSUE #40 TreeCache uses Coarse granularity cause memory overflow
    Source code(tar.gz)
    Source code(zip)
  • 1.0.2(Feb 3, 2016)

    Refactor

    1. ISSUE #17 Task type interface changes

    Enhancement

    1. ISSUE #6 Proofreading job server and registry time error
    2. ISSUE #8 Increase misfire switch, default enable missed task re-execution
    3. ISSUE #9 Sharding policy configurability
    4. ISSUE #10 Provides a sorting strategy for odd even shards based on job name hash value
    5. ISSUE #14 When the console modifies the cron expression, the task updates the cron in real time
    6. ISSUE #20 Operations UI task list shows increased cron expression
    7. ISSUE #54 Sequenceperpetual task performance improved, changing fetch data to multithreaded, previously processing data only as multithreaded
    8. ISSUE #55 offset storage capabilities

    Bug Fixes

    1. ISSUE #1 Inaccurate access to IP addresses in complex network environments
    2. ISSUE #13 After a job throws a run-time exception, it does not continue to be triggered later
    3. ISSUE #53 Dataflow's Sequence type tasks use multithreaded fetch data
    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Feb 3, 2016)

Owner
The Apache Software Foundation
The Apache Software Foundation
A Light-weight Job Scheduling Framework

Sundial A Lightweight Job Scheduling Framework for Java. In a Nutshell Sundial makes adding scheduled jobs to your Java application a walk in the park

Knowm 262 Dec 9, 2022
A distributed task scheduling framework

XXL-JOB XXL-JOB, a distributed task scheduling framework. -- Home Page -- Introduction XXL-JOB is a distributed task scheduling framework. It's core d

许雪里 23.3k Jan 9, 2023
The simple, stupid batch framework for Java

Easy Batch The simple, stupid batch framework for Java™ Project status As of November 18, 2020, Easy Batch is in maintenance mode. This means only bug

Jeasy 571 Dec 29, 2022
Distributed lock for your scheduled tasks

ShedLock ShedLock makes sure that your scheduled tasks are executed at most once at the same time. If a task is being executed on one node, it acquire

Lukáš Křečan 2.8k Jan 7, 2023
Publish Jenkins performances metrics to an OpenTelemetry endpoint, including distributed traces of job executions and health metrics of the controller.

OpenTelemetry Introduction Architecture Features Getting Started Examples Configuration as Code Contributing Introduction Collect Jenkins monitoring d

Jenkins 73 Dec 26, 2022
A Light-weight Job Scheduling Framework

Sundial A Lightweight Job Scheduling Framework for Java. In a Nutshell Sundial makes adding scheduled jobs to your Java application a walk in the park

Knowm 262 Dec 9, 2022
A Light-weight Job Scheduling Framework

Sundial A Lightweight Job Scheduling Framework for Java. In a Nutshell Sundial makes adding scheduled jobs to your Java application a walk in the park

Knowm 262 Dec 9, 2022
蓝鲸作业平台(Job)是一套运维基础操作管理系统,具备海量任务并发处理能力。除了支持脚本执行、文件分发、定时任务等一系列基础运维场景以外,还支持通过流程调度能力将零碎的单个任务组装成一个自动化作业流程;而每个作业都可做为一个原子节点,提供给上层或周边系统/平台使用,实现调度自动化。

重要提示: master 分支在开发过程中可能处于 不稳定或者不可用状态 。 请通过releases 而非 master 去获取稳定的二进制文件。 蓝鲸作业平台(Job)是一套运维脚本管理系统,具备海量任务并发处理能力。除了支持脚本执行、文件分发、定时任务等一系列基础运维场景以外,还支持通过流程调度

Tencent 676 Dec 30, 2022
Distributed and fault-tolerant realtime computation: stream processing, continuous computation, distributed RPC, and more

IMPORTANT NOTE!!! Storm has Moved to Apache. The official Storm git repository is now hosted by Apache, and is mirrored on github here: https://github

Nathan Marz 8.9k Dec 26, 2022
💡极致性能的企业级Java服务器框架,RPC,游戏服务器框架,web应用服务器框架。(Extreme fast enterprise Java server framework, can be RPC, game server framework, web server framework.)

?? 为性能而生的万能服务器框架 ?? Ⅰ. zfoo简介 ?? 性能炸裂,天生异步,Actor设计思想,无锁化设计,基于Spring的MVC式用法的万能RPC框架 极致序列化,原生集成的目前二进制序列化和反序列化速度最快的 zfoo protocol 作为网络通讯协议 高可拓展性,单台服务器部署,

null 1k Jan 1, 2023
A reactive Java framework for building fault-tolerant distributed systems

Atomix Website | Javadoc | Slack | Google Group A reactive Java framework for building fault-tolerant distributed systems Please see the website for f

Atomix 2.3k Dec 29, 2022
Orbit - Virtual actor framework for building distributed systems

Full Documentation See the documentation website for full documentation, examples and other information. Orbit 1 Looking for Orbit 1? Visit the orbit1

Orbit 1.7k Dec 28, 2022
A distributed data integration framework that simplifies common aspects of big data integration such as data ingestion, replication, organization and lifecycle management for both streaming and batch data ecosystems.

Apache Gobblin Apache Gobblin is a highly scalable data management solution for structured and byte-oriented data in heterogeneous data ecosystems. Ca

The Apache Software Foundation 2.1k Jan 4, 2023
A strongly consistent distributed transaction framework

A strongly consistent distributed transaction framework

dromara 1.9k Jan 3, 2023
Table-Computing (Simplified as TC) is a distributed light weighted, high performance and low latency stream processing and data analysis framework. Milliseconds latency and 10+ times faster than Flink for complicated use cases.

Table-Computing Welcome to the Table-Computing GitHub. Table-Computing (Simplified as TC) is a distributed light weighted, high performance and low la

Alibaba 34 Oct 14, 2022
A distributed task scheduling framework

XXL-JOB XXL-JOB, a distributed task scheduling framework. -- Home Page -- Introduction XXL-JOB is a distributed task scheduling framework. It's core d

许雪里 23.3k Jan 9, 2023
Google Mr4c GNU Lesser 3 Google Mr4c MR4C is an implementation framework that allows you to run native code within the Hadoop execution framework. License: GNU Lesser 3, .

Introduction to the MR4C repo About MR4C MR4C is an implementation framework that allows you to run native code within the Hadoop execution framework.

Google 911 Dec 9, 2022
Lattice is a powerful, lightweight business extension invoke framework. By using the Lattice framework, complex business customization can be efficiently organized and managed.

Lattice Framework Introduction Lattice is a powerful, lightweight business extension invoke framework. By using the Lattice framework, complex busines

null 41 Dec 30, 2022
Modern configuration library for distributed apps written in Java.

Overview cfg4j ("configuration for Java") is a configuration library for Java distributed apps (and more). Features: Open source Easy to use Auto-relo

cfg4j 544 Nov 23, 2022
Distributed ID Generate Service

Leaf There are no two identical leaves in the world. — Leibnitz 中文文档 | English Document Introduction Leaf refers to some common ID generation schemes

美团 5.7k Dec 29, 2022