Aim of project is to build a Distributed File Server. A File server based on raft consenus protocol. This distributed file server is consist of 5 servers. Each have there own raft node and state machine. Project was accomplished in form of assignment where each assignment is one module of final File server.
In assignment I made a single file server. This file server takes command from client and execute them . File server supports operation of read, write, delete file . Besides this, file server also supports unusual operation like compare and swap and automatic deletion of file on basis of time expiry.
- basic_test.go
- server.go
Assignment2 is about state Machine implementation. We were testing statemachine behivour through various event like AppendEntriesRequest, AppendEntriesResponse, VoteRequest, VoteResponse and timeout event were analyzing its output action for each event.
- assign2.go
- assign2_test.go
This was a wrapper to statemachine. In this assignment we integrate statemachine with its raftmachine. Here we implemnted 5 raftnode exchanging information, replicating data, electing leader. We also handled cases of partitions, leader's crashing
These 5 raftNodes are behaving concurrently and whole system will work untill majority of raft machine are in working state. #####Files Included
- data_stru.go
- peers.go
- raft.go
- raft_test.go
- sm.go
####Assignment4: This is integration of Raftamchine with file server of assignment1. Here we build a highly concurrent,fault tolerant distributed file server consisting of five file server which are behaving as one for client. #####Files Included
- data_stru.go
- peers.go
- raft.go
- server.go
- sm.go
- rpc_test.go