Apache ZooKeeper
Utvecklare | Apache Software Foundation |
---|---|
Stabil frisättning | 3.8.1 / 30 januari 2023
|
Förvar | ZooKeeper Repository |
Skrivet i | Java |
Operativ system | Cross-plattform |
Typ | Distribuerad databehandling |
Licens | Apache-licens 2.0 |
Hemsida |
Apache ZooKeeper är en öppen källkodsserver för mycket tillförlitlig distribuerad koordinering av molnapplikationer. Det är ett projekt från Apache Software Foundation .
ZooKeeper är i huvudsak en tjänst för distribuerade system som erbjuder ett hierarkiskt nyckel-värdelager , som används för att tillhandahålla en distribuerad konfigurationstjänst , synkroniseringstjänst och namnregister för stora distribuerade system (se Användningsfall ). ZooKeeper var ett underprojekt till Hadoop men är nu ett Apache-projekt på toppnivå i sig.
Översikt
ZooKeepers arkitektur stöder hög tillgänglighet genom redundanta tjänster . Kunderna kan alltså fråga en annan ZooKeeper-ledare om den första inte svarar. ZooKeeper-noder lagrar sina data i ett hierarkiskt namnutrymme, ungefär som ett filsystem eller en träddatastruktur . Klienter kan läsa från och skriva till noderna och på så sätt ha en delad konfigurationstjänst. ZooKeeper kan ses som ett atomärt sändningssystem , genom vilket uppdateringar är helt beställda . ZooKeeper Atomic Broadcast (ZAB)-protokollet är kärnan i systemet.
ZooKeeper används av företag inklusive Yelp , Rackspace , Yahoo! , Odnoklassniki , Reddit , NetApp SolidFire , Meta , Twitter och eBay samt företagssöksystem med öppen källkod som Solr .
ZooKeeper är modellerad efter Googles Chubby lock-tjänst och utvecklades ursprungligen på Yahoo! för att effektivisera processerna som körs på stora datakluster genom att lagra status i lokala loggfiler på ZooKeeper-servrarna. Dessa servrar kommunicerar med klientdatorerna för att ge dem informationen. ZooKeeper utvecklades för att fixa de buggar som uppstod när distribuerade big-data-applikationer distribuerades.
Några av de främsta funktionerna i Apache ZooKeeper är:
- Pålitligt system: Detta system är mycket pålitligt eftersom det fortsätter att fungera även om en nod misslyckas.
- Enkel arkitektur: Arkitekturen hos ZooKeeper är ganska enkel eftersom det finns en delad hierarkisk namnrymd som hjälper till att koordinera processerna.
- Snabb bearbetning: ZooKeeper är särskilt snabb i "läsdominanta" arbetsbelastningar (dvs. arbetsbelastningar där läsning är mycket vanligare än skrivning).
- Skalbar: Prestandan hos ZooKeeper kan förbättras genom att lägga till noder.
Arkitektur
Några vanliga terminologier angående ZooKeeper-arkitekturen:
- Nod: Systemen installerade på klustret
- ZNode: Noderna där statusen uppdateras av andra noder i klustret
- Klientapplikationer: Verktygen som interagerar med de distribuerade applikationerna
- Serverapplikationer: Tillåter klientapplikationerna att interagera med ett gemensamt gränssnitt
Tjänsterna i klustret replikeras och lagras på en uppsättning servrar (kallas en "ensemble"), som var och en upprätthåller en databas i minnet som innehåller hela dataträdet för tillståndet samt en transaktionslogg och ögonblicksbilder som lagras konstant. Flera klientapplikationer kan ansluta till en server och varje klient upprätthåller en TCP-anslutning genom vilken den skickar förfrågningar och hjärtslag och tar emot svar och tittar på händelser för övervakning.
Användningsfall
Typiska användningsfall för ZooKeeper är:
- Namngivningstjänst
- Konfigurationshantering
- Datasynkronisering
- Ledarval
- Meddelandekö
- Aviseringssystem
Klientbibliotek
Utöver klientbiblioteken som ingår i ZooKeeper-distributionen finns ett antal tredjepartsbibliotek som Apache Curator och Kazoo tillgängliga som gör användningen av ZooKeeper enklare, lägger till ytterligare funktionalitet, ytterligare programmeringsspråk, etc.
Apache-projekt med ZooKeeper
- Apache Hadoop
- Apache Accumulo
- Apache HBase
- Apache Hive
- Apache Kafka
- Apache Drill
- Apache Solr
- Apache Spark
- Apache NiFi
- Apache Druid
- Apache Helix
- Apache Pinot
- Apache bokhållare
- Apache Pulsar