An implementation of a distributed transactional key-value store, using message-passing concurrency. This project simulates a distributed system (with different agents) that use a transactional key-value store. The store is distributed over a certain number of concurrent node and used by different concurrent agent.
Synchronization was implemented using a timestamp and snapshot approach.
This project was made in 2018 for the course LSINF2345 – Languages and Algorithms for Distributed Applications.
Languages used:
- Erlang
This is a group project I made with Loan Sens. However, as my collaborator could not use to Erlang, I made all the code while he designed parts of the architecture of the project.
- The Erlang programming language
- To make a distributed application using message-passing concurrency
- To avoid race conditions in a distributed system setting
- The instructions: Project description.pdf
- Our report explaining what we made: LSINF2345_Project_Gustin-Sens_Report.pdf
- The client source code, sending request to the transactional key-value store: src/client.erl
- The representation of the data that is stored in the system: src/data_partition.erl
- A node storing the key-value store: src/transactional_manager.erl
You will need the Erlang compiler and interpreter (BVM) to execute this project.
Compile the project:
erlc src/*Run the project:
erlThen once the interpreter opens:
c(launcher). % Load the launcher
launcher:run_read_file(input_files/test_input.txt). % Take commands from 'test_input.txt' file