From efcb725f6ba7a3d4810592d894e052d2a732f9ee Mon Sep 17 00:00:00 2001 From: lucarin91 Date: Fri, 15 Apr 2016 18:14:48 +0200 Subject: [PATCH] update the report --- REPORT.pdf | Bin 134547 -> 136930 bytes report/cover.tex | 2 +- report/references.md | 12 +++---- report/sections/how.md | 23 ++++++------ report/sections/introduction.md | 14 ++++---- report/sections/logic.md | 38 ++++++++++---------- report/sections/project.md | 60 ++++++++++++++++---------------- report/template.tex | 2 +- 8 files changed, 76 insertions(+), 75 deletions(-) diff --git a/REPORT.pdf b/REPORT.pdf index a5fcfc3b2c8fc983b852902cebec204134942e4e..b1e0533df42996c0731c97b6ba21fff3693a279d 100644 GIT binary patch delta 62174 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 j0vKRKU;CQ;giKo0vq)>lh9E{@0 diff --git a/report/cover.tex b/report/cover.tex index 56db973..ed2f531 100644 --- a/report/cover.tex +++ b/report/cover.tex @@ -8,7 +8,7 @@ \textsc{\Large Distributed Enabling Platforms}\\[2.5cm] \HRule\\[0.4cm] - {\huge \bfseries PAD-FS}\\[0.4cm] + {\huge \bfseries PAD-FS}\\[0.5cm] {\huge A distributed persistent data storage}\\[0.4cm] \HRule\\[3cm] \textsc{Project Report}\\[0.4cm] diff --git a/report/references.md b/report/references.md index 0e27acb..0e06dc6 100644 --- a/report/references.md +++ b/report/references.md @@ -6,7 +6,7 @@ - [edwardcapriolo/gossip](https://github.com/edwardcapriolo/gossip),to implement the gossip protocol between the servers. - [MapDB](http://www.mapdb.org/), to implement the persistent storage. -- [FasterXML/jackson](https://github.com/FasterXML/jackson), to easilly convert java class to json. +- [FasterXML/jackson](https://github.com/FasterXML/jackson), to easily convert Java class to JSON. - [JUnit](http://junit.org/), to the test the project. - [Spring](https://spring.io/), to implement the restful API. - [JCommander](http://jcommander.org/), to parse the argument given to the programs. @@ -15,20 +15,20 @@ ## Nodejs and javascript libraries:{-} -- [Angularjs](https://angularjs.org/), to implement the one page site of the MonitorWebApp. +- [AngularJS](https://angularjs.org/), to implement the one page site of the MonitorWebApp. - [Bootstrap](http://getbootstrap.com/), for he graphics of the MonitorWebApp. -- [nwjs](http://nwjs.io/), to transform the webapp to a native app for Mac Windows an Linux. +- [NW.js](http://nwjs.io/), to transform the webapp to a native app for Mac Windows an Linux. ## Build tools:{-} - [Gradle](https://gradle.org/), to build all the project and manage the dependencies. -- [gradle-docker](https://github.com/Transmode/gradle-docker),the docker plugin for gradle. -- [jitpack](https://jitpack.io), to bulid java library from github. +- [gradle-docker](https://github.com/Transmode/gradle-docker),the docker plug-in for Gradle. +- [JitPack](https://jitpack.io), to build Java library from github. - [npm](https://www.npmjs.com/), to manage the dependency of MonitorWebApp. - [nw-builder](https://github.com/nwjs/nw-builder) to build MonitorWebApp for the different operation system. ## Docker images:{-} -- [java](https://hub.docker.com/_/java/) a docker image with the openjdk. +- [java](https://hub.docker.com/_/java/) a Docker image with the openJDK. diff --git a/report/sections/how.md b/report/sections/how.md index 38ff0ee..4d150e3 100644 --- a/report/sections/how.md +++ b/report/sections/how.md @@ -1,7 +1,7 @@ -# How to use -It is possible to use the distributed file-system in the thread version for a single machine, the multi server for a cluster of machine or using the docker container either in a single machine or in cluster. +# User Guide +It is possible to use the distributed file system in the multi-threaded version for a single machine, the multi- server for a cluster of machines or using the *Docker* container either in a single machine or in cluster. -The simplest way to use the file-system is to download the last release and run it with the only requirement of Java8. In this way the application can be used either in the thread version with the `app-.jar` or in the cluster version with the storage node `core-.jar` and the front node `api-.jar`. +The simplest way to use the file system is to download the last release and run it with the only requirement of Java8. In this way, the application can be used either in the multi-thread version with the `app-.jar` or in the cluster version with the storage node `core-.jar` and the front node `api-.jar`. In the release is also possible to find the the MonitorWebApp for Linux, MacOS and Windows. @@ -9,11 +9,11 @@ In the release is also possible to find the the MonitorWebApp for Linux, MacOS a - Java8 - *Nodejs/npm (optional only for the MonitorWebApp)* -- *Docker>=10 (optional only for the docker version of the file-system)* +- *Docker>=10 (optional only for the Docker version of the file system)* ## Thread version -It can be build with: +It can be built with: ```bash ./gradlew app:build ``` @@ -35,7 +35,7 @@ java -jar -N 10 -n 2 -gport 3000 -mport 2000" ``` ## Single server -It can be build with: +It can be built with: ```bash ./gradlew core:build api:build ``` @@ -70,16 +70,17 @@ To build the docker image of the front node and the storage node run ./gradlew core:build core:docker api:build api:docker ``` -Now is possible to execute a demo by run the following perl script: +Now is possible to execute a demo by running the following Perl script: ```bash perl start-docker.pl ``` -To manually run a file-system node you have to create a new docker network with the command: +To manually run a file system node you have to create a new docker network with the command: + ```bash docker network create --subnet=172.18.0.1/16 fs-net -```bash -then to start a two node file-system run +``` +then to start a two node file system ```bash docker run -d \ --net fs-net \ @@ -102,7 +103,7 @@ docker run -d \ ``` ## MonitorWebApp -The webapp can be used with one of the release version for the different OS or run with the nodejs interpreter with the following command: +The web-app can be used with one of the released versions for the different OS's or run with the Node.js interpreter with the following command: ```bash ./gradlew webapp:run ``` diff --git a/report/sections/introduction.md b/report/sections/introduction.md index 5e1765e..e4ed1ba 100644 --- a/report/sections/introduction.md +++ b/report/sections/introduction.md @@ -1,11 +1,11 @@ # Introduction -The aim of the project is to create a weakly consist distributed file-system by the use of gossiping, consistent hashing and vector clocks. +The aim of the project is to create a weakly consistent distributed file system by using gossiping, consistent hashing and vector clocks. -The communication between node exploit the Java socket mechanism so it can be execute in different ways: on a single machine with threads, on a cluster of servers or in virtual containers using *docker*. +The communication between nodes exploits the Java socket mechanism, thus it can be executed in different ways: on a single machine with threads, on a cluster of servers or in virtual containers using *Docker*. -The file-system is implemented as a map with a string key and a number or string value with the following operations: +The file system is implemented as a key value map of type $\langle string, string \cup number \rangle$ with the following operations: -- **add**(key, value), add only if the key is not present. -- **get**(key), get the value of the key if present. -- **update**(key, value), update the key with the new value only if the key already exists. -- **remove**(key), remove the key if present. +- **add**(key, value) that adds the pair only if the key is not present; +- **get**(key) returning the value of the key if present; +- **update**(key, value) that updates the key with the new value only if the key already exists; +- **remove**(key) that removes the key if present; diff --git a/report/sections/logic.md b/report/sections/logic.md index 02f582d..7ce75b6 100644 --- a/report/sections/logic.md +++ b/report/sections/logic.md @@ -1,38 +1,38 @@ # Logical Structure - ![Project logical structure](./img/pad-logic.png) -The file-system is composed by two fundamental parts: +The file system is composed by two fundamental parts: + +- the front-end, that provides the external access to the file system through a Restful JSON API; +- the storage system itself where the data are stored and managed. -- the front-end, that provides the external access to the file-system through a Restful json API, -- the storage system its self where the data are stored and manage. +The former component does not keep any track of the data stored in the system. It only knows the servers, thanks to the gossiping protocol. -The first part doesn't have any information of the data store in the system. It only knows the servers, thanks to the gossiping protocol. ## Communication system -All the internal communication are done with the UDP transport protocol, to avoid the overhead of the TCP and assuming a reliable network between the servers. +All the internal communication relies upon the UDP transport protocol to avoid the overhead of the TCP and assuming a reliable network between the servers exists. -All the nodes, either the front-end and the storage one, use the gossip protocol to update the list of the servers involved in the file-system. -So that each node has two services running on different ports, one for the gossip protocol and one for receiving messages from the other nodes. +All the nodes, either the front-end and the storage one, exploit gossiping to update the list of the servers involved in the file system. +According to that, each node runs two services on different ports: one in charge of the gossiping protocol, the other for receiving messages from the other nodes. -When a new request arrives to a front node it is sent to a random storage node from its list and than it wait 5 second for an acknowledgement that the request is correctly served or an error, otherwise it assume that something goes wrong. +When a new request arrives to a front-end node it is sent to a random storage node from its list and then it waits 5 seconds for an acknowledgement that the request has been correctly served or not. If no message is received, it is assumed that something went wrong. ## Storage protocol -All the storage nodes use consistent hashing to assign a key value to a given server with the following strategy: +All the storage nodes use consistent hashing to assign a key-value pair to a given server with the following strategy: -- a server is master for all the keys with lower or equal hash value. -- each key is replicated to a fixed number of next server in the consistent hash. +- a server is master for all the keys with lower or equal hash value; +- each key is replicated to a fixed number of subsequence servers in the consistent hash ring; -The system use a single master storage protocol without consensus, so the value is written or read without waiting for an acknowledgement from the backup's servers. +The system use a single master storage protocol without consensus, so that the value is written or read without waiting for an acknowledgement from the backup servers. -Each time a new server turn on it immediately became master for the keys with a lower hash and a backup server for the keys owned by the previous servers. So after their neighbors discovered it, they either send the keys that it has to manage or the keys that it has to keep for backups. +Each time a new server turns on it immediately become master for the keys with a lower hash and the backup server for the keys owned by the previous server. So after its neighbors discovered it, they either send the keys that it has to manage or the keys that it has to keep for backup. -Within the data it is also added a vector clock to keep trace of with server update the value. The vector clock is implemented using a map where the key is the server id and for the value a counter, in this way all the serves that don't have a key are considered zero. +Within the data it is also added a vector clock to keep track of which server updated the value. The vector clock is implemented using a map where the key is the server id and the value is a counter; the servers that are not present in the map are considered with a 0 counter. -So each time a server update a value as a master it increment the counter with its id inside the object, and foreword this new vector with the key value to its backups server. +So each time a server updates a value as a master it increments the counter with its id inside the object, and forwards this new vector with the key-value to its backup servers. -This vector clock is used every time two version of a value are founded, after some key management, to decide with is the newer. If two unconfrontable version of the value are founded the node server create value with the two different version and put the `conflict` flag to true. +This vector clock is used every time two version of a value must be compared to decide which is the most recent. If two uncomparable versions of a value are found, the server node creates a value with the two different versions and sets the `conflict` flag. -At this point where a user try to get that key, it receive all the conflict version and it can decide with one it consider the correct newer version by done an update operation. +At this point when a user attempts to get a key, he/she receives all the conflicting versions and can decide which one is the correct version by performing an update operation. -After the update the server resolve the conflict and merge all the vector clock for of all the value, in this way if at same time one of this old values are founded it will be discarded. +After the update the server resolves the conflict and merges all the vector clocks together. For so, subsequent incoming old values for a key will be discarded. diff --git a/report/sections/project.md b/report/sections/project.md index 6676a44..8b7985f 100644 --- a/report/sections/project.md +++ b/report/sections/project.md @@ -2,46 +2,46 @@ The system is structured in the following projects: - **core**, it is a single storage node with all the structure and the essential algorithms. -- **api**, it is a single front-end node -- **app**, it implement a distributed file system with a single API server, where each node run on threads. -- **webapp**, this is a nodejs application that graphically show the state of the file-system. +- **api**, it is a single front-end node. +- **app**, it implements a distributed file system with a single API server, where each node run on threads. +- **webapp**, this is a nodejs application that graphically shows the state of the file system. ![screen-shoot of the MonitorWebApp](./img/webapp.png "Project logical structure") ## Core -The main class in the core project are: +The main classes in the core project are: -- **Messages**, and its children class - MessageManage, MessageRequest, MessageResponse, MessageStatus - they all represent a json message exchanged between the file-system nodes. -- **ConsistentHash**, the implementation of a Consistent hash owned by each storage nodes. -- **Data**, it represent a generic key value saved inside the system. -- **Node**, a server node of the system either a front-end or a backed server. -- **StorageNode**, it is a storage node object. -- **GossipResurce**, it is the resources use by the front-end to exploit the gossip protocol. -- **PersistentStorage**, a wrapper for the MapDB library used to persistently store data on the service node. -- **VectorClock**, the implementation of the vector clock. +- `Messages`, and its children classes -- `MessageManage`, `MessageRequest`, `MessageResponse`, `MessageStatus` -- that represent JSON messages exchanged between the file system nodes. +- `ConsistentHash`, the implementation of a Consistent Hashing owned by each storage nodes. +- `Data`, represent a generic key-value stored inside the system. +- `Node`, a server node of the system either a front-end or a backed server. +- `StorageNode`, it is a storage node object. +- `GossipResource`, it is the resources use by the front-end to exploit the gossip protocol. +- `PersistentStorage`, a wrapper for the `MapDB` library used to persistently store data on the service node. +- `VectorClock`, the implementation of the vector clock. ### Node class -The node class represents a server of the file-system with the id, the ip and the ports of either the gossip server and the management service. It also has an protected method `send(Node n, Message msg)` method to send a message to a given node with the `DatragramSocket`. +The node class represents a server of the file system with the id, the IP and the ports both the gossip server and the management service. It also has a `protected` method `send(Node n, Message msg)` method to send a message to a given node through the `DatagramSocket`. -This class is extended by the `StorageNode` and the `GossipResurce` which implements a storage node and a front-end node. +This class is extended by the `StorageNode` and the `GossipResource` which implements a storage node and a front-end node. -The `StorageNode` can be instantiated with the constructor `NodeService(String id, String ipAddress, int port, List gossipMembers)` that initialize all the needed structure such as: +The `StorageNode` can be instantiated with the constructor `NodeService(String id, String ipAddress, int port, List gossipMembers)` that initializes all the needed structures, i.e.: -- `PersistentStorage` class -- `DatagramSocketServer` with use to receive message from the other node +- `PersistentStorage` class, +- `DatagramSocketServer` to receive message from other nodes, - `ConsistentHash` class, -- `GossipService` to maintain the consistent hash structure +- `GossipService` to maintain the consistent hash structure, -It has a thread that continually check new messages from the other nodes, and for each one it distinguish two general case: if it is a new request from another node or if it is a `MessageManage` with some manage operation sent by the master to add or modified a backup key. +It has a thread that continuously checks new messages from the other nodes, and for each one it distinguishes two general cases: either it is a new request or a `MessageManage` with some operation sent by the master to add or modify a backup key. ### PersistentStorage -This class implement the storage on file using a B-Tree Map implemented by the library `MapDB`. This data structure have as key the hash of the key of the value and as value a `Data` object, this is because in this way is possible to retrieve in $O(log(n))$ all the keys that have the hash in certain subset. +This class implements the storage on file using a B-Tree Map $\langle Long, Data \rangle$ -- implemented by the library `MapDB` -- this is because it is possible to retrieve in $O(\log n)$ all the keys that have the hash in a certain subset. -This operation can be done with the method `getInterval(Long hash1, Long hash2)` and it used to easily understand who is the master of which keys. In this way when a new node is founded on the network thanks to the gossip protocol it is more simple to search the keys that he have to manage as master or the keys that it have to store as a backup node. +This operation can be done with the method `getInterval(Long hash1, Long hash2)` and it used to easily understand who is the master of which keys. In this way, when a new node is found on the network thanks to the gossip protocol, it is simpler to search the keys that it has to manage as master or the keys that it has to store as a backup node. ## Api -The Restful API, implemented with the Spring web framework, exposes the two end point `/api` and `/status`. The first is the public entry-point to operate with the file-system. The second is a monitoring tool used by the webapp to get a snapshot of all the node in the file-system with their data structures. +The Restful API, implemented with the Spring web framework, exposes the two end point `/api` and `/status`. The first is the public entry-point to operate with the file system. The second is a monitoring tool used by the MonitorWebApp to get a snapshot of all the node in the file system with their data structures. The following operation can be used on the `/api` resources: @@ -50,20 +50,20 @@ The following operation can be used on the `/api` resources: - **update** a key, `method: PUT, body: {"key": "..", "value": ".."}` - **delete** a key, `method: DEL, parameter: key` -Each of the previous operations return a json object with the `status` field that can be either `ok` or `error` and the `data` field with optional return data. +Each of the previous operations return a JOSN object with the `status` field that can be either `ok` or `error` and the `data` field with optional return data. ## Tests In the project core there are the following test classes: -- `ConsistentHashTest`, test the methods `add`, `get`, `getPrev`, `getNext` of the `ConsistentHash` class. -- `DataTest`, test the methods to manages multiple conflict versison of the same data in the `Data` class. -- `FSTest`, test the threaded version of the file-system with 10 nodes, it checks all the implemented operation (get, add, update, delete). -- `ModServerTest`, check if the procedure to add or remove a node of the file-system is work. -- `StorageTest`, test the `add`, `get`, `update`, `delete`, methods of the `PersistenStorage` class. -- `VectorClockTest`, test the `increment`, `update` and `compareTo` methods of the `VectorClock` class. +- `ConsistentHashTest`, tests the methods `add`, `get`, `getPrev`, `getNext` of the `ConsistentHash` class. +- `DataTest`, tests the methods to manage multiple conflicting versions of the same data in the `Data` class. +- `FSTest`, tests the threaded version of the file system with 10 nodes, it checks all the implemented operations (get, add, update, delete). +- `ModServerTest`, checks if the procedure to add or remove a node of the file system works. +- `StorageTest`, tests the `add`, `get`, `update`, `delete`, methods of the `PersistenStorage` class. +- `VectorClockTest`, tests the `increment`, `update` and `compareTo` methods of the `VectorClock` class. -Given the latter test classes also a coverage analysis is done to understend if all the code is correctly tested. +Given the latter test classes also a coverage test analysis is done to understand if all the code is correctly tested. The first statistics is the coverage of the test in the whole project. | % Class | % Method | % Line | diff --git a/report/template.tex b/report/template.tex index 4a57de4..be17e37 100644 --- a/report/template.tex +++ b/report/template.tex @@ -84,7 +84,7 @@ \vspace{4 cm} \tableofcontents -% \newpage +\newpage $body$