En aquest tema, explorarem els diferents models de consistència utilitzats en sistemes distribuïts. La consistència és un concepte clau per garantir que totes les còpies de dades en un sistema distribuït reflecteixin els mateixos valors en qualsevol moment. Això és especialment important en entorns on múltiples nodes poden llegir i escriure dades simultàniament.

Objectius d'Aprenentatge

Al final d'aquest tema, hauràs de ser capaç de:

  1. Entendre els diferents models de consistència.
  2. Comparar els avantatges i desavantatges de cada model.
  3. Aplicar el model de consistència adequat segons el cas d'ús.

  1. Consistència Forta

Definició

La consistència forta garanteix que després de completar una operació d'escriptura, qualsevol lectura posterior retornarà el valor escrit més recent. Això implica que totes les rèpliques de dades en el sistema estan sincronitzades.

Exemple

Imagina un sistema de bases de dades distribuïdes on un usuari actualitza el saldo del seu compte bancari. Amb consistència forta, qualsevol consulta posterior al saldo del compte reflectirà immediatament l'actualització.

Avantatges

  • Previsibilitat: Els usuaris sempre veuen les dades més recents.
  • Simplicitat: Facilita el desenvolupament d'aplicacions ja que no cal gestionar incoherències.

Desavantatges

  • Latència: Pot incrementar la latència degut a la necessitat de sincronitzar totes les rèpliques abans de confirmar una operació.
  • Escalabilitat: Pot limitar l'escalabilitat del sistema.

  1. Consistència Eventual

Definició

La consistència eventual garanteix que, si no es fan més actualitzacions a una dada, totes les rèpliques acabaran per convergir al mateix valor. No obstant això, durant un període de temps, les lectures poden retornar valors antics.

Exemple

En un sistema de xarxes socials, quan un usuari publica una actualització d'estat, pot trigar uns segons abans que tots els amics de l'usuari vegin l'actualització.

Avantatges

  • Rendiment: Millora el rendiment i la disponibilitat, ja que no cal esperar la sincronització immediata de totes les rèpliques.
  • Escalabilitat: Facilita l'escalabilitat del sistema.

Desavantatges

  • Incoherència Temporal: Els usuaris poden veure dades incoherents durant un període de temps.
  • Complexitat: Requereix mecanismes addicionals per gestionar la convergència de dades.

  1. Consistència Causal

Definició

La consistència causal assegura que les operacions que tenen una relació causal es veuen en el mateix ordre per tots els processos. No obstant això, operacions sense relació causal poden veure's en ordres diferents.

Exemple

En una aplicació de xat, si un usuari envia un missatge i després un altre usuari respon, la consistència causal garanteix que tots els usuaris veuran el missatge original abans de la resposta.

Avantatges

  • Ordre Lògic: Manté un ordre lògic de les operacions relacionades.
  • Rendiment: Pot oferir millor rendiment que la consistència forta.

Desavantatges

  • Complexitat: Pot ser més complex d'implementar que altres models.
  • Latència: Pot introduir latència addicional per mantenir l'ordre causal.

  1. Consistència a Lectura-Escritura

Definició

Aquest model permet que les lectures i escriptures es facin en qualsevol rèplica, però les lectures poden retornar valors antics fins que les escriptures es propaguen a totes les rèpliques.

Exemple

En un sistema de catàleg de productes, una actualització de preu pot no ser immediatament visible en totes les rèpliques, però eventualment totes les rèpliques reflectiran el nou preu.

Avantatges

  • Flexibilitat: Permet un balanç entre consistència i rendiment.
  • Disponibilitat: Millora la disponibilitat del sistema.

Desavantatges

  • Incoherència Temporal: Pot haver-hi incoherències temporals entre les rèpliques.
  • Complexitat: Requereix mecanismes per gestionar la propagació de les escriptures.

Taula Comparativa dels Models de Consistència

Model de Consistència Avantatges Desavantatges Casos d'Ús
Consistència Forta Previsibilitat, Simplicitat Latència, Escalabilitat Sistemes financers, Bases de dades crítiques
Consistència Eventual Rendiment, Escalabilitat Incoherència Temporal, Complexitat Xarxes socials, Sistemes de cache
Consistència Causal Ordre Lògic, Rendiment Complexitat, Latència Aplicacions de xat, Col·laboració en temps real
Lectura-Escritura Flexibilitat, Disponibilitat Incoherència Temporal, Complexitat Catàlegs de productes, Sistemes de recomanació

Exercici Pràctic

Enunciat

Considera un sistema de comerç electrònic distribuït on múltiples usuaris poden actualitzar el seu carret de compra simultàniament. Quin model de consistència creus que seria més adequat per aquest sistema? Justifica la teva resposta.

Solució

Un model de consistència eventual podria ser adequat per aquest sistema, ja que permet un alt rendiment i escalabilitat. Les actualitzacions del carret de compra no necessiten ser immediatament visibles per tots els usuaris, però eventualment es sincronitzaran. Això permet que el sistema maneji un gran nombre de transaccions simultànies sense comprometre la disponibilitat.

Resum

En aquesta secció, hem explorat els diferents models de consistència utilitzats en sistemes distribuïts: consistència forta, consistència eventual, consistència causal i consistència a lectura-escritura. Hem analitzat els avantatges i desavantatges de cada model i hem discutit casos d'ús típics per a cadascun. Amb aquesta comprensió, podràs seleccionar el model de consistència més adequat per a les teves necessitats específiques en sistemes distribuïts.

© Copyright 2024. Tots els drets reservats