What is Openjob?
Openjob is a new distributed task scheduling framework based on Akka. Supports a variety of cronjob, delayed jobs, and workflow. Uses a consistency sharding algorithm and supports unlimited horizontal scaling.
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
Top comments (0)