返回排行榜

dkron-io/dkron

Go

Dkron - Distributed, fault tolerant job scheduling system https://dkron.io

scheduled-jobsfault-tolerancecrondistributed-systems
Star 增长趋势
Star
4.7k
Forks
417
周增长
Issues
29
2k4k
2015年8月2019年3月2022年11月2026年7月
制品库Go Modulesgo get github.com/dkron-io/dkron
README

Dkron

Dkron - Distributed, fault tolerant job scheduling system for cloud native environments GoDoc Actions Status Gitter Gurubase

Website: http://dkron.io/

Dkron is a distributed cron service, easy to setup and fault tolerant with focus in:

  • Easy: Easy to use with a great UI
  • Reliable: Completely fault tolerant
  • Highly scalable: Able to handle high volumes of scheduled jobs and thousands of nodes

Dkron is written in Go and leverage the power of the Raft protocol and Serf for providing fault tolerance, reliability and scalability while keeping simple and easily installable.

Dkron is inspired by the google whitepaper Reliable Cron across the Planet and by Airbnb Chronos borrowing the same features from it.

Dkron runs on Linux, OSX and Windows. It can be used to run scheduled commands on a server cluster using any combination of servers for each job. It has no single points of failure due to the use of the Gossip protocol and fault tolerant distributed databases.

You can use Dkron to run the most important part of your company, scheduled jobs.

Installation

Installation instructions

Full, comprehensive documentation is accessible on the Dkron website

Quickstart

Deploying Dkron using Docker

The best way to test and develop dkron is using docker, you will need Docker with Docker compose installed before proceeding.

docker compose up -d

The UI should be available on http://localhost:8080/ui.

Using Dkron

To add jobs to the system read the API docs.

Scaling the cluster

To add more Dkron instances to the cluster:

docker compose up -d --scale dkron-server=4
docker compose up -d --scale dkron-agent=10

Development

To develop Dkron, you can deploy the cluster with local changes applied with the following steps:

  1. Clone the repository.

  2. Run the docker compose:

    docker compose -f docker-compose.dev.yml up
    

Email Testing

For testing email notifications during development, Mailpit is included in the development docker-compose setup. Mailpit provides a local SMTP server that captures outgoing emails without sending them to real recipients.

Start Mailpit with the development environment:

docker compose -f docker-compose.dev.yml up mailpit

Or run it standalone:

docker run -p 8025:8025 -p 1025:1025 axllent/mailpit

View captured emails at: http://localhost:8025

For more information, see docs/EMAIL_TESTING.md.

Testing CI Locally

To validate that your changes will pass in GitHub Actions before pushing:

./scripts/test-ci-locally.sh

This script:

  • Starts Mailpit (simulating the CI service container)
  • Runs tests with the same configuration as GitHub Actions
  • Provides clear pass/fail results
  • Allows you to inspect emails in the Mailpit UI

See .github/TESTING.md for more information about CI testing.

Frontend development

Dkron dashboard is built using React Admin as a single page application.

To start developing the dashboard enter the ui directory and run npm install to get the frontend dependencies and then start the local server with npm start it should start a new local web server and open a new browser window serving de web ui.

Make your changes to the code, then run make ui to generate assets files. This is a method of embedding resources in Go applications.

Resources

Chef cookbook https://supermarket.chef.io/cookbooks/dkron

Python Client Library https://github.com/oldmantaiter/pydkron

Ruby client https://github.com/jobandtalent/dkron-rb

PHP client https://github.com/gromo/dkron-php-adapter

Terraform provider https://github.com/bozerkins/terraform-provider-dkron

Manage and run jobs in Dkron from your django project https://github.com/surface-security/django-dkron

Contributors

Made with contrib.rocks.

Get in touch

相关仓库
HangfireIO/Hangfire

An easy way to perform background job processing in .NET and .NET Core applications. No Windows Service or separate process required

C#Otherdotnetdotnet-core
hangfire.io
10.1k1.8k
apache/shardingsphere-elasticjob

Distributed scheduled job

JavaMavenApache License 2.0scheduled-jobscron
8.2k3.3k
quartznet/quartznet

Quartz Enterprise Scheduler .NET

C#Apache License 2.0c-sharpdotnet
quartz-scheduler.net
7.1k1.7k
distribworks/dkron

Dkron - Distributed, fault tolerant job scheduling system https://dkron.io

GoGo ModulesGNU Lesser General Public License v3.0scheduled-jobsfault-tolerance
4.4k392
mesos/chronos

Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules

ScalaApache License 2.0chronosmesos
mesos.github.io/chronos/
4.4k520
jamesmh/coravel

Near-zero config .NET library that makes advanced application features like Task Scheduling, Caching, Queuing, Event Broadcasting, and more a breeze!

C#MIT Licensedotnetcorebackground-jobs
docs.coravel.net/Installation/
4.3k270
node-cron/node-cron

Job scheduling for Node.js with overlap prevention, distributed coordination, and background tasks. Zero dependencies.

TypeScriptnpmISC Licensecronnode-cron
nodecron.com
3.3k284
jobrunr/jobrunr

An extremely easy way to perform background processing in Java. Backed by persistent storage. Open and free for commercial use.

JavaMavenOtherjava-8background-jobs
jobrunr.io/en/
3k318
sidekiq-cron/sidekiq-cron

Scheduler / Cron for Sidekiq jobs

RubyRubyGemsMIT Licensesidekiq-cronsidekiq-jobs
1.9k302
vikeri/react-native-background-job

Schedule background jobs in React Native that run your JavaScript when your app is in the background/killed.

JavaMavenreact-nativescheduled-jobs
747111