Systemy rozproszone Rozwój technologiczny Postęp w ostatnim półwieczu Kiedyś: 10 mln dolarów, 1 instrukcja na sekundę Obecnie: 0,00001 dolara, 1 instrukcja na sekundę 12 12 razy lepszy współczynnik cena/efektywność sieci komputerowe LAN i WAN
Systemy rozproszony Zbiór niezależnych komputerów postrzegany przez jego użytkowników jako pojedynczy, spójny system. Systemy rozproszony to system w którym awaria komputera, o którym nawet nie słyszałeś, że istnieje, powoduje że nie możesz dokończyć żadnej roboty...
Definicja systemu rozproszonego System rozproszony zestaw niezależnych komputerów, sprawiający na jego użytkownikach wrażenie jednego, logicznie zwartego systemu. Aspekty sprzęt: maszyny są autonomiczne oprogramowanie: wrażenie pojedynczego systemu Systemy rozproszone w przykładach Firma, biuro, uczelnia, (np. PC, drukarki,...) Roboty/automaty w hali produkcyjnej Systemy bankowe (wiele oddziałów) Systemy rezerwacji biletów
Cechy systemów rozproszonych Ukrycie przed użytkownikami: różnic pomiędzy poszczególnymi komputerami sposobów komunikowania się komputerów wewnętrznej organizacji systemu rozproszonego Jednolity i spójny interfejs dla użytkownika niezależnie od czasu i miejsca interakcji Nieustanna dostępność zasobów i usług Łatwość rozszerzania (skalowania) Charakterystyka systemów rozproszonych duża wydajność w sensie dużej mocy obliczeniowej i maksymalnej przepustowości, krótkiego czasu odpowiedzi; duża efektywność inwestowania w sensie kosztów niezbędnych do uzyskania wymaganej wydajności systemu; wysoka sprawność wykorzystania zasobów w sensie stopnia wykorzystania zasobów, współczynnika jednoczesności;
Charakterystyka systemów rozproszonych skalowalność w znaczeniu możliwości ciągłego i nieograniczonego rozwoju systemu bez negatywnego wpływu na jego wydajność i sprawność; wysoka niezawodność w sensie odporności na błędy; otwartość funkcjonalna w sensie łatwości realizacji nowych, atrakcyjnych usług komunikacyjnych, informatycznych i informacyjnych. Problemy związane z konstrukcją systemów rozproszonych optymalne zrównoleglenie algorytmów przetwarzania ocena algorytmów rozproszonych alokacja zasobów rozproszonych synchronizacja procesów ocena globalnego stanu przetwarzania niezawodność bezpieczeństwo
Cele systemów rozproszonych Łatwe połączenie użytkownik-zasoby Ukrywanie faktu rozproszenia zasobów przeźroczystość Otwartość Skalowalność Łączenie użytkowników i zasobów Ekonomia: współdzielony dostęp do zasobów jest tańszy drukarki specjalizowane komputery szybkie pamięci bazy danych zdalne dokumenty Bezpieczeństwo
Przezroczystość (I) System przezroczysty (transparentny, ang. transparent) sprawia wrażenie systemu scentralizowanego (dla użytkowników i aplikacji). Przezroczystość (I) Przezroczystość dostępu (ang. access transparency) ujednolicanie metod dostępu do danych i ukrywanie różnic w reprezentacji danych. Różnice w reprezentacji danych mogą wynikać z: Zastosowania różnych architektur komputerowych Kodowanie liczb w procesorach Intela little endian Kodowanie liczb w procesorach Sun SPARC big endian Różnych konwencji nazewnictwa plików stosowanych w różnych systemach operacyjnych.
Przezroczystość (II) Przezroczystość położenia (ang. location transparency) użytkownicy nie mogą określić fizycznego położenia zasobu (np. na podstawie jego nazwy czy identyfikatora). Między innymi dlatego adresy dokumentów w usłudze WWW zaczęto określać nie jako adresy URL (ang. Universal Resource Locator --- uniwersalny lokalizator zasobów) a raczej jako adresy URI (ang. Universal Resource Identifier --- uniwersalny identyfikator zasobów). Przezroczystość (III) Przezroczystość wędrówki (ang. migration transparency) można przenosić zasoby pomiędzy serwerami bez zmiany sposoby odwoływania się do nich. Niezbędne jest założenie o przeźroczystości położenia Przezroczystość przemieszczania (ang. relocation transparency) zasoby mogą być przenoszone nawet podczas ich używania. Przykład: sieci komórkowe
Przezroczystość (III) Przezroczystość zwielokrotniania (ang. replication transparency) ukrywanie przed użytkownikami faktu zwielokrotniania (replikacji) zasobów. Przezroczystość współbieżności (ang. concurrency transparency) możliwość współbieżnego przetwarzania danych nie powodująca powstawania niespójności w systemie. Przezroczystość (IV) Przezroczystość awarii (ang. failure transparent) maskowanie przejściowych awarii poszczególnych komponentów systemu rozproszonego. Przezroczystość trwałości (ang. persistence transparency) maskowanie sposobu przechowywania zasobu (pamięć ulotna, dysk). Kompromis pomiędzy dużym stopniem przezroczystości a efektywnością systemu.
Otwartość systemów rozproszonych Usługi zgodne ze standardowymi regułami opisującymi ich składnię i semantykę przykład: protokoły komunikacyjne w sieciach komputerowych Specyfikacja usług poprzez interfejsy język opisu interfejsu (ang. Interface Definition Language) Specyfikacje muszą być zupełne (kompletne) i neutralne zdolność do współdziałania (ang. interoperability) przenośność (ang. portability) Systemy elastyczne Systemy elastyczne łatwość konfiguracji łatwość rekonfiguracji (np. wymiana poszczególnych komponentów) Organizacja systemu rozproszonego projekt monolityczny logiczne wydzielenie składowych podział na autonomiczne komponenty (koszt: wydajność) oddzielenie polityki od mechanizmu
Wymiary skalowalności Skalowalność skalowalność pod względem rozmiaru (decentralizacja: danych, usług i algorytmów) skalowalność geograficzna skalowalność pod względem administracyjnym Algorytmy zdecentralizowane brak informacji globalnej decyzje na podstawie informacji lokalnych odporność na awarie pojedynczych maszyn brak założeń dot. istnienia globalnego zegara Metody zapewniania skalowalności Ukrywanie opóźnień komunikacji komunikacja asynchroniczna (systemy wsadowe) przeniesienie części obliczeń na stronę klienta Rozpraszanie (ang. distribution) - DNS Zwielokrotnianie (replikacja ang. replication) zwiększenie dostępności równoważenie obciążenia zwiększenie niezawodności przechowywanie podręczne (ang. caching) problem spójności danych (ang. consistency)
Oprogramowanie dla syst. rozproszonych Systemy operacyjne dla komputerów rozproszonych systemy ściśle powiązane (ang. tightly-coupled) wieloprocesory, multikomputery homogeniczne systemy luźno powiązane (ang. loosely-coupled) sieciowe systemy operacyjne (ang. network operating system) oprogramowanie warstwy pośredniej (ang. middleware) Skala przetwarzania Systemy końcowe (ang. end systems) stosunkowo mała liczba komponentów dobrze zintegrowanych ze sobą, zaprojektowanych z myślą o wydajnej współpracy Klastry (ang. clusters) zwiększona skala przetwarzania, konieczność zastosowania nowych algorytmów zredukowana integracja pomiędzy elementami
Skala przetwarzania Sieci intranetowe (ang. intranets) różnorodność wiele centrów zarządzania brak wiedzy o stanie globalnym Internet brak scentralizowanego zarządzania rozproszenie geograficzne międzynarodowy charakterem sieci Klasy zastosowań Aplikacje wykorzystujące przetwarzanie rozproszone na wielu jednostkach obliczeniowych (ang. distributed supercomputing) Aplikacje wymagające dużej przepustowości (ang. high throughput) Aplikacje na żądanie (ang. on demand) Aplikacje intensywnie przetwarzające dane (ang. data intensive) Aplikacje umożliwiające współpracę (ang. collaborative)
Internet środowisko rozproszone Internet liczba użytkowników sieci Liczba użytkowników sieci Internet [mln] 1995 2002 2007? (2012) 45 445.9 1 200 2 000 Źródło: Computer Industry Almanac 02.2007
Internet dostęp do sieci Dostęp do sieci Internet wg krajów [ mln osób] USA Chiny Japonia Indie Niemcy 210.2 (197.8) 131.1 (119.5) 90.9 (86.3) 67.6 (50.6) 50.3 (46.3) Polska 13.9 (10.6) Źródło: Computer Industry Almanac 02.2007 Grid A computational grid is a hardware and software infrastructure that provides dependable, consistent, pervasive and inexpensive access to high-end computational capabilities / Ian Foster / usługa wiarygodna użytkownicy żądają pewności, że otrzymają przewidywalny, nieprzerwany poziom wydajności dzięki różnym elementom tworzącym GRID. usługa powszechnie dostępna (wszechobecna) usługa zawsze powinna być dostępna, niezależnie od tego gdzie znajduje się użytkownik tej usługi. usługa spójna potrzebny jest standardowy serwis, dostępny poprzez standardowe interfejsy, pracujący ze standardowymi parametrami. usługa relatywnie tania dostęp do usługi powinien być relatywnie tani, tak by korzystanie z takiej usługi było atrakcyjne także z ekonomicznego punktu widzenia.
Grid jak i dlaczego? Do czego potrzebne są sieci obliczeniowe? Jakie typy aplikacji będą wykorzystywały sieci obliczeniowe? Kto będzie używał sieci obliczeniowych? Jak będą używane sieci obliczeniowe? Co będzie związane z budową sieci obliczeniowych? Jakie problemy należy rozwiązać by sieci obliczeniowe stały się ogólnodostępne? Grid wyzwania nowe typy aplikacji nowe modele i narzędzia programowania nowe architektury systemów komputerowych nowe algorytmy i metody rozwiązywania problemów nowe techniki zarządzania zasobami nowe techniki zabezpieczające
Użytkownik Trzy spojrzenia na GRID Wirtualny komputer, który minimalizuje czas wykonania obliczeń oraz zapewnia dostęp do zasobów Programista Zestaw narzędzi i interfejsów zapewniających przezroczysty dostęp do danych Administrator Środowisko umożliwiające monitorowanie, administrowanie i bezpieczne używanie rozproszonych zasobów obliczeniowych, dyskowych oraz sieciowych Czego GRID nie może naruszać bezpieczeństwa i autonomii poszczególnych jednostek wchodzących w jego skład powodować konfliktów w działaniu z istniejącym już oprogramowaniem narzucać użytkownikom języków programowania, narzędzi, bibliotek do programowania równoległego, itp.
Co GRID powinien umożliwiać rozproszenie geograficzne zasobów obsługiwać heterogeniczność sprzętową i programową być połączony poprzez heterogeniczną sieć korzystać z ogólnie dostępnych, standardowych protokołów i interfejsów być odporny na zawodny sprzęt pozwalać na dynamikę dostępu do sprzętu zrzeszać różne organizacje ( wirtualne ) z ich własnymi politykami bezpieczeństwa i dostępu do zasobów Przykładowe projekty przetwarzania rozproszonego SETI@home Cure Cancer Fight Anthrax Smallpox Grid Prime Numbers Distributed.net GIMPS FreeDB.org The Internet Movie Database The Distributed Chess Project Wikipedia Dmoz Open Directory Project ClimatePrediction.net Lifemapper
SETI@home Poszukiwania cywilizacji pozaziemskich (ang. Search for Extra-Terrestrial Intelligence) Fakty i liczby : 1998 ogłoszono plany realizacji projektu SETI@home 400,000 chętnych wstępnie rejestruje się w ciągu następnego roku 1999 pierwsza wersja oprogramowania (Windows, Macintosh) 200,000 pobrań w ciągu tygodnia!!! Luty 2005 liczba uczestników - 5.361.313 mln, (z 226 krajów) Wykonano 6.523404e+21 operacji zmiennoprzecinkowych Średnia przepustowość (24h) - 225.73 TeraFLOPs/sec SETI@HOME : jak to działa? data recorder database server splitter work unit storage Otrzymane dane są dzielone na mniejsze porcje, które po zarejestrowaniu i skatalogowaniu trafiają do uczestników projektu clients Arecibo telescope Arecibo Observatory garbage collector U.C. Berkeley (server complex) data/result server Participants (worldwide)
SETI@HOME Work-units Źródło SETI@home 28 lutego 2005 Dane są dzielone na porcje po ok. 0,25 MB (tzn. work-units ), które są wysyłane do uczestników. [ 107 sekund, 10 khz (20kbps) danych 2mln bitow czyli 0,25 MB ] Dotychczas wygenerowano 218 553 918 próbek z danych uzyskanych za pomocą radioteleskopu w Arecibo. Dane te były przesłane na 1 344 taśmach, czyli średnio na jednej taśmie znajduje się 162 885 próbek. SETI@HOME Mapa nieba
Motywacja: Cure Cancer - Lek na raka Koszty leczenia: 37 mld $ bezp. koszty medyczne + 11 mld $ koszty pośrednie Dotychczasowe leki są niedoskonałe, działania uboczne, mało skuteczne Zadanie: Znaleźć molekuły, które będą najbardziej obiecującym punktem startowym w poszukiwaniu leku na raka. Wyniki: I etap analizy został zakończony, II etap trwa Łączny czas przetwarzania CPU (l:d:g:m:s) Zwrócono wyników Liczba uczestnikow Liczba komputerów 184,756:178:00:33:50 113,437,772 1,242,887 3,046,597 Katalog protein Vascular Endothelial Growth Factor Superoxide Dismutase Insulin Tyrosine Kinase RAS Proteins Cyclooxygenase C-ABL Tyrosine Kinase Fibroblast Growth Factor Receptor CDK-2 RAF Farnesyltransferase Protein-Tyrosine- Phosphatase 1B VEGFr1
Jak działa oprogramowanie? Świat walczy z wąglikiem! W świetle wydarzeń z 11 września 2001 grupa naukowców z uniwersytetu w Oxfordzie przygotowała projekt, którego celem było wsparcie badań nad skutecznym lekiem zwalczającym wąglika. Zadanie: Przeanalizować i wykluczyć możliwie jak największą liczbę molekuł, które nie będą skutecznym lekiem do walki z wąglikiem. W początkowym zbiorze wyodrębniono 3,57 miliardów (10 9 ) różnych cząstek chemicznych. Wyniki: Projekt zakończony spektakularnym sukcesem. Z początkowej liczby molekuł udało się wyodrębnić ok. 300,000 (10 5 ) cząstek, które warto analizować w kolejnych 3,57 etapach * 10 9 badań. Całość została wykonana w ciągu 24 dni (!!!) przy założeniu 5-krotnej 10 000 weryfikacji danych. 3 * 10 5 Łączny czas przetwarzania CPU (l:d:g:m:s) Zwrócono wyników 6,989:164:06:35:38 2,909,726
Dlaczego 1 googol = 10 100 liczba Avogadra = 6,022 x 10 23 liczba atomów lub cząsteczek lub innych cząstek materii w jednym molu substancji złożonej z tychże atomów lub cząsteczek lub cząstek. 70! = 1,19785717 10 100 na ile sposobów można ustawić 70 osób w rzędzie? Liczba Shanon a = 10 120 liczba możliwych partii szachowych Jak daleko jest Googol od nieskończoności? Dokaładnie tak samo daleko jak 1. początki (Uniwersytet Stanford, Backrub project, 1998): Sun Ultra II Dual 200MHz, 256MB of RAM, 3 x 9GB HDD i 6 x 4GB HDD 2 x 300 MHz Dual Pentium II, 512MB RAM, 9 x 9GB HDD 8 x 9GB HDD (ofiarowany prze IBM). 10 x 9GB HDD (własnoręcznie wykonany)
dzisiaj Ponad 450.000 serwerów (533MHz Intel Celeron 1,4GHz Intel Pentium III ) Jeden lub więcej 80GB HDD w każdym serwerze 2 4 GB RAM 5 farm serwerów (Kalifornia,Wirginia, Oregon), [dokładne dane nie są znane] ok. 6.000 procesorów 12.000 HDD Połączenie ze światem OC-48 (2488Mbit/s) Połączenia pomiędzy farmami OC-12 (622Mbit/s) w liczbach 115 międzynarodowych domen 16805 pracowników zatrudnionych na pełen etat obsługuje 104 języki 4 mld stron x 10kB = 40 TB 380 mln wizyt dziennie 2,9 mld zapytań, średnio 1000 żądań/sek 100 dok/s jest pobieranych przez roboty wyszukujące ~300 TeraFlops - moc obliczeniowa
Główne zadania Aktualizacja zawartości Indeksowanie przechowywanej zawartości Obsługa żądań użytkowników Schemat architektury Google Store Server URL Server Crawlers Anchors URL Resolver Indexer Repository Links Sorters Doc index Shards(Barrels) Lexicon Searcher PageRank Document Servers Google Web Server
Sortowanie rozproszone Rozważmy problem sortowania rozproszonego zbioru X składającego się z v różnych liczb naturalnych, w środowisku rozproszonym o n węzłach (procesorach), n < v. Zadaniem każdego procesu jest uporządkowanie przypisanej mu części zbioru liczb naturalnych i wyznaczenie elementu minimalnego Elementy minimalne są wysyłane do lewych sąsiadów. Po otrzymaniu wiadomości z wartością minimalną, proces wyznacza element maksymalny i wysyła go do prawego sąsiada. Sortowanie rozproszone: definicje Zbiór wstępnie podzielony na podzbiory X i v i min i max i P i liczba elementów zbioru X i minimalny element zbioru X i maksymalny element zbioru X i procesy tworzące przetwarzanie rozproszone topologii łańcucha skojarzone ze zbiorami X i. Pary procesów składowych P i, P i+1, połączone są kanałami dwukierunkowymi.
Sortowanie rozproszone przykład 7 8 9 4 2 5 3 6 1 7 3 1 4 2 8 6 5 9 1 3 2 4 8 5 7 6 9 1 2 3 5 4 6 8 7 9 Sortowanie rozproszone przykład (2) 7 8 8 4 2 5 3 13 6 18 7 7 4 2 1 3 21 6 6 5 8 2 1 7 4 3 23 5 6 7 5 8 2 1 4 7 3 5 6 8 0
Problem zakończenia Przed chwilą skończyłem Nuda, nie ma co robić. Uff, chyba koniec... Nie, jestem wolny Ja też skończyłem Czy już nastąpił koniec przetwarzania? Może jeszcze nie? Masz Pracujesz A ty coś Co Jak do słychać leci? roboty? Już skończyłem Rozproszony konsensus
Rozproszony konsensus Problem: jak dokonać wyboru? Niektóre procesy mogą ulec awarii... pierwsza otrzymana wartość od predefiniowanego nadawcy najmniejsza/największa otrzymana wartość większość wartości Kanały komunikacyjne mogą dostarczać wiadomości w innej kolejności różnym procesom... Problem: jak długo czekać na zebranie propozycji? FLP 85 - Impossibility result W 1985 roku Fischer, Lynch i Paterson dowiedli niemożliwości rozwiązania problemu Konsensusu w asynchronicznych systemach rozproszonych, w których może wystąpić chociaż pojedyncza awaria. Jak odróżnić w środowisku asynchronicznym proces wolno działający od procesu, który przestał funkcjonować poprawnie?
Rozproszony konsensus Potrzebne mechanizmy: detekcja awarii uporządkowana komunikacja Problem dwóch armii Teraz Atakujemy Skąd wystarczy Muszę generał o wysłać świcie, A, tylko będzie dać muszę Czy znać potwierdzenie, wiedział powiadomić oni generałowi kiedyś że jego że B, że wiem posłaniec otrzymałem generała wreszcie o terminie Bdotarł jego ataku? wiadomość Wyślę... gońca... z zaatakują? informacją Armia generała A ( 3000 żołnierzy ) Armia generała B ( 3000 żołnierzy ) Armia generała C ( 5000 żołnierzy )
Generałowie bizantyjscy Rok 193, Dydiusz oferuje po 25 tysięcy sestercji pretorianom, którzy po zamordowaniu cesarza Pertynaksa wystawili tron na sprzedaż. Wygrywa tą "aukcję" i zostaje obrany cesarzem. Wojska pograniczne zgłoszają kandydatury innych wodzów. Po 66 dniach panowania Dydiusz zostaje zamordowany. Po zamordowaniu cesarza Dydiusza nastały walki o tron pomiędzy namiestnikiem Pannonii Superior (jednej z prowincji naddunajskich) Septymiuszem Sewerem a Pescenniuszem Nigrem obwołanym cesarzem przez wojska wschodnie. Septymiusz Sewer pokonał Pescenniusza Nigra w 194 r. W wojnie z nim zburzył miasto Bizantion, którego mieszkańcy popierali Nigra i sam ogłosił się cesarzem. Uzgadnianie bizantyjskie ODWRÓT Z uwagi na znaczne siły wroga, tylko równoczesny atak naszych sił może nas doprowadzić do zwycięstwa... ATAK ATAK ATAK DECYZJA ATAK ATAK Wyróżniony jest ODWRÓT dowódca (generał)
Uzgadnianie bizantyjskie Jeśli spośród N procesów... poprawnych jest co najmniej 2 razy więcej niż uszkodzonych, (których jest B) można rozwiązać uzgadnianie bizantyjskie w B +1 rundach rozgłaszania decyzji (duża złożoność komunikacyjna) można rozwiązać szybciej, pod warunkiem, że wykorzystamy do podpisywania przekazywanych rozkazów kryptograficzną pieczęć nadawcy