El principio de implementación del modo centinela de Redis
Sobre el principio de los centinelas, la clave es comprender los siguientes conceptos:
Tareas cronometradas: cada nodo centinela mantiene tres tareas programadas. Las funciones de las tareas programadas son las siguientes: obtener la última estructura maestro-esclavo enviando el comando de información al nodo maestro-esclavo; obtener la información de otros nodos centinela a través de las funciones de publicación y suscripción; realizar la detección de latidos enviando el ping; comando a otros nodos para determinar si están fuera de línea.
Sin conexión subjetiva: en la tarea programada de detección de latidos, si otros nodos no responden dentro de un cierto período de tiempo, el ganglio centinela los desconectará subjetivamente. Como sugiere el nombre, subjetivo fuera de línea se refiere al juicio "subjetivo" de un ganglio centinela de estar fuera de línea; la contraparte subjetiva fuera de línea es objetiva fuera de línea;
Cierre de sesión de destino: después de que el nodo centinela cierre sesión subjetivamente en el nodo maestro, solicitará a otros nodos centinela el estado del nodo maestro a través del comando centinela is-master-down-by-addr; el número de centinelas que determinan que el nodo maestro está fuera de línea alcanza un cierto valor, objetivamente el nodo maestro se desconectará.
Es importante tener en cuenta que el objetivo fuera de línea es un concepto exclusivo del nodo maestro; si el nodo esclavo y el nodo centinela fallan, y el centinela los desconecta subjetivamente, no habrá ningún objetivo posterior fuera de línea. operaciones de máquina y conmutación por error.
Elección del nodo centinela líder: cuando se considera objetivamente que el nodo maestro está fuera de línea, cada nodo centinela negocia para elegir un nodo centinela líder y el nodo centinela líder realiza operaciones de conmutación por error.
Todos los centinelas que monitorean el nodo maestro pueden ser elegidos como líderes. El algoritmo utilizado en la elección es el algoritmo Raft. La idea básica del algoritmo Raft es por orden de llegada: es decir, en. En una ronda de elecciones, el centinela A enviará a B una solicitud para convertirse en líder. Si B no ha llegado a un acuerdo con otros centinelas, acepta que A se convierta en líder. El proceso específico de la elección no se describirá en detalle aquí. En términos generales, el proceso de selección de centinela es rápido. Quien primero complete el objetivo fuera de línea generalmente se convertirá en el líder.