Open source project recommendation: distributed scheduling and computing framework — ohmyscheduler

Time:2021-11-30

brief introduction

Product introduction

Ohmysscheduler is a distributed scheduling and computing framework based on akka architecture (benchmarking Alibaba scheduler x2.0). Its main functions and features are as follows

  • Easy to use: the front-end web interface is provided to allow developers to visually complete the functions of scheduling task management (add, delete, modify and query), task operation status monitoring and operation log viewing.
  • Perfect timing strategy: support four timing scheduling strategies: cron expression, fixed frequency, fixed delay and API.
  • Rich execution modes: it supports four execution modes: stand-alone, broadcast, map and MapReduce. The map / MapReduce processor enables developers to obtain the ability of cluster distributed computing with only a few lines of code.
  • The executor supports a wide range of applications: it supports spring bean, built-in / external Java classes, shell, Python and other processors.
  • Convenient operation and maintenance: it supports the online log function, and the logs generated by the actuator can be displayed in real time on the front-end console page, reducing the debugging cost and greatly improving the development efficiency.
  • Lean dependency: the minimum dependency is relational database (MySQL / Oracle / MS sqlserver…), and the extended dependency is mongodb (used to store huge online logs).
  • High availability & high performance: after careful design, the scheduling server changes the database lock based strategy of other scheduling frameworks to realize lock free scheduling. Deploying multiple scheduling servers can simultaneously improve high availability and performance (support unlimited horizontal expansion).
  • Failover and recovery: after the task fails to execute, the retry can be completed according to the configured retry strategy. As long as the actuator cluster has enough computing nodes, the task can be completed successfully.

Applicable scenario

  • Business scenarios with regular execution requirements: such as fully synchronizing data every morning, generating business reports, etc.
  • There are business scenarios that need to be executed by all machines: for example, using broadcast execution mode to clean up cluster logs.
  • There are business scenarios that require distributed processing: for example, a large amount of data needs to be updated, and the single machine execution takes a long time. You can use the map / MapReduce processor to complete the task distribution and mobilize the whole cluster to speed up the calculation.

Comparison of similar products

QuartZ xxl-job SchedulerX 2.0 OhMyScheduler
Timing type CRON CRON Cron, fixed frequency, fixed delay, OpenAPI Cron, fixed frequency, fixed delay, OpenAPI
Task type Built in Java Built in Java, glue, shell, Python and other scripts Built in Java, external Java (fatjar), shell, Python and other scripts Built in Java, external Java (container), shell, Python and other scripts
Distributed task nothing Static Slicing MapReduce dynamic fragmentation MapReduce dynamic fragmentation
Online task governance I won’t support it support support support
Log white screen I won’t support it support I won’t support it support
Scheduling mode and performance Based on database lock, there is a performance bottleneck Based on database lock, there is a performance bottleneck Unknown Non locking design, strong performance without upper limit
Alarm monitoring nothing mail short message Email, providing an interface to allow developers to expand
System dependency MySQL MySQL RMB (free during the public beta, hey, let’s make an advertisement for you) Any relational database supported by spring data JPA (mysql, Oracle…)
Dag workflow I won’t support it I won’t support it support Not supported temporarily. There is a clear development plan

Document address

Ohmysscheduler ultra comprehensive document

other

  • At present, the framework has been iterated to version 1.2.0, and all functions tend to be stable. You are welcome to try ~
  • At the same time, this framework involves a lot of java knowledge, including but not limited to springboot, JPA, akka, multithreading, distributed communication, distributed coordination and consistency assurance, Java IO, Java hot loading and other technologies. It is also a good advanced java learning project ~
  • Welcome to communicate ~