Notas del protocolo de chismes: rumores, protocolo epidémico

Gossip es un protocolo de comunicación distribuido con un enfoque descentralizado. Se utiliza principalmente para sincronizar datos entre nodos de réplica en un sistema de base de datos distribuido. Una de las características más importantes de este escenario es que los nodos de la red son todos nodos pares y no tienen una -estructura estructurada Red químicaizada, que es diferente de la red estructurada.

El protocolo Gossip se usó originalmente para datos de sincronización de nodos en bases de datos distribuidas y luego se usó ampliamente para replicación de bases de datos, difusión de información, confirmación de membresía de clústeres, detección de fallas, etc. Los ejemplos de aplicaciones incluyen clústeres de Redis, cónsul de springcloud, etc.

Problema
● Cómo lograr múltiples nodos y mantener la coherencia de los datos en múltiples redes poco confiables y que cambian lentamente Objetivo

Diseñar un algoritmo que sea eficiente y potente y que escale con gracia a medida que aumenta el número de nodos.
Consideraciones sobre el algoritmo
● El tiempo que tarda una actualización en propagarse a todos los nodos después de un cambio en la información
● El tráfico de red generado al propagar una única actualización

Proceso de implementación:

El proceso de chisme es iniciado por el nodo semilla. Cuando un nodo semilla tiene un estado que necesita actualizarse a otros nodos en la red, seleccionará aleatoriamente varios nodos circundantes para difundir el mensaje, y los nodos que reciben el mensaje también lo repetirán. el proceso hasta la red final. Todos los nodos han recibido el mensaje. Este proceso puede tardar una cierta cantidad de tiempo porque no hay garantía de que todos los nodos reciban el mensaje en un momento determinado, pero en teoría todos los nodos recibirán el mensaje eventualmente, por lo que es un protocolo de coherencia eventual.
Insertar descripción de la imagen aquí

Nota: El proceso de chisme es asíncrono, lo que significa que el nodo que envía el mensaje no prestará atención a si la otra parte lo recibe, es decir, no espera una respuesta; independientemente de si la otra parte lo recibe o no, enviará mensajes a los nodos circundantes cada 1 segundo. La asincronía es su ventaja, mientras que la redundancia de mensajes es su desventaja.

Características (ventajas) de Gossip

1) Escalabilidad

La red puede permitir la suma y resta arbitraria de nodos, y el estado de los nodos recién agregados eventualmente será consistente con el de otros nodos.

2) Tolerancia a fallos

El tiempo de inactividad y el reinicio de cualquier nodo en la red no afectarán la propagación de mensajes de chismes. El protocolo de chismes tiene características naturales de tolerancia a fallas de los sistemas distribuidos.

3) Descentralización

El protocolo Gossip no requiere ningún nodo central. Todos los nodos pueden ser pares. Ningún nodo necesita conocer el estado de toda la red. Mientras la red esté conectada, cualquier nodo puede difundir mensajes a toda la red.

4) Convergencia de coherencia

Los mensajes en el protocolo Gossip se propagarán rápidamente en la red a una velocidad exponencial de uno a diez o de diez a cien, por lo que las inconsistencias en el estado del sistema pueden converger hacia la coherencia en muy poco tiempo. La velocidad de propagación del mensaje alcanza logN.

5) Sencillo

El protocolo Gossip es un proceso sumamente sencillo y con muy poca complejidad de implementar.

Los defectos del chisme

No existe una solución perfecta en redes distribuidas, el protocolo Gossip, al igual que otros protocolos, también tiene algunos fallos inevitables, principalmente dos:

1) retraso del mensaje

Dado que en el protocolo Gossip, los nodos solo enviarán mensajes aleatoriamente a unos pocos nodos, y los mensajes eventualmente llegarán a toda la red a través de múltiples rondas de difusión, el uso del protocolo Gossip provocará retrasos inevitables en los mensajes. No apto para su uso en escenarios que requieren un alto rendimiento en tiempo real.

2) Redundancia de mensajes

El protocolo Gossip estipula que los nodos seleccionarán aleatoriamente regularmente los nodos circundantes para enviar mensajes, y los nodos que reciben los mensajes también repetirán este paso, por lo que es inevitable que los mensajes se envíen repetidamente al mismo nodo, lo que resultará en mensajes redundantes y También aumenta la presión de procesamiento sobre el nodo que recibe el mensaje. Además, dado que se envía con regularidad, incluso el nodo que recibe el mensaje recibirá mensajes duplicados repetidamente, lo que aumenta la redundancia del mensaje.

Mecanismo de protocolo de chismes

El correo directo, la antientropía y la difusión de rumores son tres métodos comunes para lograr una coherencia final.

●Correo directo:
cada actualización de nodo enviará por correo inmediatamente notificaciones desde su nodo de cambio a todos los demás nodos.
Insertar descripción de la imagen aquí
Principalmente, cuando un nodo tiene datos actualizados, comienza a atravesar el grupo de nodos y envía mensajes a todos los demás nodos para notificar a su propio nodo sobre la actualización de datos.

Ventajas: es relativamente fácil de implementar y la sincronización de datos también es muy oportuna.
Desventajas: los datos pueden perderse porque la cola de caché de A está llena, por lo que la coherencia final no se puede lograr solo mediante correo directo.

  1. El nodo A envía datos a B con éxito.
  2. El nodo A no pudo enviar datos a D, pero el caché del nodo A estaba lleno y los datos enviados no se pudieron guardar.
  3. Los datos de los nodos B y D son inconsistentes

●Antientropía Entropía: significa caos, antientropía significa antidiferencia

