Golang implentation of Paxos consensus algorithm.
This project is still under development. I have tried to keep the algorithm implementation completely decoupled so you can just import from github.com/RichardKnop/paxos/paxos
and extend Acceptor
, Proposer
and Learner
structs.
In order to provide method of communication best suited for you, implement the AcceptorClientInterface
interface which is then used by proposers to send request to acceptors.
The communicaton / networking between agents is something which is not relevant for the algorithm. I have written a simple RPC agent system for testing purposes though.
Run multiple test agents in different tabs to test the algorithm:
go run cmd/main.go run --port 1234 --peers 127.0.0.1:2345
go run cmd/main.go run --port 2345 --peers 127.0.0.1:1234
According to Go 1.5 Vendor experiment, all dependencies are stored in the vendor directory. This approach is called vendoring
and is the best practice for Go projects to lock versions of dependencies in order to achieve reproducible builds.
This project uses dep for dependency management. To update dependencies during development:
dep ensure
Donate BTC to my wallet if you find this project useful: 12iFVjQ5n3Qdmiai4Mp9EG93NSvDipyRKV