This project is a distributed key-value store system that facilitates storage and retrieval of key-value pairs across a network of nodes using peer-to-peer communication and an authorative server.
- Node: Represents an individual server or peer in the distributed network. Each node is responsible for storing a subset of the data and communicating with other nodes.
- Distributed Storage: Data is distributed across multiple nodes in the network.
- Peer-to-Peer Communication: Nodes communicates with each other directly to share data.
- Registry Server: Serve as data registry, providing information about data location, ensuring the distribution of read and write requests using a fair read-write lock mechanism.
Run the registry server:
cargo run --bin server <primary port> <secondary host:port>
Run the client examples:
cargo run --bin client <primary host:port> <secondary host:port>
Run the tests:
cargo run test
Run the registry benchmarks with the plots:
cargo run --bin registry_benchmark && python3 scripts/registry_plot.py