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 Stan globalny Z problemem globalnego czasu jest związany także problem globalnego stanu: interesuje nas stan systemu rozproszonego w konkretnej pojedynczej chwili czasu przykład kiedy jest to istotne, np. naliczanie procentów w banku: dwie filie, przelew z konta w filii A na konto w filii B brak czasu globalnego, jeśli zegary w A i B różnią się, może dojść do sytuacji, że procent nie zostanie naliczony ani w A, ani w B lub zostanie naliczony i w A, i w B inny przykład: rozproszone odśmiecanie Krzysztof Banaś Systemy rozproszone 8 Spójny stan globalny Przykład przelewu bankowego: rozważając szczegółowo stan systemu widać, że konieczne jest uwzględnienie stanu kanałów komunikacyjnych bez wprowadzenia czasu globalnego operacja taka jest trudna do realizacji jeśli pomijamy stan kanałów komunikacyjnych okazuje się, że stan procesów może być niezgodny ze stanem pożądanym W celu zdefiniowania poprawności stanu globalnego wprowadza się pojecie spójności Krzysztof Banaś Systemy rozproszone 9 Stan globalny Spójność stanu globalnego: stan globalny określamy jako kolekcję stanów lokalnych stan lokalny zapisujemy w pewnym konkretnym momencie stan lokalny zawiera informację lokalną oraz informację o wszystkich wysłanych i odebranych komunikatach przed zapisem stanu lokalnego dwa stany lokalne dwóch procesów w ramach stanu globalnego są w relacji przejściowej, jeśli istnieje komunikat wysłany z jednego procesu do drugiego i jeszcze nie odebrany przez ten drugi dwa stany lokalne dwóch procesów w ramach stanu globalnego są w relacji niespójności jeśli istnieje komunikat od jednego do drugiego, odebrany w drugim, ale jeszcze nie wysłany w pierwszym stan globalny jest spójny wtedy i tylko wtedy kiedy żadne dwa stany lokalne nie są w relacji niespójności stan globalny jest silnie spójny wtedy i tylko wtedy kiedy żadne dwa stany lokalne nie są ani w relacji niespójności, ani w relacji przejściowej Krzysztof Banaś Systemy rozproszone 10 Stan globalny Jak dobierać stany lokalne, żeby uzyskać spójny stan globalny? zdarzenia zapisu stanu lokalnego (przecięcia, cuts) powinny być współbieżne inaczej: żadne dwa przecięcia nie mogą być powiązane relacją przyczynową (happened before) Algorytm ChandyLamporta pozwala zapisać sekwencję stanów lokalnych tworzących spójny stan globalny systemu rozproszonego uzyskany obraz systemu nazywany jest „migawką” (ujęciem, snapshot) algorytm zakłada, że procesy są połączone kanałami komunikacyjnymi tworzącymi silnie spójny graf skierowany przesyłanie komunikatów kanałem odbywa się zgodnie z porządkiem FIFO Krzysztof Banaś Systemy rozproszone 11 Algorytm ChandyLamporta Proces rozpoczynający algorytm zapisuje swój stan lokalny i wysyła żeton do wszystkich procesów połączonych z jego wyjściami Proces Pj, który odbiera żeton od procesu Pi: jeśli jeszcze nie zapisał swojego stanu lokalnego zapisuje stan kanału PiPj jako pusty zapisuje stan lokalny wysyła żeton do wszystkich procesów połączonych z jego wyjściami jeśli już zapisał swój stan zapisuje stan kanału PiPj (wszystkie komunikaty odebrane przez Pj od Pi po zapisie stanu lokalnego przez Pj, a przed odebraniem żetonu od Pi ) Krzysztof Banaś Systemy rozproszone 12