shardingsphere-elasticjob is a free, open source databases project written in Java and released under Apache-2.0. It has 8,206 GitHub stars, 3,246 forks and 116 open issues, and was last pushed 7 days ago. On this registry it ranks #107 of 203 tracked projects in Databases, with 5 head-to-head comparisons available.

What is shardingsphere-elasticjob?

ElasticJob is a lightweight, decentralized distributed scheduling service from the Apache ShardingSphere project, built for Java developers and operators who need sharded, highly available scheduled jobs rather than a single-node cron daemon.

What it is

ElasticJob is a distributed scheduled job framework written in Java and released under the Apache License 2.0. It became an Apache ShardingSphere sub-project on May 28 2020. The project combines flexible scheduling, resource management and job governance behind a unified job API, so that developers write a job once and deploy it wherever it is needed. It is a lightweight, decentralized solution that provides distributed task sharding services, and the feature groups its README names are Elastic Schedule, Resource Assign, Job Governance and Job Open Ecosystem.

The concrete problem it solves is the operational gap left by single-node schedulers. A cron entry or a Quartz-style trigger running on one machine has no answer for what happens when the node dies, when a job needs more throughput than one executor can provide, or when the same job must be split across several workers. ElasticJob shards jobs across a cluster, keeps them highly available, and rebalances automatically when servers are added. Developers no longer have to code around scale out, and operators no longer have to manage high availability by hand; adding servers is enough for the cluster to pick up the work.

Key capabilities

  • Elastic Schedule: job sharding and high availability across a distributed system, so throughput scales with the allocation of resources.
  • Resource Assign: executes a job at the suitable time on assigned resources, aggregates the same job onto the same executor, and appends resources to newly assigned jobs dynamically.
  • Job Governance: failover, misfired job handling, and self-diagnosis with recovery when the distributed environment is unstable.
  • Unified job API: code once and deploy at will, with an open architecture for extension and support for Spring IOC.
  • Rich job type library: dataflow, script, HTTP, file and big data job types.
  • Admin Console, delivered in the separate apache/shardingsphere-elasticjob-ui repository: job administration, job event trace query and registry center management.
  • Maven Central artifact org.apache.shardingsphere.elasticjob:elasticjob.

Who users are and how they work

  • Java teams running scheduled work across a cluster of executors, where ElasticJob replaces local cron or a single Quartz instance.
  • Organizations that already operate ZooKeeper as a coordination service, since ZooKeeper doubles as the registry center.
  • Spring-based applications that need scheduled jobs wired through the existing IOC container.
  • Operations teams that scale batch throughput by adding servers rather than by rewriting scheduling logic, and that use the Admin Console for job administration and event trace queries.

Getting started

Add the Maven Central artifact org.apache.shardingsphere.elasticjob:elasticjob to a Java project. Building and running require Java 8 or above, Maven 3.5.0 or above, and ZooKeeper 3.6.0 or above as the registry center.

How it compares

The registry lists no paid products that this project replaces. Among similar tools named in the facts, the topics place it next to cron and Quartz, which are single-node scheduling approaches; ElasticJob keeps the familiar scheduled-job model but moves sharding, failover and high availability into a decentralized cluster.

When to use it — and when not to

Self-hosting means operating a ZooKeeper 3.6.0 or above ensemble as the registry center, and building against Java 8 or above with Maven 3.5.0 or above. Teams outside the Java ecosystem, or those unwilling to run ZooKeeper, should look elsewhere. The README is light on step-by-step installation, Job Dependency with DAG based job dependency and DAG based job item dependency is still marked TODO, and the repository carries 116 open issues, so anyone expecting a finished dependency graph should wait.

project readme (upstream, from github) — read inline

ElasticJob - Distributed scheduled job

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

Stargazers over time

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.

You are welcome to communicate with the community via the mailing list.

License

GitHub release

Maven Status Build Status GitHub Workflow codecov Maintainability

Introduction

Using ElasticJob developers can no longer worry about the non functional requirements such as job 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 high availability and management, and can automatically operate by simply adding servers.

It is a lightweight, decentralized solution that provides distributed task sharding services.

ElasticJob Architecture

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

Frequently asked questions

Is shardingsphere-elasticjob free to use?

shardingsphere-elasticjob is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does shardingsphere-elasticjob do?

Distributed scheduled job

What is shardingsphere-elasticjob written in?

shardingsphere-elasticjob is primarily written in Java. Its source is publicly available at https://github.com/apache/shardingsphere-elasticjob, and it has 8,206 GitHub stars.