Análisis del código fuente del líder electoral de Zookeeper (2)

La versión de Maven debe estar por encima de la versión 3.5, jdk1.8

 1. Proceso de elección

Si el sid de otros servidores es más pequeño que su propio sid, cierre la conexión del socket directamente. La razón de esto es reducir la conexión.

 Si son iguales, imprima un mensaje de advertencia Si el sid remoto es mayor que su propio sid, cree un hilo de envío y un hilo de recepción

 

 sendWorker.start, mire directamente la lógica del método de ejecución:
obtenga el mensaje de la cola de bloqueo

1.2 Método de ejecución de recuperación

Lea el mensaje socker del servidor remoto

 

La lógica de votación general, la capa empresarial lanza el sendqueue-workerSender-queueSendMap para enviar el mensaje de votación de la cola, y luego envía la información de la votación al servidor remoto y su propia cola recvWorker que recibe->recvQueue para generar la votación. 

 

wakersender construye boletas

 

 mysid es igual a sid y se agrega a la cola de la capa de transporte, si no es igual, se arroja a queuesendMap

 

 Algoritmo de elección fastleaderElection: búsqueda del estado de inicialización

 Lógica de votación real: newEpoch es igual a curEpoch, primero compare zxid y compare newID, curId,

actualizarPropuesta: actualice la boleta y vote por la boleta que sea competitiva la próxima vez

sendNotifications: Enviar boletas seleccionadas a otras máquinas

 

 

 termPredicadate: Ponga los votos seleccionados en voteSet y compare la mitad de ellos

 

 

 Lógica de comparación a la mitad: compare si el número de máquinas de votación es mayor a la mitad

mitad: número de votos/2

 

 

 

  Después de devolver verdadero, si gana el PK, configúrelo como líder; de lo contrario, establezca el estado actual de la siguiente manera

 

 Cuando el estado cambie después de una elección, mire el liderazgo y el seguimiento. Cuando la tercera máquina reciba la boleta, comparará si el estado actual está mirando.

 

 Cuando entra la tercera máquina, seguirá siguiendo y liderando, primero comparará el ciclo actual y realizará la lógica de comparación de votos anterior. Finalmente establecer el estado de elección actual

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_21575929/article/details/126217768
Recomendado
Clasificación