Giter Site home page Giter Site logo

sdfs's Introduction

SDFS

Design

Basically, we have imitate how google did GFS but in a much simpler way. Architecturally, we have developed a master-slave structured distributed file system based on tcp connections. The leader node does not perform file storage, but only task coordination and sending, as well as resource synchronization checks. Since our most important goal is to achieve strong consistency, the leader node runs three processes periodically in the background: 1. Check if there are enough file backups, and if not, select the storage node with the least current resources for extra file backups; 2. Check if there are enough backups of the current file mapping table of leader, if not, make data backups to more machines to cope with possible leader node crash; 3. Check if there are any files on the storage node that are out of date or do not match the leader information, and clean up the garbage. By running these three backends, the overall system consistency will be ensured. Regarding the consistency of timing on different nodes, we use total ordering, when the leader accepts each operation request, it increases its own incarnation number and attaches it to the task's information, helping the storage node to order the events. We keep four replica for each files and the master table, and since we ensure strong consistency, we only read one replica oof data when needed. Next, I will give a separate description of each operation. For operations that require communication with other storage nodes, the nodes will first communicate with the leader node to obtain the corresponding information before transferring the file with the target node. When the leader failed, the new leader will be elected follow by a hard coded sequence, then the new leader will sent massage to update config files in all node, and the system go back to normal mode.

Past MP Use

For membership protocal, we still use the SWIM like procotal we build for MP2, which enables us to detect the join and leave for new nodes and thus do the resource rebalancing. We use distributed-querier in MP1 to debug with our sdfs log.

Getting started

git clone https://gitlab.engr.illinois.edu/kc68/SDFS.git
cd SDFS
go run main.go
# a node will join the system automatically, if you want to leave, type "leave"

sdfs's People

Contributors

kaiyang-chen avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.