**Replikácia** vo výpočtovej technike zahŕňa zdieľanie informácií s cieľom zabezpečiť konzistenciu medzi redundantnými zdrojmi, ako sú softvérové alebo hardvérové komponenty, s cieľom zlepšiť spoľahlivosť, odolnosť voči chybám alebo dostupnosť.

Terminológia
------------

Replikácia v informatike sa môže týkať:

* **replikácie údajov**, pri ktorej sú tie isté údaje uložené na viacerých pamäťových zariadeniach

* **replikácie výpočtov**, keď sa tá istá výpočtová úloha vykonáva viackrát. Výpočtové úlohy môžu byť:
	+ ***replikované v priestore***, keď sa úlohy vykonávajú na samostatných zariadeniach
	+ ***replikované v čase***, keď sa úlohy vykonávajú opakovane na jednom zariadení

Replikácia v priestore alebo v čase je často spojená s algoritmami plánovania.

Prístup k replikovanej entite je zvyčajne podobný s prístupom k jednej nereplikovanej entite. Samotná replikácia by mala byť pre externého používateľa transparentná (nemal by o nej vedieť). V prípade scenára zlyhania by mal byť failover replikácií (prepnutie z nefunkčného zariadenia na funkčné) čo najviac skrytý s ohľadom na kvalitu služby.

Informatici ďalej popisujú replikáciu buď ako:

* **Aktívnu replikáciu**, ktorá sa vykonáva spracovaním rovnakej požiadavky na každej replike

* **Pasívnu replikáciu**, ktorá zahŕňa spracovanie každej požiadavky na jednej replike a prenos výsledku na ostatné repliky.

Ak je prostredníctvom voľby lídra určená jedna hlavná replika, ktorá spracúva všetky požiadavky, systém používa schému primárnej zálohy alebo primárnej repliky, ktorá prevláda v klastroch s vysokou dostupnosťou (HA). Na porovnanie, ak môže ktorákoľvek replika spracovať požiadavku a distribuovať nový stav, systém používa multi-primárnu alebo multi-master schému. V druhom prípade sa musí použiť nejaká forma distribuovaného riadenia súbežnosti, napríklad distribuovaný správca uzamknutia.

Vyvažovanie záťaže (load-balancing) sa líši od replikácie úloh, pretože rozdeľuje záťaž rôznych výpočtov medzi stroje a umožňuje, aby sa v prípade zlyhania jeden výpočet zrušil. Vyvažovanie záťaže však niekedy interne využíva replikáciu údajov (najmä multimaster replikáciu) na distribúciu údajov medzi stroje.

Zálohovanie sa od replikácie líši tým, že uložená kópia údajov zostáva dlhý čas nezmenená, na druhej strane repliky prechádzajú častými aktualizáciami a rýchlo strácajú akýkoľvek historický stav. Replikácia je jednou z najstarších a najdôležitejších tém v celkovej oblasti distribuovaných systémov.

Replikácia údajov aj replikácia výpočtov si vyžadujú procesy na spracovanie prichádzajúcich udalostí. Procesy pre replikáciu údajov sú pasívne a fungujú len na udržiavanie uložených údajov, odpovedajú na požiadavky na čítanie a uplatňujú aktualizácie. Replikácia výpočtov sa zvyčajne vykonáva na zabezpečenie odolnosti voči chybám a na prevzatie operácie v prípade zlyhania jednej zložky. V oboch prípadoch je základnou potrebou zabezpečiť, aby repliky videli rovnaké udalosti v rovnakom poradí, aby zostali v konzistentných stavoch a aby každá replika mohla odpovedať na dotazy.

### Modely replikácie v distribuovaných systémoch

Pre replikáciu údajov existujú tri široko používané modely, pričom každý z nich má svoje vlastnosti a výkonnosť:

* **Transakčná replikácia:** používa sa na replikáciu transakčných údajov, napríklad databázy. Používa sa model serializovateľnosti jednej kópie, ktorý definuje platné výsledky transakcie na replikovaných údajoch v súlade s celkovými vlastnosťami ACID (atomicita, konzistencia, izolácia, trvanlivosť), ktoré sa transakčné systémy snažia zaručiť.

* **Replikácia stavového stroja:** predpokladá, že replikovaný proces je deterministický konečno-stavový automat a že je možné atomické vysielanie každej udalosti. Je založená na distribuovanom konsenze a má veľa spoločného s modelom transakčnej replikácie. Niekedy sa mylne používa ako synonymum aktívnej replikácie. Replikácia stavového stroja sa zvyčajne realizuje replikovacím protokolom pozostávajúcim z viacerých po sebe nasledujúcich kôl algoritmu Paxos. Tento spôsob bol spopularizovaný systémom Chubby spoločnosti Google a je základom open-source dátového úložiska Keyspace.

* **Virtuálna synchronizácia:** zahŕňa skupinu procesov, ktoré spolupracujú na replikácii údajov v pamäti alebo na koordinácii činností. Model definuje distribuovanú entitu nazývanú skupina procesov. Proces sa môže pripojiť k skupine a je mu poskytnutý kontrolný bod obsahujúci aktuálny stav údajov replikovaných členmi skupiny. Procesy potom môžu posielať multicasty do skupiny a budú vidieť prichádzajúce multicasty v identickom poradí. Zmeny členstva sa spracúvajú ako špeciálny multicast, ktorý procesom v skupine doručí nový "členský pohľad".

Replikácia databáz
------------------

Replikáciu databáz možno použiť v mnohých systémoch na správu databáz (DBMS), zvyčajne so vzťahom primárna/replika medzi originálom a kópiami. Primárna databáza zaznamenáva aktualizácie, ktoré sa potom šíria do replík. Každá replika odpovie správou o tom, že úspešne prijala aktualizáciu, čím umožní odosielanie ďalších aktualizácií.

Pri replikácii s viacerými nadradenými servermi sa aktualizácie môžu odosielať do ktoréhokoľvek uzla databázy a potom sa šíria do ostatných serverov. To je často žiaduce, ale prináša to podstatne zvýšené náklady a zložitosť, čo môže byť v niektorých situáciách nepraktické. Najčastejším problémom, ktorý sa vyskytuje pri multimaster replikácii, je prevencia alebo riešenie konfliktov transakcií. Väčšina synchrónnych (alebo ochotných) riešení replikácie vykonáva prevenciu konfliktov, zatiaľ čo asynchrónne (alebo lenivé) riešenia musia vykonávať riešenie konfliktov. Ak sa napríklad v dvoch uzloch súčasne zmení ten istý záznam, ochotný replikačný systém by zistil konflikt pred potvrdením odovzdania a prerušil by jednu z transakcií. Lenivý replikačný systém by umožnil obom transakciám vykonať commit a počas opätovnej synchronizácie by spustil riešenie konfliktu. Riešenie takéhoto konfliktu môže byť založené na časovej značke transakcie, na hierarchii pôvodných uzlov alebo na oveľa zložitejšej logike, ktorá rozhoduje konzistentne vo všetkých uzloch.

Replikácia databázy sa stáva zložitejšou, keď sa horizontálne a vertikálne škáluje. Horizontálne škálovanie má viac dátových replik, zatiaľ čo vertikálne škálovanie má dátové repliky umiestnené vo väčších fyzických vzdialenostiach. Problémy, ktoré vznikajú pri horizontálnom škálovaní, možno zmierniť viacvrstvovým protokolom s viacnásobným prístupom. Prvé problémy vertikálneho škálovania sa do veľkej miery vyriešili zlepšením spoľahlivosti a výkonu internetu.

Keď sa údaje replikujú medzi databázovými servermi tak, že informácie zostávajú konzistentné v celom databázovom systéme a používatelia nemôžu povedať alebo dokonca vedieť, ktorý server v DBMS používajú, hovorí sa, že systém vykazuje transparentnosť replikácie.

