Protocolo de coherencia-algoritmo de Paxos

El algoritmo de Paxos es un algoritmo de consenso basado en el paso de mensajes y tiene una alta tolerancia a fallas. Actualmente es reconocido como uno de los algoritmos más efectivos para resolver problemas de consistencia distribuida. En el protocolo de consistencia 2PC y 3PC , mencionamos algunas deficiencias de 2PC y 3PC, como un solo punto de falla, un mecanismo de tolerancia a fallas imperfecto, etc., y el algoritmo Paxos se ejecuta en un sistema asincrónico que permite fallas en el tiempo de inactividad Se requiere una entrega confiable de mensajes, que puede tolerar la pérdida de mensajes, demoras, desorden y repetición. Utiliza el mecanismo mayoritario para garantizar la tolerancia a fallas 2F + 1, es decir, un sistema con nodos 2F + 1 permite que la mayoría de los nodos F fallen al mismo tiempo.


El diagrama de flujo de Paxos es el siguiente, y los pasos específicos del proceso se describirán en detalle a continuación.
Inserte la descripción de la imagen aquí

Paxos divide los roles en el sistema en proponente, aceptador y aprendiz:

  • Proponente: Propuesta. La información de la propuesta incluye el ID de la propuesta (ID de la propuesta) y el Valor propuesto (Valor).
  • Aceptador: participar en la toma de decisiones y responder a las propuestas de los proponentes. La propuesta puede aceptarse después de recibir la propuesta.Si la mayoría de los aceptadores aceptan la propuesta, se dice que la propuesta está aprobada.
  • Alumno: No participe en la toma de decisiones, aprenda la última propuesta acordada (Valor) de los proponentes / aceptadores.

Uno o más procesos de propuesta (proponente) pueden iniciar una propuesta (propuesta). El algoritmo de Paxos permite que una determinada propuesta entre todas las propuestas llegue a un acuerdo en todos los procesos. La mayoría en el sistema también está de acuerdo con la propuesta (la minoría obedece a la mayoría ) y se llega a un acuerdo. A lo sumo, solo acepta una determinada propuesta,La mayoría de los tomadores de decisiones (Aceptador) aceptan un valor, el valor se considera aceptado, es decir, el tomador de decisiones puede leer el valorEsta es una condición de restricción que el algoritmo de Paxos debe cumplir.




Veamos primero un ejemplo extremo. Cada vez que un proceso de propuesta (Proponente) inicia una propuesta (Propuesta), todos o la mayoría de los tomadores de decisiones (Aceptador) están en desacuerdo, entonces, ¿qué debemos hacer? ¿Significa que nunca habrá un acuerdo? Sí, para evitar este problema, estipulaUn aceptador debe aceptar la primera propuesta (Propuesta), Es decir, la primera etapa del diagrama de flujo del algoritmo de Paxos en la figura anterior, se juzgará primero if(MaxN==null),回应(ok, null, null), donde el retorno nulo se refiere a la propuesta (Propuesta) que aún no ha aceptado / aceptado la tarea. Este valor se describirá en detalle más adelante.
Inserte la descripción de la imagen aquí


Entonces, suponga que solo hay un Proponente (Proponente) para iniciar una propuesta (Propuesta), luego el proceso es muy simple, de la siguiente manera:
Inserte la descripción de la imagen aquí




Lo anterior es que asumimos que solo un proceso de propuesta (Proponente) inició una propuesta (Propuesta), cada propuesta (Propuesta) tiene un número de propuesta N, entonces ahora si hay múltiples procesos de propuesta (Proponente) inició una propuesta (Propuesta) ¿Qué pasará entonces? En este momento necesitamos votar, es decir, debemos permitir que la mayoría reconozca la misma propuesta al mismo tiempo, el proceso es el siguiente:


Cada Proponente selecciona una Propuesta, y luego envía una solicitud al conjunto de tomadores de decisiones (Aceptador), requiriendo que al menos la mitad de todos los tomadores de decisiones (Aceptador) acepten la propuesta (Propuesta), es decir, los tomadores de decisiones (Aceptador) Estoy de acuerdo con los siguientes puntos:

  1. El ID de la propuesta (propuesta) es menor o igual que (Nota: aquí está <=) Preparar solicitud de la solicitud actual , Es decir, prometa al proponente garantizar que no se aceptarán más propuestas con un número inferior a N. Esto se refiere a la primera etapa en el diagrama de flujo del algoritmo de Paxos: la etapa de preparación
  2. Si el responsable de la toma de decisiones (Aceptador) ha aceptado la propuesta, responderá al Proponente (el Proponente) la ha aceptado con el mayor número menor que N
  3. La propuesta ya no se acepta (ID de la propuesta) es menor que (nota: aquí está <) Solicitud de propuesta de la solicitud actual , Aquí se refiere a la segunda etapa en el diagrama de flujo del algoritmo de Paxos: la etapa de acuerdo



