Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
INDICE
INDICE..................... ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ....................... ................................ ......... .... 1 INTRODUCCION.................... .............................. ............ .. ........................ ................................ ........ ..................... ............................... ............ ................... ................... 2 THREE - PHASE COMMIT (3PC) .................... .............................. ............ .. ....................... ................................ ......... .................... .......................... ...... 3 1.
Descripción del protocolo .................... ............................... ............. ........................ ................................ ........ .................... ......................... ..... 3 1.1 Coordinador .................... .............................. ............ .. ........................ ................................ ........ ..................... ............................... ............ .............. .............. 4 1.2 Participante .................... ............................... ............. ........................ ................................ ........ ..................... ............................... ............ ................ ................ 5
2.
Protocolo de Compromiso de 3 Fases .................... .............................. ............ .. ....................... ................................ ......... ... 6 2.1 FASE 1: (de Votación igual al Protocolo de 2PC): ..................... ............................... ............ ............. ............. 7 2.2 FASE 2: .................... ............................... ............. ........................ ................................ ........ .................... .............................. ............ .. ....................... .......................... ... 7 2.3 FASE 3: Esta fase se ejecuta solamente si la decisión de la Fase 2 fue de
precompromiso. ..................... ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. .................. .................. 7 3.
Manejo de Fallos en3PC .................... .............................. ............ .. ........................ ................................ ........ ..................... ............................ ....... 9
4.
Protocolo de Fallo del Coordinador .................... ............................... ............. ........................ ................................ ........ ..... 10
5.
3PC - Estado de T ..................... ............................... ............ ........................ ................................ ........ .................... .............................. ............ .. ...... 10
6.
3PC - La decisión de Cnew .................... .............................. ............ .. ....................... ................................ ......... ..................... ..................... 10
8.
Comparando 2PC y3PC .................... .............................. ............ .. ........................ ................................ ........ ..................... .......................... ..... 11
9.
PC de 2 Fases vs. PC de 3 Fases .................... .............................. ............ .. ........................ ................................ ........ ............. ............. 12
BIBLIOGRAFIA ..................... ............................... ............ ....................... ................................ ......... .................... .............................. ............ .. ..................... ..................... 12
1
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
INTRODUCCION
El protocolo
3PC, controla la ejecución de una transacción distribuida. La
transacción distribuida se inicia en un determinado nodo que posee un SGBD participante en la distribución -llamado el Coordinador -. Para la ejecución de la transacción, se precisa 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 número 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 transacción local. Con esta información de control, recibida de los Participantes, el Coordinador adopta una decisión unánime de si ha de llevarse a cabo la transacción 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 ejecución. Será Coordinador el nodo que vaya a hacerse cargo de dirigir la ejecución de dicha transacción, y será Participante aquel nodo encargado del acceso a los datos de su localidad participante.
2
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
THREE - PHASE COMMIT (3PC)
Para facilitar la descripción de los protocolos de confiabilidad distribuida se supondrá que en el nodo que se origina una transacción hay un proceso, llamado el coordinador, que ejecuta las operaciones de la transacción. El coordinador se comunica con procesos participantes en los otros nodos los cuales lo ayudan en las operaciones de la transacción. El protocolo 3PC fue originalmente descrito por Dale Skeen y Michael Sonebraker en su artículo "A Formal Model of Crash Recovery in a Distributed System." En este trabajo, ellos modelaron 2PC como un sistema de "máquina de estado finito no determinística" y probaron que no es resistente a un fallo aleatorio de un único nodo. La observación básica 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 análisis, desarrollaron 3PC para evitar dichos estados y por tanto ser resistente a dichos fallos.
1. Descripción del protocolo Para describir el protocolo usaremos una terminología similar a la utilizada en el protocolo de commit de dos fases El 3PC es un algoritmo distribuido el cual hace que todos los nodos de un sistema distribuido hagan commit de una transacción. Es una alternativa al 2PC. El 2PC es un algoritmo bloqueante mientras que el 3pc es un algoritmo no bloqueante. En el 2PC un nodo permanecerá bloqueado esperando por un mensaje. Otro proceso puede estar esperando por los recursos que el proceso tiene bloqueados. Se pueden dar bloqueos indefinidos si el coordinador ó el participante falla. 3PC pone un límite superior a la cantidad de tiempo necesario antes de un commit ó abort. Esta propiedad asegura que si una determinada transacción va a hacer commit y tiene algunos recursos bloqueados, libera los bloqueos transcurrido ese tiempo. Por tanto tenemos un único nodo coordinador lidera ndo la transacción y un grupo de uno o más participantes que son dirigidos por el coordinador.
3
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
1.1 Coordinador
Diagrama de estados del coordinador 1. El coordinador recibe una solicitud de transacción. Si hay un fallo en este momento, el coordinador aborta la transaccion (en cuanto se recupere hace la transición por fallo). En caso contrario, el coordinador envía un mensaje de inicio de transacción a los participantes y cambia al estado de en espera . 2. Si hay un fallo, timeout, o si el coordinador recibe un mensaje de no se iniciará la transacción en el estado de en espera, el coordinador aborta la transacción y envía un mensaje de abortar a todos los participantes. En caso contrario el coordinador recibirá mensajes de puede comenzar la transacción desde todos los participantes dentro de la ventana de tiempo, y por tanto envía mensajes de commit a todos los participantes y cambia al estado de preparados. 3. Si el coordinador falla en el estado de preparados , cambiará al estado de commit. Sin embargo si el coordinador se pasa de tiempo mientras espera un un reconocimiento de un participante, abortará la transacción. En el caso de que todos los reconocimientos son recibidos, el coordinador cambia también al estado de commit . 4
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
1.2 Participante
Diagrama de estados del participante 1. El participante recibe un mensaje de inicio de transacción desde el coordinador. Si el participante está de acuerdo, contesta con un mensaje de se iniciará la transacción (OK) al coordinador, y cambia al estado de en espera. En caso contrario envía un mensaje de no se iniciará la transacción y aborta. Si hay un fallo, cambia al estado de abortar. 2. En el estado de en espera, si el participante recibe un mensaje de abortar desde el coordinador, tiene un fallo, o se pasa de tiempo esperando un commit, aborta. Si el participante recibe un mensaje de preparado, contesta con un mensaje ack y pasa al estado de pendiente . 3. Una vez en el estado de pendiente , al recibir un mensaje de commit , hace el commit. En caso de fallo o de timeout también hace commit.
5
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
Incluye una nueva fase llamada Pre -Commit.
Cuando se recibe un mensaje de pre-commit, el participante conoce que todos los demás han votado por commit. Si el mensaje de precommit no es recibido el participante aborta y libera los recursos bloqueados.
2. Protocolo de Compromiso de 3 Fases 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 participantes pueden fallar mientras se ejecuta el protocolo. k es un parámetro 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 decisión preliminar sobre el destino de T. 6
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
2.1 FASE 1: (de Votación igual al Protocolo de 2PC):
Ci agrega el registro
a la bitácora y lo graba en memoria estable. Ci envía 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 porción de T. Respuesta Si: agrega a la bitácora, la graba en memoria estable y envía el mensaje ´ready Tµ a Ci. Respuesta No: agrega a la bitácora, la graba en memoria estable y envía el mensaje ´abort Tµ a Ci
y
y y
y
y
2.2 FASE 2:
Si Ci recibe un mensaje "no T" de un participante o si no recibe respuesta (en cierto período), decide abortar T y envía el mensaje "abort T" a todos los participantes. Si Ci recibe un mensaje "ready T" de cada sitio participante, toma la decisión preliminar de pre - compromiso, grabando en bitácora y envía el mensaje "precommit T" a todos los participantes. Cuando un participante recibe el mensaje de aborto o pre compromiso graba en bitácora di cho mensaje ( o ) y envía el mensaje "acknowledge T" al coordinador.
y
y
y
2.3 FASE 3: Esta fase se ejecuta solamente si la decisión de la Fase 2 fue de precompromiso. Después de que se enviaron los respectivos mensajes "precommit T" a todos los participantes, debe esperar que al menos k sitios envíen el mensaje "acknowledge T". Recien en ese momento, el coordinador decide cometer grabando en bitácora y enviando un mensaje "commit T" a cada uno de los participantes. Cuando cada participante recibe ese mensaje, lo graba en su respectiva bitácora 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
y
y
y
7
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
La fase 3 de este protocolo lleva a una decisión de commit por lo que parece de poca utilidad práctica. El rol de la fase 3 se ju stifica en caso de fallos.
y
y
El protocolo de compromiso de 3 fases evita la posibilidad de bloqueos siempre que se restrinja el número de fallas posibles (algo muy difícil de garantizar). 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 participantes pueden fallar mientras se ejecuta el protocolo. k es un parámetro que mide la tolerancia a los fallos.
y
y
8
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
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 decisión preliminar sobre el destino de T
y
y
3. Manejo de Fallos en3PC
Fallo de un participante Tareas del coordinador cuando detecta el fallo de un participante. Tareas del participante como parte del proceso de recuperación. Fallo del coordinador Selección de un nuevo coordinador entre los participantes. Tareas del coordinador como parte del proceso de recuperación.
a) Fallo de un Participante ¿Qué y
hace un participante como parte del proceso de recuperación? Si Ti falla antes de enviar al coordinador un mensaje Ready T, el coordinador alcanza su timeout y aborta T.
y
Si Ti falla después de enviar al coordinador un mensaje Ready T, el coordinador ignora la falla de Ti
y
Si contiene un en su bitácora, ejecutar Redo(T).
y
Si contiene un en su bitácora, ejecutar Undo(T).
y
Si contiene un pero no un ni un consulta con Ci y ejecuta Undo(T) si recibe el mens aje "abort T" y Redo(T) si recibe un "commit T".
y
Si contiene un pero no un ni un consulta con Ci
y
Si contiene un pero no un ni un consulta con Ci.
y
Si Ci responde que "abort T", ejecuta Un do(T).
y
Si Ci responde que "commit T", ejecuta Redo(T).
y
Si Ci responde que "precommit T", graba el registro en su bitácora y envía un mensaje "acknowledge T" al Ci.
y
9
Si Ci no responde se ejecuta el protocolo de fallo del Ci. Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
b) Fallo del coordinador y
y y
4.
Si un participante, por cualquier motivo no recibe respuesta del coordinador, dispara el protocolo de fallo de coordinador. El resultado será la selección de un nuevo coordinador. Cuando el coordinador fallado se recupera, seguirá actuando como participante, acatando las decisiones del nuevo coordinador.
Protocolo de Fallo del Coordinador 1. Los sitios participantes activos seleccionan un nuevo coordinador. 2. El nuevo coordinador Cnew envía un mensaje a cada sitio participante requiriendo el estado local de T. 3. Cada sitio participante (incluyendo Cnew) determina el estado local de T (cometida, abortada, lista, precometida, no lista). 4. Dependiendo de las respuestas recibidas, Cnew decide si cometerá o abortará T.
5.
3PC - Estado de T Cometida: la bitácora contiene un registro . Abortada: la bitácora contiene un registro . Lista: la bitácora contiene un pero no contiene un ni un .
Precometida: la bitácora contiene un registro pero no contiene un registro ni un registro .
No Lista: la bitácora no contiene un ni un . 6. 3PC - La decisión de Cnew
y
Si al menos un sitio tiene el estado cometido, entonces Cnew decide cometer T.
y
Si al menos un sitio tiene el estado abortado, entonces Cnew decide abortar T.
10
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
y
Curso: Desarrollo Cliente- Servidor
Si ningún 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
En otro caso, Cnew aborta T.
y
El nuevo coordinador Cnew puede llegar a conocer el estado del coordinador fallado Ci.
y
Si un sitio activo tiene un en su bitácora, entonces Ci tiene que haber decidido cometer T.
y
Si un sitio activo tiene un en su bitácora, ento nces Ci alcanzó un estado de pre- compromiso, lo que implica que todos los sitios alcanzaron el estado de listos.
y
A diferencia del PC de 2 Fases, Cnew no comete T unilateralmente ya que puede producir un bloqueo si Cnew falla.
7.
¿Qué pasa si ningún sitio activo recibió el mensaje de pre -compromiso de Ci? y
Ci ha decidido cometer antes de fallar.
y
Ci ha decidio abortar antes de fallar.
y
Ci no ha decidido sobre la suerte de T.
y
La primera alternativa no es posible y, por lo tanto, veremos que es seguro abortar.
y
Si Ci decidió cometer, entonces al menos k sitios decidieron precometer T y enviaron un reconocimiento (acknowledge) a Ci.
y
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.
y
Si ningun sitio activo recibió un mensaje de pre -compromiso, no esposible que Ci haya decidido cometer.
8.
Comparando 2PC y3PC
Ambos protocolos buscan satisfacer el principio de atomicidad: una transacción se ejecuta en su totalidad o no se ejecuta por co mpleto.
11
Docente: Ing. Yuri Román Lazarinos
Universidad Privada José Carlos Mariátegui Ingeniería de Sistemas E Informática
Curso: Desarrollo Cliente- Servidor
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 transacción, ya que el destino de una transacción 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 tráfico de mensajes. 9.
PC de 2 Fases vs. PC de 3 Fases
Intuitivamente, el PC de 2 Fases permite que un participante cometa T ni bien descubre que los participantes votaron . En cambio, en el PC de 3 Fases un participante comete T no sólo cuando sabe que los participantes han votado , sino también cuando conozca que todos los participantes saben eso (si alguno falla, lo deberá saber cuando se recupere). Más allá de eso, el PC de 2 Fases es más comúnmente 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
Docente: Ing. Yuri Román Lazarinos