2012-05-08 28 views
9

¿Puede alguien darme un ejemplo real de cómo se usa el algoritmo Paxos en una base de datos distribuida? He leído muchos artículos sobre Paxos que explican el algoritmo, pero ninguno de ellos realmente explica con un ejemplo real.Ejemplo del mundo real de Paxos

Un ejemplo simple podría ser una aplicación bancaria donde una cuenta se está modificando a través de varias sesiones (es decir, un depósito en un cajero, una operación de débito, etc.). ¿Se usa Paxos para decidir qué operación sucede primero? Además, ¿qué quiere decir con varias instancias del protocolo Paxos? ¿Cómo es cuando se usa esto? Básicamente, trato de entender todo esto a través de un ejemplo concreto en lugar de términos abstractos.

Respuesta

5

Por ejemplo, tenemos el sistema MapReduce donde el maestro consta de 3 hosts. Uno es maestro y otros son esclavos. El procedimiento de elegir maestro utiliza el algoritmo de Paxos.

también rechoncha de Google mesa grande utiliza Paxos: The Chubby Lock Service for Loosely-Coupled Distributed Systems, Bigtable: A Distributed Storage System for Structured Data

+0

El punto crítico en su ejemplo es que Paxos se usa para elegir un maestro, y luego las transacciones están mediadas por el maestro.Esta es también la forma en que Google usa Chubby: para elegir un maestro y para registrar la información que todos los maestros potenciales necesitan saber, pero luego las transacciones de datos de alto volumen evitan Paxos. – btilly

0

La base de datos Clustrix es una base de datos distribuida que utiliza Paxos en el administrador de transacciones. Paxos es utilizado por las partes internas de la base de datos para coordinar mensajes y mantener la atomicidad de la transacción en un sistema distribuido.

  • El coordinador es el nodo de la transacción se originó en
  • participantes son los nodos que modifican la base de datos en nombre de
  • la transacción Los lectores son nodos que ejecutan código en nombre de la transacción pero no modifican cualquier estado
  • Los aceptadores son los nodos que registran el estado de la transacción.

se toman los pasos siguientes cuando se realiza una confirmación de transacción:

  1. Coordinador envía un mensaje preparan para cada participante.
  2. Los participantes bloquean el estado de la transacción. Envían mensajes PREPARADOS al Coordinador.
  3. El coordinador envía mensajes ACCEPT a los Aceptores.
  4. Los Acceptores registran la Id. De membresía, transacción, identificación de compromiso y participantes. Envían mensajes ACEPTADOS al coordinador.
  5. El coordinador le dice al usuario que la confirmación se realizó correctamente.
  6. El coordinador envía mensajes COMMIT a cada participante y lector.
  7. Los participantes y los lectores comprometen la transacción y actualizan el estado de la transacción en consecuencia. Envían mensajes COMPROMETIDOS al Coordinador.
  8. El coordinador elimina el estado interno y ahora está listo.

Todo esto es transparente para la aplicación y se implementa en la base de datos interna. Por lo tanto, para su aplicación bancaria, todo el nivel de la aplicación tendría que hacer es realizar el manejo de excepciones para conflictos de interbloqueo. La otra clave para implementar una base de datos a escala es la concurrencia, que generalmente se ayuda a través de MVCC (control de concurrencia de varias versiones).

Cuestiones relacionadas