Video: SolrCloud: the 'Search First' NoSQL database 2025
En stor gruppe af NoSQL-databaser er en uhåndterlig ting at håndtere. Apache Zookeeper til undsætning! At holde styr på hvilke knuder der findes i klyngen, hvilke data hver styrer og sikre, at nye mestre vælges, når en mester fejler, er ikke letopgaver.
Koordinering af store distribuerede systemer er derfor meget vanskeligt. Både Hadoop og distribuerede NoSQL-databaser har brug for en måde at styre konfigurationen af en hel klynge på. Denne proces skal også være yderst tilgængelig, så det ikke er et enkelt punkt i fiasko i det samlede system.
Her kommer Apache Zookeeper ind. Zookeeper tilbyder en distribueret, transaktionsmæssigt konsekvent koordinationsservice.
Flere andre produkter bruger Zookeeper til klyngehåndtering:
-
Apache Hadoop
-
Solr Cloud
-
Neo4j
-
Accumulo
-
HBase
-
Rackspace
-
Zynga
-
Yahoo! (for flere af sine tjenester)
Zookeeper giver en hierarkisk lagringsstruktur i hukommelse, der ligner et computersystem. Denne struktur styres af den nuværende Zookeeper mester og replikeres blandt de andre knudepunkter i klyngen. En Zookeeper-klynge hedder en Zookeeper e nsemble.
Kun mesteren administrerer opdateringer (skriver) til lagring. Disse ændringer er kontrolleret til disken for at gøre dem holdbare og derefter gentaget til de andre Zookeeper-instanser i ensemblet.
Disse tjenester gemmer deres klyngekonfigurationsdata i Zookeeper. Nogle af dem gemmer også nøgleområderne for shards i deres database. Dette gør det muligt for kunder, der bruger en NoSQL-database, der bruger Zookeeper til at kommunikere med enhver Zookeeper-server i ensemblet. På denne måde kan klienter opdage, hvilke NoSQL-servere der indeholder de data, de er interesseret i.
Se på hvilken knude, der opbevarer hvilket nøgleområde der minimerer belastningen på NoSQL-serverne, fordi de ikke behøver at videresende anmodninger om data fra et NoSQL-knudepunkt til den knude, der faktisk indeholder dataene.
Du kan også bruge Zookeeper's datalagring til ephemeral storage (opbevaring, der ikke varer længere end en genstart af tjenesten), som er nyttig til opbevaring af session eller andre runtime data.
Zookeeper-servere bruger denne ephemeral storage til at bestemme hvem der overtager, hvis en mester fejler. Hver server opretter en nummereret ephemeral znode (storage file) i nøglepladsen. Hvis Zookeeper master (leder) lider af en hardwarefejl, bliver ejeren af den næste znode i sekvensen mesteren. Dette er en elegant løsning og undgår "besætning" -effekten, hvor alle servere kommunikerer frantically med hinanden i et par sekunder for at vælge en ny mester.
Zookeeper er en fantastisk Java-løsning på problemerne i forbindelse med koordineret systemstyring og høj tilgængelighed. Du kan bruge den til at implementere højt tilgængelige tjenester, herunder messaging-tjenester. Så hvis du har brug for at oprette en ny distribueret service, overvej at bruge Zookeeper.