Acerca de raft: descripción del algoritmo de coherencia distribuida
Antes de comenzar la siguiente sección, puedes jugar con la demostración de la balsa, que se utilizará con más detalle más adelante en el análisis gráfico del Capítulo 3.
Antes de comenzar, primero introduzcamos una herramienta para simular una balsa, como se muestra en la siguiente figura:
En esta sección, explicaremos el Capítulo 2 en función de diferentes escenarios.
Escenario 1: Todos los nodos son normales
Escenario 2: El nodo líder está inactivo y los 4 nodos restantes participan en la elección
Escenario 2: El El nodo líder cae y los 4 nodos restantes participan en la elección.
En una elección de cuatro nodos, hay dos situaciones (1) un candidato obtiene la mayoría de los votos y 2) dos candidatos obtienen cada uno la mitad de los votos, pero aquí están combinados.
Escenario 3: un nodo caído se reinicia y el tiempo de espera de la elección se alcanza rápidamente
Este escenario en realidad incluye la situación en la que s4 se reincorpora al clúster normalmente, pero hay un párrafo adicional delante de it Interlude
Escenario 4: Uno de los nodos seguidores no puede recibir al líder debido a problemas de red en un momento determinado
Escenario 4: Un nodo seguidor no puede. recibir al líder debido a problemas de red en un cierto período de tiempo La solicitud de latido del candidato se convierte en candidato durante este período, y luego la red vuelve a la normalidad cuando se envía la solicitud de votación
Los escenarios anteriores son todas elecciones sin registros (escenarios similares con el mismo número de entradas de registro), de la siguiente manera se analizarán escenarios con diferentes números de entradas de registro
Primero, comencemos con un escenario de simulación. Escenario de simulación (esta simulación también es una simulación del escenario de descifrado del cerebro, pero esta herramienta de simulación no puede lograr el bloqueo de la red, pero esto no nos molesta, podemos hacerlo paso a paso)
Cuando los registros de Los candidatos y seguidores no Al mismo tiempo, la situación electoral parece complicada, pero en realidad se reduce a dos palabras: en el registro, cuanto mayor es el TermTERM de la última entrada del registro, más nueva es la última entrada del registro. TERM es igual, entonces la última entrada de registro con el ÍNDICE más grande es Cuanto más nueva es.
Escenario 1: el líder repara un nodo y agrega nuevos registros para replicación
Escenario 2: después de que el líder replica los registros y recibe la mayoría de los acuses de recibo, la red encuentra un problema. el líder cambia a otro nodo.
Entonces, ¿cuándo se confirmarán la mayoría de los registros copiados anteriormente? Vea a continuación:
Aquí hay una prueba de que incluso la mayoría de las copias se pueden sobrescribir. Si en el paso (9), s1 envió el registro durante el último período de tiempo y lo ejecutó en la máquina de estado después de completar la replicación de la mayoría de los nodos, pero aún no envió el estado de forma sincrónica a otros nodos, o el estado se sincronizó. . En este momento, la solicitud de votación iniciada por S5 aún puede ser la líder. Después de completar con éxito el proceso (9), sobrescribirá el registro enviado y será inconsistente con el estado de la máquina de estado.
Entonces, ¿por qué está bien enviar en el período actual?
El líder actual garantiza que el registro esté actualizado en el momento de la confirmación, mientras que el líder anterior no lo hizo (por ejemplo, la cuarta entrada del registro en s5 es la última entrada del registro para todo el clúster).
Entonces, solo si el nuevo registro actual (que debe ser el último registro de todos los nodos) se confirma después de la mayoría de las replicaciones, se puede confirmar junto con el registro actual:
3 Verificación de la propiedad de integridad del líder
Este artículo utiliza un contrafactual muy extenso para verificar la integridad del líder (propiedad de integridad del líder). De hecho, siempre que el líder pueda confirmar que el registro enviado debe tener una replicación mayoritaria y que el registro del número del período actual debe ser el último registro, en la elección del próximo período, un nodo que contenga el último registro debe participar en la elección antes de que un nodo pueda obtener una mayoría de votos, y el nodo que contiene el último registro debe recibir la mayoría de votos.
Los siguientes problemas, como los bordes de configuración de miembros y la compresión de registros, no se discutirán por el momento.
Como referencia:
/blob/master/raft-zh_cn.md#51-raft-E59FBAE7A180
blogs.com/xybaby/p/10124083. html
/ppvqq/article/details/78572898