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

Tabla de contenido

 1. Descarga del código fuente

 2. Iniciar el proceso de elección de líderes


1. Proceso de elección de tiempo de inactividad de inicio o líder

2. Proceso de interacción cliente-servidor (NIO o Netty)

3. Protocolo de consistencia ZAB para escribir datos (cómo asegurar el orden de los mensajes)

4. Mira el mecanismo de activación del monitoreo.

 1. Descarga del código fuente

 https://github.com/apache/zookeeper.git

 Corte del código, corte del archivo zkServer.sh 

 

 Especifique los parámetros del programa e inicie la función principal de QuorumPeerMain.java

 

 La segunda forma de empezar

ZooKeeperMain, agregue los siguientes parámetros de inicio

 

Cree un grupo de cuidadores del zoológico, y cuando se abra normalmente, le indicará a cada uno cuál es el líder y cuál es la flor.

 

 2. Iniciar el proceso de elección de líderes

1. La primera máquina vota por sí misma y lo envía a otras máquinas, y otras máquinas también votarán por sí misma y lo enviarán a otras máquinas para ver cuál tiene el zxid más alto, pero el zxid de la primera ronda de votación es todo 0 , así que continúe comparando myids Cuál es más grande, el que tiene myid=2 votó en la primera ronda, el ganador ingresa a la siguiente ronda de elección

2. Tanto myid=1 como myid=2 votan por la máquina con myid 2 y determinan (2,0) como el ganador

 

 Entrada de código fuente

  Analice el archivo de configuración en la memoria, limpie la tarea del archivo de instantáneas y el método runFromConfig del proceso de inicio principal.

De forma predeterminada, NIO se usa para cargar la configuración y también se puede iniciar con netty como se muestra en la figura a continuación.

 Inicialice los parámetros de Qrorum, use internamente el objeto de nodo para generar

puesta en marcha

 

 

 Cargar parámetros netos

 

Embarcadero de inicio por defecto, puerto 8080, utilizado por operación y mantenimiento

 

 Comenzar elección de líder

 Estado predeterminado del servidor: buscando

 

 

 Ver el algoritmo de elección final

 Omitir por defecto, ver el algoritmo de elección de 3

 

Inicie un puerto electoral para escuchar la información del voto. 

 

 

Dos hilos enviando boletas

 

 

 Los anteriores son algunos métodos de monitoreo de subprocesos, super.start es el método de elección real.

 Lógica electoral básica:

        1. Estado de inicio: Buscando

 

Estrategia electoral central: fastLeaderElection 

 

 Actualice el mensaje de la boleta y envíe el mensaje. Al depurar, el método sendqueue.offer puede perderse. Necesitamos saber que hay un método de encuesta arriba para obtener el mensaje en la cola. 

 

 

 

 manager.connectAll: establecer una conexión de socket

 

 

 

Supongo que te gusta

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