Skip to content

A distributed KV Store written in Go and Python based on 2PC protocol with consistent hashing.

License

Notifications You must be signed in to change notification settings

dhruvp-8/arancia

Repository files navigation

Arancia - Distributed Key Value Store

This project targets on creating a distributed key-value store based on 2PC protocol with consistent hashing in order to maintain data consistency and high availability.

Architecture

Alt text

Prerequisites

What things you need to install to run the software and how to install them

Vagrant

Download vagrant for macOS

virtualbox 5.2.30 

Download virtualbox for macOS

Installing

A step by step series of examples that tell you how to get a development env running

Install Vagrant using the download link
Install Virtualbox using the download link
cd deploy/

Creates the Ubuntu virtual machine using the Vagrantfile

vagrant up

SSH into the virtual machine

vagrant ssh

Folder which has symlink with local machine folder

cd /vagrant

Install the Go Library

go get github.com/elazarl/goproxy

Creates a python3 virtualenv

mkvirtualenv --python=python3 <NAME_OF_ENV>

Install the python dependencies

pip3 install -r requirements.txt

Use this command to deactivate the python virtual environment

deactivate

Use this command to activate the python virtual environment

workon <NAME_OF_ENV>

Similarly, install all the prerequisites.

Running the tests

Use this command from root directory to start the Go Proxy server

go run proxy.go

Use this command from /server to start the Gunicorn Server

gunicorn --bind=0.0.0.0:8000 --log-level=debug wsgi --reload

Start the Celery Worker from /server

celery -A send_email worker --loglevel=info

API Calls with documentation will be updated soon. Moreover how to use CURL or POSTMAN to send the request shall be explained.

Performance

Performance Benchmarking tool was created with a support from RocksDB OpenSource Foundations

Deployment

Not Deployed.

Versioning

I use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

License

Acknowledgments

About

A distributed KV Store written in Go and Python based on 2PC protocol with consistent hashing.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published