Red de conocimientos turísticos - Información de alquiler - Presta atención al código fuente de la votación.

Presta atención al código fuente de la votación.

***4239 palabras, tarda 15 minutos en leerse.

Zookeeper, como centro de registro predeterminado del ecosistema Dubbo, se ha utilizado ampliamente. Aunque Alibaba luego produjo nacos, es innegable que ZK sigue siendo un excelente producto de código abierto y una excelente alternativa al centro de registro.

ZK tiene muchas características. Este artículo presenta principalmente el proceso de selección de ZK (hay tres mil bellezas en el harén, solo te mimaré).

Para hablar sobre el proceso de selección de un maestro, primero debemos entender qué nodos tiene ZK y qué funciones desempeñan estos nodos.

Los nodos propios de ZK se dividen principalmente en tres categorías:

Líder: principal responsable de escribir datos. Si más de la mitad está de acuerdo, se transmitirá por escrito;

Seguidores: principalmente responsables de consultar solicitudes y enviar solicitudes por escrito a los líderes, participar en elecciones y escribir votos;

Observación: También es responsable de las solicitudes de consulta y de enviar solicitudes de escritura al líder. No participa en las votaciones y sólo recibe pasivamente los resultados.

Consigue más de la mitad de los votos para convertirte en el nodo líder.

Todo tiene sus propias reglas, las buenas son peores, las malas son peores. No hay dolor en el mundo. El dolor es el resultado de tu propia búsqueda, puedes comer algunos bocadillos. te has extraviado.

La comparación ZK tiene tres indicadores o tres dimensiones:

(1) Plazo

(2) ID de transacción (ID de transacción (ZK))

(3) Número de nodos (el número de cada nodo en el clúster)

Con base en los tres indicadores anteriores, se puede sacar la conclusión final: elija el que tenga un período mayor, el uno con un ID de transacción mayor en el mismo período, los dos primeros Lo mismo, con una gran cantidad de nodos

Sí, las reglas son así de simples, pero el código fuente sigue siendo muy confuso. p>

El código fuente parece aburrido, pero ¿cómo es posible que un artesano no sepa cómo hacerlo? Primero solucionemos el proceso del código para que podamos ver mejor la cuarta parte. El nodo primero vota por sí mismo y luego lo transmite.

El mensaje es recibido por el bucle interno del nodo.

Después de recibir el mensaje

Si el mensaje está vacío, vuelva a enviarlo. o establecer una conexión.

Si el mensaje no está vacío y el receptor del mensaje y el líder de votación son nodos legítimos, continúe con los siguientes pasos

Si el nodo es un nodo de búsqueda

p>

Basado en la votación del nodo actual, compare los votos recibidos para decidir si enviar votos nuevamente y registre los resultados de la votación.

Se determina el número de votos registrados cada vez. Se registran todos los votos y se establece el estado del nodo.

La lógica comienza con lookForLeader, que es como el primer ladrillo de la pirámide. Veamos lookForLeader, el primer ladrillo de la selección de líder de ZK. Primero mire el código fuente, debemos captar la línea principal e ignorar la línea esclava, y esperar a que la línea principal se entienda completamente después de borrarla, de lo contrario caerá en un laberinto.

Este es el código principal de votación:

El método de actualización de la votación o votación es el siguiente:

El método de envío de la notificación es:

Cuando las flores florecen, el mensaje ha sido enviado. El código para recibir los votos también está en lookForLeader Medio:

Continúe discutiendo el código y verifique el estado del nodo de votación que envía. En este artículo, sabemos que el nodo observador no participa en la votación, pero reenvía solicitudes de escritura y recibe datos pasivamente, y es responsable de las solicitudes de consulta, por lo que también podemos ver en el código:

Cuando El estado del nodo que envía el voto es siguiente o líder, significa que el nodo emisor ha sido elegido, por lo que la lógica del método de procesamiento es la misma. Esta parte no la discutiré en profundidad por ahora. Si estás interesado, puedes enviarme un mensaje privado o agregarme a WeChat: M_P_E_D

Finalmente, echemos un vistazo al código en el estado de búsqueda:

Hablemos. Primero, hablemos del método totalOrderPredicate, que en realidad es la implementación de las reglas de elección del líder.

El camino es largo y largo, pero debemos seguir y seguir adelante. El futuro es prometedor, así que sigan con el buen trabajo.