Replikace je proces udržování identických kopií dat nebo služeb na více uzlech současně. V distribuovaném systému se jedná o formu fyzické redundance.

Motivace

Reliability

Dostupnost

Výkon

Transparentnost

Hlavní problém: Nekonzistence

Replikace je sice nástrojem spolehlivosti, ale jejím přímým vedlejším produktem je nekonzistence stavu. Proč?


Strategie replikace

V praxi se setkáváme se dvěma hlavními přístupy k šíření změn mezi replikami:

Pasivní replikace (Leader-based / Primary-Backup)

Aktivní replikace (state machine replication (SMR))

Synchronní replikace

Princip: Master čeká, až všechny (nebo majority) repliky potvrdí.

Client → Master.write(x)
Master → replicate to Slaves
Master ← wait for ACK from all
Master → Client: OK

Vlastnosti:

Použití: Bankovní systémy, kritická data


Asynchronní replikace

Princip: Master nepotvrdí replikaci okamžitě.

Client → Master.write(x)
Master → Client: OK (okamžitě)
Master → replicate to Slaves (na pozadí)

Vlastnosti:

Použití: Social media feeds, cache, read-heavy aplikace


Techniky replikace

1. Log Shipping (Statement-based)

Master: INSERT INTO users VALUES (1, 'Alice')
       → pošli SQL statement na slaves

❌ Problém: Non-deterministické funkce (NOW(), RAND()) Image

2. Gossip-based (Epidemic)

Škálovatelné, fault-tolerant

3. CRDT (conflict-free replicated data types)


Vztah ke spolehlivosti a stavu

Čím více stavovosti, tím složitější spolehlivost: Replikovaný stav musí přežít pády uzlů a po obnovení se musí znovu sjednotit s ostatními.

TMR (Triple Modular Redundancy)

Extrémní forma replikace, kde tři procesy počítají totéž a o výsledku se hlasuje (2 ze 3 musí souhlasit), což eliminuje chybu jednoho uzlu.


Shrnutí

Podle CAP theorem nelze v replikovaném systému při rozdělení sítě zajistit současně konzistenci (C) a dostupnost (A).