Uzgadnianie
Transkrypt
Uzgadnianie
Uzgadnianie Krzysztof Banaś Systemy rozproszone 1 Uzgadnianie ➔ ➔ Uzgadnianie polega na ustaleniu przez wszystkie procesy należące do pewnej grupy jednej wspólnej dla wszystkich wartości pewnej zmiennej, zwanej zmienną decyzyjną Problem uzgadniania można rozwiązywać w ramach systemów rozproszonych, które: ➔ dopuszczają występowanie określonych typów awarii procesów i/lub kanałów komunikacyjnych funkcjonują w sposób synchroniczny lub asynchroniczny Algorytm rozwiązujący problem będzie nazywany niezawodnym jeśli spełni określone wymagania Krzysztof Banaś Systemy rozproszone 2 Uzgadnianie ➔ Wyróżnia się kilka problemów uzgadniania: problem konsensusu – każdy proces początkowo proponuje pewną wartość zmiennej decyzyjnej problem bizantyńskich generałów – istnieje wyróżniony proces (dowódca), który proponuje wartość zmiennej decyzyjnej problem spójności interaktywnej (interactive consistency) – każdy proces ma wektor zmiennych decyzyjnych, po jednej dla każdego procesu, każdy proponuje pewną swoją wartość, uzgodnieniu podlega zawartość całego wektora Krzysztof Banaś Systemy rozproszone 3 Uzgadnianie ➔ Trzy wymienione wersje problemów uzgadniania są ze sobą powiązane: problem interaktywnej spójności można rozwiązać poprzez rozwiązanie serii problemów bizantyńskich generałów dla kolejnych składowych wektora zmiennych decyzyjnych problem bizantyńskich generałów można rozwiązać poprzez rozesłanie wszystkim procesom wartości proponowanej przez dowódcę i rozwiązanie problemu konsensusu z wszystkimi procesami proponującymi otrzymaną wartość problem konsensusu można rozwiązać poprzez rozwiązanie problemu interaktywnej spójności i następnie wykonanie przez wszystkie procesy jednoznacznej operacji na wektorze zmiennych decyzyjnych produkującej ostateczny rezultat Krzysztof Banaś Systemy rozproszone 4 Niezawodność uzgadniania ➔ Aby określić niezawodność konkretnego algorytmu uzgadniania definiuje się cechy jego realizacji, które powinny być gwarantowane w obliczu zaistnienia określonych typów awarii: skończoność (termination) – osiągnięcie wyniku w skończonym czasie zgodność (agreement) – wszystkie poprawne procesy osiągają ten sam wynik • oznacza to także niepodzielność (atomicity) – jeśli choć jeden proces osiąga wynik, wszystkie procesy muszą osiągnąć wynik integralność (integrity) – osiągnięty wynik jest zgodny z pewnym wzorcem określającym poprawność (różnym dla różnych problemów, np. dla problemu bizantyńskich generałów wzorcem będzie wartość wysłana przez dowódcę jeśli dowódca jest poprawnym procesem) Krzysztof Banaś Systemy rozproszone 5 Problem konsensusu ➔ ➔ ➔ ➔ Istnieje rozwiązanie problemu konsensusu (a co za tym idzie innych powiązanych problemów) dla systemów synchronicznych, w których awarie można wykrywać za pomocą przekroczenia limitów czasowych (timeout) Algorytm działa poprawnie, także w obliczu awarii serwerów (crash failure), w przypadku jeśli liczba procesów, które ulegają awarii jest mniejsza od liczby rund w algorytmie (przyjmuje się w algorytmie maksymalną liczbę f serwerów, które mogą ulec awarii) Algorytm posługuje się rozgłaszaniem podstawowym Kolejny slajd przedstawia kroki algorytmu dla procesu pi należącego do grupy g Krzysztof Banaś Systemy rozproszone 6 Problem konsensusu ➔ Inicjacja (zbioru proponowanych wartości) ➔ Dla każdej rundy r od 1 do f+1 rozgłoś(g, Wartościir – Wartościir1) // nowo dodane wartości Wartościir+1 := Wartościir ➔ Wartościi1 := {vi}; Wartościi0 = {0}; dopóki runda nie zakończona r+1 r+1 • dostarczając vj od procesu pj : Wartościi := Wartościi +vj Po f+1 rundach: wartość uzgodniona = minimum( Wartościif+2 ) Krzysztof Banaś Systemy rozproszone 7 Problem konsensusu ➔ Cechy algorytmu skończoność – wynika ze stosowania limitów czasowych w każdej rundzie zgodność i integralność wynikają z jednoznaczności funkcji minimum jeżeli zbiór wartości jest identyczny w każdym poprawnym procesie dowód identyczności zbioru wartości • nie wprost: zakładamy, że w dwóch procesach wartości są różne, to oznacza, że jeden proces musiał ulec awarii w rundzie, dalej wnioskujemy, że w poprzedniej też musiał jeden ulec awarii, itd., aż do wniosku, że liczba awarii musiałaby być większa od f, co jest sprzeczne z założeniami algorytmu Krzysztof Banaś Systemy rozproszone 8 Problem konsensusu ➔ ➔ Problem konsensusu dla systemów z awariami serwerów daje się także rozwiązać za pomocą niezawodnego rozgłaszania z całkowitym porządkiem wszystkie procesy rozgłaszają swoje propozycje pierwszy dostarczony komunikat jest identyczny dla całej grupy Można udowodnić, że w powyższej sytuacji oba problemy są równoważne (daje się rozwiązać problem niezawodnego rozgłaszania z całkowitym porządkiem za pomocą rozwiązania problemu konsensusu) Krzysztof Banaś Systemy rozproszone 9 Problem bizantyńskich generałów ➔ Przy konstruowaniu algorytmów rozwiązujących problem bizantyńskich generałów zakłada się, że: ➔ procesy mogą ulegać dowolnym awariom: proces może przestać wysyłać komunikaty lub wysyłać komunikaty o dowolnej treści w dowolnym czasie maksymalnie f procesów może ulec awarii proces nie może ingerować w wymianę komunikatów pomiędzy innymi dwoma procesami – kanały komunikacji są prywatne Dodatkowo w przypadku systemów synchronicznych przyjmuje się, że: procesy wykrywają awarię za pomocą limitów czasowych Krzysztof Banaś Systemy rozproszone 10 Problem bizantyńskich generałów ➔ Dla ogólnej liczby procesów N, można udowodnić, że: dla systemów synchronicznych nie istnieje algorytm rozwiązujący jeśli 3f ≥ N i komunikaty nie są podpisane • przykład niemożności uzgodnienia dla 3 procesów i jednej awarii w systemach synchronicznych może dojść do uzgodnienia treści komunikatu jeżeli 3f+1 ≤ N • przykład uzgodnienia dla 4 procesów i jednej awarii algorytmy dla systemów synchronicznych wymagają f+1 rund komunikacji (bez stosowania podpisów elektronicznych) powyższe algorytmy są kosztowne, wymagają: • O(N f+1) komunikatów niepodpisanych lub • O(N 2) komunikatów podpisanych nie istnieją algorytmy rozwiązujące dla systemów asynchronicznych Krzysztof Banaś Systemy rozproszone 11