Replikacja (przetwarzanie)

Replikacja w informatyce obejmuje współdzielenie informacji w celu zapewnienia spójności między nadmiarowymi zasobami, takimi jak komponenty oprogramowania lub sprzętu , w celu poprawy niezawodności, odporności na błędy lub dostępności.

Terminologia

Replikacja w informatyce może odnosić się do:

  • Replikacja danych , gdzie te same dane są przechowywane na wielu urządzeniach pamięci masowej
  • Replikacja obliczeń , w której to samo zadanie obliczeniowe jest wykonywane wiele razy. Zadania obliczeniowe mogą być:
    • Replikowane w przestrzeni , gdzie zadania są wykonywane na osobnych urządzeniach
    • Replikowane w czasie , gdzie zadania są wykonywane wielokrotnie na jednym urządzeniu

Replikacja w przestrzeni lub w czasie jest często powiązana z algorytmami planowania.

Dostęp do zreplikowanej jednostki jest zwykle jednolity z dostępem do pojedynczej niereplikowanej jednostki. Sama replikacja powinna być przezroczysta dla zewnętrznego użytkownika. W scenariuszu awarii przełączenie awaryjne replik powinno być jak najbardziej ukryte w odniesieniu do jakości usług .

Informatycy dalej opisują replikację jako:

  • Replikacja aktywna , która jest wykonywana poprzez przetwarzanie tego samego żądania w każdej replice
  • Replikacja pasywna , która polega na przetwarzaniu każdego żądania na jednej replice i przekazywaniu wyniku do innych replik

Gdy jedna replika lidera jest wyznaczana w drodze wyboru lidera do przetwarzania wszystkich żądań, system używa schematu podstawowej kopii zapasowej lub podstawowej repliki , który jest dominujący w klastrach o wysokiej dostępności . Dla porównania, jeśli dowolna replika może przetworzyć żądanie i rozesłać nowy stan, system używa schematu z wieloma podstawowymi lub wieloma wzorcami . W tym drugim przypadku należy użyć jakiejś formy rozproszonej kontroli współbieżności , takiej jak rozproszony menedżer blokad .

Równoważenie obciążenia różni się od replikacji zadań, ponieważ rozkłada obciążenie różnymi obliczeniami na maszyny i umożliwia pominięcie pojedynczego obliczenia w przypadku awarii. Jednak równoważenie obciążenia czasami wykorzystuje wewnętrzną replikację danych (zwłaszcza replikację z wieloma wzorcami ) w celu dystrybucji danych między maszynami.

Backup różni się od replikacji tym, że zapisana kopia danych pozostaje niezmieniona przez długi czas. Repliki z kolei podlegają częstym aktualizacjom i szybko tracą wszelki stan historyczny. Replikacja jest jednym z najstarszych i najważniejszych tematów w ogólnej dziedzinie systemów rozproszonych .

Zarówno replikacja danych, jak i replikacja obliczeń wymagają procesów do obsługi zdarzeń przychodzących. Procesy replikacji danych są pasywne i działają tylko w celu utrzymania przechowywanych danych, odpowiadania na żądania odczytu i aktualizacji. Replikacja obliczeń jest zwykle wykonywana w celu zapewnienia tolerancji na błędy i przejęcia operacji w przypadku awarii jednego komponentu. W obu przypadkach podstawową potrzebą jest zapewnienie, aby repliki widziały te same zdarzenia w równoważnych rzędach, tak aby pozostawały w spójnych stanach i każda replika mogła odpowiadać na zapytania.

Modele replikacji w systemach rozproszonych