1. Ya no acepta ID de propuesta menor o igual que (Nota: aquí está <=) Preparar solicitud para solicitud actual

En primer lugar, veamos el primer punto. Cada ID de propuesta tiene un número. Las propuestas con números más altos tienen una prioridad más alta. Para garantizar que los números en la propuesta propuesta por diferentes proponentes sean diferentes, debe Un mecanismo especial para obtener el número. El número debe contener la información del nodo y el tiempo propuesto por el propio nodo (por ejemplo, puede basarse en el número n de los tomadores de decisiones (Aceptador) en el sistema y el número m del Proponente), por ejemplo, el número m El número de la propuesta (Propuesta) propuesta por el Proponente cambia a m + i * n, i es el número de propuestas, es decir, i> = 0
Inserte la descripción de la imagen aquí




2. Si el tomador de decisiones (Aceptador) ha aceptado la propuesta, entonces responda a la propuesta (El proponente) ha aceptado la propuesta con un número menor que el número máximo de N

Luego echemos un vistazo al segundo punto, que sucedió principalmente cuando una de las propuestas del Proponente A (Propuesta) pasó a la mayoría de los tomadores de decisiones (Aceptador) en la primera etapa, la etapa de preparación, por lo que los tomadores de decisiones (Aceptador) aceptó la propuesta, llegó a un acuerdo y aceptó la propuesta del Propuesta A (Propuesta), pero aún no se ha finalizado. El Proponente A debe haber ingresado a la segunda etapa, para encontrar al tomador de decisiones (Aceptador) para implementar verdaderamente la propuesta (Propuesta). La situación general es la siguiente:
Inserte la descripción de la imagen aquí


Pero en este momento, los tomadores de decisiones (Aceptador) han unificado sus opiniones, pero aún no se han finalizado. En este momento, se propone una nueva propuesta (Proponente) B, y se propone una nueva propuesta (Propuesta), y las condiciones son más Atractivo (el ID de la propuesta es más grande), entonces el tomador de decisiones (Aceptador) puede hacer un motín y ponerse de acuerdo con la propuesta del Proponente B.


Sin embargo, le dijeron al Proponente B que aunque estuvimos de acuerdo con su propuesta, nuestros tomadores de decisiones (Aceptador) han unificado sus opiniones porque llegó tarde. Antes de usted, hemos aceptado el Proponente A Le diremos el contenido específico de la propuesta del Proponente A. Aquí, revelaremos los motivos de la propuesta del Proponente A al Proponente B. Los presentaremos en detalle a continuación.
Inserte la descripción de la imagen aquí




Aquí hablaremos sobre la razón por la cual el Proponente B reveló el contenido de la propuesta del Proponente A. Aquí primero veremos el contenido de la propuesta del Proponente B. Propósito, aquí nuestro Proponente A progresó sin problemas en la segunda fase, que fue confirmada por la mayoría de los tomadores de decisiones (Aceptador), y terminó.
Inserte la descripción de la imagen aquí


Sin embargo, si el Proponente B recibe la confirmación del Proponente A por parte de la mayoría de los tomadores de decisiones (Aceptador), contrarrestará a la mayoría de los tomadores de decisiones (Aceptador). Esto se debe a que el Proponente A tiene La mayoría de los tomadores de decisiones (Aceptador) no lo confirman, por lo que solo puede volver a la primera etapa y repetir el proceso anterior nuevamente.
Inserte la descripción de la imagen aquí


Aquí, el fracaso del Proponente A en la segunda etapa vuelve a la primera etapa, pero si el Proponente B obtiene la unificación de la mayoría de los tomadores de decisiones (Aceptador), entonces la segunda etapa puede ingresarse sin problemas, pero debido a Los tomadores de decisiones (Aceptador) han unificado sus opiniones antes, es decir, están de acuerdo con la propuesta del Proponente A. Aunque el Proponente A fracasó en la segunda etapa, los tomadores de decisiones (Aceptador) han aceptado esto El contenido de la propuesta, por lo tanto, cuando el Proponente B inicia la confirmación de la Propuesta en la segunda etapa, debe enviar y confirmar con el contenido de la Propuesta del Proponente A, a saberSi se selecciona una propuesta con cierto valor (Propuesta), el valor en todas las propuestas con un número más alto (Propuesta) también debe ser este Valor
Inserte la descripción de la imagen aquí


Aquí es por qué se requiereSi se selecciona una propuesta con cierto valor (Propuesta), el valor en todas las propuestas con un número más alto (Propuesta) también debe ser este ValorAquí, asumimos que si tenemos 5 tomadores de decisiones (Aceptador), pero 2 se abandonaron debido a razones de la red, ahora solo hay 3 tomadores de decisiones (Aceptador), y 3 tomadores de decisiones (Aceptador) están de acuerdo con la propuesta (Propuesta) De acuerdo, esta es la red es buena, los dos tomadores de decisiones (Aceptador) que están fuera de línea se vuelven a conectar, esto es si los dos tomadores de decisiones (Aceptador) recibieron una nueva propuesta (Propuesta), de acuerdo con el anteriorUn aceptador debe aceptar la primera propuesta (Propuesta) En principio, deben aceptar la nueva propuesta (Propuesta), y aquí conducirá a la inconsistencia del sistema. Si existen las restricciones anteriores, aunque no se introduce la misma propuesta (Propuesta), el contenido de la propuesta (Propuesta) es en realidad el mismo Sí, por lo que se puede garantizar su consistencia.




