raft
dragonboat
Our great sponsors
raft | dragonboat | |
---|---|---|
7 | 2 | |
7,787 | 4,917 | |
1.5% | - | |
6.1 | 6.4 | |
3 days ago | 2 months ago | |
Go | Go | |
Mozilla Public License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
raft
-
Leader election library
Depending on your exact needs, you could try HashiCorp's Raft implementation: https://github.com/hashicorp/raft
-
Implementing a distributed key-value store on top of implementing Raft in Go
I have found the performance tests very tricky to get to pass without having any input from others. The assignment is really very unforgiving, I would wager the test suite is comparable to how commercial Raft implementations are tested (e.g. https://github.com/hashicorp/raft)
- Raft Is So Fetch: The Raft Consensus Algorithm Explained Through Mean Girls
-
Concurrency in Go is hard
While searching on GitHub, I found a pull request in the Raft implementation by Hashicorp (a distributed consensus algorithm), which we can use to demonstrate the following problem. Let’s start by showing the code (at api.go):
-
rqlite, the light distributed database built with Go and SQLite, v7.2 now with autoclustering via DNS and DNS SRV
Production-grade distributed consensus system.
-
Raft Consensus Protocol
In general Hashicorp's repos are high quality:
https://github.com/hashicorp/raft
Example application: https://github.com/Jille/raft-grpc-example
dragonboat
-
Pebble - as a key/value db
Pebble is the default log storage engine for a multi-raft library named Dragonboat. It was chosen to replace RocksDB and it seems to work well. https://github.com/lni/dragonboat
-
Is it possible to have more than 1 master available for writes in a raft system?
This is the best open source implementation I've seen that does what you're asking about: https://github.com/lni/dragonboat
What are some alternatives?
serf - Service orchestration and management tool.
tendermint - ⟁ Tendermint Core (BFT Consensus) in Go
torrent - Full-featured BitTorrent client package and utilities
etcd - Distributed reliable key-value store for the most critical data of a distributed system [Moved to: https://github.com/etcd-io/etcd]
DHT - BitTorrent DHT Protocol && DHT Spider.
ringpop-go - Scalable, fault-tolerant application-layer sharding for Go applications
grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC
raft-grpc-example - Example code for how to get hashicorp/raft running with gRPC
Olric - Distributed in-memory object store. It can be used as an embedded Go library and a language-independent service.
doublejump - A revamped Google's jump consistent hash
go-health - Library for enabling asynchronous health checks in your service
redis-lock - Simplified distributed locking implementation using Redis