Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 8811|Odpowiedź: 0

Czym dokładnie zajmuje się opiekun zoo-analityczny?

[Skopiuj link]
Opublikowano 18.07.2017 14:19:01 | | |

Zookeeper jest podprojektem Hadoop i chociaż wywodzi się z Hadoop, zauważyłem, że Zookeeper coraz częściej korzysta z rozproszonych frameworków poza Hadoop. Dziś chcę porozmawiać o Zookeeperze, w tym artykule nie będziemy mówić o tym, jak korzystać z Zookeepera, lecz o tym, jakie są praktyczne zastosowania Zookeepera, jakie typy aplikacji mogą wykorzystać jego zalety oraz wreszcie opowiedzieć, jaką rolę Zookeeper może odegrać w rozproszonej architekturze stron internetowych.
Zookeeper to wysoce niezawodny system koordynacji dla dużych, rozproszonych systemów. Z tej definicji wiemy, że Zookeeper to skoordynowany system działający na rozproszonych systemach. Dlaczego systemy rozproszone potrzebują systemu koordynacji? Powody są następujące:

Opracowanie systemu rozproszonego to bardzo trudna sprawa, a trudność ta głównie odzwierciedla się w "częściowej awarii" systemu rozproszonego. "Częściowa awaria" odnosi się do przesyłania informacji między dwoma węzłami sieci; jeśli sieć zawiedzie, nadawca nie może wiedzieć, czy odbiorca odebrał wiadomość, a przyczyna tej awarii jest złożona; odbiorca mógł, ale nie musiał otrzymać wiadomości przed błędem sieciowym, albo proces odbiorcy jest martwy. Jedynym sposobem, by nadawca mógł uzyskać prawdziwy obraz, jest ponowne połączenie się z odbiorcą i zapytanie odbiorcy, dlaczego doszło do błędu, co jest problemem "częściowej awarii" w rozwoju systemów rozproszonych.

Zookeeper to ramy do rozwiązywania "częściowej awarii" systemów rozproszonych. Zookeeper nie pozwala systemom rozproszonym unikać problemów z "częściowymi awariami", ale pozwala systemom rozproszonym prawidłowo radzić sobie z takimi problemami podczas częściowych awarii, dzięki czemu systemy rozproszone mogą działać normalnie.

Porozmawiajmy o praktycznym zastosowaniu Zookeeper:

Scenariusz 1: Istnieje grupa serwerów, które świadczą określoną usługę klientowi (na przykład strona serwerowa rozproszonej strony, którą wcześniej stworzyłem, to klaster składający się z czterech serwerów do obsługi klastra front-endowego), i mamy nadzieję, że klient znajdzie serwer w klastrze serwerów za każdym razem, gdy klient o to żąda, aby serwer mógł zapewnić klientowi usługi wymagane przez klienta. W tym scenariuszu musimy mieć listę serwerów w naszym programie, z której odczytujemy listę serwerów za każdym razem, gdy klient o nią żąda. Wtedy ta podlista oczywiście nie może być przechowywana na serwerze jednego węzła, bo w przeciwnym razie węzeł się zawiesi i cały klaster przestanie działać, a mamy nadzieję, że ta lista będzie wtedy w dużej mierze dostępna. Jeśli serwer z listy pamięci zostanie uszkodzony, inne serwery mogą natychmiast go zastąpić, a uszkodzony serwer może zostać usunięty z listy, tak aby uszkodzony serwer mógł wycofać się z pracy całego klastra, a wszystkie te operacje nie będą obsługiwane przez uszkodzony serwer, lecz przez zwykły serwer w klastrze. Jest to aktywna, rozproszona struktura danych, która może aktywnie modyfikować stan elementów danych, gdy zmieniają się warunki zewnętrzne. Ramy Zookeeper zapewniają tę usługę. Nazwa tej usługi to: Unified Naming Service, która jest bardzo podobna do usługi JNDI w javaEE.

