Czas w systemach rozproszonych
Transkrypt
Czas w systemach rozproszonych
Czas w systemach rozproszonych Krzysztof Banaś Systemy rozproszone 1 Czas w systemach rozproszonych ➔ Istnienie algorytmów opartych na czasie zdarzeń ➔ Brak czasu globalnego np. make, systemy czasu rzeczywistego Zegar fizyczny – lokalny czas każdego komputera Oznaczanie zdarzeń w lokalnym komputerze czasem lokalnym Dokładność (rozdzielczość) zegara wewnętrznego Różnice pomiędzy zegarami różnych komputerów Odchylenie wskazań zegarów kwarcowych (w stosunku do czasu wzorcowego) rzędu 106 (ok. 1s na tydzień) Czas uniwersalny UTC Dokładność zegarów atomowych 1013 Koordynacja światowych zegarów atomowych Rozgłaszanie czasu UTC – stacje naziemne i satelitarne (np. GPS) Krzysztof Banaś Systemy rozproszone 2 Czas w systemach rozproszonych ➔ Serwery czasu UTC ➔ Synchronizacja z serwerami czasu algorytmy scentralizowane ➔ z serwerami pasywnymi – np. algorytm Cristiana z serwerami aktywnymi – np. algorytm Berkeley Synchronizacja bez serwerów algorytmy zdecentralizowane ➔ Dokładność na podstawie odczytu sygnału z nadajnika UTC (z uwzględnieniem poprawek na rozchodzenie się sygnału) – ok. 1 ms np. algorytmy uśredniania lokalnego The Network Time Protocol – standard synchronizacji zegarów w Internecie Krzysztof Banaś Systemy rozproszone 3 Algorytm Cristiana Istnieje serwer czasu odbierający sygnały od urządzeń UTC Klient wysyła zapytanie o czas, odbiera odpowiedź (czas t) i mierzy czas jaki zajęły te operacje, (tc) W momencie odebrania ustawia swój zegar na t+tc/2 Dokładność pomiaru w najprostszym oszacowaniu wynosi tc/2 – jeżeli wartość tc jest zbyt duża pomiar powinien być odrzucony Zalecaną metodologią jest wykonanie serii zapytań i wybór przypadku o najmniejszym tc Wadą algorytmu jest zależność od pojedynczego serwera Krzysztof Banaś Systemy rozproszone 4 Algorytm Berkeley Istnieje komputer nadrzędny zarządzający procesem synchronizacji zegarów Komputer nadrzędny pyta pozostałe komputery o ich czas lokalny Na podstawie odpowiedzi oblicza czas uśredniony – wartości znacznie odbiegające od innych są odrzucane, pozostałe służą do obliczeń Komputer nadrzędny przesyła innym komputerom ich odchylenie od czasu uśrednionego Dokładność zależy od czasu komunikacji W przypadku awarii komputera nadrzędnego konieczny jest wybór (elekcja) jego następcy Krzysztof Banaś Systemy rozproszone 5 Network Time Protocol NTP Cele wprowadzenia NTP: synchronizacja zegarów lokalnych z czasem UTC poprzez Internet konieczność uwzględnienia zawodnej natury Internetu uzyskiwanie dokładności rzędu dziesiątek milisekund niezawodność realizacji usługi nadmiarowe serwery i nadmiarowe połączenia z serwerami umożliwienie częstej resynchronizacji czasu skalowalność systemu zabezpieczenie przeciw zaburzeniom, umyślnym i przypadkowym autentykacja serwerów i komunikatów pochodzących od serwerów Krzysztof Banaś Systemy rozproszone 6 Network Time Protocol NTP Sposób funkcjonowania NTP serwery pierwszorzędne odbiór sygnałów UTC serwery drugorzędne hierarchia systemów synchronizowanych z serwerami pierwszorzędnymi serwery z niższych poziomów synchronizacji mają mniej dokładny czas tryby synchronizacji między serwerami: multicast rozgłaszanie sygnału czasowego niska dokładność, odpowiedni dla systemów połączonych szybką siecią LAN procedurecall serwery przyjmują żądania klientów i udzielają odpowiedzi (obliczenia podobne jak w algorytmie Cristiana) wyższa dokładność symmetric wymiana sekwencji informacji między serwerami najwyższa dokładność, dla serwerów wyższych poziomów Krzysztof Banaś Systemy rozproszone 7 Porządek zdarzeń ➔ ➔ W pewnych przypadkach nie jest istotny rzeczywisty czas zdarzeń, a tylko uprzedniość zdarzeń – porządek przyczynowy Wtedy można stosować: ➔ zegary logiczne – numeryczny wyraz uprzedniości zdarzeń funkcjonowanie zegarów logicznych oparte jest o ustalenie relacji uprzedniości pomiędzy zdarzeniami na podstawie: lokalnych czasów realizacji porządku wynikającego z przesłania komunikatów Porządek ustalony na podstawie relacji uprzedniości jest częściowy (są zdarzenia, co do których nie jesteśmy w stanie powiedzieć, które zdarzyło sie wcześniej) Krzysztof Banaś Systemy rozproszone 8 Zegary logiczne Można ustalić porządek całkowity na podstawie relacji uprzedniości wprowadzając tzw. globalne logiczne znaczniki czasu (timestamps): każdy proces numeruje lokalnie swoje zdarzenia (zwiększając licznik Ti o 1 dla każdego zdarzenia) kiedy wysyła komunikat do innego procesu, dołącza do niego stan swojego lokalnego licznika kiedy odbiera komunikat ze stanem licznika t numeruje zdarzenie odebrania wartością max(Ti ,t)+1 z dwóch zdarzeń to jest „wcześniejsze”, które ma mniejszą wartość licznika, lub, jeśli oba mają te same wartości licznika, to które zaszło w procesie o mniejszym identyfikatorze Krzysztof Banaś Systemy rozproszone 9 Zegary logiczne Porządek całkowity nie umożliwia wnioskowania o przyczynowości (z tego, że pewne zdarzenie A ma mniejszy znacznik czasowy niż zdarzenie B, nie wynika, że zachodzi relacja A zdarzyło się przed B) istnieje możliwość wprowadzenia powyższego wynikania poprzez wprowadzenie tzw. zegarów wektorowych zegar wektorowy oznacza, że każdy proces utrzymuje tablicę zawierającą liczniki dla wszystkich procesów proces numeruje kolejno swoje zdarzenia proces przechowuje numery dla wszystkich innych procesów i uaktualnia je po otrzymaniu komunikatów (będących nośnikami informacji o uprzedniości zdarzeń) pojedyncze zdarzenie otrzymuje znacznik czasowy będący całą tablicą wartości ( u(a) ) Krzysztof Banaś Systemy rozproszone 10 Zegary wektorowe Dla dwóch wektorowych znaczników czasowych zachodzi: u = v ⇔ ∀i, u[i] = v[i] u ? v ⇔ ∀i, u[i] ? v[i] u < v ⇔ ( u ≠ v i u ? v) u || v ⇔ ~(u<v) i ~(v<u) Dzięki tym własnościom zachodzi: dwa zdarzenia a i b są powiązane relacją przyczynową ⇔ u(a) < v(b) lub v(b) < u(a) a > b ⇔ u(a) < u(b) (wnioskowanie w obie strony) Krzysztof Banaś Systemy rozproszone 11 Zegary wektorowe Krzysztof Banaś Systemy rozproszone 12