Istnieją trzy szeroko cytowane modele replikacji danych, z których każdy ma swoje własne właściwości i wydajność:

  • Replikacja transakcyjna : używana do replikacji danych transakcyjnych , takich jak baza danych. Stosowany jest model serializowalności jednej kopii , który definiuje prawidłowe wyniki transakcji na zreplikowanych danych zgodnie z ogólnymi właściwościami ACID (niepodzielność, spójność, izolacja, trwałość), które systemy transakcyjne starają się zagwarantować.
  • Replikacja maszyny stanowej : zakłada, że ​​replikowany proces jest deterministycznym automatem skończonym i że atomowa transmisja każdego zdarzenia jest możliwa. Opiera się na rozproszonym konsensusie i ma wiele wspólnego z modelem replikacji transakcyjnej. Czasami jest to błędnie używane jako synonim aktywnej replikacji. Replikacja maszyny stanowej jest zwykle realizowana przez zreplikowany dziennik składający się z wielu kolejnych rund algorytmu Paxos . Zostało to spopularyzowane przez system Chubby firmy Google i stanowi rdzeń otwartego oprogramowania Magazyn danych przestrzeni kluczy .
  • Synchronizacja wirtualna : obejmuje grupę procesów współpracujących w celu replikacji danych w pamięci lub koordynowania działań. Model definiuje rozproszoną jednostkę zwaną grupą procesów . Proces może dołączyć do grupy i otrzymuje punkt kontrolny zawierający aktualny stan danych replikowanych przez członków grupy. Procesy mogą następnie wysyłać multiemisje do grupy i będą widzieć przychodzące multiemisje w identycznej kolejności. Zmiany członkostwa są obsługiwane jako specjalna multiemisja, która zapewnia nowy „widok członkostwa” procesom w grupie.

Replikacja bazy danych

bazy danych można używać w wielu systemach zarządzania bazami danych (DBMS), zwykle z relacją podstawowa/replika między oryginałem a kopiami. Podstawowy rejestruje aktualizacje, które następnie są przesyłane do replik. Każda replika wysyła komunikat informujący, że pomyślnie odebrała aktualizację, umożliwiając w ten sposób wysyłanie kolejnych aktualizacji.

W przypadku replikacji z wieloma wzorcami aktualizacje można przesyłać do dowolnego węzła bazy danych, a następnie przekazywać je do innych serwerów. Jest to często pożądane, ale wiąże się ze znacznie zwiększonymi kosztami i złożonością, co w niektórych sytuacjach może sprawić, że będzie to niepraktyczne. Najczęstszym wyzwaniem związanym z replikacją z wieloma wzorcami jest zapobieganie konfliktom transakcyjnym lub ich rozwiązywanie . Większość rozwiązań replikacji synchronicznej (lub przyspieszonej) zapobiega konfliktom, podczas gdy rozwiązania asynchroniczne (lub leniwe) muszą rozwiązywać konflikty. Na przykład, jeśli ten sam rekord zostanie zmieniony w dwóch węzłach jednocześnie, system szybkiej replikacji wykryje konflikt przed potwierdzeniem zatwierdzenia i przerwie jedną z transakcji. Leniwy replikacji umożliwiłby obu transakcjom zatwierdzenie i uruchomienie rozwiązania konfliktu podczas ponownej synchronizacji. Rozwiązanie takiego konfliktu może opierać się na znaczniku czasu transakcji, na hierarchii węzłów początkowych lub na znacznie bardziej złożonej logice, która konsekwentnie decyduje we wszystkich węzłach.

Replikacja bazy danych staje się bardziej złożona, gdy skaluje się w poziomie iw pionie. Skalowanie w poziomie ma więcej replik danych, podczas gdy w przypadku skalowania w pionie repliki danych znajdują się w większych odległościach fizycznych. Problemy wynikające ze skalowania w poziomie można złagodzić dzięki wielowarstwowemu protokołowi dostępu z wieloma widokami . Wczesne problemy skalowania pionowego zostały w dużej mierze rozwiązane poprzez poprawę niezawodności i wydajności Internetu.

Mówi się, że kiedy dane są replikowane między serwerami baz danych, tak że informacje pozostają spójne w całym systemie baz danych, a użytkownicy nie mogą powiedzieć ani nawet wiedzieć, którego serwera w systemie DBMS używają, mówi się, że system wykazuje przejrzystość replikacji.

Jednak nie zawsze można osiągnąć przejrzystość replikacji. Kiedy dane są replikowane w bazie danych, będą ograniczone przez twierdzenie CAP lub twierdzenie PACELC . W ruchu NoSQL spójność danych jest zwykle poświęcana w zamian za inne, bardziej pożądane właściwości, takie jak dostępność (A), tolerancja partycji (P) itp. Opracowano również różne modele spójności danych, które służą jako umowa o gwarantowanym poziomie usług (SLA ) między usługodawcami a użytkownikami.

Replikacja pamięci dyskowej

Replikacja magazynu

