https://github.com/varunu28/go-vsrevisited
Golang implementation of Viewstamped Replication revisited protocol
https://github.com/varunu28/go-vsrevisited
Last synced: 2 months ago
JSON representation
Golang implementation of Viewstamped Replication revisited protocol
- Host: GitHub
- URL: https://github.com/varunu28/go-vsrevisited
- Owner: varunu28
- Created: 2023-08-19T23:42:00.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-02T18:01:17.000Z (almost 2 years ago)
- Last Synced: 2025-04-13T09:49:41.331Z (6 months ago)
- Language: Go
- Size: 15.8 MB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# go-vsrevisited
Golang implementation of [Viewstamped Replication revisited](https://pmg.csail.mit.edu/papers/vr-revisited.pdf) protocol. Covered under blogpost [Implementing Viewstamped Replication](https://distributed-computing-musings.com/2023/10/implementing-viewstamped-replication-protocol/)## How to run?
```
// Build the project
go build// It's a 5 node cluster starting from port 8000 - 8004. So run the 5 server nodes
./vsrevisited server 8000
./vsrevisited server 8001
./vsrevisited server 8002
./vsrevisited server 8003
./vsrevisited server 8004// Run the client on any port except 8000 - 8004
./vsrevisited client 7000
```## Demo
#### Client operation with consensus across clusters(Node on port 8000 is leader)
#### First view change. (Node on port 8001 becomes leader)
#### Node recovery. (Node on port 8000 comes back up)
#### Second view change. (Node on port 8002 becomes leader)
## ToDo
- [ ] Add optimization for storing state on disk for faster recovery
- [ ] Implement the reconfiguration protocol