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:
- Entendre els diferents models de consistència.
- Comparar els avantatges i desavantatges de cada model.
- Aplicar el model de consistència adequat segons el cas d'ús.
- 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.
- 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.
- 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.
- 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.
Curs d'Arquitectures Distribuïdes
Mòdul 1: Introducció als Sistemes Distribuïts
- Conceptes Bàsics de Sistemes Distribuïts
- Models de Sistemes Distribuïts
- Avantatges i Desafiaments dels Sistemes Distribuïts