Scenariusz 2: Usługa rozproszonego zamka. Gdy system rozproszony manipuluje danymi, na przykład odczytując dane, analizując je, a w końcu modyfikując dane. W systemie rozproszonym operacje te mogą być rozproszone do różnych węzłów klastra, wtedy pojawia się problem spójności w procesie operacji danych; jeśli jest niespójny, otrzymujemy błędny wynik operacji; w programie pojedynczym procesie problem spójności jest łatwy do rozwiązania, ale trudniej jest dotrzeć do systemu rozproszonego, ponieważ operacje różnych serwerów w systemie rozproszonym są w niezależnych procesach, a wyniki pośrednie i procesy operacji muszą być przesyłane przez sieć. Wtedy osiągnięcie spójności operacji danych jest znacznie trudniejsze. Zookeeper oferuje usługę blokady, która rozwiązuje ten problem, pozwalając zapewnić spójność operacji danych podczas wykonywania operacji rozproszonych.

Scenariusz 3: Zarządzanie konfiguracją. W systemie rozproszonym wdrażamy aplikację usługową na n serwerach osobno, a pliki konfiguracyjne tych serwerów są takie same (na przykład w rozproszonym frameworku strony internetowej, który zaprojektowałem, po stronie serwera są 4 serwery, programy na 4 serwerach są takie same, a pliki konfiguracyjne są takie same), jeśli opcje konfiguracyjne plików konfiguracyjnych się zmieniają, musimy zmieniać te pliki konfiguracyjne pojedynczo, a jeśli trzeba zmienić, serwery są stosunkowo małe, te operacje nie są zbyt kłopotliwe, Jeśli mamy dużą liczbę rozproszonych serwerów, na przykład klaster Hadoop dużej firmy internetowej z tysiącami serwerów, to zmiana opcji konfiguracji może być kłopotliwa i niebezpieczna. W tym momencie Zookeeper może się przydać, możemy używać Zookeepera jako wysoko dostępnej pamięci konfiguracyjnej, przekazać go Zookeeperowi do zarządzania, kopiować plik konfiguracyjny klastra do węzła systemu plików Zookeepera, a następnie używać Zookeepera do monitorowania statusu pliku konfiguracyjnego we wszystkich rozproszonych systemach, gdy już okaże się, że plik konfiguracyjny się zmienił, Każdy serwer otrzyma powiadomienie od Zookeepera o synchronizacji plików konfiguracyjnych w Zookeeperze, a usługa Zookeeper zadba o to, by operacja synchronizacji była atomecyjna, aby zapewnić poprawną aktualizację plików konfiguracyjnych każdego serwera.

Scenariusz 4: Zapewnij funkcje naprawy usterek dla systemów rozproszonych. Zarządzanie klastrem jest trudne, a dodanie usługi zookeeper do systemu rozproszonego ułatwia nam zarządzanie klastrem. Najtrudniejszą częścią zarządzania klastrem jest zarządzanie błędami węzłów, Zookeeper pozwala klastrowi wybrać zdrowy węzeł jako master, który zna aktualny stan zdrowia każdego serwera w klastrze, a gdy jeden z nich ulegnie awarii, master powiadomi pozostałe serwery w klastrze, aby redystrybuować zadania obliczeniowe różnych węzłów. Zookeeper może nie tylko wykrywać błędy, ale także sprawdzać uszkodzony serwer, sprawdzać, jaki jest to błąd, a jeśli usterka da się naprawić, Zookeeper może automatycznie naprawić lub poinformować administratora systemu o przyczynie błędu, dzięki czemu administrator może szybko zlokalizować problem i naprawić usterkę węzła. Możesz mieć pytanie, co powinienem zrobić, jeśli główny sterownik jest uszkodzony? Zookeeper również to uwzględnia – Zookeeper ma wewnętrzny "algorytm wyboru liderów", mistrzowie mogą być wybierani dynamicznie, a gdy mistrz zawiodnie, Zookeeper może natychmiast wybrać nowego mistrza do zarządzania klastrem.

Porozmawiajmy o funkcjach Zookeepera:

ZooKeeper to uproszczeniowy system plików. Jest to trochę podobne do Hadoop, ale system plików ZooKeeper obsługuje małe pliki, podczas gdy Hadoop obsługuje bardzo duże pliki.

