r30 - in trunk: diswork-fs/src/main/java/org/nuiton/disworkfs src/site src/site/rst src/site/rst/diswork-fs
Author: bleny Date: 2010-05-14 11:35:37 +0200 (Fri, 14 May 2010) New Revision: 30 Url: http://nuiton.org/repositories/revision/diswork/30 Log: menage avant changement de version Added: trunk/src/site/rst/diswork-fs/ trunk/src/site/rst/diswork-fs/history.rst Modified: trunk/diswork-fs/src/main/java/org/nuiton/disworkfs/DistributedFileSystem.java trunk/diswork-fs/src/main/java/org/nuiton/disworkfs/DisworkFileSystem.java trunk/src/site/site_en.xml Modified: trunk/diswork-fs/src/main/java/org/nuiton/disworkfs/DistributedFileSystem.java =================================================================== --- trunk/diswork-fs/src/main/java/org/nuiton/disworkfs/DistributedFileSystem.java 2010-05-10 09:30:32 UTC (rev 29) +++ trunk/diswork-fs/src/main/java/org/nuiton/disworkfs/DistributedFileSystem.java 2010-05-14 09:35:37 UTC (rev 30) @@ -47,7 +47,5 @@ public InputStream read(String path) throws FileNotFoundException, IOException, InterruptedException; - public void remove(String path); - // TODO bleny 2010-05-10 list a directory content } Modified: trunk/diswork-fs/src/main/java/org/nuiton/disworkfs/DisworkFileSystem.java =================================================================== --- trunk/diswork-fs/src/main/java/org/nuiton/disworkfs/DisworkFileSystem.java 2010-05-10 09:30:32 UTC (rev 29) +++ trunk/diswork-fs/src/main/java/org/nuiton/disworkfs/DisworkFileSystem.java 2010-05-14 09:35:37 UTC (rev 30) @@ -20,8 +20,6 @@ import org.nuiton.disworkfs.util.SimpleDownload; import org.nuiton.disworkfs.util.SimpleLookUp; -import sun.reflect.generics.reflectiveObjects.NotImplementedException; - public class DisworkFileSystem implements DistributedFileSystem { protected DownloadService downloadService; @@ -97,9 +95,6 @@ BufferedInputStream bufferedSource = null; BufferedOutputStream bufferedTarget = null; - // FIXME bleny 2010-05-07 use buffered input stream ? - // FIXME bleny 2010-05-07 close 2 times when new... new ??? - try { bufferedSource = new BufferedInputStream(source); bufferedTarget = new BufferedOutputStream(new FileOutputStream( @@ -133,11 +128,6 @@ return fileExists; } - @Override - public void remove(String path) { - throw new NotImplementedException(); - } - public void close() { disworkServicesManager.stop(); } Added: trunk/src/site/rst/diswork-fs/history.rst =================================================================== --- trunk/src/site/rst/diswork-fs/history.rst (rev 0) +++ trunk/src/site/rst/diswork-fs/history.rst 2010-05-14 09:35:37 UTC (rev 30) @@ -0,0 +1,48 @@ +Premier prototype +================= + +L'objectif était de réaliser un système opportuniste : à chaque fois que des +données sont envoyées par un nœud parce qu'un autre nœud les a demandées, +l'envoi en multicast permet à tous les autres nœuds de recevoir les données et +ainsi faire la réplication. + +Le premier prototype de diswork-fs est basé sur l'échange de messages. Les +nœuds connectés à un même réseau peuvent envoyés et recevoir en multicast des +messages. Il existe quatre types de messages : + +* LookUp qui permet de demander à tous les noeuds, étant donné un chemin, + si un fichier existe ; +* LookUpResponse qui est envoyé si un nœud suite à la réception d'un LookUp, + constate qu'il est en possession du fichier demandé. Avant la réponse, on + calcule à partir du fichier un descripteur (FileDescription) comprenant + diverses informations nécessaire à l'échange du fichier (taille totale, + somme de contrôle, nombre de parties) ; +* FileRequest est éventuellement envoyé après réception d'un LookUpResponse, + il vise à demander l'envoi des données d'un fichier ; +* La réception d'un FileRequest, génère l'envoi, en réponse, de message de types + FileTransfer. Chacun d'eux contient une partie du fichier. + +Ainsi, ce protocole permet : + +* la recherche d'un fichier pour un chemin donné dans une arborescence ; +* si besoin, son téléchargement ; +* la réplication. + +Ce protocole ne permet pas : + +* Lister le contenu d'un répertoire ; +* Utiliser des liens symboliques. + +Cela n'est pas rendu possible par l'absence d'informations communes et +synchronisées entre les nœuds. Pour remédier à ce problème, il semble qu'une +voie possible serait de répliquer entre tous les nœuds l'intégralité de +l'arbre décrivant l'arborescence[1]_ et de ne pratiquer l'échange des données +des fichiers qu'au moment opportun[2]_. + +Ce premier prototype a été implémenté grâce à JGroups. +Il est fonctionnel s'il s'agit d'avoir un système de +fichier partagé et si on lit et écrit dans l'arborescence à des chemins connus +à l'avance. C'est trop limité pour un système de fichier. + +.. [1] voir le building block `ReplicatedTree <http://www.jgroups.org/javadoc/org/jgroups/blocks/ReplicatedTree.html>`_. +.. [2] voir `Replicated Filesystem based on ReplicatedTree <http://www.jgroups.org/open_projects.html>`_. \ No newline at end of file Modified: trunk/src/site/site_en.xml =================================================================== --- trunk/src/site/site_en.xml 2010-05-10 09:30:32 UTC (rev 29) +++ trunk/src/site/site_en.xml 2010-05-14 09:35:37 UTC (rev 30) @@ -26,6 +26,10 @@ <menu name="Developer"> <item href="devel/draft.html" name="First draft"/> </menu> + + <menu name="diswork FS"> + <item href="diswork-fs/history.html" name="Install"/> + </menu> <menu ref="reports"/>
participants (1)
-
bleny@users.nuiton.org