Teorema CAP - Disponibilidad y más allá: Descripción y mejora de la resiliencia de los sistemas distribuidos en AWS

Teorema CAP

Otra manera de entender la disponibilidad guarda relación con el teorema CAP. Este teorema establece que un sistema distribuido, formado por varios nodos que almacenan datos, no puede ofrecer simultáneamente más de dos de las siguientes tres garantías:

  • Coherencia (consistency): cada solicitud de lectura recibe la escritura más reciente o un error cuando no se puede garantizar la coherencia.

  • Disponibilidad (availability): todas las solicitudes reciben una respuesta sin errores, aunque los nodos no estén disponibles ni activos.

  • Tolerancia a las particiones (partition tolerance): el sistema sigue funcionando a pesar de la pérdida de un número arbitrario de mensajes entre los nodos.

(Para obtener más información, lea a Seth Gilbert y Nancy Lynch en “Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services”; ACM SIGACT News; volumen 33, número 2 (2002), págs. 51—59).

La mayoría de los sistemas distribuidos tienen que tolerar los errores de la red y, por lo tanto, se debe permitir la partición de la red. Esto significa que estas cargas de trabajo deben elegir entre la coherencia y la disponibilidad cuando se produce una partición de red. Si la carga de trabajo elige la disponibilidad, siempre devuelve una respuesta, pero con datos potencialmente incoherentes. Si elige la coherencia, durante una partición de red devolverá un error, ya que la carga de trabajo no puede garantizar la coherencia de los datos.

Para las cargas de trabajo cuyo objetivo es proporcionar niveles de disponibilidad más elevados, pueden elegir la disponibilidad y la tolerancia a las particiones para evitar que se produzcan errores (no estar disponible) durante una partición de red. Esto hace que se requiera un modelo de coherencia más relajado, como coherencia final o coherencia monótona.