Skip to content

Go implementation of the RAFT consensus algorithm. Faults injector with a REPL and a CLSF (Command List and File Storage) to test several scenarios.

License

Notifications You must be signed in to change notification settings

SCIA-Premium/GoRaft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ALGOREP Profile

AUTHORS

Aeden Bourgue <aeden.bourgue@epita.fr>
Alexandre Lemonnier <alexandre.lemonnier@epita.fr>
Eliott Bouhana <eliott.bouhana@epita.fr>
Philippe Bernet <philippe.bernet@epita.fr>
Sarah Gutierez <sarah.gutierez@epita.fr>
Victor Simonin <victor.simonin@epita.fr>


The objective of this project is to set up a client/server system with a mechanism to control or inject faults into the system.

The general idea is as follows: customers offer values / commands to servers. These servers then want to agree on the order in which they will accept, then run these commands. Once agreed, it will write them to a log file, and execute them.


Build

The provided Makefile build all the necessary executables with the following simple command :

make

It is also possible to build the executable separately :

make raft
make raft_repl
make raft_clsf

RAFT

Testing

go get github.com/mattn/goreman
goreman start

Procfile format :

nodename: ./raft --peer_id NUMBER --peer PEER_ADDRESSES --port :PORT

As an example :

node1: ./raft --peer_id 1 --peer 127.0.0.1:22379,127.0.0.1:32379 --port 12379
node2: ./raft --peer_id 2 --peer 127.0.0.1:12379,127.0.0.1:32379 --port 22379
node3: ./raft --peer_id 3 --peer 127.0.0.1:12379,127.0.0.1:22379 --port 32379

REPL

Testing

./raft_repl address START
./raft_repl address CRASH
./raft_repl address SPEED (low|medium|high)
./raft_repl address RECOVERY

CLSF

Testing

./raft_clsf address LOAD filename
./raft_clsf address DELETE uuid
./raft_clsf address LIST
./raft_clsf address APPEND uuid content

About

Go implementation of the RAFT consensus algorithm. Faults injector with a REPL and a CLSF (Command List and File Storage) to test several scenarios.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •