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 (time­out)
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ściir­1) // 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