Zookeeper - przegląd
ZooKeeper to rozproszona usługa koordynacyjna do zarządzania dużą liczbą hostów. Koordynacja i zarządzanie usługą w środowisku rozproszonym to skomplikowany proces. ZooKeeper rozwiązuje ten problem dzięki prostej architekturze i API. ZooKeeper pozwala programistom skupić się na podstawowej logice aplikacji bez martwienia się o rozproszony charakter aplikacji.
Struktura ZooKeeper została pierwotnie zbudowana w „Yahoo!” aby uzyskać dostęp do swoich aplikacji w łatwy i niezawodny sposób. Później Apache ZooKeeper stał się standardem zorganizowanej usługi używanej przez platformy Hadoop, HBase i inne rozproszone platformy. Na przykład Apache HBase używa ZooKeeper do śledzenia stanu rozproszonych danych.
Zanim przejdziemy dalej, ważne jest, abyśmy wiedzieli co nieco o aplikacjach rozproszonych. Zacznijmy więc dyskusję od szybkiego przeglądu aplikacji rozproszonych.
Aplikacja rozproszona
Rozproszona aplikacja może działać w wielu systemach w sieci w danym czasie (jednocześnie), koordynując się między sobą w celu wykonania określonego zadania w szybki i efektywny sposób. Zwykle złożone i czasochłonne zadania, których wykonanie przez aplikację nierozproszoną (działającą w jednym systemie) zajmie wiele godzin, może zostać wykonane w ciągu kilku minut przez aplikację rozproszoną, wykorzystując możliwości obliczeniowe całego zaangażowanego systemu.
Czas potrzebny na wykonanie zadania można dodatkowo skrócić, konfigurując aplikację rozproszoną tak, aby działała na większej liczbie systemów. Grupa systemów, w których działa aplikacja rozproszona, nosi nazwęCluster a każda maszyna działająca w klastrze nosi nazwę Node.
Aplikacja rozproszona składa się z dwóch części, Server i Clientpodanie. Aplikacje serwerowe są w rzeczywistości rozproszone i mają wspólny interfejs, dzięki czemu klienci mogą łączyć się z dowolnym serwerem w klastrze i uzyskiwać ten sam wynik. Aplikacje klienckie to narzędzia do interakcji z aplikacjami rozproszonymi.
Korzyści z aplikacji rozproszonych
Reliability - Awaria jednego lub kilku systemów nie powoduje awarii całego systemu.
Scalability - Wydajność można zwiększyć w razie potrzeby, dodając więcej maszyn z niewielkimi zmianami w konfiguracji aplikacji bez przestojów.
Transparency - Ukrywa złożoność systemu i przedstawia się jako pojedyncza jednostka / aplikacja.
Wyzwania aplikacji rozproszonych
Race condition- Dwie lub więcej maszyn próbujących wykonać określone zadanie, które w rzeczywistości musi być wykonane tylko przez jedną maszynę w danym momencie. Na przykład współdzielone zasoby powinny być modyfikowane tylko przez jedną maszynę w danym momencie.
Deadlock - Dwie lub więcej operacji czekających na siebie w nieskończoność.
Inconsistency - Częściowa awaria danych.
Do czego służy Apache ZooKeeper?
Apache ZooKeeper to usługa używana przez klaster (grupę węzłów) do koordynowania między sobą i utrzymywania współdzielonych danych za pomocą zaawansowanych technik synchronizacji. ZooKeeper jest sam w sobie aplikacją rozproszoną, która zapewnia usługi pisania aplikacji rozproszonej.
Typowe usługi świadczone przez ZooKeeper są następujące:
Naming service- Identyfikacja węzłów w klastrze według nazwy. Jest podobny do DNS, ale dla węzłów.
Configuration management - Najnowsze i aktualne informacje o konfiguracji systemu dla węzła łączącego.
Cluster management - Dołączanie / opuszczanie węzła w klastrze i status węzła w czasie rzeczywistym.
Leader election - Wybór węzła na lidera w celu koordynacji.
Locking and synchronization service- Blokowanie danych podczas ich modyfikacji. Mechanizm ten pomaga w automatycznym odzyskiwaniu po awarii podczas łączenia innych aplikacji rozproszonych, takich jak Apache HBase.
Highly reliable data registry - Dostępność danych nawet w przypadku awarii jednego lub kilku węzłów.
Aplikacje rozproszone oferują wiele korzyści, ale stawiają też kilka złożonych i trudnych do złamania wyzwań. Framework ZooKeeper zapewnia kompletny mechanizm pozwalający przezwyciężyć wszystkie wyzwania. Warunki wyścigu i zakleszczenie są obsługiwane za pomocąfail-safe synchronization approach. Kolejną główną wadą jest niespójność danych, którą rozwiązuje ZooKeeperatomicity.
Korzyści z ZooKeeper
Oto zalety korzystania z ZooKeeper -
Simple distributed coordination process
Synchronization- Wzajemne wykluczanie i współpraca między procesami serwera. Ten proces pomaga w Apache HBase do zarządzania konfiguracją.
Ordered Messages
Serialization- Koduj dane zgodnie z określonymi zasadami. Upewnij się, że Twoja aplikacja działa spójnie. Tego podejścia można użyć w MapReduce do koordynowania kolejki w celu wykonania uruchomionych wątków.
Reliability
Atomicity - Transfer danych kończy się powodzeniem lub niepowodzeniem, ale żadna transakcja nie jest częściowa.