Skip to content

Project Description

mircea edited this page Sep 13, 2010 · 14 revisions

Coding Style

Coding Style is an important aspect in any collaborative software project. In order to prevent any issues, we have set up a coding style to be applied to all the software components written us. This coding style does not apply to any component that is not directly developed by us.

Details

The important coding style rules are based on the official “Style Guide for Python Code”, available at the address http://www.python.org/dev/peps/pep-0008/.

Line width is 80 characters (with the possibility of extending this number in the future).

Project Directory Structure

The directory structure used in the git repository is the following:

/docs/
    articles
/reports/
/src/
    client/
        fuse-exporter
        knowledge-modeller
    storage/
        dymanimc-storage
        permanent-storage
    common/
        knowledge-balancer
        multicast-manager
        p2p-manager

Project Description

The project target is to design and build an architecture of a collective knowledge based repository, implemented as a distributed file system. The knowledge is dynamically shared between the entities of the distributed system and it consists of either static or dynamic information provided by the hosts. The model provides support for concurrent data access and redundant storage of critical metadata.

The Development Team

The development team is composed of:

  • Mircea BARDAC, PhD Student, Computer Science and Automatic Control Faculty, Politehnica University of Bucharest, email: cs@mirca.bardac.net
  • George MILESCU, PhD Student, Computer Science and Automatic Control Faculty, Politehnica University of Bucharest, email: george.milescu@gmail.com

Dycofs Architecture

The Dycofs architecture is summarized in the following diagram:

Dycofs modules

The main modules are:

Multicast 
Discovery
 and 
Service 
Advertisment
 Component


  • Ensures host discovery based on local network multicast protocols

Peer‐to‐peer
 Connection
 Component


  • Ensures host discovery outside the local network

Collective
 Knowledge
 Balancer


  • Provides a data access model for the information stored by the hosts. It can address the information from all the nodes, or only from part of them, based on a defined criteria.

Knowledge
 Modeling
 Component


  • Provides information modeling based on:
    • type
      • presents persistent (static) data stored in the system
      • presents non-persistent (dynamic) data stored in the system
    • location
      • presents information based on host
      • presents information based the area where the host is located
      • presents information based the system the host is included in

Dynamic
 Storage 
Component


  • Ensures the storage and distribution of non-persistent (dynamic) data

Permanent Storage 
Component


  • Ensures the storage and distribution of persistent (static) data

FUSE 
Export 
Component


  • Exports the data in a file hierarchy

Project Documentation

Each component will have it’s own separate documentation section, in order to increase its re-usability.

The overall architectural design, implementation and results will be included in an article, that is to be written by the end of January 2009.

Project Deliverables

The project will have two main deliverables:

  • an article, describing the overall architectural design, implementation and results
  • the source code, binary files and a test campaign that performance of the proposed architecture

Main Implementation Technologies

  • FUSE (pyfuse)
  • Zeroconf (pyzeroconf)
  • Lots of Python