Frage

Ich mache derzeit einige Leistungsprüfungen mit dem freien Gebäck DHT.Freepastry ist eine Open-Source-DHT in Java.

Das Ziel ist es, den Effekt auf der DHT zu überwachen, wenn eine bestimmte Anzahl von Knoten hinuntergeht.Mein Problem ist, dass ich nicht sicher bin, auf den besten Weg, Knoten zu beseitigen.Im Moment läuft jeder Knoten einen anderen Port auf meinem Computer aus.Ich zerstöre diese Knoten mit der Zerstörungsmethode von der Gebäck-API http://www.freepastry.org/freepastry/javadoc21a3/rice/pastry/pastrynode.html#destroy ()

Ich mache mir Sorgen

Ich leite Mac OS X Snow Leopard und wäre daran interessiert, Anregungen zu hören?

War es hilfreich?

Lösung

Es gibt verschiedene Formen von Knotenausfällen.

Das häufigste ist einfach der Knoten, der offline geht, da die Anwendung, die das DHT läuft, heruntergefahren ist.

Die Änderung eines dynamischen IPs einer inländischen Internetverbindung hat im Wesentlichen einen subtil anderen Effekt, da er alle vorhandenen Routing-Tabelleneinträge darüber ungültig macht, aber der über alle Knotenzähler wird nicht heruntergefahren. Sie verlieren einen und Sie erhalten ein neues.

Ein weiteres häufiges Problem ist Erreichbarkeitsprobleme aufgrund von NATS. Die Sichtbarkeit dieses Knotens kann von dem NAT-Typ abhängen und ob Sie den letzten Kontakt damit hatten.

Die resultierenden Auswirkungen von Churn können tatsächlich recht komplex sein. Zunächst folgt die Betriebszeit einzelner Knoten in der Regel einer exponentiellen Verteilung. Viele sind nur für kurze Zeit und sehr wenige für Tage oder Monate stabil verfügbar.

gehen davon aus, dass Sie einen stabilen Kern von mäßig an langwierigen Knoten haben, die eigentlich 90% des Netzwerks ausmachen. A 10% der gleichen Knoten, die ständig reintauchen und außerhalb der Existenz tauchen, verursachen einen gemeinsamen Verkehr, aber sie schaden das Netzwerk nicht viel. Sie haben viel Abwannen, aber wenig Wirkung.

Wenn 10% der Knotenbevölkerung nach 10 Minuten offline geht und durch ein brandneue Satz von Knoten aus dem inaktiven Pool ersetzt wird, verlieren Sie im Wesentlichen 10% Ihrer Redundanz alle 10 Minuten. Wenn die Datenreplikation zwischen Knoten nicht mit dem Schritt fällt oder nicht einmal existiert, werden Ihre Daten exponentiell abfallen. Sie haben auch viel Abwanderung, aber eine große Wirkung.

Ich bin nicht einmal sicher, welche Art von Simulation die Realität den besten Weg reflektieren würde. Ich denke, die realistischste Einschränkung hat einfach einen festen Pool von potential -Knoten. Das sind Computer, die die DHT-Implementierung installiert haben.

Jeder Knoten würde dann ein Profil der Zeit haben, wie lange es im Durchschnitt bleibt und wie lange es im Durchschnitt ist (wenn diese beiden Parameter teilweise miteinander korreliert werden. Langzeitknoten haben im Allgemeinen nicht Sehr lange Ausfallzeiten, wie sie wahrscheinlich immer eingeschaltet sind). Und jeder Knoten wirkt unabhängig von diesen Parametern. In der Realität spielt auch die Tageszeit eine Rolle, wie hier leicht zu sehen ist: http://dsn.tm.uni-karlsruhe.de/deutsch/2936.php

So ... Long Story Short, nur laufend und tötet ein paar Knoten zufällig, geben Ihnen zufällig kein realistisches Ergebnis an der Widerstandsfähigkeit eines DHT, da der Aufprall stark variieren wird.

Wie für den technischen Teil möchten Sie wahrscheinlich alle in derselben Java VM ausführen und Multithreading oder Nichtblocking-IO verwenden, um den Aufwand zu reduzieren, um jede Instanz in einem separaten VM auszuführen. Dies ermöglicht es Ihnen, ihre Auf- und Ausfallzeiten realikaler zu planen.

Da Sie einem einzelnen Computer mehrere IPs zuweisen können, sollten Sie in der Lage sein, Hundertthousands von Knoten auf einem Computer auszuführen, einfach auf der IP / Port-Anzahl. Der Ressourcenverbrauch des Prozesses wird jedoch selbst das schnellste System nach unten gesetzt, da sehr wenige DHT-Implementierungen tatsächlich umgesetzt werden, um dies gut zu skalieren.

Sie müssen dies wahrscheinlich in einem Netzwerk mit ein paar tausend Knoten pro Computer ausführen, um etwas in der Nähe von realistisch zu machen.

entweder das oder Sie greifen auf mehr mathematische Simulationen zurück, anstatt tatsächliche Implementierungen auszuführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top