Transparentnosť replikácie sa však nedá dosiahnuť vždy. Keď sa údaje v databáze replikujú, budú obmedzené teorémami CAP alebo PACELC. V hnutí NoSQL sa konzistencia údajov zvyčajne obetuje výmenou za iné, viac požadované vlastnosti, ako je dostupnosť (A), tolerancia rozdelenia (P) atď. Boli vyvinuté aj rôzne modely konzistencie údajov, ktoré slúžia ako dohoda o úrovni služieb (SLA) medzi poskytovateľmi služieb a používateľmi.

Replika diskového úložiska
--------------------------

Aktívna replikácia úložiska (v reálnom čase) sa zvyčajne realizuje distribúciou aktualizácií blokového zariadenia na niekoľko fyzických pevných diskov. Týmto spôsobom je možné replikovať akýkoľvek súborový systém podporovaný operačným systémom bez úprav, pretože kód súborového systému pracuje na úrovni nad vrstvou ovládača blokového zariadenia. Implementuje sa buď hardvérovo (v radiči diskového poľa), alebo softvérovo (v ovládači zariadenia).

Najzákladnejšou metódou je zrkadlenie disku, ktoré je typické pre lokálne pripojené disky. V odvetví úložísk sa definície zužujú, takže zrkadlenie je lokálna operácia (na krátku vzdialenosť). Replikácia je rozšíriteľná cez počítačovú sieť, takže disky môžu byť umiestnené na fyzicky vzdialených miestach a zvyčajne sa uplatňuje model replikácie primárnej/repliky databázy. Účelom replikácie je zabrániť poškodeniu v dôsledku porúch alebo katastrof, ktoré môžu nastať na jednom mieste - alebo v prípade, že takéto udalosti nastanú, zlepšiť schopnosť obnovy údajov. Pri replikácii je kľúčovým faktorom latencia, pretože určuje, ako ďaleko od seba môžu byť lokality alebo aký typ replikácie možno použiť.

Hlavnou charakteristikou takejto replikácie medzi lokalitami je spôsob spracovania operácií zápisu, a to buď prostredníctvom asynchrónnej, alebo synchrónnej replikácie; synchrónna replikácia musí pri každej operácii zápisu čakať na odpoveď cieľového servera, zatiaľ čo asynchrónna replikácia nemusí.

Synchrónna replikácia zaručuje "nulovú stratu údajov" prostredníctvom atomických operácií zápisu, pri ktorých sa operácia zápisu považuje za dokončenú až po potvrdení lokálnym aj vzdialeným úložiskom. Väčšina aplikácií čaká na dokončenie transakcie zápisu, kým pokračuje v ďalšej práci, preto sa celkový výkon výrazne znižuje. Výkon prirodzene klesá úmerne vzdialenosti, keďže minimálna latencia je daná rýchlosťou svetla. Pri vzdialenosti 10 km trvá najrýchlejšia možná okružná cesta 67 μs, zatiaľ čo celý lokálny zápis do vyrovnávacej pamäte sa dokončí približne za 10 - 20 μs.

Pri asynchrónnej replikácii sa operácia zápisu považuje za dokončenú hneď, ako ju miestne úložisko potvrdí. Vzdialené úložisko sa aktualizuje s malým oneskorením. Výkon sa výrazne zvyšuje, ale v prípade zlyhania miestneho úložiska nie je zaručené, že vzdialené úložisko bude mať aktuálnu kópiu údajov (najnovšie údaje sa môžu stratiť).

Polosynchrónna replikácia zvyčajne považuje operáciu zápisu za dokončenú, keď ju potvrdí miestne úložisko a prijme alebo zaznamená vzdialený server. Skutočný vzdialený zápis sa vykonáva asynchrónne, čo vedie k vyššiemu výkonu, ale vzdialené úložisko bude zaostávať za miestnym úložiskom, takže v prípade zlyhania miestneho úložiska nie je zaručená trvanlivosť (t. j. bezproblémová transparentnosť).

Replikácia typu *bod v čase* vytvára periodické snímky, ktoré sa replikujú namiesto primárneho úložiska. Cieľom je replikovať iba zmenené údaje namiesto celého zväzku. Keďže sa touto metódou replikuje menej informácií, replikácia môže prebiehať cez menej nákladné linky so šírkou pásma, ako sú iSCSI alebo T1 namiesto optických liniek.

