The submission of the report and slides are located in _submissions.
Implementation of the project for the course Cloud Data Bases. We extended our project with the implementation of a slopy quorum and hinted handoff inspired by Amazon's Dynamo database (Link to paper). This extension is capable of handling temporary failures and provides better availability and durability guarantees.
ms5/
├── _submissions/ -- slides & report
├── cmd/ -- where we keep the executable files
│ ├── benchmark/
│ ├── client/
│ ├── ecs/
│ ├── quorum-client/
│ └── server/
├── ecs/ -- our External Configuration Service (ECS)
├── protocol/ -- TCP based communication protocols
├── server/
│ ├── data/
│ ├── ecs/ -- contains state machine for the synchronizatoin with ECS
│ ├── log/ -- append-only log
│ ├── memtable/ -- memtable for LSM tree (in-memory data structure)
│ ├── replication/ -- replication manager to handle scheduling & reconcilitation for replicas
│ ├── sstable/ -- sstable for LSM tree (on-disk data structure)
│ ├── store/
│ ├── util/
│ └── web/ -- TCP server for the database
└── tcp/
Make sure to install the Go toolchain and set the Go path.
Also install golangci-lint
(See instructions).
go get ./...
make
docker build --platform linux/amd64 --tag gitlab.lrz.de:5005/cdb-23/gr3/ms5/kv-client --file Dockerfile.client .
&& docker push gitlab.lrz.de:5005/cdb-23/gr3/ms5/kv-client
docker build --platform linux/amd64 --tag gitlab.lrz.de:5005/cdb-23/gr3/ms5/kv-server --file Dockerfile.server .
&& docker push gitlab.lrz.de:5005/cdb-23/gr3/ms5/kv-server
docker build --platform linux/amd64 --tag gitlab.lrz.de:5005/cdb-23/gr3/ms5/ecs-server --file Dockerfile.ecs .
&& docker push gitlab.lrz.de:5005/cdb-23/gr3/ms5/ecs-server
To test the system with one ECS and two KVStore, please run following commands in three different terminal tabs:
make run-ecs
to start the ECSmake run-server
to start the first servermake run-server-2
to start the second server- optional:
make run-server-i
to run the third and fourth server