metronome

command module
Version: v0.0.0-...-52789aa Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 23, 2018 License: BSD-3-Clause Imports: 0 Imported by: 0

README

 Metronome - Distributed, fault tolerant scheduler

version Build Status codecov Go Report Card GoDoc

Metronome is a distributed and fault-tolerant event scheduler. It can be used to trigger remote systems throught events (HTTP, AMQP, KAFKA).

Metronome is written in Go and leverage the power of kafka streams to provide fault tolerance, reliability and scalability.

Metronome take a new approach to the job scheduling problem, as it only handle job scheduling not effective execution. Effective job execution is perform by triggered external system.

Metronome has a number of advantages over regular cron:

  • Jobs can be written in any language, using any technology as it only trigger event.
  • Jobs are schedule using ISO8601 repeating interval notation, which enables more flexibility.
  • It is able to handle high volumes of scheduled jobs in a completely fault way.
  • Easy admin, thanks to a great UI.

Status

Currently Metronome is under heavy development.

Quick start

The best way to test and develop Metronome is using docker, you will need Docker Toolbox installed before proceding.

  • Clone the repository.

  • Run the included Docker Compose config:

docker-compose up -d

This will start, PostgreSQL, Redis, Kafka and Metronome instances.

Open your browser and navigate to localhost:8081

Contributing

Instructions on how to contribute to Metronome are available on the Contributing page.

Get in touch

Documentation

Overview

Metronome is a distributed and fault-tolerant event scheduler

Agents

Metronome as four agents:

  • api: HTTP api to manage the tasks
  • scheduler: plan tasks executions
  • aggregator: maintain the databasse
  • worker: perform HTTP POST to trigger remote systems according to the tasks schedules

Source Files

Directories

Path Synopsis
src
aggregator
Aggregator agent consumed tasks definitions from kafka to maintain the tasks database.
Aggregator agent consumed tasks definitions from kafka to maintain the tasks database.
api
Api agent expose a simple HTTP interface to manage tasks.
Api agent expose a simple HTTP interface to manage tasks.
api/routers
Package routers defined the api endpoints
Package routers defined the api endpoints
api/services/auth
Package authsrv handle authorization token operations.
Package authsrv handle authorization token operations.
api/services/task
Package tasksrv handle task Kafka messages.
Package tasksrv handle task Kafka messages.
api/services/tasks
Package taskssrv handle tasks database operations.
Package taskssrv handle tasks database operations.
api/services/user
Package usersrv handle user database operations.
Package usersrv handle user database operations.
scheduler
Scheduler plan tasks executions.
Scheduler plan tasks executions.
worker
Worker perform jobs.
Worker perform jobs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL