Distributed hash table

Distributed hash table

Table de hachage distribuée

Page d'aide sur l'homonymie Pour les articles homonymes, voir DHT.

Une table de hachage distribuée (ou DHT pour Distributed Hash Table), est une technologie permettant l'identification et l'obtention, dans un système réparti, comme certains réseaux P2P, d'une information. L'ensemble de la table de hachage est constituée virtuellement par tous ses constituants répartis sur tous les éléments du réseau, qui en possèdent chacun une partie.

Les tables de hash réparties sont utilisées notamment dans les protocoles Chord, protocole P2P CAN, Tapestry, Kademlia (utilisé par eMule), Ares Galaxy. Système aussi utilisé dans de nombreux clients récents pour le protocole BitTorrent comme Azureus, Bitcomet ou encore µTorrent. Le premier client BitTorrent à utiliser le DHT était Azureus, suivi du client officiel BitTorrent qui créa une version différente. La version du client officiel fut alors appelée Mainline DHT. Dorénavant la plupart des clients supportent la version Mainline DHT.

Principe

Supposons un grand nombre d'utilisateurs (5 millions) ayant lancé leur logiciel de P2P (Peer-to-Peer) sur leur ordinateur. Chacun partage quelques fichiers (audio, images, vidéo, multimédia, etc.) Un utilisateur (Luc) possède, par exemple, l'album Les idees saines de Serge Dassault (disponible sous licence Creative Commons).

Supposons qu'un autre utilisateur (Pierre) souhaite télécharger cet album. Comment son logiciel de P2P peut-il trouver l'ordinateur de Luc ? Le logiciel de Pierre pourrait éventuellement demander aux 5 millions d'ordinateurs si par hasard ils possèdent cet album. Le logiciel de Luc répondrait alors : « Je le possède et je peux commencer à le transférer. » Il serait cependant bien lent de demander aux 5 millions d'ordinateurs s'ils ont cet album, car il y aurait en permanence des millions de questions du type « Je cherche tel album, l'as-tu ? », entraînant des millions de réponses : « Non, désolé ! ».

Un grand annuaire archivant les noms des fichiers partagés par tous les utilisateurs résoudrait la question : il suffirait de demander à ce « grand annuaire » (= la table de hachage) l'album de musique Les idees saines de Serge Dassault pour obtenir la réponse : « il est disponible sur l'ordinateur de Luc. (et celui de Mathieu, de Paul, etc.) » C'est ainsi que fonctionnait la première génération de réseaux P2P. Il y avait un serveur central qui servait de « grand annuaire. » (exemples : Napster, Audiogalaxy, Edonkey, Kazaa) Cette solution est de moins en moins utilisée en raison de sa fragilité : que faire lorsque le serveur central tombe en panne ? prend feu ? est saisi par la police ? Le réseau ne fonctionne alors plus, on ne peut plus faire aucune recherche sur les fichiers partagés.

Les programmeurs de logiciels P2P ont alors eu une idée : il faudrait que le « grand annuaire » ne soit pas sur un seul ordinateur, mais sur des centaines. Et ils se sont dit « on n'a qu'à faire notre logiciel de telle façon que chaque utilisateur soit responsable d'un petit bout du grand annuaire. » Chacun des 5 millions d'utilisateurs est responsable d'une petite partie: on dit que c'est une table de hachage distribuée.

Par exemple, l'utilisateur Jean-Claude va être responsable de tous les fichiers qui commencent par A, Toto va être responsable de tous les fichiers qui commencent par B, etc... Lorsque un nouvel utilisateur se connecte au réseau, la première chose que le logiciel va faire est de dire quels fichiers il peut partager. S'il possède par exemple le film Big Buck Bunny, il va dire à l'utilisateur Toto (qui est responsable des fichiers qui commencent par B) : « j'ai le film Big Buck Bunny. Si des gens le veulent, il est disponible chez moi. » Les recherches deviennent donc très rapides. Si on cherche Big Buck Bunny, on va directement demander à la personne responsable de la lettre « B ».

