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 protoThis project uses zookeeper to maintain metadata, so start zookeeper first:
make zookeeper-create-network
make zookeeperTo start master server:
make masterTo start primary worker server with id x:
make primary id=xTo start a backup server with id x:
make backup id=xIf 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=yTo start a client, which is a REPL:
make clientTo start a zookeeper CLI to see what's going on under the hood:
make zk-cli