Cada nodo selecciona periódicamente y al azar algunos nodos del grupo de nodos y resuelve cualquier diferencia entre los dos intercambiando contenido de datos.

  1. Todos los nodos participantes tienen solo dos estados: Sospechoso (patógeno) e Infeccioso (infección)
  2. El proceso consiste en que el nodo semilla compartirá todos los datos con otros nodos para eliminar cualquier inconsistencia en los datos entre nodos.
  3. La desventaja es que la cantidad de mensajes es muy grande e ilimitada; generalmente solo se usa para la inicialización de datos de nodos recién agregados.

La antientropía es un método para lograr una coherencia final mediante la reparación asincrónica.

Forma

● Enviar
significa enviar todos sus propios datos de copia a la otra parte para reparar la entropía en la copia de la otra parte.
Insertar descripción de la imagen aquí

● Extraer
significa extraer todos los datos de copia de la otra parte y reparar la entropía en su propia copia.
Insertar descripción de la imagen aquí

● Empujar y tirar
es reparar la entropía en la copia propia y en la copia del oponente al mismo tiempo.
Insertar descripción de la imagen aquí

Para la antientropía, la característica más importante en comparación con el correo directo es que resuelve el problema fatal de que los datos sean inconsistentes debido a la incapacidad de compensar la tolerancia a fallas debido a la pérdida de mensajes. Mantiene la coherencia de los datos entre nodos a través de un único punto de sincronización y notificación aleatoria de los nodos circundantes para la interacción de datos. Cabe señalar aquí que el mantenimiento de la coherencia es la coherencia final que se completa gradualmente a través de la interacción de datos entre los nodos dentro de un período de tiempo después de que se cambian los datos del nodo, y dado que cada nodo transmite datos regularmente a una parte aleatoria de los nodos circundantes, entonces en los datos hay redundancias y retrasos en la interacción.

Tenga en cuenta que
la antientropía requiere que los nodos intercambien y comparen todos sus propios datos en pares. El costo de comunicación será muy alto al realizar la antientropía, por lo que no se recomienda realizar la antientropía con frecuencia en escenarios reales. Mecanismos como la suma de verificación (Checksum) Reducen la cantidad de datos y mensajes de comunicación que deben compararse.

Al realizar antientropía, se conocen los nodos relevantes y la cantidad de nodos no puede ser demasiado. Si se trata de un entorno distribuido o que cambia dinámicamente con una gran cantidad de nodos (como detectar fallas de nodos en un entorno DevOps y mantener dinámicamente nodos del clúster), entonces la antientropía no se aplica. Entonces, ¿cómo se logra una eventual coherencia cuando se enfrenta a esta situación? La respuesta es la difusión de rumores.

●Difundir rumores

  1. Se supone que todos los nodos están en un estado desconocido cuando inicialmente no se realizan cambios en los datos y no conocen ninguna información de rumores.
  2. Cuando un nodo recibe una notificación de actualización de datos de otros nodos, equivale a escuchar un rumor, tratarlo como un tema candente y comenzar a difundirlo a los nodos circundantes.
  3. Cuando prevalecen los rumores sobre un determinado nodo, selecciona aleatoriamente otros nodos periódicamente y se asegura de que el otro nodo sepa
  4. Cuando un nodo descubre que los nodos circundantes conocen el rumor, el nodo dejará de tratar el rumor como un punto caliente y mantendrá la actualización sin difundirla más. El nodo A envía
    Insertar descripción de la imagen aquínuevos datos a los nodos B y D.
    El nodo B recibe los nuevos datos. , se convierte en un nodo activo y luego el nodo B envía nuevos datos a los nodos C y D.

El algoritmo de chismes implementa el pseudocódigo
Anti-Entropy (anti-entropía) y Rumor-Mongering (propagación de rumores). El pseudocódigo
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Gossip Protocol se implementa a través de dos mecanismos: anti-entropía (anti-entropía) y propagación de rumores (rumor). mongering) y garantiza al nodo la coherencia eventual de los datos.

  1. Los nodos semilla difunden mensajes periódicamente
  2. El nodo infectado selecciona aleatoriamente N nodos vecinos para difundir el mensaje.
  3. Los nodos solo reciben mensajes y no retroalimentan los resultados. Cada vez que se difunde un mensaje, se seleccionan para su difusión los nodos que aún no han sido enviados.
  4. El nodo que recibe el mensaje ya no lo difundirá al nodo emisor, es decir, es unidireccional irreversible, como A -> B, luego, cuando B lo difunde, ya no lo enviará a A.

El protocolo puede soportar los siguientes requisitos

  1. Replicación de bases de datos
  2. difusión de noticias
  3. Membresía del grupo
  4. Detección de fallas
  5. Redes superpuestas
  6. Agregaciones (como calcular promedio, máximo y suma)

Resumen
Gossip es un protocolo distribuido descentralizado. Los datos se propagan como un virus uno por uno a través de los nodos. La velocidad de propagación general es muy rápida, muy parecida al nuevo coronavirus (2019-nCoV) que actualmente se propaga por todo el mundo.
La difusión y difusión de información de chismes generalmente deben ser iniciadas por nodos semilla. Todo el proceso de propagación puede llevar una cierta cantidad de tiempo, porque no hay garantía de que todos los nodos reciban el mensaje en un momento determinado, pero en teoría todos los nodos recibirán el mensaje eventualmente, por lo que es un protocolo de coherencia eventual.
Gossip es un protocolo multimaestro y todas las operaciones de escritura pueden ser iniciadas por diferentes nodos y sincronizadas con otras réplicas. Los nodos de red formados en Gossip son todos nodos pares y son una red no estructurada.

Supongo que te gusta

Origin blog.csdn.net/qq_44961149/article/details/115398350
Recomendado
Clasificación