3PC
3PC
3PC
INDICE
INDICE ................................ ................................ ................................ ................................ .... 1 INTRODUCCION ................................ ................................ ................................ ................... 2 THREE - PHASE COMMIT (3PC) ................................ ................................ .......................... 3 1. Descripcin del protocolo ................................ ................................ ......................... 3 1.1 Coordinador ................................ ................................ ................................ .............. 4 1.2 Participante ................................ ................................ ................................ ................ 5 2. Protocolo de Compromiso de 3 Fases ................................ ................................ ... 6 2.1 FASE 1: (de Votacin igual al Protocolo de 2PC): ................................ ............. 7 2.2 FASE 2: ................................ ................................ ................................ .......................... 7 2.3 FASE 3: Esta fase se ejecuta solamente si la decisin de la Fase 2 fue de precompromiso. ................................ ................................ ................................ .................. 7 3. 4. 5. 6. 8. 9. Manejo de Fallos en3PC ................................ ................................ ............................ 9 Protocolo de Fallo del Coordinador ................................ ................................ ..... 10 3PC - Estado de T ................................ ................................ ................................ ...... 10 3PC - La decisin de Cnew ................................ ................................ ..................... 10 Comparando 2PC y3PC ................................ ................................ .......................... 11 PC de 2 Fases vs. PC de 3 Fases ................................ ................................ ............. 12
INTRODUCCION
El protocolo
transaccin distribuida se inicia en un determinado nodo que posee un SGBD participante en la distribucin -llamado el Coordinador -. Para la ejecucin de la transaccin, se preci sa emitir o difundir partes de las operaciones a otros nodos donde residen otros SGBDs -llamados Participantes - que son los encargados del acceso a los datos ubicados en cada localidad (flechas con nmero 2 en la figura 1). Cada Participante responde a la solicitud del Coordinador, indicando si est o no dispuesto para llevar a cabo su correspondiente transaccin local. Con esta informacin de control, recibida de los Participantes, el Coordinador adopta una decisin unnime de si ha de llevarse a cabo la t ransaccin o no, y se la difunde a todos los Participantes.
El papel de Coordinador o de Participante que puede jugar un determinado nodo, es eventual en cada ejecucin. Ser Coordinador el nodo que vaya a hacerse cargo de dirigir la ejecucin de dicha transaccin, y ser Participante aquel nodo encargado del acceso a los datos de su localidad participante.
Para facilitar la descripcin de los protocolos de confiabilidad distribuida se supondr que en el nodo que se origina una transaccin hay un proceso, llamado el coordinador, que ejecuta las operaciones de la transaccin. El coordinador se comunica con procesos participantes en los otros nodos los cuales lo ayudan en las operaciones de la transaccin. El protocolo 3PC fue originalmente descrito por Dale Skeen y Michael Sonebraker en su artculo "A Formal Model of Crash Recovery in a Distributed System." En este trabajo, ellos modelaron 2PC como un sistema de "mquina de estado finito no determin stica" y probaron que no es resistente a un fallo aleatorio de un nico nodo. La observacin bsica es que en 2PC, mientras un nodo est en el estado de "preparado para commit", el otro puede estar tanto en el estado de "commit" como en el de "abortar". A partir de este anlisis, desarrollaron 3PC para evitar dichos estados y por tanto ser resistente a dichos fallos.
1.1 Coordinador
1.2 Participante
Cuando se recibe un mensaje de pre-commit, el participante conoce que todos los dems han votado por commit. Si el mensaje de precommit no es recibido el participante aborta y libera los recursos bloqueados.
El protocolo de compromiso de 3 fases evita la posibilidad de bloqueos en para un subconjunto restringido de posibles fallos. El protocolo de compromiso de 3 fases exige que: No ocurran particiones de la red (para que en caso de fallos, se pueda elegir un nuevo coordinador). A lo sumo k sitios partici pantes pueden fallar mientras se ejecuta el protocolo. k es un parmetro que mide la tolerancia a los fallos. En cualquier momento, debe haber al menos k+1 sitios funcionando correctamente. Para evitar bloqueos, se agrega una fase en la cual se alcanza una decisin preliminar sobre el destino de T.
y y y y y
Ci agrega el registro <prepare T> a la bitcora y lo graba en memoria estable. Ci enva un mensaje prepare T a todos los sitios donde se ejecut T. Cada gestor que recibe el mensaje determina si puede o no cometer su porcin de T. Respuesta Si: agrega <ready T> a la bitcora, la graba en memoria estable y enva el mensaje ready T a Ci. Respuesta No: agrega <no T> a la bitcora, la graba en memoria estable y enva el mensaje abort T a Ci
2.2 FASE 2:
Si Ci recibe un mensaje "no T" de un participante o si no recibe respuesta (en cierto perodo), decide abortar T y enva el mensaje "abort T" a todos los participantes. Si Ci recibe un mensaje "ready T" de cada sitio participante, toma la decisin preliminar de pre - compromiso, grabando en bitcora <precommit T> y enva el mensaje "precommit T" a todos los participantes. Cuando un participante recibe el mensaje de aborto o pre compromiso graba en bitcora di cho mensaje (<abort> o <precommit>) y enva el mensaje "acknowledge T" al coordinador.
2.3 FASE 3: Esta fase se ejecuta solamente si la decisin de la Fase 2 fue de precompromiso.
y
y y y
Despus de que se enviaron los respectivos mensajes "precommit T" a todos los participantes, debe esperar que al menos k sitios enven el mensaje "acknowledge T". Recien en ese momento, el coordinador decide cometer grabando en bitcora <commit T> y enviando un mensaje "commit T" a cada uno de los participantes. Cuando cada participante recibe ese mensaje, lo graba en su respectiva bitcora Como en el 2PC, un sitio que puede decidir abortar T enviando un mensaje "abort T" antes del "ready T". Mientras que en el2PC el coordinador puede incondicionalmente abortar T antes de enviar el mensaje "commit T", el mensaje "precommit T" es una promesa del coordinador de que eventualmente se cometer T.
y y
La fase 3 de este protocolo lleva a una decisin de commit por lo que parece de poca utilidad prctica. El rol de la fase 3 se justifica en caso de fallos.
El protocolo de compromiso de 3 fases evita la posibilidad de bloqueos siempre que se restrinja el nmero de fallas posibles (algo muy difcil de garantizar). El protocolo de compromiso de 3 fases exige que:
y y
No ocurran particiones de la red (para que en caso de fallos, se pueda elegir un nuevo coordinador). A lo sumo k sitios participantes pueden fallar mientras se ejecuta el protocolo. k es un parmetro que mide la tolerancia a los fallos.
y y
En cualquier momento, debe haber al menos k+1 sitios funcionando correctamente. Para evitar bloqueos, se agrega una fase en la cual se alcanza una decisin preliminar sobre el destino de T
Fallo de un participante Tareas del coordinador cuando detecta el fallo de un participante. Tareas del participante como parte del proceso de recuperacin. Fallo del coordinador Seleccin de un nuevo coordinador entre los participantes. Tareas del coordinador como parte del proceso de recuperacin.
a) Fallo de un Participante
Qu hace un participante como parte del proceso de recuperacin? Si Ti falla antes de enviar al coordinador un mensaje Ready T, el coordinador alcanza su timeout y aborta T.
y
y y y
Si contiene un <commit T> en su bitcora, ejecutar Redo(T). Si contiene un <abort T> en su bitcora, ejecutar Undo(T). Si contiene un <precommit T> pero no un <abort T> ni un <commit T> consulta con Ci y ejecuta Undo(T) si recibe el mens aje "abort T" y Redo(T) si recibe un "commit T".
Si contiene un <ready T> pero no un <abort T> ni un <precommit T> consulta con Ci
Si contiene un <ready T> pero no un <abort T> ni un <precommit T> consulta con Ci.
y y y
Si Ci responde que "abort T", ejecuta Un do(T). Si Ci responde que "commit T", ejecuta Redo(T). Si Ci responde que "precommit T", graba el registro <precommit T> en su bitcora y enva un mensaje "acknowledge T" al Ci.
Si un participante, por cualquier motivo no recibe respuesta del coordinador, dispara el protocolo de fallo de coordinador. El resultado ser la seleccin de un nuevo coordinador. Cuando el coordinador fallado se recupera, seguir actuando como participante, acatando las decisiones del nuevo coordinador.
5. 3PC - Estado de T Cometida: la bitcora contiene un registro <commit T>. Abortada: la bitcora contiene un registro <abort T>. Lista: la bitcora contiene un <ready T> pero no contiene un <abort T> ni un <precommit T>. Precometida: la bitcora contiene un registro <precommi t T> pero no contiene un registro <abort T> ni un registro <commit T>. No Lista: la bitcora no contiene un <ready T> ni un <abort T>. 6. 3PC - La decisin de Cnew
10
Si ningn sitio est cometido o abortado pero existe al menos un sitio en estado precometido, Cnew reanuda el protocolo enviando un nuevo mensaje de pre- compromiso.
y y
En otro caso, Cnew aborta T. El nuevo coordinador Cnew puede llegar a conocer el estado del coordinador fallado Ci.
Si un sitio activo tiene un <commit T> en su bitcora, entonces Ci tiene que haber decidido cometer T.
Si un sitio activo tiene un <precommit T> en su bitcora, ento nces Ci alcanz un estado de pre- compromiso, lo que implica que todos los sitios alcanzaron el estado de listos.
A diferencia del PC de 2 Fases, Cnew no comete T unilateralmente ya que puede producir un bloqueo si Cnew falla.
Ci ha decidido cometer antes de fallar. Ci ha decidio abortar antes de fallar. Ci no ha decidido sobre la suerte de T. La primera alternativa no es posible y, por lo tanto, veremos que es seguro abortar.
Si Ci decidi cometer, entonces al menos k sitios decidieron pre cometer T y enviaron un reconocimiento (acknowledge) a Ci.
Por lo tanto, existen al menos k sitios activos y al menos uno de ellos debe informar a Cnew que recibi un mensaje de pre -compromiso.
Si ningun sitio activo recibi un mensaje de pre -compromiso, no esposible que Ci haya decidido cometer.
Ambos protocolos buscan satisfacer el principio de atomicidad: una transaccin se ejecuta en su totalidad o no se ejecuta por co mpleto.
11
Ambos asumen ciertas condiciones en la red: que no se pierden mensajes y que los mensajes llegan en el mismo orden en que fueron enviados. El PC de 3 Fases exige condiciones adicionales como por ejemplo, que la red no pueda particionarse en dos o m s grupos que no se pueden comunicar entre si. El Protocolo de Compromiso de 2 Fases puede dejar bloqueada a una transaccin, ya que el destino de una transaccin no se conoce hasta que el sitio fallado (coordinador) no se recupera. El Protocolo de Compromiso de 3 Fases evita situaciones de bloqueo pero requiere un mayor trfico de mensajes.
Intuitivamente, el PC de 2 Fases permite que un participante cometa T ni bien descubre que los participantes votaron <commit T>. En cambio, en el PC de 3 Fases un participante comete T no slo cuando sabe que los participantes han votado <commit T>, sino tambin cuando conozca que todos los participantes saben eso (si alguno falla, lo deber saber cuando se recupere). Ms all de eso, el PC de 2 Fases es ms comnmente usado a pesar de sus bloqueos potenciales ya que la probabilidad de que stos ocurran es suficientemente baja con respecto al costo extra que insume la tercera fase en el PC de 3 Fases.
BIBLIOGRAFIA
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/M
onogSO/TRANS02.htm
http://sinbad.dit.upm.es/docencia/grado/curso0304/Apuntes%202PC%2
0y%20Fiabilidad.pdf
http://html.rincondelvago.com/bases -de-datos-distribuidas_2.html http://es.wikipedia.org/wiki/Commit_de_tres_fases
12