This project involves the development of a robust and reliable key-value database inspired by Amazon DynamoDB. Designed to support multiple concurrent clients with the use of multithreading and concurrency management. The system incorporates fault tolerance through server state replication, leveraging the Chain Replication model and Apache ZooKeeper to maintain data consistency and reliability. The database guarantees durability, never losing data or experiencing downtime, making it a dependable solution for critical applications.
This project was made in collaboration with two other classmates:
Diogo lopes
Francisco Catarino
- Client-Server Architectures
- Multithreading
- Server state replication
- Apache Zookeeper
- TCP and UDP Sockets
- Serialization (Protocol Buffers)
- Memory Management and I/O
- Debugging Tools
compile using make tool
makerun server
format: client_hashtable <server>:<port>
./client_hashtable localhost:2181run client
format: server_hashtable <zookeeper ip:port> <port> <n_lists>
./server_hashtable localhost:2181 12345 3put <key> <value>get <key>del <key>sizegetkeysgettablequit