Question

Je fais actuellement des tests de performance avec la pâtisserie gratuite DHT.Freepastry est une open source DHT fait en Java.

L'objectif est de surveiller l'effet sur le DHT lorsqu'un certain nombre de nœuds descendent.Mon problème est que je ne suis pas sûr de la meilleure façon d'éliminer les nœuds.Au moment où chaque nœud est en train de courir un autre port sur ma machine.Je détruisant ces nœuds à l'aide de la méthode Destroy () de la pâte API http://www.freeStry.org/freeStry/javadoc21a3/rice/pastry/pasecteurNode.html#cetroy ()

Je suis inquiet que cela peut être irréaliste dans la défaillance du nœud simulant et si je devrais tuer les nœuds de manière différente, telle que l'utilisation de TCPKILL?

Je suis en train d'exécuter Mac OS X Snow Leopard et serait intéressé à entendre toutes les suggestions?

Était-ce utile?

La solution

Il existe différentes formes de pannes de nœud.

Le plus courant est simplement le nœud qui passe hors ligne car l'application qui exécute le DHT est fermée.

Le changement d'une adresse IP dynamique d'une connexion Internet intérieure a essentiellement un effet subtilement différent, car il invalide toutes les entrées de table de routage existantes à ce sujet, mais le nombre de nœuds sur tous les nœuds ne diminue pas. Vous en perdez un et vous en gagnez un nouveau.

Un autre problème courant est des problèmes d'accessibilité due aux NAT. La visibilité de ce nœud peut dépendre du type NAT et de savoir si vous avez eu un contact récent avec cela.

Les effets résultants de la baratte peuvent en réalité être assez complexes. Tout d'abord, la disponibilité des nœuds individuels suit généralement une distribution exponentielle. Beaucoup sont disponibles uniquement pour une courte période et très peu de rester stables pendant des jours ou des mois.

Supposons que vous avez un noyau stable de nœuds modérément à long terme qui représentent réellement 90% du réseau. Un de 10% des mêmes nœuds apparaissent constamment et hors de l'existence entraîneront un trafic aérien, mais ils ne nuiront pas au réseau. Vous avez beaucoup de baratche mais peu d'impact.

Si 10% de la population de nœuds devient hors ligne après 10 minutes et est remplacée par un nouvel ensemble de nœuds de la piscine inactive, vous perdez essentiellement 10% de votre redondance toutes les 10 minutes. Si la réplication des données entre les nœuds ne permet pas de suivre cela ou n'existe même pas que vos données pourraient décrire de manière exponentielle. Vous avez également beaucoup de baratche, mais un impact énorme.

Je ne suis même pas sûr du type de simulation refléterait la réalité de la meilleure façon. Je suppose que la contrainte la plus réaliste est simplement d'avoir un pool fixe de noeuds potentiels . Ce sont des ordinateurs qui ont la mise en œuvre DHT installée.

Chaque nœud aurait alors un profil du temps combien de temps il reste en moyenne et combien de temps cela sera en moyenne (où ces deux paramètres sont partiellement corrélés les uns avec les autres. Les nœuds de longue date n'ont généralement pas très longs temps d'arrêt comme ils sont probablement toujours toujours). Et chaque noeud agit indépendamment de ces paramètres. En réalité, l'heure de la journée joue également un rôle aussi possible ici: http://dsn.tm.uni-karlsruhe.de/english/2936.php

Alors ... longue histoire courte, il suffit de courir et de tuer quelques nœuds de manière aléatoire ne vous donnera pas de résultat réaliste sur la résilience d'un DHT, car l'impact variera largement.

Quant à la partie technique, vous voudrez probablement vous exécuter tous dans la même machine virtuelle Java et utiliser la multithreading OU NONBLOCKING IO pour réduire la surcharge d'exécution de chaque instance dans une machine virtuelle distincte. Cela vous permettrait également de planifier leurs avantages de manière plus réaliste.

Étant donné que vous pouvez affecter plusieurs IPS à un seul ordinateur, vous devriez pouvoir exécuter des centimes de nœuds sur un ordinateur simplement basé sur le compte IP / Port. Mais la consommation de ressources du processus finira par badonner même le système le plus rapide, car très peu d'implémentations DHT sont réellement mises en œuvre pour faire échelle.

Vous aurez donc probablement besoin d'exécuter cela sur un réseau avec quelques milliers de nœuds par ordinateur pour obtenir n'importe quoi près de réalistes.

Soit cela ou vous recourez à des simulations plus mathématiques au lieu d'exécuter des implémentations réelles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top