2012-04-09 16 views
9

No sé si esta es una pregunta adecuada aquí.¿Cómo entender la "disponibilidad" del teorema CAP?

Como sabemos, en el teorema CAP, "A" significa "Disponibilidad". En wikipedia, la explicación de "disponibilidad" es:

Availability: a guarantee that every request receives a response about whether it was successful or failed 

Sin embargo, desde el punto de vista de la ingeniería, no hay ABSOLUTO disponibilidad. Solo podemos decir que la disponibilidad de un sistema es 5'9 '(99.999%), o incluso 8'9', pero no podemos decir que la disponibilidad de un sistema sea 100%, el sistema 100% disponible no sale en realidad , incluso si el sistema tiene millones de nodos duplicados, ¿verdad?

El teorema CAP demuestra que ningún sistema podría satisfacer los 3 requisitos simultáneamente. Mi pregunta es, si un sistema pretende satisfacer tanto "A" como "P", ¿cuál es el significado exacto de esta "A"? 6'9 'o incluso más?

+0

Esto es fuera de tema para el SO; probablemente pertenece a [cstheory.se] –

Respuesta

10

Te recomiendo que evites Wikipedia y, en su lugar, leas la definición provista por Gilbert and Lynch.

"cada petición recibida por un no-no nodo en el sistema debe resultado en una respuesta"

y la nota relacionada con el cual responde a su pregunta

"Brewer originalmente solo requería casi todas las solicitudes para recibir una respuesta . Como permitir la disponibilidad probabilística no cambia el resultado cuando fallas arbitrarias ocurrir, por simplicidad estamos requiriendo 100% de disponibilidad"

Así que si casi todas las solicitudes reciben una respuesta o nos permiten fallos arbitrarios que se produzca, un sistema puede considerarse que tiene una alta disponibilidad.

2

La disponibilidad en CAP significa que "Todos los nodos que no fallan están disponibles para consultas". No tiene NADA que ver con el enlace de Wikipedia, que es sobre "Alta disponibilidad".

Por ejemplo, el algoritmo PAXOS es CP (propiedad sin disponibilidad) porque los nodos minoritarios se "cierran" durante una partición. Pero si necesita consistencia, entonces PAXOS se considera "alta disponibilidad".

Por el contrario, un servidor de base de datos MySQL de un nodo es CA (tiene la propiedad CAP Availability). Se puede reiniciar (y estar inactivo durante horas mientras se comprueba la BIOS, comprobación de FileSystem, DB Repair, etc.). Cuando termina de reiniciar, comienza a responder a las consultas de nuevo. Esa es la disponibilidad perfecta (según el teorema CAP), pero la disponibilidad horrible para "alta disponibilidad".

+0

Esto se explica visualmente aquí http://guide.couchdb.org/editions/1/en/consistency.html#figure/1 – user454322

1

Estoy de acuerdo con Mark Burgess: The CAP Theorem Is Not a Theorem. Las propiedades de CAP en la conjetura de Brewer simplemente no están lo suficientemente definidas como para proporcionar una prueba matemática rigurosa. Entonces, la razón por la cual la disponibilidad es difícil de "entender" podría ser porque simplemente no está bien definida en este contexto.

0

Un punto de vista interesante por Coda Hale

Un sistema que elige disponibilidad manejará una partición de red de su permanencia en todas las solicitudes, incluso si dan lugar a inconsistencias (por ejemplo, los nodos en diferentes particiones de red tanto aceptar posiblemente en conflicto escribe).

Un sistema que elige La consistencia limitará la cantidad de operaciones legales durante una partición de red (p. Ej., Las escrituras no se aceptan ya que pueden generar conflictos/incoherencias).

No es posible elegir ambos.

supongo que un hipotético sistema también puede elegir sólo para dormir durante las particiones de red pero esto no parece ser un diseño muy práctico ...

Cuestiones relacionadas