Categorygithub.com/yizhuoliang/gopaxos
repositorypackage
0.0.0-20240228071218-bc80fdacaddd
Repository: https://github.com/yizhuoliang/gopaxos.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# README

Implementing multi-paxos with gRPC framework

Another system we built - ZooKeeper Atomic Broadcast written in Go

System Structure

structure.png

Client/main.go

  • send operations
  • periodically check performed operations

Replica/main.go

  • receive client operations, assign slot number
  • send proposal to leaders
  • peridoically check decided proposals
  • maintain sequencial consistency of how operations are performed

Leader/main.go

  • receive replica proposals, assign ballot number
  • send Commanders to ask for acceptor quorum consent
  • use Scout to maintain the invariant that only one active leader at a time
  • update ballot number when the previous active leader is down
  • avoid unstable leadership by sending and receiving hearbeats

system testing setup and port assginment

  • 2 clients (50051, 50052)
  • 2 replicas (50053, 50054)
  • 2 leaders (50055, 50056)
  • 3 acceptors (50057, 50058, 50059)