Domanda

Attualmente sto facendo alcuni test delle prestazioni con la pasticceria gratuita DHT.FreePastry è un DHT open source fatto in Java.

L'obiettivo è monitorare l'effetto sul DHT quando un certo numero di nodi scende.Il mio problema è che non sono sicuro del modo migliore per eliminare i nodi.Al momento ogni nodo sta scadendo una porta diversa sulla mia macchina.Sto distruggendo questi nodi usando il metodo Destroy () dall'API della pasticceria http://www.freepastry.org/freepastry/javadoc21a3/rice/pastry/pastrynode.html#Destry ()

Sono preoccupato che questo potrebbe essere irrealistico nel simulare fallimento del nodo e se dovrei uccidere i nodi in modo diverso come usare TCPKill?

Sto correndo Mac OS X Snow Leopard e sarebbe interessato a sentire qualche suggerimento?

È stato utile?

Soluzione

Ci sono diverse forme di guasti del nodo.

La più comune è semplicemente il nodo che va fuori in linea perché l'applicazione che esegue il DHT è spento.

La modifica di un IP dinamico di una connessione internet domestica ha essenzialmente un effetto sottilmente diverso in quanto invalida tutte le voci della tabella di routing esistenti, ma il conteggio su tutto il numero del nodo non va giù. La perdi uno e ne guadagni uno nuovo.

Un altro problema comune sono i problemi di raggiungibilità dovuti a Nats. La visibilità di quel nodo può dipendere dal tipo NAT e dal fatto che tu abbia avuto un recente contatto con esso.

Gli effetti risultanti del churn possono effettivamente essere piuttosto complessi. Prima di tutto, il tempo di attività dei singoli nodi segue generalmente una distribuzione esponenziale. Molti sono disponibili solo per un breve periodo e pochissimi soggiorni stabili per giorni o mesi.

Supponiamo di avere un nucleo stabile di moderatamente i nodi di lunga durata che rendono effettivamente il 90% della rete. Un 10% degli stessi nodi saltando costantemente dentro e fuori dall'esistenza causerà un po 'di traffico sopraelevato ma non danneggeranno molto la rete. Hai un sacco di zangolatura ma poco impatto.

Se il 10% della popolazione del nodo non va offline dopo 10 minuti ed è sostituito da un nuovo set di nodi dalla piscina inattiva, quindi perdendo essenzialmente il 10% della ridondanza ogni 10 minuti. Se la replica dei dati tra i nodi non si mantiene il passo con ciò o non esiste nemmeno che i tuoi dati si degragano in modo esponenziale. Hai anche un sacco di zangolatura ma un enorme impatto.

Non sono nemmeno sicuro di che tipo di simulazione rifletterebbe la realtà il modo migliore. Immagino che il vincolo più realistico abbia semplicemente un pool fisso di potenziale nodi. Quello è computer che hanno installato l'implementazione DHT.

Ogni nodo avrebbe quindi un profilo del tempo per quanto tempo rimane in media e quanto tempo sarà in media (dove quei due parametri sono parzialmente correlati l'uno con l'altro. I nodi di lunga durata non hanno generalmente tempi molto lunghi come probabilmente sono sempre d'on). E ogni nodo agisce su questi parametri in modo indipendente. In realtà il periodo del giorno svolge anche un ruolo che può essere facilmente visto qui: http://sn.tm.uni-karlsruhe.de/english/2936.php

Allora ... a lungo story, solo correre e uccidere alcuni nodi a caso non ti darà un risultato realistico sulla resilienza di un DHT, poiché l'impatto varierà ampiamente.

Per quanto riguarda la parte tecnica, probabilmente vorrai eseguire tutte in lo stesso Java VM e utilizzare il multithreading o il non bloccando IO per ridurre il sovraccarico di eseguire ogni istanza in una VM separata. Questo ti permetterà anche di programmare i propri e i tempi di riduzione in modo più realistico.

Dato che è possibile assegnare più IPS a un singolo computer, dovresti essere in grado di eseguire centoSandi di nodi su un computer semplicemente in base al conteggio IP / Port. Ma il consumo di risorse del processo alla fine si appoggerà anche anche il sistema più veloce, poiché pochissime implementazioni DHT sono effettivamente implementate per ridimensionare così bene.

Quindi probabilmente avrete dovuto eseguire questo su una rete con alcuni migliaia di nodi per computer per ottenere qualcosa vicino al realistico.

o quello o si ricorrerà a simulazioni più matematiche invece di eseguire le reali implementazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top