Introducción y definición de los modelos de consistencia
En los sistemas distribuidos, la consistencia es un principio fundamental que determina cómo se garantiza la coherencia de los datos cuando existen múltiples copias (réplicas) en distintos nodos o ubicaciones. La consistencia busca definir cómo y cuándo los cambios realizados a una réplica son visibles para otras.
Un modelo de consistencia es una especificación formal que describe las reglas que siguen los sistemas para mantener la uniformidad de los datos en presencia de concurrencia, latencia de red y fallos. Estos modelos ayudan a diseñar sistemas que encuentren el equilibrio entre rendimiento, disponibilidad y coherencia, elementos claves dentro del conocido teorema CAP.
Modelos de consistencia centrada en los datos
Los modelos centrados en los datos se enfocan en cómo los sistemas deben mantener la coherencia entre las diferentes réplicas. Algunos de los modelos más representativos incluyen:
Consistencia estricta: Garantiza que cualquier lectura de datos devuelve el valor más reciente, lo que implica sincronización absoluta entre réplicas. Es difícil de implementar debido a la latencia de red y fallos.
Consistencia secuencial: Las operaciones de todos los procesos se ven en el mismo orden, aunque no necesariamente en el orden real en el que fueron ejecutadas.
Consistencia causal: Si una operación A influye en otra B, todos los nodos deben ver A antes que B. Las operaciones independientes pueden visualizarse en diferente orden.
Consistencia eventual: Es un modelo más relajado que asegura que, en ausencia de nuevas actualizaciones, todas las réplicas convergerán eventualmente hacia el mismo valor.
Modelos de consistencia centrada en el cliente
Estos modelos definen garantías desde el punto de vista del cliente, es decir, lo que un usuario puede esperar cuando interactúa con el sistema. Algunos de estos modelos son:
-
Lectura propia (Read Your Writes): Garantiza que un cliente siempre leerá el resultado de sus propias escrituras.
-
Lectura monótona: Asegura que una vez que el cliente ve un valor de un dato, no volverá a ver un valor anterior.
-
Escritura monótona: Las operaciones de escritura realizadas por un cliente se ejecutan en el mismo orden en el que fueron enviadas.
-
Lecturas consistentes: Si un cliente realiza múltiples lecturas, estas deben reflejar un estado consistente del sistema.
Estos modelos son particularmente útiles en aplicaciones móviles o web que se ejecutan en entornos distribuidos y con replicación.
Administración de réplicas
La administración de réplicas implica decidir cuántas copias de los datos se mantendrán, dónde se ubicarán y cómo se sincronizan entre ellas. Sus objetivos principales son:
-
Mejorar la disponibilidad y tolerancia a fallos.
-
Reducir la latencia al colocar los datos más cerca del usuario.
-
Equilibrar la carga entre servidores.
Se pueden clasificar en:
-
Replicación activa: Todas las réplicas procesan operaciones en paralelo.
-
Replicación pasiva: Una réplica primaria procesa todas las operaciones y luego propaga los cambios a las secundarias.
Una administración eficaz requiere mecanismos de sincronización, control de versiones y estrategias para resolución de conflictos.
Protocolos de consistencia
Los protocolos son los mecanismos implementados para garantizar el cumplimiento de los modelos de consistencia. Algunos ejemplos son:
-
Protocolos de quorum: Requieren que un número mínimo de réplicas confirmen una operación antes de que se considere válida. Por ejemplo, para una escritura, se requiere la aprobación de un subconjunto (quórum) de réplicas.
-
Escritura primaria (Primary-based protocols): Existe una réplica principal que gestiona todas las escrituras; las réplicas secundarias reciben las actualizaciones posteriormente.
-
Replicación epidémica (Gossip protocols): Las réplicas se comunican entre sí de forma aleatoria y periódica, propagando los cambios como un virus, lo que facilita la consistencia eventual.
-
Vector clocks y relojes lógicos: Permiten rastrear el orden de los eventos y detectar conflictos entre réplicas.
Conclusión
REFERENCIAS
Tanenbaum, A. S., & van Steen, M. (2007). Distributed Systems: Principles and Paradigms. Prentice Hall.
Coulouris, G., Dollimore, J., Kindberg, T., & Blair, G. (2011). Distributed Systems: Concepts and Design. Addison-Wesley.
Vogels, W. (2009). Eventually Consistent. Communications of the ACM.
Brewer, E. A. (2000). Towards robust distributed systems (abstract). PODC Keynote.
Amazon DynamoDB Documentation – https://docs.aws.amazon.com/dynamodb/

No hay comentarios:
Publicar un comentario