Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/styvane/raft
Raft consensus algorithm implementation.
https://github.com/styvane/raft
distributed-systems raft
Last synced: about 22 hours ago
JSON representation
Raft consensus algorithm implementation.
- Host: GitHub
- URL: https://github.com/styvane/raft
- Owner: styvane
- License: apache-2.0
- Created: 2021-04-14T21:46:54.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-02-02T20:43:36.000Z (9 months ago)
- Last Synced: 2024-05-02T04:37:04.525Z (6 months ago)
- Topics: distributed-systems, raft
- Language: Rust
- Homepage:
- Size: 251 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE.txt
Awesome Lists containing this project
README
raft
====This is *another* attempt implementing the [Raft](https://raft.github.io/raft.pdf) consensus algorithm.
It's not indented to be used in production.
I did not implement the following ideas in the paper:
- Persistency(all states are volatiles).
- Cluster membership changes
- Log compactionTODO
----- Leader discovery and confirmation
- Append only *write* operation entry
- Persist log and non-volatiles states.
- Graceful shutdownInstallation
------------```
cargo install --bins --path kvserver
```Run
---To run this, we need a configuration see [example](config.example.yaml).
We will then start the following processes. The number of processes depends on the configuration.
```
kvserver --config config.yaml --node-id 0 --port 21000
kvserver --config config.yaml --node-id 1 --port 22000
kvserver --config config.yaml --node-id 2 --port 23000
kvserver --config config.yaml --node-id 3 --port 24000
kvserver --config config.yaml --node-id 4 --port 25000
```Using the client to connect to the leader, then Set/Get/Delete values.
I did not implement leader discovery, so you will need to watch the log to identifier the leader.```
kvserver-client --port 23000
```