Aktywna replikacja pamięci masowej (w czasie rzeczywistym) jest zwykle realizowana poprzez dystrybucję aktualizacji urządzenia blokowego na kilka fizycznych dysków twardych . W ten sposób dowolny system plików obsługiwany przez system operacyjny może być replikowany bez modyfikacji, ponieważ kod systemu plików działa na poziomie powyżej warstwy sterownika urządzenia blokowego. Jest zaimplementowany sprzętowo (w kontrolerze macierzy dyskowej ) lub programowo (w sterowniku urządzenia ).

Najbardziej podstawową metodą jest dublowanie dysku , które jest typowe dla dysków podłączonych lokalnie. Branża pamięci masowych zawęża definicje, więc tworzenie kopii lustrzanych jest operacją lokalną (krótkodystansową). Replikację można rozszerzyć na sieć komputerową , dzięki czemu dyski mogą znajdować się w fizycznie odległych lokalizacjach i zwykle stosowany jest model replikacji bazy danych podstawowej/repliki. Celem replikacji jest zapobieganie uszkodzeniom spowodowanym awariami lub katastrofami które mogą wystąpić w jednej lokalizacji – lub w przypadku wystąpienia takich zdarzeń, w celu poprawy możliwości odzyskiwania danych. W przypadku replikacji opóźnienie jest kluczowym czynnikiem, ponieważ określa, jak daleko od siebie mogą znajdować się lokalizacje lub jaki typ replikacji można zastosować.

Główną cechą takiej replikacji między lokacjami jest sposób obsługi operacji zapisu poprzez replikację asynchroniczną lub synchroniczną; replikacja synchroniczna musi czekać na odpowiedź serwera docelowego w dowolnej operacji zapisu, podczas gdy replikacja asynchroniczna nie.

synchroniczna gwarantuje „zerową utratę danych” dzięki niepodzielnym operacjom zapisu, w których operacja zapisu nie jest uważana za zakończoną, dopóki nie zostanie potwierdzona zarówno przez lokalną, jak i zdalną pamięć masową. Większość aplikacji czeka na zakończenie transakcji zapisu przed przystąpieniem do dalszej pracy, stąd ogólna wydajność znacznie spada. Z natury wydajność spada proporcjonalnie do odległości, ponieważ minimalne opóźnienie jest podyktowane prędkością światła . Na odległość 10 km najszybsza możliwa podróż w obie strony zajmuje 67 μs, podczas gdy cały lokalny zapis w pamięci podręcznej kończy się w około 10–20 μs.

W przypadku replikacji asynchronicznej operacja zapisu jest uważana za zakończoną, gdy tylko pamięć lokalna ją potwierdzi. Magazyn zdalny jest aktualizowany z niewielkim opóźnieniem . Wydajność jest znacznie zwiększona, ale w przypadku awarii magazynu lokalnego nie ma gwarancji, że magazyn zdalny będzie zawierał bieżącą kopię danych (najnowsze dane mogą zostać utracone).

Replikacja półsynchroniczna zwykle uważa operację zapisu za zakończoną, gdy zostanie potwierdzona przez magazyn lokalny i odebrana lub zarejestrowana przez serwer zdalny. Właściwy zapis zdalny jest wykonywany asynchronicznie, co skutkuje lepszą wydajnością, ale pamięć zdalna pozostaje w tyle za pamięcią lokalną, więc nie ma gwarancji trwałości (tj. bezproblemowej przejrzystości) w przypadku awarii pamięci lokalnej. [ potrzebne źródło ]

Replikacja do określonego momentu tworzy okresowe migawki , które są replikowane zamiast pamięci podstawowej. Ma to na celu replikację tylko zmienionych danych zamiast całego woluminu. Ponieważ przy użyciu tej metody replikowanych jest mniej informacji, replikacja może odbywać się za pośrednictwem tańszych łączy o przepustowości, takich jak iSCSI lub T1, zamiast łączy światłowodowych.

Implementacje

Wiele rozproszonych systemów plików korzysta z replikacji, aby zapewnić odporność na awarie i uniknąć pojedynczego punktu awarii.

Wiele komercyjnych systemów replikacji synchronicznej nie zawiesza się, gdy zdalna replika zawiedzie lub utraci połączenie – zachowanie to gwarantuje zerową utratę danych – ale kontynuuje działanie lokalnie, tracąc pożądany cel zerowego punktu odzyskiwania .

Techniki optymalizacji sieci rozległej (WAN) można zastosować w celu rozwiązania ograniczeń narzuconych przez opóźnienia.

Replikacja oparta na plikach

