Skip to content

Golang implementation of Viewstamped Replication revisited protocol

Notifications You must be signed in to change notification settings

varunu28/go-vsrevisited

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-vsrevisited

Golang implementation of Viewstamped Replication revisited protocol. Covered under blogpost Implementing Viewstamped Replication

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)

Client Operation

First view change. (Node on port 8001 becomes leader)

View change

Node recovery. (Node on port 8000 comes back up)

Node recovery

Second view change. (Node on port 8002 becomes leader)

Second View change

ToDo

  • Add optimization for storing state on disk for faster recovery
  • Implement the reconfiguration protocol

About

Golang implementation of Viewstamped Replication revisited protocol

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages