A distributed, persistent key-value store for you to toy around.
You can find detailed description and report in here, and the defense slides here.
This project uses gRPC. To compile the proto buffer definitions, you'll need protoc
and Go plugin for it.
Check out https://grpc.io/docs/languages/go/quickstart/ for detail.
The gRPC stubs are precompiled & stored in proto
. You can recompile your own with:
make proto
This project uses zookeeper to maintain metadata, so start zookeeper first:
make zookeeper-create-network
make zookeeper
To start master server:
make master
To start primary worker server with id x
:
make primary id=x
To start a backup server with id x
:
make backup id=x
If you want to use multiple backups for one primary, specify backupNum
. This parameter is used to determine the port the process uses, so it should be unique among backups of the same primary:
make backup id=x backupNum=y
To start a client, which is a REPL:
make client
To start a zookeeper CLI to see what's going on under the hood:
make zk-cli