2010-04-30 19 views
7

Actualmente estoy explorando los peores escenarios de protocolos de confirmación atómica como 2PC y 3PC y estoy atascado en el punto en que no puedo encontrar por qué 3PC puede garantizar la atomicidad. Es decir, ¿cómo garantiza que si la cohorte A se compromete, la cohorte B también se compromete?¿Cómo puede el protocolo de confirmación trifásico (3PC) garantizar la atomicidad?

Aquí está el simplificada 3PC from the Wikipedia article:

3PC commit protocol as depicted on English Wikipedia

Ahora supongamos el siguiente caso:

  1. dos cohortes participan en la transacción (A y B)
  2. Ambos hacen su trabajo, a continuación, vote por compromiso
  3. El coordinador ahora envía mensajes de precomisión ...
    • A recibe el mensaje precommit, reconoce, y luego se desconecta durante un largo tiempo
    • B no recibe el mensaje precommit (cualquiera que sea la razón que sea) y está todavía en el estado de "incierta"

los resultados:

  • coordinador aborta la transacción porque no todos los mensajes fueron precommit Enviados y confirmados con éxito
  • Un, que se encuentra en estado precommit, es todavía fuera de línea, por lo tanto el tiempo de espera y comete
  • B aborta en todo caso: O bien se queda fuera de línea y el tiempo de espera (causas abortan) o entra en línea y recibe el comando abortar del coordinador

Y ahí lo tienen: Una cohorte comprometida, otra abortada. La transacción está jodida.

¿Qué me falta aquí? En mi entender, si la confirmación automática del tiempo de espera (en el estado de precomisión) se reemplazó por la espera infinita de un comando de coordinador, ese caso debería funcionar bien.

Respuesta

8

El artículo que citó parece cubrir esta eventualidad con bastante precisión: "La principal desventaja de este algoritmo es que no se puede recuperar en el caso de que la red esté segmentada de alguna manera". El caso que ha notado, donde "A" simplemente se desconecta, se traduce en "la red se ha segmentado", es decir, "A" ahora está en un segmento, mientras que "B" y el "Coordinador" están en otro segmento

Varios protocolos 3PC mejorados para tratar este problema se discuten (entre otros lugares) en un paper por Kempster, Stirling y Thannish.

+0

De acuerdo, eso confirma mi tesis. Leeré sobre estos protocolos basados ​​en el quórum. Gracias – AndiDog

Cuestiones relacionadas