Video: Phoenix: How (and Why) we put the SQL back into the NoSQL 2024
Een groot cluster van NoSQL-databases is een onhandig iets om te beheren. Apache Zookeeper tot de redding! Bijhouden welke knooppunten zich in het cluster bevinden, welke gegevens elk wordt beheerd en ervoor zorgen dat nieuwe masters worden geselecteerd wanneer een master faalt, zijn geen gemakkelijke taken.
Het coördineren van grote gedistribueerde systemen is daarom erg moeilijk. Zowel Hadoop als gedistribueerde NoSQL-databases hebben een manier nodig om de configuratie van een hele cluster te beheren. Dit proces moet ook zeer beschikbaar zijn, zodat het geen enkel storingspunt is in het totale systeem.
Dit is waar Apache Zookeeper binnenkomt. Zookeeper biedt een gedistribueerde, transactie-consistente coördinatiedienst.
Verschillende andere producten gebruiken Zookeeper voor clusterbeheer:
-
Apache Hadoop
-
Solr Cloud
-
Neo4j
-
Accumulo
-
HBase
-
Rackspace
-
Zynga
-
Yahoo! (voor verschillende van zijn services)
Zookeeper biedt een hiërarchische opslagstructuur in het geheugen die vergelijkbaar is met een computerbestandssysteem. Deze structuur wordt beheerd door de huidige Zookeeper-master en gerepliceerd tussen de andere knooppunten in de cluster. Een Zookeeper-cluster wordt een Zookeeper e nsemble genoemd.
Alleen de master beheert updates (schrijft) voor opslag. Deze wijzigingen worden gecontroleerd op schijf om ze duurzaam te maken en vervolgens gerepliceerd naar de andere Zookeeper-instanties in het ensemble.
Deze services slaan hun clusterconfiguratiegegevens op in Zookeeper. Sommigen van hen slaan ook de belangrijkste reeksen op voor scherven van hun database. Hiermee kunnen clients die gebruikmaken van een NoSQL-database die Zookeeper gebruikt communiceren met elke Zookeeper-server in het ensemble. Op deze manier kunnen klanten ontdekken welke NoSQL-servers de gegevens bevatten waarin ze geïnteresseerd zijn.
Door opzoeken welk knooppunt opslaat, wordt met het belangrijkste bereik de belasting van de NoSQL-servers tot een minimum beperkt, omdat ze geen verzoeken om gegevens hoeven door te sturen één NoSQL-knooppunt naar het knooppunt dat de gegevens daadwerkelijk bevat.
U kunt ook de gegevensopslag van Zookeeper gebruiken voor kortstondige opslag (opslag die niet langer zal duren dan een herstart van de service), wat handig is voor het opslaan van sessie- of andere runtime-gegevens.
Zookeeper-servers gebruiken deze kortstondige opslag om te bepalen wie de macht overneemt als een master faalt. Elke server maakt een genummerde efemere znode (opslagbestand) in de sleutelruimte. Als de Zookeeper-master (leider) een hardware-fout lijdt, wordt de eigenaar van de volgende znode in de reeks de master. Dit is een elegante oplossing en vermijdt het "kudde" -effect waarbij alle servers gedurende enkele seconden verwoed met elkaar communiceren om een nieuwe master te selecteren.
Zookeeper is een geweldige Java-oplossing voor de problemen die inherent zijn aan gecoördineerd systeembeheer en hoge beschikbaarheid. U kunt het gebruiken om zeer beschikbare services, waaronder berichtenservices, te implementeren. Dus, als u een nieuwe gedistribueerde dienst moet maken, overweeg dan om Zookeeper te gebruiken.