Zookeeper oferuje bogactwo "artefaktów", które umożliwiają koordynację wielu operacji i struktur danych oraz protokołów. Na przykład: kolejki rozproszone, rozproszone blokady oraz algorytm "wyboru lidera" grupy węzłów na tym samym poziomie.

ZooKeeper jest bardzo dostępny, jego stabilność jest całkiem dobra, rozproszone klastry mogą polegać na zarządzaniu klastrami Zookeeper, a ZooKeeper służy do uniknięcia problemu pojedynczych awarii systemów rozproszonych.

Zookeeper stosuje luźno powiązany tryb interakcji. Najbardziej widoczne jest to w tym, że Zookeeper udostępnia rozproszone blokady, które mogą służyć jako mechanizm mianowania, pozwalając uczestniczącym procesom odkrywać i współdziałać bez znajomości innych procesów (lub sieci), a uczestniczące strony nie muszą nawet istnieć jednocześnie, o ile zostawią wiadomość w Zookeeperze, a po zakończeniu procesu inny proces może odczytać tę wiadomość, tym samym rozdzielając relacje między węzłami.

ZooKeeper zapewnia współdzielone repozytorium dla klastra, z którego klaster może centralnie odczytywać i zapisywać współdzielone informacje, unikając programowania współdzielonych operacji dla każdego węzła i zmniejszając trudność rozwoju systemów rozproszonych.

Zookeeper odpowiada głównie za przechowywanie i zarządzanie danymi, na których wszyscy dbali, a następnie akceptację rejestracji obserwatorów; gdy status tych danych się zmieni, Zookeeper odpowiada za powiadomienie tych obserwatorów, którzy zarejestrowali się w Zookeeperze, aby odpowiednio reagowali, aby osiągnąć tryb zarządzania master/slave podobny do klastra.

Widać, że Zookeeper bardzo sprzyja rozwojowi systemów rozproszonych, co może uczynić je bardziej odpornymi i wydajnymi.

Niedawno uczestniczyłem w grupie zainteresowania hadoop w tym departamencie, instalowałem Hadoop, MapReduce, Hive i Hbase w środowisku testowym, a Zookeeper instalowałem wcześniej podczas instalacji Hbase. Zookeeper może świadczyć usługi, więc ponad połowa z tych 3 to 2, a ponad połowa z 4 to także dwa, więc instalacja trzech serwerów może osiągnąć efekt 4 serwerów. W trakcie nauki Hadoop czuję, że Zookeeper jest najtrudniejszym podprojektem do zrozumienia, nie chodzi o to, że jest technicznie odpowiedzialny, ale na to, że kierunek jego aplikacji jest dla mnie bardzo mylący, więc mój pierwszy artykuł o technologii Hadoop zaczyna się od Zookeepera i nie porusza konkretnej implementacji technicznej, ale z perspektywy scenariuszy aplikacji Zookeepera rozumiem dziedzinę aplikacji Zookeepera, myślę, że nauka Zookeepera będzie skuteczniejsza przy połowie wysiłku.

Powodem, dla którego chcę dziś mówić o Zookeeperze, jest uzupełnienie rozproszonego frameworka stron internetowych opisanych w moim poprzednim artykule. Chociaż architekturę strony zaprojektowałem jako strukturę rozproszoną, stworzyłem też prosty mechanizm obsługi błędów, taki jak mechanizm heartbeat, ale nadal nie ma sposobu na rozwiązanie pojedynczego punktu awarii klastra – jeśli serwer zostanie uszkodzony, klient spróbuje się z nim połączyć, co skutkuje blokowaniem niektórych żądań i marnotrawstwem zasobów serwera. Jednak na razie nie chcę modyfikować mojego frameworka, ponieważ zawsze czuję, że dodanie usługi zookeeper do istniejących usług wpłynie na efektywność strony. Na szczęście nasz dział również zauważył taki problem – opracuje potężne ramy zdalnych połączeń, oddzieli zarządzanie klastrem od zarządzania komunikacją oraz zapewni efektywne i dostępne usługi centralnie.

Przeniesiony z ttp://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3113923.html




Poprzedni:Lista katalogów mvc Odrzucona Ten wirtualny katalog nie pozwala na zawartość t...
Następny:JS/CSS CDN przyspiesza biblioteki publiczne
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com