Openjob: distributed task scheduling framework
What is Openjob?
Openjob is a distributed and high-performance task scheduling framework that supports multiple cronjob, delay task, workflow, lightweight distributed computing, unlimited horizontal scaling, with high scalability and fault tolerance. Also has permission management, powerful alarm monitoring, and support multiple languages
Feature
Openjob not only supports basic cronjob, but also provides delayed jobs, distributed computing, and workflow
Cronjob
Cronjob,support Unix Crontab expression
Second,execution cycle less than 60 seconds
Fixed rate,execute tasks at a fixed frequency with minute unit
Delay Task
Distributed, high-performance delay task based on Redis, and providing rich reports and statistics
Distributed Computing
Standalone,execute on a worker client
Broadcast,execute on all worker clients
Map,a map function can distribute big data to multiple machines for execution, like Hadoop map
MapReduce,MapReduce is an extension of the Map.After all map sub-tasks are completed, the Reduce method is executed, which can process the results and data of the task execution in the Reduce method.
Sharding,like Elastic-Job model, configure sharding numbers on the management, which can be scheduled to different client by sharding, and supports multiple languages.
Processor
Processor, execute by function or class(support Java/Golang/PH)
HTTP, http request, used to periodically request an HTTP
Shell, shell script
Visual operations
Dashboard,rich task statistics and reports
Task history,task execution history records
Task log,complete task log, and suppport storage (H2/Mysql/Elasticsearch).
Task running stack,detailed recording of task execution stack information
Alarms and permissions
Provides task event monitoring alarms, detailed alarm histories, and support notifications with WeChat, Feishu, and webhook triggers.
Designed with namespace, support button-level access and easy to manage complex project.
Multiple languages
Java java and its frameworks, with native support.
Go golang support use go mod install
PHP PHP support use Golang agent to execute task by shell mode 。Swoole frameworks support composer install.
Python python support use Golang agent to execute task by shell mode
Use cases
Openjob is well-suited for business scenarios that have task schedule and delay task. such as every day to clean data and report generation. It is also suitable for lightweight computing, and Map/MapReduce can process big data computing. For complex task flows or workflow, it can design workflow with UI
Open source
Item | Quartz | Elastic-Job | XXL-JOB | Openjob |
Cronjob | Cron | Cron | Cron | Cronjob second Onetime Fixed rate |
Delay task | No | No | No | Distributed, high-performance delay task based on Redis |
Workflow | No | No | No | Workflow design with UI |
Distributed Computing | No | Sharding | Sharding | Broadcast Map/MapReduce Sharding |
Multiple languages | Java | Java Shell | Java Shell | Java Go(Gin、beego) PHP(Swoft) Python(Agent) Shell HTTP Kettle |
Visualization | No | Weak | Task history Task log(Not support storage) Dashboard | Task history Task log(support H2/Mysql/Elasticsearch) Dashboard Full permissions Task log stack |
Manageable | No | enable、disable task | enable、disable task execute once stop | enable、disable task execute once kill stop |
Alarms | No | custom event webhook | ||
Performance | Every task scheduling try to acquire a lock through the database, causes a high pressure on the database | ZooKeeper is performance bottleneck | Task scheduling is only by master, causes a high pressure on master | Uses sharding algorithm, each node can be scheduled without lock, supports unlimited horizontal scaling, and supports big task scheduling |
More
Official website: https://openjob.io
Live demo: https://demo.openjob.io