3. El ID de la propuesta es menor que (El ID de la propuesta es menor que (nota: aquí está <) Solicitud de propuesta de la solicitud actual

¿Qué significa el último punto? Todavía necesitamos explicar este punto sobre la base del segundo punto, principalmente para la segunda etapa del diagrama de flujo del algoritmo de Paxos: la etapa de acuerdo, como se mencionó anteriormente, la propuesta (Propuesta) del Proponente A es la primera Etapa: la etapa de preparación aprobó el consentimiento de la mayoría de los tomadores de decisiones (Aceptador), luego entró en la segunda etapa para encontrar a los tomadores de decisiones (Aceptador) para implementar verdaderamente la propuesta (Propuesta).
Inserte la descripción de la imagen aquí


Pero en este momento, cuando el Proponente A está buscando al tomador de decisiones (Aceptador) para determinar realmente la Propuesta, entonces hay un nuevo Proponente B que está en la primera etapa, que está en el proceso de Encuentre un aceptador para estar de acuerdo con su propuesta (Propuesta). En este momento, si la identificación de la propuesta (Propuesta) B (Propuesta) B es mayor, entonces el decisor (Aceptador) será rebelde y estará de acuerdo con el proponente ( Propuesta de B) (Propuesta), y revelar el contenido de la propuesta (Propuesta) Propuesta de A (Propuesta), que se ha introducido en detalle en el segundo punto anterior
Inserte la descripción de la imagen aquí


Aquí, si el Proponente A ya ha encontrado al tomador de decisiones (Aceptador) en la segunda etapa, entonces está bien, pero si está un paso tarde, regrese para encontrarlo después de la rebelión, lo siento, el nombre rebelde El tomador de decisiones (Aceptador) ha cambiado de opinión. El anterior obsoleto, ahora ignora al Proponente A
Inserte la descripción de la imagen aquí




Lo anterior es una introducción detallada de todo el diagrama de flujo del algoritmo de Paxos. En resumen, en realidad se divide en dos etapas

  1. La primera etapa de preparación de la etapa.
    1. El proponente selecciona un número de propuesta N, y luego envía un número de propuesta N (Propuesta) a más de la mitad de los tomadores de decisiones (Aceptador)
    2. Si un aceptador recibe una solicitud de propuesta con el número N, y N es mayor que el número de identificación de todas las solicitudes de propuesta a las que el tomador de decisiones (Aceptador) ha respondido, entonces lo aceptará La propuesta con el número más alto (si corresponde) que ha sido aceptada se devuelve al Proponente como respuesta, y el tomador de decisiones (Aceptador) promete no aceptar ninguna propuesta con un número menor que N
  2. La segunda etapa, la etapa de consentimiento
    1. Si el Proponente recibe una respuesta de más de la mitad de los tomadores de decisiones (Aceptador) a su propuesta (Propuesta) con el número N, entonces enviará una solicitud de Aceptación de la propuesta [N, V] a más de la mitad Aceptador
      ( Nota: V es el valor del contenido de la propuesta con el número más alto en la respuesta recibida. Si la respuesta no contiene ninguna propuesta, entonces el proponente determina V)
    2. Si el tomador de decisiones (aceptador) recibe una solicitud de aceptación de la propuesta con el número N, siempre que el tomador de decisiones (aceptor) no haya respondido a la solicitud de preparación con el número mayor que N, aceptará la propuesta.



Al comprender el proceso del algoritmo de Paxos anterior, también encontramos un problema de que múltiples proponentes (proponente) pueden caer en un bucle sin fin en la primera fase y la segunda fase, es decir, cada vez que el proponente puede ingresar a la segunda fase En ese momento, no había tenido tiempo de obtener el consentimiento final de la mayoría de los tomadores de decisiones (Aceptador). La mayoría de los tomadores de decisiones (Aceptador) se rebelaron por otros proponentes (Proponente), pero no tuve más remedio que volver a la primera etapa, y así sucesivamente. .


En respuesta al problema anterior, es decir, cómo podemos garantizar la actividad del algoritmo de Paxos , en el entorno real, aprobaremos una propuesta y seleccionaremos un Líder. Todas las propuestas posteriores solo pueden ser realizadas por el Líder para garantizar la actividad del algoritmo de Paxos.

286 artículos originales publicados · Me gusta12 · Visitantes 10,000+

Supongo que te gusta

Origin blog.csdn.net/newbie0107/article/details/105013792
Recomendado
Clasificación