https://github.com/jabr/scuttleraft
Scuttlebutt Gossip + Raft Consensus
https://github.com/jabr/scuttleraft
Last synced: about 2 months ago
JSON representation
Scuttlebutt Gossip + Raft Consensus
- Host: GitHub
- URL: https://github.com/jabr/scuttleraft
- Owner: jabr
- License: mit
- Created: 2024-07-04T04:57:07.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-01-12T07:33:54.000Z (5 months ago)
- Last Synced: 2025-03-26T03:41:46.965Z (2 months ago)
- Language: Rust
- Size: 50.8 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license.txt
Awesome Lists containing this project
README
# scuttleraft
(Beginnings of) A Rust library implementing a variation of [Scuttlebutt Gossip](https://en.wikipedia.org/wiki/Gossip_protocol) and [Raft Consensus](https://en.wikipedia.org/wiki/Raft_(algorithm)).
I would like for this to be runtime agnostic, so it does not the implement the network communication layer directly. Instead, it is intended for the application to use this library to drive the logic of what to communicate, process incoming updates, and provide an API for interacting with the cluster state and metadata.
## Status
The logic for the gossip algorithm is largely complete, though the API is likely to change. I'm still experimenting with the metadata "value" abstraction in particular. There are unit tests covering most of the internal elements, but none yet on the top-level algorithm.
The initial version of the consensus layer will be coming soon, based on [my Typescript implementation](https://github.com/jabr/what-bus/blob/master/consensus.ts) and adapted to make use of the node failure detector logic in the gossip algorithm.
## References
* [Efficient Reconciliation and Flow Control
for Anti-Entropy Protocols](https://www.cs.cornell.edu/home/rvr/papers/flowgossip.pdf)
* [In Search of an Understandable Consensus Algorithm
(Extended Version)](https://raft.github.io/raft.pdf)## License
This project is licensed under the terms of the [MIT license](LICENSE.txt).