Skip to content

Latest commit

 

History

History
72 lines (56 loc) · 2.2 KB

File metadata and controls

72 lines (56 loc) · 2.2 KB

Distributed-system-Snapshot-algorithm

What is a distributed system?

Distributed systems are composed of multiple servers or hardware units connected over the internet.
They use internet to communicate and exchange messages. As you can imagine a lot of synchronization
problems can arise in communication of such servers. This the task of this project.

What is a snapshot?

snapshotMeme

A snapshot is a moment where a distributed system "records" it's current state.

Implementation specifics

This project features a Lai-Yang algorithm implementation for multiple snapshot initializations,
as well as Spezialleti-Kearns implementation for combining the results of multiple simultaneous snapshots.
The servents (servent and client) in our system exchange bitcake, which is an imagined currency.
The point of this project is to preserve this currency and that none of the bitcake is lost during a snapshot.

Go unfinished base implementation

In the folder Snapshot_GO there is the base of this project not fully implemented.
The reason of discontinuing of the code is that the servents message listener backlog
was not able to be bigger, and this project requires receiving multiple messages.

Output, input and errors

To change the configuration of the system _in.txt files can be changed in the ly_snapshot/input folder. Output can be
inspected in the output folder and errors in the error folder. The system configuration is read from servent_list.properties
and it can be changed. Here is what it looks like:

servent_count=7
clique=false
snapshot=ly
servent0.port=1100
servent1.port=1200
servent2.port=1300
servent3.port=1400
servent4.port=1500
servent5.port=1600
servent6.port=1700
servent0.neighbors=1,2,6
servent1.neighbors=0,3,2,5
servent2.neighbors=0,3,1,6
servent3.neighbors=1,2,4,6
servent4.neighbors=3,5
servent5.neighbors=1,4,6
servent6.neighbors=0,2,3,5
initiators=4,6,1

It is self explanatory.
Here is an example of commands for the _in.txt file:

pause 300
bitcake_info
transaction_burst
pause 15000
transaction_burst
pause 15000
transaction_burst
pause 15000
transaction_burst
pause 15000
stop