Well, I would like to write something about our Decentralized System (DS) project and what we are going to do in this project. Since it is the first post about the big picture of our DS project in this blog, I named it “Pilot” :p. Our group is G007, which consists of Julia, Diego, Enkhjin and myself.
After two weeks of paper reading and some brainstorming sessions, we are proposing these following directions for our project, Large-Scale Decentralized Storage Systems for Volunter Computing Systems.
First of all, we would like to discuss about Volunter Computing (VC) Systems. So what is VC? Well, I’ve explained it before in my previous post. But here, we would like to re-highlight its characteristics, which are:
- VC consists of group of computing resources, and each node in VC voluntary shares its resources (CPUs or storage) to achieve common goals (such as analyzing radio telescope data to find extraterrestrial intelligence). Usually the type of task that executed in VC belongs to Embarrassingly parallel category, which can be easily divided into independent parallel task.
- The participating nodes are not able to continuously connected or available to the system.
- This kind of system is built on trust between nodes.
- It is highly dynamic, which means it has no guarantee how many participating machines will be available at given time or how long a given resource will be available in the system.
- Participating nodes are given some incentives. And the type of incentives really depend on the participating nodes, some participants enjoy seeing application graphics, either in a window or as a screensaver. Others are motivated by competition with respect to computer speed and donated CPU time.
Nowadays, storage in VC is centralized. The participating nodes fetch the data from the central storage server or the centralized controllers send the data to the participating nodes. This characteristic reduces the scalability of VC since there may be bottleneck on the storage server bandwidth and processing power.
Now, comes the second element of this project, which is Distributed Storage System (DSS). For the definition, well, it is rather self-explained. It is storage system that distributed among networks of computer. The main points of these kind of systems are no single point of failure and scalability while maintaining data availability and integrity. Example of these systems are Cassandra (used by Facebook), Voldemort (used by LinkedIn). Both of these example are using dedicated storage resources. Another type of this system is based on Peer-to-Peer technologies as presented in these following survey paper, titled “A Survey of Peer to Peer Storage Techniques for Distributed File Systems”. Peer-to-Peer technology means the later they do not really needs dedicated resources and expected to have high scalability.
The Challenges and Proposal
Centralized storage system in Volunteer Computing reduces the scalability of VC and introduces bottleneck on the storage server bandwidth and computing power. And until now, Distributed Storage System for VC is not really exist yet, although research in DSS is abundance and more hardware capability to perform storage function.
Therefore, having DSS as replacement of centralized storage server in VC can improve the scalability and remove the bottleneck on the storage system. This concept is depicted in figure below
The Project Objectives
Given the above challenges and proposal, we would like to perform a survey based on several metrics (such as Availability, Reliability, and Security) that important for Volunter Computing. Then, if the time permits, we will perform performance analysis of best DSS implementation based on our metrics. We plan to use one of the available DSS implementation, and observe its performance using distributed system testbed such as PlanetLab.
Until last week of March, we have read many papers. I will update this blog with summary of what we have reading, or update this post with the appropriate link (since some of the group members posted the review in their blog or Google Docs). Other than summary, currently we also constructing a spreadsheet that define the characteristics of DSS that we reviewed. The characteristics includes our observation about their suitability for Volunteer Computing. I will share the link once the spreadsheet is finished.
DSS that has been reviewed (will be updated along the way):
- P2PTuple (scroll to the middle of the post)
- Farsite, another review is here
- Ivy (scroll to the middle or use control F)
- Cassandra(scroll to the middle or use control F)
- Kademlia (Overnet backbone)
The slides that used for our project presentation can be found here: