Jaka jest różnica między Paxos a w + R>=n w Cassandrze?

Dynamo-podobne bazy danych (np. Cassandra) mogą wymuszać spójność za pomocą kworum, tzn. liczba replik zapisanych synchronicznie (W) i liczba replik do odczytu (R) powinna być wybrana w taki sposób, że W+R>n gdzie N jest czynnikiem replikacji. Z drugiej strony systemy oparte na systemie PAXOS, takie jak Zookeeper, są również używane jako spójna pamięć odporna na błędy.

Jaka jest różnica między tymi dwoma podejściami? Czy system PAXOS zapewnia gwarancje, których nie zapewnia schemat W+R>n?

Author: user1128016, 2012-08-28

4 answers

Paxos jest nietrywialny w implementacji, i na tyle drogi, że wiele systemów z niego korzystających używa podpowiedzi, a my tylko do wyborów lidera, czy coś. Zapewnia jednak gwarantowaną spójność w przypadku awarii-z zastrzeżeniem oczywiście ograniczeń określonego modelu awarii.

Pierwsze systemy oparte na kworum, które widziałem, zakładały jakiś rodzaj infrastruktury lidera lub transakcji, która zapewniłaby wystarczającą spójność, aby można było zaufać mechanizmowi kworum zadziałało. Ta infrastruktura może być oparta na Paxos.

Patrząc na opisy takie jak https://cloudant.com/blog/dynamo-and-couchdb-clusters / , wydaje się, że Dynamo jest a nie oparte na infrastrukturze, która gwarantuje spójność dla jego systemu kworum - więc jest to bardzo sprytne, czy cięcie na skróty? Zgodnie z http://muratbuffalo.blogspot.co.uk/2010/11/dynamo-amazons-highly-available-key.html , " System Dynamo kładzie nacisk na dostępność do stopień poświęcenia konsystencji. Streszczenie brzmi: "Dynamo poświęca konsekwencję w pewnych scenariuszach awarii". W rzeczywistości, później staje się jasne, że Dynamo poświęca spójność nawet w przypadku braku awarii: Dynamo może stać się niespójne w obecności wielu jednoczesnych żądań zapisu, ponieważ repliki mogą się różnić z powodu wielu koordynatorów."(end quote)

Wydaje się więc, że w przypadku quorum zaimplementowanych w Dynamo, Paxos zapewnia większą niezawodność Gwarancje.

 8
Author: mcdowella,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-28 18:41:26

Tak, Paxos zapewnia gwarancje, które nie są dostarczane przez systemy Dynamo-podobne i ich kworum odczytu i zapisu. Różnica polega na tym, jak błędy są obsługiwane i co dzieje się podczas zapisu. Po pomyślnym zapisie oba systemy zachowują się podobnie. Dane zostaną zapisane i będą dostępne do odczytania później (do czasu nadpisania lub usunięcia) i tak dalej.

Różnica pojawia się podczas zapisu i po niepowodzeniach. Dopóki nie otrzymasz udanej odpowiedzi z ww przy pisaniu czegoś do ostatecznie spójnych systemów, wtedy dane mogły zostać zapisane do niektórych węzłów, a nie do innych i nie ma gwarancji, że cały system zgadza się na aktualną wartość. Jeśli spróbujesz odczytać dane z powrotem w tym momencie, niektórzy klienci mogą odzyskać nowe dane, a niektórzy stare dane. Innymi słowy, system nie jest natychmiast spójny. Dzieje się tak, ponieważ zapisy nie są atomowe w węzłach w tych systemach. Są zwykle mechanizmy "uzdrawiające" taką niespójność i "w końcu" system stanie się znowu spójny (tzn. odczyty będą zawsze zwracać tę samą wartość, dopóki nie zostanie napisane coś nowego). Jest to powód, dla którego są one często nazywane "ostatecznie spójne". Niekonsekwencje mogą (i będą) się pojawiać, ale zawsze będą rozpatrywane i w końcu Godzone.

W systemie Paxos zapis może być atomowy między węzłami i dlatego można uniknąć niespójności między węzłami. Algorytm Paxos umożliwia zagwarantowanie że nie-wadliwe węzły nigdy nie zgadzają się co do wyniku zapisu, w dowolnym momencie. Albo pisanie powiodło się wszędzie, albo nigdzie. Nigdy nie będzie żadnych niespójnych odczytów w żadnym momencie(jeśli jest poprawnie zaimplementowany i jeśli wszystkie założenia trzymają się, oczywiście). Ma to jednak swoją cenę. Głównie system może wymagać opóźnienia niektórych żądań i być niedostępny, gdy na przykład zbyt wiele węzłów (lub komunikacja między nimi) nie działa. Jest to konieczne, aby zapewnić, że nie udzielane są niespójne odpowiedzi.

Podsumowując: główną różnicą jest to, że systemy przypominające Dynamo mogą zwracać niespójne wyniki podczas zapisów lub po awariach przez pewien czas (ale w końcu się z nich odzyskają), podczas gdy systemy oparte na Paxos mogą zagwarantować, że nigdy nie ma takich niespójności, czasami będąc niedostępnymi i opóźniając żądania zamiast tego.

 16
Author: Hampus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-17 20:10:29

Paxos i Kworum W+R>n próbują rozwiązać nieco inne problemy. Paxos jest zwykle opisywany jako sposób replikacji maszyny stanowej, ale w rzeczywistości jest to bardziej rozproszony dziennik: każda pozycja zapisana do dziennika otrzymuje indeks, a różne serwery ostatecznie przechowują te same pozycje dziennika + ich indeks. (Replikowaną maszynę stanową można uzyskać zapisując do dziennika wejścia do maszyny stanowej i każdy serwer powtarza maszynę stanową na uzgodnionych wejściach zgodnie z ich indeksem). Ty możesz przeczytać więcej o Paxos w blogu, który napisałem tutaj .

Kworum W + R > n rozwiązuje problem dzielenia jednej wartości między wieloma serwerami. W środowisku akademickim nazywany jest "rejestrem wspólnym". Wspólny rejestr ma dwie operacje: read I write, gdzie oczekujemy, że read zwróci wartość poprzedniego zapisu.

Tak więc, Paxos i Kworum w+R>n żyją w różnych domenach i mają różne właściwości (np. Paxos zapisuje uporządkowaną listę elementów). Jednak Paxos może być używane do implementacji współdzielonego rejestru, a kworum w + R > n może być użyte do implementacji rozproszonego dziennika (choć bardzo nieefektywnie).

Mówiąc wszystko powyżej, czasami kworum W + R > n nie są zaimplementowane w ich "w pełni solidny" sposób, ponieważ będzie to wymagało więcej niż jednej rundy komunikacji. Tak więc w systemach, które chcą mieć małe opóźnienie, możliwe jest, że ich implementacja kworum W + R > N zapewnia słabsze właściwości (np. sprzeczne wartości mogą istnieć co).

Podsumowując, teoretycznie, Paxos i w + R > N mogą osiągnąć te same cele. Praktycznie byłoby to bardzo nieefektywne, a każdy z nich jest lepszy na coś nieco innego. Jeszcze bardziej praktycznie, W + R > N nie zawsze jest w pełni zaimplementowany, co powoduje, że niektóre właściwości konsystencji zwiększają szybkość.

Update : Paxos obsługuje bardzo ogólny model awarii: wiadomości mogą być upuszczane, węzły mogą się zawieszać i uruchamiać ponownie. Schemat kworum W + R > n ma różne implementacje, z których wiele zakłada mniej ogólne niepowodzenia. Więc, różnica między tymi dwoma zależy również od założenia NA możliwe awarie, które są obsługiwane.

 11
Author: Ezra Hoch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-05 21:56:49

Nie ma różnicy. Definicja kworum mówi, że dowolne przecięcie dwóch kworum nie jest puste. Kworum zwykłej większości jest przykładem, a nie definicją. Spójrz na późniejszą pracę doktora Lamporta "Vertical Paxos", w której podał inne możliwe konfiguracje kworów.

Protokół Multi-Paxos (AKA Multi-Paxos), w stanie stacjonarnym jest to tylko dwufazowy commit. Zmiany liczby głosów są potrzebne tylko wtedy, gdy lider zawiedzie.

Zookeeper ' s replication protocol (ZAB), a wszystkie są oparte na Paxos. Różnice dotyczą wykrywania usterek i przejścia po niepowodzeniu lidera.

 1
Author: Chen Fu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-13 18:24:56