### Implementácia

Mnohé distribuované súborové systémy používajú replikáciu, aby sa zabezpečila odolnosť voči chybám a zabránilo sa jedinému bodu zlyhania.

Mnohé komerčné synchrónne replikačné systémy sa nezastavia, keď vzdialená replika zlyhá alebo stratí spojenie, čo zaručuje nulovú stratu údajov, ale pokračujú v lokálnej prevádzke, čím sa stráca požadovaný cieľ nulového bodu obnovy.

Na riešenie obmedzení spôsobených oneskorením možno použiť techniky optimalizácie rozsiahlych sietí (WAN).

Replikácia založená na súboroch
-------------------------------

Replikácia založená na súboroch vykonáva replikáciu údajov na logickej úrovni (t. j. jednotlivých dátových súborov), a nie na úrovni blokov úložiska. Existuje mnoho rôznych spôsobov, ktoré sa takmer výlučne spoliehajú na softvér.

### Snímanie pomocou ovládača jadra

Ovládač jadra (konkrétne ovládač filtra) možno použiť na zachytenie volaní funkcií súborového systému a zachytiť akúkoľvek aktivitu, ktorá sa vyskytne. Využíva sa pritom rovnaký typ technológie, akú používajú aktívne antivírusové programy v reálnom čase. Na tejto úrovni sa zachytávajú logické operácie so súbormi, ako je otvorenie, zápis, odstránenie atď. Ovládač jadra prenáša tieto príkazy do iného procesu, spravidla cez sieť do iného počítača, ktorý bude napodobňovať operácie zdrojového počítača. Podobne ako replikácia úložiska na úrovni blokov, aj replikácia na úrovni súborov umožňuje synchrónny aj asynchrónny režim. V synchrónnom režime sú operácie zápisu na zdrojovom stroji zadržané a nesmú sa uskutočniť, kým cieľový stroj nepotvrdí úspešnú replikáciu. Synchrónny režim je pri produktoch na replikáciu súborov menej bežný, hoci existuje niekoľko riešení.

Riešenia replikácie na úrovni súborov umožňujú informované rozhodnutia o replikácii na základe umiestnenia a typu súboru. Napríklad dočasné súbory alebo časti súborového systému, ktoré nemajú žiadnu obchodnú hodnotu, by mohli byť vylúčené. Prenášané údaje môžu byť tiež podrobnejšie; ak aplikácia zapíše 100 bajtov, prenesie sa len 100 bajtov namiesto celého diskového bloku (zvyčajne 4 096 bajtov). Tým sa podstatne znižuje množstvo údajov odosielaných zo zdrojového počítača a zaťaženie cieľového počítača úložiskom.

Medzi nevýhody tohto výlučne softvérového riešenia patrí požiadavka na implementáciu a údržbu na úrovni operačného systému a zvýšené zaťaženie výpočtového výkonu stroja.

### Replikácia žurnálu súborového systému

Podobne ako databázové protokoly transakcií, aj mnohé súborové systémy majú možnosť viesť denník svojej činnosti. Denník sa môže posielať na iný počítač, a to buď periodicky, alebo v reálnom čase prostredníctvom streamingu. Na strane repliky sa žurnál môže použiť na prehrávanie modifikácií súborového systému.

Jednou z významných implementácií je System Center Data Protection Manager (DPM) spoločnosti Microsoft, vydaný v roku 2005, ktorý vykonáva periodické aktualizácie, ale neponúka replikáciu v reálnom čase.

### Dávková replikácia

Ide o proces porovnávania zdrojového a cieľového súborového systému a zabezpečenia, aby sa cieľový systém zhodoval so zdrojovým. Hlavnou výhodou je, že takéto riešenia sú vo všeobecnosti bezplatné alebo lacné. Nevýhodou je, že proces ich synchronizácie je pomerne náročný na systém, a preto tento proces spravidla prebieha zriedkavo.

Jednou z významných implementácií je rsync.

Replikácia v súbore
-------------------

V stránkovacom operačnom systéme sa niekedy stránky v stránkovacom súbore replikujú v rámci stopy, aby sa znížilo oneskorenie rotácie.

