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