Algoritmo de consistencia en distribuido: protocolo de Paxos

¿Qué es paxos?

El algoritmo de Paxos es un algoritmo consistente basado en el paso de mensajes y altamente tolerante a fallas. El desarrollador de diseño de Chubby, Burrows, dijo una vez que todos los protocolos de consistencia son esencialmente Paxos o variantes de ellos.

¿Qué se usa para resolver Paxos?

En los sistemas distribuidos comunes, siempre se producirán situaciones como el tiempo de inactividad de la máquina o anomalías en la red, lo que provocará un error al enviar mensajes y mensajes duplicados que desaparecerán. El algoritmo de Paxos resuelve principalmente estos problemas, es decir, en un entorno distribuido, cómo llegar rápidamente a un acuerdo sobre un determinado valor y ciertos datos dentro del clúster para garantizar la coherencia de todo el sistema.

Paxos propuso

Lamport propuso una solución de consistencia teórica en 1990, y al mismo tiempo dio una prueba matemática rigurosa. Para describir el algoritmo, virtualizó una isla griega llamada Paxos. La isla adoptó un decreto para aprobar el decreto. Los miembros del parlamento pasaron el mensajero para transmitir el mensaje. Tanto el parlamentario como el historial de cartas eran a tiempo parcial. Puede salir de la sala del parlamento, y la historia de la carta puede repetir el mensaje o puede que nunca regrese. Se supone aquí que no hay un problema general bizantino, es decir, el mensaje no será manipulado. En ese entorno, a través del acuerdo parlamentario, todavía se garantiza un decreto Será aprobado y aceptado por todos los parlamentarios.

El principio y el contenido de Paxos

¿Qué es la consistencia lograda a través de Paxos? Comprendamos a través de un ejemplo en un dormitorio universitario.
Los cuatro compañeros de cuarto en el dormitorio quieren tener una actividad grupal por la tarde, por lo que deben ponerse de acuerdo sobre qué hacer.
El compañero de habitación A propuso por primera vez: "¡Vamos al cine!". El
compañero de habitación B se sintió bien y
estuvo de acuerdo: "Bueno, sí, vaya al cine". En este momento, el compañero de habitación C, que estaba jugando, no escuchó la conversación entre los dos, y de repente Diga: "Vamos a cenar". El
compañero de cuarto D está de acuerdo: "Sí, vamos a cenar".
Para llegar a un acuerdo, algunas personas tienen que cambiar de opinión, por lo que el compañero de cuarto B tiembla primero. El compañero de cuarto A echa un vistazo. , La minoría obedece a la mayoría, vamos a cenar. De esta manera, los cuatro compañeros de cuarto llegaron a un acuerdo.
Inserte la descripción de la imagen aquí
Aquí podemos ver los siguientes puntos,

  • La consistencia es obtener un resultado único.
  • La coherencia sigue el principio de que la minoría sigue a la mayoría.
  • Al final, todos sabían lo acordado.
  • Todos pueden estar de acuerdo con cualquier resultado, no necesariamente con su propuesta.
  • Se puede producir un error entre las comunicaciones, es decir, se puede perder el mensaje.

¿Por qué el sistema necesita consistencia?
Supongamos que está trabajando en casa, configura un servidor y lo abre, otros vendrán a visitarlo, se ve muy bien. Pero a medida que más y más personas lo usan, su servidor se vuelve cada vez más lento y sus recursos no son suficientes, por lo que actualizó la RAM y la CPU, pero sucedió lo mismo, porque para una sola máquina no hay Un sinfín de recursos.
Entonces, debe pensar en otra cosa: el
Inserte la descripción de la imagen aquí
método uno es el modo de copia maestra , donde un nodo es el nodo maestro y el resto son réplicas. Una vez que alguien quiera escribir un valor, le dirá al nodo maestro que el nodo maestro serializará las diferentes propuestas y las pasará a la copia, para que los datos se escriban en cada nodo.
O puede considerar un modelo punto a punto , donde todos los nodos son iguales. Cuando quieren proponer un nuevo valor, pasan la propuesta a otros nodos para llegar a un acuerdo sobre el siguiente tema, y ​​luego cada nodo responderá.
Para el primer modo, si hay un problema con el nodo maestro, debe seleccionar otro nodo maestro en la copia, de lo contrario, todo el sistema se bloqueará. En el segundo modo, todos los nodos deben llegar a un acuerdo continuo para garantizar que todas las operaciones sean consistentes en todas partes.

