System rozproszony w swojej najprostszej definicji to grupa komputerów pracujących razem, które dla użytkownika końcowego wyglądają jak jeden. Maszyny mają wspólny stan, działają współbieżnie i mogą działać niezależnie bez wpływu na czas pracy całego systemu. Prawda jest taka, że zarządzanie takimi systemami to złożony temat pełen pułapek.
Przegląd systemu
Rozproszony system umożliwia współdzielenie zasobów (w tym oprogramowania) podłączonych do sieci w tym samym czasie.
Przykłady dystrybucji systemu:
- Tradycyjny stos. Te bazy danych są przechowywane w systemie plików jednego komputera. Zawsze, gdy użytkownik chce otrzymywać informacje, komunikuje się bezpośrednio z tą maszyną. Aby dystrybuować ten system bazy danych, musisz uruchomić go na wielu komputerach jednocześnie.
- Architektura rozproszona.
System rozproszonypozwala na skalowanie w poziomie i pionie. Na przykład jedynym sposobem na obsłużenie większego ruchu byłaby modernizacja sprzętu obsługującego bazę danych. Nazywa się to skalowaniem pionowym. Skalowanie w pionie jest dobre do pewnego limitu, po którym nawet najlepszy sprzęt nie poradzi sobie z zapewnieniem wymaganego ruchu.
Skalowanie w poziomie oznacza dodawanie większej liczby komputerów, a nie modernizację sprzętu na jednym. Skalowanie w pionie zwiększa wydajność do najnowszych możliwości sprzętowych w systemach rozproszonych. Możliwości te nie są wystarczające dla firm technologicznych o umiarkowanym lub dużym obciążeniu pracą. Najlepszą rzeczą w skalowaniu poziomym jest to, że nie ma ograniczeń rozmiaru. Gdy wydajność spada, po prostu dodaje się kolejną maszynę, co w zasadzie można wykonywać w nieskończoność.
Na poziomie korporacyjnym rozproszony system kontroli często obejmuje różne etapy. W procesach biznesowych w najbardziej wydajnych miejscach korporacyjnej sieci komputerowej. Na przykład w typowej dystrybucji wykorzystującej trójwarstwowy model systemu rozproszonego przetwarzanie danych odbywa się na komputerze PC w lokalizacji użytkownika, przetwarzanie biznesowe odbywa się na komputerze zdalnym, a dostęp do bazy danych i przetwarzanie danych odbywa się na zupełnie innym komputerze który zapewnia scentralizowany dostęp dla wielu procesów biznesowych. Zazwyczaj tego typu przetwarzanie rozproszonewykorzystuje model interakcji klient-serwer.
Główne zadania
Główne zadania rozproszonego systemu sterowania obejmują:
- Przejrzystość - Uzyskaj pojedynczy obraz systemu bez ukrywania lokalizacji, dostępu, migracji, współbieżności, przełączania awaryjnego, relokacji, trwałości i szczegółów zasobów dla użytkowników.
- Otwartość - upraszcza konfigurację i zmiany sieci.
- Niezawodność - w porównaniu z pojedynczym systemem sterowania powinien być niezawodny, spójny i mieć wysokie prawdopodobieństwo maskowania błędów.
- Wydajność - w porównaniu z innymi modelami modele rozproszone zapewniają wzrost wydajności.
- Skalowalne - te rozproszone systemy kontroli muszą być skalowalne pod względem terytorium, administracji lub rozmiaru.
Zadania systemów dystrybucji obejmują:
- Bezpieczeństwo to duży problem w środowisku rozproszonym, szczególnie w przypadku korzystania z sieci publicznych.
- Tolerancja na awarie - może być trudna, gdy model jest zbudowany z zawodnych komponentów.
- Koordynacja i dystrybucja zasobów - może być trudna, jeśli nie ma odpowiednich protokołów lub wymaganych zasad.
Rozproszone środowisko obliczeniowe
(DCE) to szeroko stosowany standard branżowy obsługujący takie przetwarzanie rozproszone. W Internecie dostawcy zewnętrzni oferują niektóre usługi ogólne,pasujące do tego modelu.
Przetwarzanie sieciowe to model obliczeniowy o rozproszonej architekturze dużej liczby komputerów, związany z rozwiązywaniem złożonego problemu. W modelu gridowym serwery lub komputery osobiste wykonują niezależne zadania i są luźno połączone ze sobą przez Internet lub sieci o niskiej prędkości.
Największym projektem w zakresie obliczeń siatkowych jest SETI@home, w ramach którego właściciele indywidualnych komputerów zgłaszają się na ochotnika do wykonywania niektórych z ich wielozadaniowych cykli przetwarzania przy użyciu swojego komputera w ramach projektu Search for Extraterrestrial Intelligence (SETI). Ten problem z komputerem wykorzystuje tysiące komputerów do pobierania i wyszukiwania danych radioteleskopu.
Jednym z pierwszych zastosowań przetwarzania siatkowego było złamanie kodu kryptograficznego przez grupę znaną obecnie jako distribution.net. Ta grupa również opisuje swój model jako przetwarzanie rozproszone.
Skalowanie bazy danych
Rozpowszechnianie nowych informacji od mastera do slave'a nie następuje natychmiast. W rzeczywistości istnieje okno czasowe, w którym można uzyskać nieaktualne informacje. Gdyby tak nie było, ucierpiałaby wydajność zapisu, ponieważ systemy rozproszone musiałyby synchronicznie czekać na propagację danych. Przychodzą z kilkoma kompromisami.
Korzystając z podrzędnej bazy danych, możliwe jest skalowanie w pewnym stopniu ruchu odczytu. Tutaj jest wiele opcji. Ale wystarczy podzielić ruch zapisu na kilkaserwerów, ponieważ nie może sobie z tym poradzić. Jednym ze sposobów jest użycie strategii replikacji z wieloma wzorcami. Tam, zamiast niewolników, jest kilka głównych węzłów obsługujących odczyt i zapis.
Inna metoda nazywa się shardingiem. Dzięki temu serwer jest podzielony na kilka mniejszych serwerów, zwanych shardami. Te fragmenty mają różne wpisy, tworzone są reguły dotyczące tego, które wpisy wchodzą do którego fragmentu. Bardzo ważne jest stworzenie takiej reguły, aby dane były rozłożone równomiernie. Możliwym podejściem do tego jest zdefiniowanie zakresów zgodnie z pewnymi informacjami o rekordach.
Ten klucz fragmentu powinien być wybierany bardzo ostrożnie, ponieważ obciążenie nie zawsze jest równe podstawom dowolnych kolumn. Jedyny fragment, który otrzymuje więcej żądań niż inne, nazywa się hotspotem i starają się zapobiec jego tworzeniu. Po podzieleniu dane rekalibracyjne stają się niezwykle kosztowne i mogą powodować znaczne przestoje.
Algorytmy konsensusu bazy danych
Bazy danych są trudne do zaimplementowania w rozproszonych systemach bezpieczeństwa, ponieważ wymagają, aby każdy węzeł negocjował prawidłowe działanie przerwania lub zatwierdzenia. Ta jakość nazywana jest konsensusem i jest podstawowym problemem w budowaniu systemu dystrybucji. Osiągnięcie rodzaju umowy potrzebnej do rozwiązania problemu „commit” jest proste, jeśli zaangażowane procesy i sieć są całkowicie niezawodne. Jednak rzeczywiste systemy podlegają wielumożliwe awarie procesów sieciowych, zagubione, uszkodzone lub zduplikowane wiadomości.
Stwarza to problem i nie można zagwarantować, że właściwy konsensus zostanie osiągnięty w ograniczonym czasie w zawodnej sieci. W praktyce istnieją algorytmy, które w zawodnej sieci dość szybko osiągają konsensus. Cassandra faktycznie zapewnia lekkie transakcje dzięki wykorzystaniu algorytmu Paxos do rozproszonego konsensusu.
Przetwarzanie rozproszone jest kluczem do napływu przetwarzania dużych zbiorów danych, które było wykorzystywane w ostatnich latach. Jest to metoda rozbicia ogromnego zadania, takiego jak skumulowana suma 100 miliardów rekordów, z których żaden komputer nie jest w stanie samodzielnie zrobić praktycznie niczego, na wiele mniejszych zadań, które można zmieścić w jednej maszynie. Deweloper dzieli swoje ogromne zadanie na wiele mniejszych, wykonuje je równolegle na wielu maszynach, odpowiednio zbiera dane, wtedy pierwotny problem zostanie rozwiązany.
To podejście umożliwia skalowanie w poziomie - gdy jest duże zadanie, po prostu dodaj więcej węzłów do obliczeń. Zadania te od wielu lat realizuje model programowania MapReduce związany z implementacją do przetwarzania równoległego i generowania zbiorów big data z wykorzystaniem algorytmu rozproszonego na klastrze.
Obecnie MapReduce jest nieco przestarzały i powoduje pewne problemy. Pojawiły się inne architektury, które rozwiązują te problemy. Mianowicie Architektura Lambda dla rozproszonychsystemy przetwarzania przepływu. Postępy w tej dziedzinie przyniosły nowe narzędzia: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.
Systemy przechowywania i replikacji plików
Rozproszone systemy plików można traktować jako rozproszone magazyny danych. To jest to samo, co koncepcja - przechowywanie i dostęp do dużej ilości danych w klastrze maszyn, które są jedną jednostką. Zwykle idą w parze z przetwarzaniem rozproszonym.
Na przykład Yahoo jest znane z uruchamiania HDFS na ponad 42 000 węzłach w celu przechowywania 600 petabajtów danych od 2011 roku. Wikipedia definiuje różnicę polegającą na tym, że rozproszone systemy plików umożliwiają dostęp do plików przy użyciu tych samych interfejsów i semantyki, co pliki lokalne, a nie za pośrednictwem niestandardowego interfejsu API, takiego jak Cassandra Query Language (CQL).
Rozproszony system plików Hadoop (HDFS) to system używany do obliczeń w infrastrukturze Hadoop. Powszechnie służy do przechowywania i replikacji dużych plików (rozmiar GB lub TB) na wielu komputerach. Jego architektura składa się głównie z NameNodes i DataNodes.
NameNodes jest odpowiedzialny za przechowywanie metadanych dotyczących klastra, takich jak węzeł zawierający bloki plików. Działają jako koordynatorzy sieci, ustalając, gdzie najlepiej przechowywać i kopiować pliki, śledząc stan systemu. DataNodes po prostu przechowuje pliki i wykonuje polecenia, takie jak replikacja plików, nowy zapis iinne.
Nic dziwnego, że HDFS najlepiej nadaje się do obsługi komputerów z Hadoop, ponieważ zapewnia świadomość informacji o zadaniach. Określone zadania są następnie uruchamiane na węzłach przechowujących dane. Pozwala to na wykorzystanie lokalizacji danych - optymalizuje obliczenia i zmniejsza natężenie ruchu w sieci.
Międzyplanetarny system plików (IPFS) to ekscytujący nowy protokół/sieć peer-to-peer dla rozproszonego systemu plików. Wykorzystując technologię Blockchain, oferuje w pełni zdecentralizowaną architekturę bez jednego właściciela lub punktu awarii.
IPFS oferuje system nazewnictwa (podobny do DNS) zwany IPNS i umożliwia użytkownikom łatwe pobieranie informacji. Przechowuje plik poprzez wersjonowanie historyczne, podobnie jak robi to Git. Pozwala to na dostęp do wszystkich poprzednich stanów pliku. Wciąż przechodzi intensywny rozwój (v0.4 w momencie pisania), ale widział już projekty zainteresowane jego zbudowaniem (FileCoin).
System wiadomości
Systemy przesyłania wiadomości zapewniają centralną lokalizację do przechowywania i dystrybucji wiadomości we wspólnym systemie. Pozwalają oddzielić logikę aplikacji od bezpośredniej komunikacji z innymi systemami.
Znana skala - klaster Kafka LinkedIn przetwarzał 1 bilion wiadomości dziennie, a szczytowa liczba wiadomości wynosiła 4,5 miliona na sekundę.
W prostych słowach platforma do przesyłania wiadomości działa w następujący sposób:
- Wiadomośćprzekazywane z aplikacji, która potencjalnie ją tworzy, zwanej producentem, trafia na platformę i jest odczytywane z wielu aplikacji, zwanych konsumentami.
- Jeśli potrzebujesz przechowywać określone zdarzenie w wielu miejscach, np. utworzyć użytkownika dla bazy danych, przechowywania, usługi wysyłania wiadomości e-mail, platforma do przesyłania wiadomości jest najczystszym sposobem dystrybucji tej wiadomości.
Istnieje kilka popularnych, najwyższej klasy platform komunikacyjnych.
RabbitMQ to broker komunikatów, który umożliwia dokładniejsze sterowanie ich trajektoriami za pomocą reguł routingu i innych łatwo konfigurowalnych parametrów. Można go nazwać „inteligentnym” brokerem, ponieważ ma dużo logiki i ściśle monitoruje wiadomości, które przez niego przechodzą. Zapewnia opcje dla AP i CP z CAP.
Kafka to broker komunikatów, który jest nieco mniej funkcjonalny, ponieważ nie śledzi, które komunikaty zostały przeczytane, i nie pozwala na złożoną logikę routingu. Pomaga osiągnąć niesamowitą wydajność i reprezentuje największą obietnicę w tej przestrzeni dzięki aktywnemu rozwojowi systemów rozproszonych przez społeczność open-source i wsparciu zespołu Confluent. Kafka jest najbardziej popularna wśród firm high-tech.
Aplikacje do interakcji z maszynami
Ten system dystrybucji to grupa komputerów, które współpracują ze sobą, aby wyświetlać się użytkownikom końcowym jako osobny komputer. Maszyny te są w stanie ogólnym, sprawnejednocześnie i może pracować niezależnie bez wpływu na czas pracy całego systemu.
Jeśli uważasz, że baza danych jest rozproszona, tylko wtedy, gdy węzły współdziałają ze sobą w celu skoordynowania swoich działań. W tym przypadku jest to coś w rodzaju aplikacji uruchamiającej swój wewnętrzny kod w sieci peer-to-peer i jest klasyfikowana jako aplikacja rozproszona.
Przykłady takich aplikacji:
- Known Scale - rój BitTorrenta 193 000 węzłów dla odcinka Game of Thrones.
- Podstawowa technologia rejestrowania rozproszonych systemów Blockchain.
Księgi rozproszone można traktować jako niezmienną bazę danych tylko dla aplikacji, która jest replikowana, synchronizowana i udostępniana we wszystkich węzłach sieci dystrybucyjnej.
Dobrze znana skala – sieć Ethereum – zawierała 4,3 miliona transakcji dziennie 4 stycznia 2018 r. Korzystają ze wzorca Event Sourcing, który umożliwia przywrócenie stanu bazy danych w dowolnym momencie.
Blockchain to obecna podstawowa technologia wykorzystywana w rozproszonych księgach rachunkowych i faktycznie oznaczająca ich początek. Ta najnowsza i największa innowacja w przestrzeni rozproszonej stworzyła pierwszy prawdziwie rozproszony protokół płatności, bitcoin.
Blockchain to rozproszona księga z uporządkowaną listą wszystkich transakcji, które kiedykolwiek miały miejsce w jego sieci. Oferty są grupowane i przechowywane w blokach. Cały łańcuch bloków jest zasadniczo połączoną listą bloków. Określone blokisą drogie w tworzeniu i są ściśle powiązane ze sobą za pomocą kryptografii. Mówiąc najprościej, każdy blok zawiera specjalny skrót (zaczynający się od X zer) zawartości bieżącego bloku (w postaci drzewa Merkle) plus skrót poprzedniego bloku. Ten skrót wymaga dużej mocy procesora.
Przykłady rozproszonych systemów operacyjnych
Typy systemów są widoczne dla użytkownika, ponieważ są to systemy jednego użytkownika. Współdzielą swoją pamięć, dysk, a użytkownik nie ma problemu z poruszaniem się po danych. Użytkownik przechowuje coś na swoim komputerze, a plik jest przechowywany w wielu lokalizacjach, tj. podłączonych komputerach, dzięki czemu utracone dane można łatwo odzyskać.
Przykłady rozproszonych systemów operacyjnych:
- Windows Server 2003;
- Windows Server 2008;
- Windows Server 2012;
- UbuntuLinux (serwer Apache).
Jeżeli któryś komputer uruchamia się wyżej, to znaczy, jeśli wiele żądań jest wymienianych między poszczególnymi komputerami, w ten sposób zachodzi równoważenie obciążenia. W takim przypadku żądania są propagowane do sąsiedniego komputera. Jeśli sieć staje się bardziej obciążona, można ją rozbudować, dodając do sieci kolejne systemy. Plik i foldery sieciowe są synchronizowane i stosowane są konwencje nazewnictwa, dzięki czemu podczas pobierania danych nie występują żadne błędy.
Buforowanie jest również używane podczas manipulowania danymi. Wszystkie komputery używają tej samej przestrzeni nazw do nazywania plików. Alesystem plików obowiązuje na każdym komputerze. Jeśli istnieją aktualizacje pliku, jest on zapisywany na jednym komputerze, a zmiany są propagowane na wszystkie komputery, więc plik wygląda tak samo.
Pliki są blokowane podczas procesu odczytu/zapisu, więc nie ma zakleszczenia między różnymi komputerami. Występują również sesje, takie jak odczytywanie, zapisywanie plików w jednej sesji i zamykanie sesji, a następnie inny użytkownik może zrobić to samo i tak dalej.
Korzyści z używania
System operacyjny zaprojektowany, aby ułatwić ludziom codzienne życie. Ze względu na korzyści i potrzeby użytkowników system operacyjny może być pojedynczym użytkownikiem lub rozproszony. W rozproszonym systemie zasobów wiele komputerów jest ze sobą połączonych i współdzieli swoje zasoby.
Korzyści z tego:
- Jeśli jeden komputer w takim systemie jest wadliwy lub uszkodzony, inny węzeł lub komputer zajmie się tym.
- Można łatwo dodać więcej zasobów.
- Zasoby, takie jak drukarki, mogą obsługiwać wiele komputerów.
To jest krótki opis systemu dystrybucji, dlaczego jest używany. Kilka ważnych rzeczy, o których należy pamiętać: są złożone i wybierane ze względu na skalę i cenę, a także trudniej z nimi pracować. Systemy te są rozproszone w kilku kategoriach pamięci: komputery, systemy plików i wiadomości, rejestry, aplikacje. A wszystko to jest bardzo powierzchowne w przypadku złożonego systemu informacyjnego.