Skip to content

PedroVFSantos/distributed-key-value

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distributed Key-Value Store

Overview

A resilient and replicated key-value storage system designed to ensure data consistency and availability across a decentralized cluster. This project was developed as part of the Distributed Systems curriculum at the Federal University of São Carlos (UFSCar).

Core Concepts

  • Consistency: Implements an active replication protocol where the receiving node acts as a coordinator to synchronize data across all peers.
  • Communication: High-performance Remote Procedure Calls (RPC) using gRPC and Protocol Buffers.
  • Fault Tolerance: Distributed architecture designed to maintain data integrity across multiple nodes.
  • Orchestration: Fully containerized environment for simulating real-world network isolation.

Tech Stack

  • Language: Python 3.x
  • Middleware: gRPC, Protocol Buffers
  • Infrastructure: Docker, Docker Compose

Project Structure

  • /proto: Service definitions and message structures.
  • /src/node: Server-side logic, storage implementation, and replication protocols.
  • /src/client: Client implementation for system interaction and testing.
  • /docker: Container orchestration and network configuration.

Setup and Execution

  1. Clone the repository.
  2. Ensure Docker and Docker Compose are installed.
  3. Start the cluster:
    docker-compose up --build
  4. Run the test client:
    python src/client/main.py

Academic Context

Developed for the Distributed Systems (Sistemas Distribuídos) course.

  • Department of Computing (DC)
  • Federal University of São Carlos (UFSCar)

About

A resilient, replicated key-value storage system implemented in Python, featuring active replication and cluster orchestration. Developed for the Distributed Systems course at UFSCar.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages