Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/aarthikrao/timeMachine

A distributed fault tolerant scheduler that is horizontally scalable 🔥
https://github.com/aarthikrao/timeMachine

boltdb database distributed-systems golang grpc raft raft-consensus-algorithm scheduler

Last synced: 3 days ago
JSON representation

A distributed fault tolerant scheduler that is horizontally scalable 🔥

Awesome Lists containing this project

README

        

# Time Machine DB 🐓
[![Slack](https://img.shields.io/badge/Slack-4A154B?style=for-the-badge&logo=slack&logoColor=white)](https://join.slack.com/t/timemachinedb/shared_invite/zt-1nnti899g-6XppaC~5kqF0QAqALBgxqw)
![Status](https://img.shields.io/badge/Status-Development-3ac952?style=for-the-badge)

A distributed, fault tolerant scheduler database that can potentially scale to millions of jobs.

The idea is to build it with a storage layer based on B+tree implementation, distributed hash table for load balancing, and raft for consensus.

## 🧬 Documentation
- [Purpose](./docs/Purpose.md)
- [Architecture](./docs/Architecture.md) • [Components of a node](/components/Components.md) • [Also read](./docs/Refer.md)
- [Developer APIs](./docs/DevAPI.md) • [Job APIs](./docs/DevAPI.md#-job-apis) • [Route APIs](./docs/DevAPI.md#-route-apis)
- [TODO](./docs/TODO.md)

![Cluster animation](/docs/images/cluster_animation.gif)

## 🎯 Quick start

```bash
# Build
❯ go build

# Clean and create 5 data folders
❯ ./scripts/clean-create.sh 5

# Spawn 5 instances
❯ ./scripts/spawn.sh 5 true

# Create a cluster
❯ ./scripts/join.sh 5

# Specify the slots per node
❯ ./scripts/configure.sh 4

# Check status
❯ ./scripts/status.sh 5
```
Checkout the [detailed guide](/docs/Setup.md)

## 🎬 Roadmap
You can find the [roadmap here](/docs/Roadmap.md)

## 🛺 Tech Stack
Time machine is built on
* [BBoltDB](https://github.com/etcd-io/bbolt)
* [Raft](https://raft.github.io/)
* [Distributed hash table](https://en.wikipedia.org/wiki/Distributed_hash_table)
* [GRPC](https://grpc.io/)

For more details checkout our [Tech stack](/docs/Refer.md#🛺-tech-stack)

## ⚽ Contribute
* Choose a component to work on.
* Research the component thoroughly.
* Reach out to me, so that I can mark it as "Work in Progress" to prevent duplication of efforts.
* Build, code, and test the component.
* Submit a pull request (PR) when you are ready to have your changes reviewed.

Refer [Contributing](./CONTRIBUTING.md) for more