V systéme IBM VSAM sa indexové údaje niekedy replikujú v rámci stopy, aby sa znížila rotačná latencia.

Replikácia distribuovanej zdieľanej pamäte
------------------------------------------

Ďalší príklad použitia replikácie sa objavuje v distribuovaných systémoch so zdieľanou pamäťou, kde mnoho uzlov systému zdieľa rovnakú stránku pamäte. To zvyčajne znamená, že každý uzol má samostatnú kópiu (repliku) tejto stránky.

Primárne zálohovanie a viacnásobná primárna replikácia
------------------------------------------------------

Mnohé klasické prístupy k replikácii sú založené na modeli primárnej zálohy, kde má jedno zariadenie alebo proces jednostrannú kontrolu nad jedným alebo viacerými inými procesmi alebo zariadeniami. Primárny proces môže napríklad vykonávať nejaké výpočty a prenášať protokol aktualizácií do záložného (standby) procesu, ktorý ho potom môže prevziať, ak primárny proces zlyhá. Tento prístup je bežný pri replikácii databáz, a to napriek riziku, že ak sa pri zlyhaní stratí časť logu, záloha nemusí byť v stave identickom s primárnou a transakcie by sa potom mohli stratiť.

Slabinou schém primárnej a záložnej kópie je, že operácie v skutočnosti vykonáva len jedna z nich. Získava sa síce odolnosť voči poruchám, ale identický záložný systém zdvojnásobuje náklady. Z tohto dôvodu začala komunita výskumníkov distribuovaných systémov približne od roku 1985 skúmať alternatívne metódy replikácie údajov. Výsledkom tejto práce bol vznik systémov, v ktorých by skupina replik mohla spolupracovať, pričom každý proces by fungoval ako záloha a zároveň by zvládal časť pracovného zaťaženia.

Počítačový vedec Jim Gray analyzoval schémy viacnásobnej replikácie v rámci transakčného modelu a publikoval široko citovaný článok skeptický k tomuto prístupu "Nebezpečenstvo replikácie a riešenie". tvrdil, že ak sa údaje nerozdelia nejakým prirodzeným spôsobom tak, že databázu možno považovať za n oddelených čiastkových databáz, konflikty v oblasti riadenia súbežnosti budú mať za následok vážne zníženie výkonu a skupina replikácií sa pravdepodobne spomalí s časom daným funkciou n. Gray naznačil, že najbežnejšie prístupy pravdepodobne povedú k zhoršeniu, ktoré sa bude škálovať ako O(n³). Jeho riešenie, ktorým je rozdelenie údajov, je životaschopné len v situáciách, keď majú údaje skutočne prirodzený kľúč rozdelenia.

V rokoch 1985 - 1987 bol navrhnutý model virtuálnej synchronizácie, ktorý sa stal široko prijatým štandardom (bol použitý v systémoch Isis Toolkit, Horus, Transis, Ensemble, Totem, Spread, C-Ensemble, Phoenix a Quicksilver a je základom pre štandard CORBA pre výpočty odolné voči poruchám). Virtuálna synchronizácia umožňuje viacprvkový prístup, v ktorom skupina procesov spolupracuje na paralelizácii niektorých aspektov spracovania požiadaviek. Táto schéma sa dá použiť len pre niektoré formy údajov v pamäti, ale môže poskytnúť lineárne zrýchlenie podľa veľkosti skupiny.

Podobné schémy podporuje viacero moderných produktov. Napríklad Spread Toolkit podporuje rovnaký model virtuálnej synchronizácie a možno ho použiť na implementáciu schémy viacnásobnej primárnej replikácie; týmto spôsobom by bolo možné použiť aj C-Ensemble alebo Quicksilver. WANdisco umožňuje aktívnu replikáciu, pri ktorej je každý uzol v sieti presnou kópiou alebo replikou, a teda každý uzol v sieti je aktívny v jednom čase; táto schéma je optimalizovaná na použitie v rozsiahlej sieti (WAN).

  

*Tento článok je čiastočný alebo úplný preklad článku Replication (computing) na anglickej Wikipédii.*