Replikacja oparta na plikach przeprowadza replikację danych na poziomie logicznym (tj. pojedynczych plików danych), a nie na poziomie bloku pamięci. Istnieje wiele różnych sposobów wykonania tego, które prawie wyłącznie opierają się na oprogramowaniu.

Przechwytywanie za pomocą sterownika jądra

Sterownik jądra (w szczególności sterownik filtru ) może być użyty do przechwytywania wywołań funkcji systemu plików, przechwytując każdą aktywność w momencie jej wystąpienia. Wykorzystuje ten sam typ technologii, z którego korzystają aktywne programy antywirusowe działające w czasie rzeczywistym. Na tym poziomie przechwytywane są logiczne operacje na plikach, takie jak otwieranie, zapisywanie, usuwanie plików itp. Sterownik jądra przesyła te polecenia do innego procesu, zazwyczaj przez sieć, do innej maszyny, która będzie naśladować operacje maszyny źródłowej. Podobnie jak replikacja pamięci masowej na poziomie bloków, replikacja na poziomie plików umożliwia zarówno tryb synchroniczny, jak i asynchroniczny. W trybie synchronicznym operacje zapisu na maszynie źródłowej są wstrzymywane i nie mogą być wykonywane, dopóki maszyna docelowa nie potwierdzi pomyślnej replikacji. Tryb synchroniczny jest mniej powszechny w przypadku produktów do replikacji plików, chociaż istnieje kilka rozwiązań.

Rozwiązania do replikacji na poziomie plików umożliwiają podejmowanie świadomych decyzji dotyczących replikacji na podstawie lokalizacji i typu pliku. Na przykład pliki tymczasowe lub części systemu plików, które nie mają żadnej wartości biznesowej, mogą zostać wykluczone. Przesyłane dane mogą być również bardziej szczegółowe; jeśli aplikacja zapisuje 100 bajtów, przesyłanych jest tylko 100 bajtów zamiast pełnego bloku dysku (zwykle 4096 bajtów). To znacznie zmniejsza ilość danych wysyłanych z maszyny źródłowej i obciążenie pamięci masowej na maszynie docelowej.

Wadą tego rozwiązania programowego jest konieczność wdrożenia i utrzymania na poziomie systemu operacyjnego oraz zwiększone obciążenie mocy obliczeniowej maszyny.

Replikacja dziennika systemu plików

Podobnie jak dzienniki transakcji bazy danych , wiele systemów plików ma możliwość rejestrowania swojej aktywności. Czasopismo może być wysyłane do innej maszyny, okresowo lub w czasie rzeczywistym przez przesyłanie strumieniowe. Po stronie repliki dziennik może służyć do odtwarzania modyfikacji systemu plików.

Jedną z godnych uwagi implementacji jest Microsoft System Center Data Protection Manager (DPM), wydany w 2005 roku, który wykonuje okresowe aktualizacje, ale nie oferuje replikacji w czasie rzeczywistym . [ potrzebne źródło ]

Replikacja wsadowa

Jest to proces porównywania źródłowego i docelowego systemu plików oraz upewniania się, że miejsce docelowe odpowiada źródłowemu. Kluczową korzyścią jest to, że takie rozwiązania są na ogół bezpłatne lub niedrogie. Wadą jest to, że proces ich synchronizacji jest dość obciążający system, w związku z czym proces ten zazwyczaj przebiega rzadko.

Jedną z godnych uwagi implementacji jest rsync .

Replikacja w pliku

W systemie operacyjnym stronicowania strony w pliku stronicowania są czasami replikowane w ścieżce, aby zmniejszyć opóźnienie rotacyjne.

W VSAM firmy IBM dane indeksu są czasami replikowane w ramach ścieżki, aby zmniejszyć opóźnienia rotacyjne.

Rozproszona replikacja pamięci współdzielonej

Inny przykład wykorzystania replikacji pojawia się w rozproszonych systemach z pamięcią współdzieloną, w których wiele węzłów systemu współdzieli tę samą stronę pamięci. Zwykle oznacza to, że każdy węzeł ma osobną kopię (replikę) tej strony.

Podstawowa kopia zapasowa i replikacja wielopodstawowa

