Pull to refresh

Openjob: distributed task scheduling framework

Reading time3 min
Views16K

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

dashbord
dashbord

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

job
job

Delay Task

  • Distributed, high-performance delay task  based on Redis, and providing rich reports and statistics

delay
delay

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

email

email

custom event

email

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

Tags:
Hubs:
Rating0
Comments1

Articles