Echemos un vistazo a los principios básicos de Paxos.
Primero, comprendamos primero la
ID del concepto básico en Paxos : Número de propuesta que no entra en conflicto entre sí
Valor :
Proponente : Proponente , el contenido de la propuesta: ID + valor, para la misma ronda de propuestas, hasta Proponer un valor. Aceptador : Hay N proponentes. La propuesta de x = valor del proponente debe ser aceptada por más de la mitad del aceptador (N / 2 + 1) antes de ser aceptada.
Alumno : propuesta alumno. Se puede aceptar una propuesta si pasa más de la mitad de Accpetor y otros aceptadores indeterminados pueden sincronizar los resultados a través del alumno.

Proceso específico


Perspectiva del proponente en la etapa previa a la propuesta : el proponente selecciona un número de propuesta n y difunde Prepara n solicitudes para todos los aceptadores.
Perspectiva del proponente : el aceptador recibe una solicitud de Preparar n. Si el número de propuesta n es mayor que la solicitud anterior, promete que no recibirá propuestas con un número de propuesta menor que n, y adjuntará la propuesta de Aceptar anterior con un número menor que n. El valor de la mayor propuesta. Si n es menor que el número de propuesta previamente aceptado, se ignorará.


Perspectiva del proponente en la etapa de propuesta : El proponente recibió la aceptación del aceptador:
si no más de la mitad del aceptador respondió a la promesa, esta propuesta fracasó;
si más de la mitad del aceptador respondió a la promesa, se divide en diferentes situaciones:
si todos (aceptador) No se ha recibido ningún valor, luego envíe todos sus valores de aceptador y número de propuesta n a todos los aceptadores.
Si algún aceptador ha recibido el valor, seleccione el valor con el número de propuesta más grande de los valores aceptados como el valor de la propuesta. El número de la propuesta sigue siendo la
perspectiva del proponente : después de que el aceptador reciba la propuesta, si el número de la propuesta no es igual a sí mismo El número del compromiso actual). Si no se acepta la solicitud, el valor de la propuesta se escribirá en el local si son iguales.

Ahora analicemos los detalles específicos, en primer lugar, el compromiso mayoritario . Los receptores 2f + 1 correspondientes requieren el compromiso de f de ellos.
Supongamos que tenemos 2 proponentes y 3 aceptadores.
Inserte la descripción de la imagen aquí
El proponente1 envió PREPARE 5 a los tres aceptadores y recibió la promesa del aceptador1. Al mismo tiempo, el Proponente 2 envió el mensaje PERPARE 4 a los tres Aceptadores. En este momento, el Proponente1 obtiene una PROMESA 5, es decir, ha recibido la mayoría de las promesas. De esta forma, el Aceptador ignorará PREPARAR 4. Incluso si uno de los Aceptadores acepta PREPARAR 4 (retraso fuera de tiempo), el Proponente 1 continuará recibiendo SOLICITUD 5)

De hecho, puede encontrar que puede haber competencia aquí.
Inserte la descripción de la imagen aquí
Por ejemplo, el proponente1 puede enviar un PREPARE 5 a la mayoría de los aceptadores, y pueden comprometerse con esto. El proponente 2 envía un mensaje de PREPARACIÓN 6 al mismo tiempo, y también ha recibido la promesa de la mayoría de los aceptadores, por lo que se ignorará PREPARACIÓN 5. El proponente1 puede intentar una identificación más alta, como PREPARAR 7, y obtener la promesa de la mayoría de los aceptadores, por lo que se ignorará la propuesta de identificación 6. El proponente2 también puede intentar una ID más alta. Varios conjuntos de tales propuestas causarán puntos conflictivos controvertidos.
Una posible solución es establecer un retroceso exponencial, que dará tiempo suficiente para que cualquier propuesta se lleve a cabo en su totalidad. El Proponente1 puede esperar a que el Proponente2 procese la SOLICITUD DE ACEPTACIÓN de la ID 8, para que se llegue a un acuerdo y el proceso de Paxos Fin

La mayoría acepta al
Inserte la descripción de la imagen aquí
proponente1 para enviar un PREPARE 5, un mensaje de valor de gato a la mayoría de los aceptadores, se comprometerán con esto. El proponente2 también envía un mensaje PREPARAR 6 al mismo tiempo, y también ha recibido la promesa de la mayoría de los aceptadores. Su valor seguirá siendo el gato.

Publicado 28 artículos originales · ganado elogios 2 · Vistas 3259

Supongo que te gusta

Origin blog.csdn.net/Maestro_T/article/details/94336416
Recomendado
Clasificación