La réalité est un peu plus complexe : il ne faut pas qu'une seule personne soit responsable des mots qui commencent par "B", car si elle éteint son ordinateur on perd une partie de l'annuaire. Il faut donc introduire une certaine redondance dans l'annuaire, et donc plusieurs ordinateurs sont simultanément responsables des mêmes listes. De plus, vu qu’il y a des centaines de millions de fichiers partagés, le principe de division de l'annuaire n'est pas basé sur les lettres de l'alphabet mais sur une table de hachage des mots des titres des fichiers.

Enfin, chaque ordinateur n'a pas besoin de connaitre tous les ordinateurs qui archivent des mots. Il connaitra typiquement une centaine d'ordinateurs. Si l'utilisateur fait une recherche sur Big Buck Bunny et ne connait pas l'ordinateur qui archive les fichiers commençant par B, alors :

  • il demandera à l'ordinateur le plus proche (par exemple l'ordinateur qui archive les fichiers commençant par C) : « Connais-tu l'ordinateur s'occupant des mots commençant par B ? »
  • celui-ci répondra « Parmi mes voisins, je connais les ordinateurs qui s'occupent des B, et même je connais des ordinateurs qui s'occupent des fichiers commençant par BA, BI, BO, BU, donc tu ferais bien de demander à celui qui connaît les fichiers commençant par BI s'il a par hasard le fichier que tu cherches. »
  • on interroge le responsable des « BI » et il dira : « Oui, je connais les ordinateurs qui ont le film que tu veux » ou alors, s'il ne les connaît pas, il répondra « Je ne connais pas ton fichier, par contre je connais un ordinateur qui s'occupe des fichiers commençant par BIG, donc demandes-lui. »

Voir aussi

Ce document provient de « Table de hachage distribu%C3%A9e ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Distributed hash table de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • Distributed hash table — A distributed hash table (DHT) is a class of a decentralized distributed system that provides a lookup service similar to a hash table; (key, value) pairs are stored in a DHT, and any participating node can efficiently retrieve the value… …   Wikipedia

  • Distributed Hash Table — Eine verteilte Hashtabelle (VHT) [engl.: distributed hash table (DHT)] ist eine Datenstruktur, die versucht, das allgemeine Problem in P2P Systemen – das Finden des Speicherorts einer gesuchten Datei – mit möglichst geringem Aufwand effizient zu… …   Deutsch Wikipedia

  • Chord (distributed hash table) — Chord is one of the original distributed hash table protocols. Chord is being developed at MIT and the current Chord source code can be downloaded and used under the MIT License.Overview Using the Chord lookup protocol, node keys are arranged in… …   Wikipedia

  • Distributed Hash Table — …   Википедия

  • Distributed hash table — …   Википедия

  • Hash table — Not to be confused with Hash list or Hash tree. Unordered map redirects here. For the proposed C++ class, see unordered map (C++). Hash Table Type unsorted dictionary Invented 1953 Time complexity in big O notation Average Worst case Space …   Wikipedia

  • Table de hachage distribuee — Table de hachage distribuée Pour les articles homonymes, voir DHT. Une table de hachage distribuée (ou DHT pour Distributed Hash Table), est une technologie permettant l identification et l obtention, dans un système réparti, comme certains… …   Wikipédia en Français

  • Hash function — A hash function is any well defined procedure or mathematical function for turning some kind of data into a relatively small integer, that may serve as an index into an array. The values returned by a hash function are called hash values, hash… …   Wikipedia

  • Hash list — In computer science, a hash list is typically a list of hashes of the data blocks in a file or set of files. Lists of hashes are used for many different purposes, such as fast table lookup (hash tables) and distributed databases (distributed hash …   Wikipedia

  • Distributed Hashtable — Eine verteilte Hashtabelle (VHT) [engl.: distributed hash table (DHT)] ist eine Datenstruktur, die versucht, das allgemeine Problem in P2P Systemen – das Finden des Speicherorts einer gesuchten Datei – mit möglichst geringem Aufwand effizient zu… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”