Ci-dessous, les différences entre deux révisions de la page.
— | debut [15/06/2010 19:31] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Présentation de Mille Sabords ====== | ||
+ | |||
+ | |||
+ | MILLESABORDS est un logiciel libre de nommage pour systèmes répartis, comme par exemple un réseau "ad hoc" (d'où ce mauvais jeu de mots bruxellois). | ||
+ | |||
+ | ===== D'où vient ce concept de nommage réparti ? ===== | ||
+ | |||
+ | J'ai défini ce système de nommage durant ma [[thèse]], en 1994, pour répondre aux contraintes liées à la désignation d' | ||
+ | Dans de tels systèmes, il n'y a pas d' | ||
+ | Le réseau est constitué naturellement par la connexion et la déconnexion spontanées de ces composants. | ||
+ | Le système de nommage que j'ai dessiné, s' | ||
+ | Vingt ans après, ces travaux prennent tous leurs importances avec l' | ||
+ | |||
+ | ===== Quelles sont les propriétés de ce système de nommage ===== | ||
+ | |||
+ | Par définition, | ||
+ | Cependant, même si un répertoire est un fichier en mémoire, le contraire n'est pas vrai (un fichier n'est pas considéré comme potentiellement un répertoire). | ||
+ | |||
+ | Et pourtant, n' | ||
+ | C'est bien le cas en XML, n' | ||
+ | |||
+ | Dans le système de nommage MILLESABORDS, | ||
+ | C'est le composant lui même qui connaît le nom (ou les noms) qu'il possède dans un (ou plusieurs) contexte(s) d' | ||
+ | |||
+ | L' | ||
+ | Les composants eux-mêmes sont amenés à se déplacer d'un matériel à un autre, en conservant leurs propriétés de désignation. | ||
+ | |||
+ | Les propriétés fondamentales du systèmes sont : | ||
+ | * l' | ||
+ | * l' | ||
+ | * l' | ||
+ | * la **redondance** : un chemin peut désigner un ou plusieurs composants, dans le but | ||
+ | * soit de pouvoir rendre un service de tolérance aux pannes, | ||
+ | * soit d' | ||
+ | * le choix d' | ||
+ | * l' | ||
+ | |||
+ | Je vous invite à consulter l' | ||
+ | |||
+ | ===== Quel problème peut-être résolu par ce concept ? ===== | ||
+ | |||
+ | Pour comprendre un concept, le plus simple est de suivre une illustration. | ||
+ | L' | ||
+ | Son seul but est d' | ||
+ | |||
+ | La plupart des systèmes s' | ||
+ | Ce dernier pointe l' | ||
+ | Ces déplacements s' | ||
+ | |||
+ | La force de MILLESABORDS réside, en particulier, | ||
+ | |||
+ | Certains peuvent craindre que manipuler un ensemble (plutôt qu'un contexte unique) engendre la confusion. | ||
+ | C'est bien le contraire qui se produit. | ||
+ | Les noms multiples à une même chose sont inhérents au système de nommage. | ||
+ | Dans un système d' | ||
+ | |||
+ | Leurs utilisations provoquent un déplacement à grande distance dans l' | ||
+ | Si ce déplacement est immédiatement suivi d'un rapprochement vers la racine (i.e. "cd .."), tout repère devient impossible. | ||
+ | Cette confusion vient du fait qu'un système, qui s' | ||
+ | |||
+ | ===== Quelques commandes ===== | ||
+ | |||
+ | Pour suivre cet exemple, voici un court extrait des commandes de MILLESABORDS. | ||
+ | |||
+ | Dans les commandes, " | ||
+ | C'est à dire une suite de noms séparés par un caractère spécial (dans notre exemple le "/" | ||
+ | Nous conservons pour désigner les répertoires courants et ascendants, les conventions de nommage d'Unix : " | ||
+ | |||
+ | Voici les commandes seront utilisées dans l' | ||
+ | |||
+ | <box 95%|**pwd**> | ||
+ | Commande équivalente à la commande " | ||
+ | La différence est que cette commande retourne une liste de tous les chemins qui mènent au contexte courant. | ||
+ | </ | ||
+ | |||
+ | <box 95%|**cd path**> | ||
+ | Commande semblable à la commande " | ||
+ | Permet de positionner un pointeur sur le graphe de nommage. | ||
+ | |||
+ | Du fait que le chemin (" | ||
+ | Nous pouvons alors préciser que la commande " | ||
+ | </ | ||
+ | |||
+ | <box 95%|**ls [path]**> | ||
+ | Commande semblable à la commande " | ||
+ | * Sans argument, elle liste les composants qui possèdent un nom dans le contexte courant. | ||
+ | * Avec un chemin (" | ||
+ | </ | ||
+ | |||
+ | <box 95%|**create [-p] path << | ||
+ | | ||
+ | $ cat > path <<EOF | ||
+ | Voici le texte que doit contenir le fichier | ||
+ | EOF | ||
+ | $ | ||
+ | </ | ||
+ | Elle permet de créer un composant en en précisant le contenu puis le raccroche au graphe de nommage. | ||
+ | La commande provoque le changement d' | ||
+ | Il passe du caractère " | ||
+ | Ce changement persiste durant toute la saisie du contenu du composant ainsi créé. | ||
+ | Pour mettre un terme à la saisie, il suffit d' | ||
+ | |||
+ | L' | ||
+ | </ | ||
+ | |||
+ | <box 95%|**touch [-p] path**> | ||
+ | Commande semblable à la commande " | ||
+ | Elle permet de créer un composant sans être obligé de donner un contenu. | ||
+ | |||
+ | L' | ||
+ | </ | ||
+ | |||
+ | Pour une présentation complète des commandes il faut se reporter au [[: | ||
+ | |||
+ | ===== Exemple de noms multiples ===== | ||
+ | |||
+ | L' | ||
+ | L' | ||
+ | Ces informations de traces devront être à la fois accessibles par la structure de données de l' | ||
+ | |||
+ | Pour cet exemple, nous commençons par mettre en place une partie de la structure de l' | ||
+ | <code sh> | ||
+ | $ create -p / | ||
+ | > Contenu du fichier access_log | ||
+ | > EOF | ||
+ | $ create -p / | ||
+ | > Contenu du fichier error_log | ||
+ | > EOF | ||
+ | $</ | ||
+ | |||
+ | Nous poursuivons par la mise en place de la structure d' | ||
+ | <code sh> | ||
+ | $ touch -p /var/log | ||
+ | $ link / | ||
+ | $</ | ||
+ | |||
+ | Nous vérifions que les données sont accessibles par la structure d' | ||
+ | Le contexte des traces est bien accessible via la structure applicative et administrative. | ||
+ | <code sh> | ||
+ | $ cd / | ||
+ | $ ls | ||
+ | access_log | ||
+ | $ pwd | ||
+ | / | ||
+ | $</ | ||
+ | |||
+ | Nous vérifions que les données restent accessibles par la structure d' | ||
+ | Le contexte des traces reste accessible via la structure applicative et administrative. | ||
+ | <code sh> | ||
+ | $ cd / | ||
+ | $ ls | ||
+ | access_log | ||
+ | $ pwd | ||
+ | / | ||
+ | $</ | ||
+ | |||
+ | Le parcourt du graphe de nommage reste cohérent. | ||
+ | Il fait appel non pas à un contexte (répertoire) courant mais à des contextes courants. | ||
+ | <code sh>$ cd .. | ||
+ | $ pwd | ||
+ | / | ||
+ | $ ls | ||
+ | httpd logs | ||
+ | $ cd logs | ||
+ | $ pwd | ||
+ | / | ||
+ | $ ls | ||
+ | access_log | ||
+ | $</ | ||
+ | |||
+ | Je vous invite à consulter les [[: | ||
+ | |||
+ | ===== Le démonstrateur ===== | ||
+ | |||
+ | Pour maîtriser le concept de nommage réparti MILLESABORDS, | ||
+ | J'ai mené ses développements dans le cadre de projets tuteurés : | ||
+ | * à l'UFR science : DESS ASIR avec la collaboration de **Nelly Ngo**, **Tolojanahary Ravelomanantsoa** et **Florent Leroux** | ||
+ | * à l'IUT : DUT informatique avec la collaboration de **Rémi Lavergne**, **Sylvain Delezir**, **Nicolas HACHET** et **Sébastien DERRIEN** | ||
+ | |||
+ | Le démonstrateur se compose de 3 éléments : | ||
+ | * Un lanceur de serveurs de noms comprenant un interpréteur de commande (de type " | ||
+ | * Un lieur de serveurs de noms, qui permet de simuler la configuration du réseau "ad hoc", | ||
+ | * Un producteur d' | ||
+ | |||
+ | Le démonstrateur est écrit en Java et peut donc être exécuté sur n' | ||
+ | Chacun des éléments du démonstrateur est associé à un fichier jar. | ||
+ | Il est donc possible de lancer plusieurs représentants de chaque élément. | ||
+ | |||
+ | Je vous invite à consulter le manuel d' | ||