Wiele klasycznych podejść do replikacji opiera się na modelu podstawowej kopii zapasowej, w którym jedno urządzenie lub proces ma jednostronną kontrolę nad jednym lub większą liczbą innych procesów lub urządzeń. Na przykład jednostka podstawowa może wykonać pewne obliczenia, przesyłając strumieniowo dziennik aktualizacji do procesu zapasowego (stanu gotowości), który może następnie przejąć kontrolę, jeśli jednostka podstawowa ulegnie awarii. Takie podejście jest typowe dla replikowanych baz danych, pomimo ryzyka, że ​​jeśli część dziennika zostanie utracona podczas awarii, stan kopii zapasowej może nie być identyczny z podstawowym, a transakcje mogą zostać utracone.

Słabością podstawowych schematów tworzenia kopii zapasowych jest to, że tylko jeden z nich faktycznie wykonuje operacje. Zyskuje się tolerancję na awarie, ale identyczny system tworzenia kopii zapasowych podwaja koszty. Z tego powodu począwszy od c. 1985 społeczność badaczy systemów rozproszonych zaczęła badać alternatywne metody replikacji danych. Następstwem tych prac było pojawienie się schematów, w których grupa replik mogłaby współpracować, przy czym każdy proces działał jako kopia zapasowa, jednocześnie obsługując część obciążenia.

Informatyk Jim Gray przeanalizował schematy replikacji wielopodstawowej w modelu transakcyjnym i opublikował szeroko cytowany artykuł sceptycznie nastawiony do podejścia „The Dangers of Replication and a Solution”. Argumentował, że jeśli dane nie zostaną podzielone w naturalny sposób, tak że baza danych będzie mogła być traktowana jako n n rozłącznych podbaz danych, konflikty kontroli współbieżności doprowadzą do poważnego pogorszenia wydajności, a grupa replik prawdopodobnie zwolni jako funkcję n . Gray zasugerował, że najczęstsze podejścia prawdopodobnie doprowadzą do degradacji, która skaluje się jako O (n³) . Jego rozwiązanie, polegające na podzieleniu danych na partycje, jest wykonalne tylko w sytuacjach, w których dane faktycznie mają naturalny klucz partycjonowania.

W latach 1985-1987 zaproponowano model synchronizacji wirtualnej , który stał się powszechnie przyjętym standardem (był używany w systemach Isis Toolkit, Horus, Transis, Ensemble, Totem, Spread , C-Ensemble, Phoenix i Quicksilver i jest podstawa standardu obliczeniowego odpornego na uszkodzenia CORBA ). Synchronizacja wirtualna umożliwia podejście wielopodstawowe, w którym grupa procesów współpracuje w celu zrównoleglenia niektórych aspektów przetwarzania żądań. Schemat może być używany tylko w przypadku niektórych form danych w pamięci, ale może zapewnić liniowe przyspieszenie wielkości grupy.

Wiele nowoczesnych produktów obsługuje podobne schematy. Na przykład zestaw narzędzi Spread Toolkit obsługuje ten sam model synchronizacji wirtualnej i może być wykorzystany do wdrożenia schematu replikacji wielopodstawowej; w ten sposób można by również użyć C-Ensemble lub Quicksilver. WANdisco umożliwia aktywną replikację, w której każdy węzeł w sieci jest dokładną kopią lub repliką, a zatem każdy węzeł w sieci jest jednocześnie aktywny; ten schemat jest zoptymalizowany do użytku w sieci rozległej (WAN).

Nowoczesne protokoły replikacji wielopodstawowej optymalizują się pod kątem powszechnej bezawaryjnej pracy. Replikacja łańcuchowa to popularna rodzina takich protokołów. Najnowocześniejsze warianty protokołów replikacji łańcuchowej oferują wysoką przepustowość i dużą spójność dzięki rozmieszczeniu replik w łańcuchu do zapisu. Takie podejście umożliwia lokalne odczyty we wszystkich węzłach repliki, ale ma duże opóźnienie dla zapisów, które muszą sekwencyjnie przechodzić przez wiele węzłów.

Nowszy protokół wielopodstawowy, Hermes , łączy unieważnienia inspirowane pamięcią podręczną i logiczne znaczniki czasu, aby osiągnąć silną spójność z lokalnymi odczytami i wysokowydajnymi zapisami ze wszystkich replik. Podczas bezawaryjnej pracy zapisy oparte na rozgłoszeniu nie powodują konfliktów i są zatwierdzane już po jednym przejściu multiemisji w obie strony do węzłów repliki. Ta konstrukcja zapewnia wysoką przepustowość i małe opóźnienia zarówno dla odczytu, jak i zapisu.

Zobacz też