Project: Distributed Cloud Database
Java
JUnit
Distributed Systems
This is the group project for COMP 4901A - Distributed Systems. The project is written in Java
.
The project is a cloud database that includes multiple storage nodes. All storage nodes are mapped to a hash ring, where each node is responsible for a range of keys. Each part of data is replicated on three different nodes. Therefore, the system can automatically recover from node failures. It also supports horizontal scaling, so that nodes can be added or removed dynamically. Besides, we added leader election mechanism so that the system can recover from leader failures.
Comprehensive unit tests are included in the project. The tests are supported by JUnit
. We implemented a CI workflow with GitHub Actions
as well so that the code is checked automatically on each pull request.
I served as the leader of our team of three. Besides writing code, I was responsible for the overall design of the system and the project timeline management.
p.s. This is the first time that I wrote a Java program.