Pregunta

Actualmente estoy haciendo algunas pruebas de rendimiento con la pastelería libre DHT.FreePastry es un DHT de código abierto hecho en Java.

El objetivo es monitorear el efecto en el DHT cuando un cierto número de nodos bajan.Mi problema es que no estoy seguro de la mejor manera de eliminar los nodos.Actualmente, cada nodo se está ejecutando de un puerto diferente en mi máquina.Estoy destruyendo estos nodos usando el método Destroy () desde la Pastelería API http://www.freepastry.org/freepastry/javadoc21a3/rice/pastry/pastrynode.html#destroy ()

Estoy preocupado Esto puede ser poco realista al simular la falla del nodo y si debo matar los nodos de una manera diferente, como usar TCPKILL?

¡Estoy ejecutando Mac OS X Snow Leopard y estaría interesado en escuchar alguna sugerencia?

¿Fue útil?

Solución

Hay diferentes formas de fallas de nodo.

El más común es simplemente el nodo saliendo sin conexión porque la aplicación que está ejecutando el DHT se apaga.

El cambio de una IP dinámica de una conexión internet nacional esencialmente tiene un efecto sutilmente diferente, ya que invalida todas las entradas de la tabla de enrutamiento existentes al respecto, pero el número de nodo sobre todo no baja. Pierdes uno y obtienes uno nuevo.

Otro problema común son los problemas de alcance debido a los NAT. La visibilidad de ese nodo puede depender del tipo NAT y si tuvo contacto reciente con él.

Los efectos resultantes de Churn pueden ser bastante complejos. En primer lugar, el tiempo de actividad de los nodos individuales generalmente sigue una distribución exponencial. Muchos solo están disponibles por un corto tiempo y muy pocos se mantienen estables por días o meses.

Supongamos que tiene un núcleo estable de los nodos de larga duración que realmente representan el 90% de la red. Un 10% de los mismos nodos que aparecen constantemente dentro y fuera de la existencia causará algún tráfico aéreo, pero no dañarán mucho la red. Tienes mucha batida pero poco impacto.

Si el 10% de la población de nodos se desconecta después de 10 minutos y se reemplaza por un nuevo conjunto de nodos de la piscina inactiva, entonces esencialmente está perdiendo el 10% de su redundancia cada 10 minutos. Si la replicación de datos entre nodos no se mantiene al día con eso o ni siquiera existe, sus datos se descompondrán de manera exponencial. También tienes mucha batida, pero un gran impacto.

Ni siquiera estoy seguro de qué tipo de simulación reflejaría la realidad la mejor manera. Supongo que la restricción más realista es simplemente tener un grupo fijo de los nodos potenciales . Eso es computadoras que tienen la implementación de DHT instalada.

Cada nodo tendría un perfil de tiempo por el tiempo que se mantiene en promedio y cuánto tiempo se reducirá en promedio (donde esos dos parámetros se correlacionan parcialmente entre sí. Los nodos de tiempo libre generalmente no tienen Muy largos tiempos de inactividad, ya que probablemente están siempre en). Y cada nodo actúa sobre estos parámetros de forma independiente. En realidad, la hora del día también desempeña un papel que se puede ver fácilmente aquí: http://dsn.tm.uni-karlsruhe.de/english/2936.php

SO ... Larga historia corta, simplemente corriendo y matando a algunos nodos al azar no le dará un resultado realista sobre la resistencia de un DHT, ya que el impacto variará ampliamente.

En cuanto a la parte técnica, probablemente querrá ejecutarlos en la misma máquina virtual Java y usará MultiPhReading o que no sean lovocking IO para reducir la sobrecarga de la ejecución de cada instancia en una VM separada. Esto también le permitiría programar sus tiempos de deporte de una manera más realista.

Dado que puede asignar múltiples IP a una sola computadora, debe poder ejecutar centros y centros de nodos en una computadora simplemente en función del recuento de IP / Port. Pero el consumo de recursos del proceso eventualmente se inaugurará incluso el sistema más rápido, ya que muy pocas implementaciones de DHT se implementan para escalar tan bien.

Entonces, es probable que necesites ejecutar esto en una red con unos pocos miles de nodos por computadora para que se cierre algo realista.

O bien o usted recurre a simulaciones más matemáticas en lugar de ejecutar implementaciones reales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top