¿Cómo se implementa el mecanismo de descubrimiento automático de nodos de elasticsearch? ¿Cuál es su principio?
Para reimpresiones comerciales, comuníquese con el autor para obtener autorización. Para reimpresiones no comerciales, indique la fuente.
Autor: Ben Jing
Enlace: /question/29360024/answer/55368070
Fuente: Zhihu.
Las primeras versiones de es tenían un problema de cerebro dividido, comúnmente conocido como cerebro dividido. ES utiliza un método de elección de chismes P2P, y el algoritmo de chismes es famoso por Cassandra.
Antecedentes:
El algoritmo de chismes está inspirado en los chismes de la oficina. Mientras una persona chismee, todos conocerán la información del chisme en un tiempo limitado.
Este método es similar a la propagación viral, porque los chismes tienen muchos alias, como "algoritmo de chismes", "algoritmo de transmisión de epidemias", "algoritmo de infección de virus" y "algoritmo de difusión de rumores".
Sin embargo, los chismes no son nada nuevo; los algoritmos de enrutamiento y búsqueda de inundaciones anteriores entran en esta categoría. La diferencia es que Gossip proporciona una semántica clara, métodos de implementación específicos y pruebas de convergencia para este tipo de algoritmo.
Características:
El algoritmo Bagua también se llama antientropía. La entropía es un concepto en física que representa el desorden, mientras que la antientropía es la búsqueda de coherencia en el desorden.
Esto ilustra plenamente las características del chisme: en una red delimitada, cada nodo se comunica con otros nodos de forma aleatoria. Después de una comunicación caótica,
finalmente, el estado de todos los nodos será consistente. Cada nodo puede conocer todos los demás nodos o sólo unos pocos nodos vecinos.
Mientras estas partes puedan conectarse a través de la red, su estado eventualmente será consistente, lo que por supuesto es una característica de la propagación de la epidemia.
Una cosa a tener en cuenta es que incluso si algunos nodos se reinician debido a un tiempo de inactividad y se agregan nuevos nodos, después de un período de tiempo,
el estado de estos nodos será el mismo. Como el de otros nodos. Para ser consistente, es decir, Gossip naturalmente tiene la ventaja de la tolerancia a fallas distribuida.
Esencia:
Gossip es un algoritmo tolerante a fallos con redundancia. Además, Gossip es un algoritmo de coherencia eventual.
Aunque no se garantiza que todos los nodos estarán en el mismo estado en un momento determinado, se puede garantizar que todos los nodos estarán en el mismo estado al final. en realidad, pero no se puede demostrar teóricamente.
Debido a que el chisme no requiere que los nodos conozcan a todos los demás nodos, está descentralizado y los nodos son completamente iguales sin ningún nodo central.
De hecho, Gossip se puede utilizar en muchas áreas donde la "consistencia eventual" es aceptable: detección de fallas, sincronización de rutas, publicación/suscripción y equilibrio de carga dinámico.
Sin embargo, las deficiencias del chisme también son obvias. La comunicación redundante provocará una gran carga en el ancho de banda de la red y los recursos de la CPU, y estas cargas están limitadas por la frecuencia de comunicación, lo que afecta la velocidad de convergencia del algoritmo.
Resumen:
Gossip es un algoritmo descentralizado, tolerante a fallos y eventualmente consistente cuya convergencia no sólo está probada sino exponencial.
El sistema que utiliza Gossip puede expandir fácilmente el servidor a más nodos y cumplir fácilmente con la expansión elástica.
La única desventaja es que la convergencia es la máxima coherencia, lo que no es adecuado para escenarios con una fuerte coherencia, como 2PC.