Dyrepasser er en distribueret, open source-koordinationstjeneste til distribuerede applikationer. Det afslører et enkelt sæt primitiver til at implementere tjenester på højere niveau til synkronisering, konfigurationsvedligeholdelse og gruppe- og navngivning.
I et distribueret system er der flere noder eller maskiner, der skal kommunikere med hinanden og koordinere deres handlinger. ZooKeeper giver en måde at sikre, at disse noder er opmærksomme på hinanden og kan koordinere deres handlinger. Det gør det ved at opretholde et hierarkisk træ af data noder kaldet Znodes , som kan bruges til at gemme og hente data og vedligeholde tilstandsoplysninger. ZooKeeper leverer et sæt primitiver, såsom låse, barrierer og køer, der kan bruges til at koordinere nodernes handlinger i et distribueret system. Det giver også funktioner som ledervalg, failover og gendannelse, som kan hjælpe med at sikre, at systemet er modstandsdygtigt over for fejl. ZooKeeper er meget udbredt i distribuerede systemer som Hadoop, Kafka og HBase, og det er blevet en væsentlig komponent i mange distribuerede applikationer.
Hvorfor har vi brug for det?
- Koordinationstjenester : Integration/kommunikation af tjenester i et distribueret miljø.
- Koordineringstjenester er komplekse at få rigtigt. De er især tilbøjelige til fejl såsom løbsforhold og dødvande.
- Race tilstand - To eller flere systemer forsøger at udføre en opgave.
- dødvande – To eller flere operationer venter på hinanden.
- For at gøre koordineringen mellem distribuerede miljøer let, kom udviklerne med en idé kaldet zookeeper, så de ikke behøver at fritage distribuerede applikationer fra ansvaret for at implementere koordinationstjenester fra bunden.
Hvad er distribueret system?
- Flere computersystemer arbejder på et enkelt problem.
- Det er et netværk, der består af autonome computere, der er forbundet ved hjælp af distribueret middleware.
- Nøglefunktioner : Samtidig, ressourcedeling, uafhængig, global, større fejltolerance og pris/ydelsesforhold er meget bedre.
- Nøglemål s: Gennemsigtighed, Pålidelighed, Ydeevne, Skalerbarhed.
- Udfordringer : Sikkerhed, Fejl, Koordinering og ressourcedeling.
Koordinationsudfordring
- Hvorfor er koordination i et distribueret system det svære problem?
- Koordinering eller konfigurationsstyring for en distribueret applikation, der har mange systemer.
- Master Node, hvor klyngedataene er gemt.
- Arbejdernoder eller slaveknudepunkter henter dataene fra denne masterknude.
- enkelt fejlpunkt.
- synkronisering er ikke let.
- Omhyggeligt design og implementering er nødvendig.
Apache Zookeeper
Apache Zookeeper er en distribueret, open source-koordinationstjeneste til distribuerede systemer. Det giver et centralt sted for distribuerede applikationer til at lagre data, kommunikere med hinanden og koordinere aktiviteter. Zookeeper bruges i distribuerede systemer til at koordinere distribuerede processer og tjenester. Det giver en enkel, træstruktureret datamodel, en simpel API og en distribueret protokol for at sikre datakonsistens og tilgængelighed. Zookeeper er designet til at være yderst pålidelig og fejltolerant, og den kan håndtere høje niveauer af læse- og skrivegennemstrømning.
Zookeeper er implementeret i Java og er meget udbredt i distribuerede systemer, især i Hadoop-økosystemet. Det er et Apache Software Foundation-projekt og er udgivet under Apache License 2.0.
Zookeepers arkitektur

Zookeeper tjenester
ZooKeeper-arkitekturen består af et hierarki af noder kaldet znodes, organiseret i en trælignende struktur. Hver znode kan gemme data og har et sæt tilladelser, der styrer adgangen til znoden. Znoderne er organiseret i et hierarkisk navneområde, der ligner et filsystem. I roden af hierarkiet er rod-znoden, og alle andre znoder er børn af rod-znoden. Hierarkiet ligner et filsystemhierarki, hvor hver znode kan have børn og børnebørn og så videre.
Vigtige komponenter i Zookeeper

ZooKeeper Services
- Leder & følger
- Anmodningsprocessor – Aktiv i Leader Node og er ansvarlig for behandling af skriveanmodninger. Efter behandling sender den ændringer til følgernoderne
- Atomic Broadcast – Til stede i både Leader Node og Follower Node. Det er ansvarligt for at sende ændringerne til andre noder.
- In-memory databaser (Replikerede databaser)-Den er ansvarlig for at opbevare dataene i dyrepasseren. Hver node indeholder sine egne databaser. Data skrives også til filsystemet, hvilket giver retablering i tilfælde af problemer med klyngen.
Andre komponenter
- Klient – En af noderne i vores distribuerede applikationsklynge. Få adgang til oplysninger fra serveren. Hver klient sender en besked til serveren for at lade serveren vide, at klienten er i live.
- Server - Leverer alle tjenester til kunden. Giver anerkendelse til klienten.
- Ensemble – Gruppe af Zookeeper-servere. Det mindste antal noder, der kræves for at danne et ensemble, er 3.
Zookeeper datamodel

ZooKeeper datamodel
I Zookeeper gemmes data i et hierarkisk navneområde, der ligner et filsystem. Hver node i navnerummet kaldes en Znode, og den kan gemme data og have børn. Znodes ligner filer og mapper i et filsystem. Zookeeper leverer en simpel API til at oprette, læse, skrive og slette Znodes. Det giver også mekanismer til at detektere ændringer i de data, der er gemt i Znodes, såsom ure og triggere. Znodes opretholder en statistisk struktur, der inkluderer: Versionsnummer, ACL, Timestamp, Data Length
Typer af Znodes :
- Udholdenhed : I live, indtil de eksplicit slettes.
- Ephemeral : Aktiv indtil klientforbindelsen er aktiv.
- Sekventiel : Enten vedvarende eller flygtig.
Hvorfor har vi brug for ZooKeeper i Hadoop?
Zookeeper bruges til at administrere og koordinere noderne i en Hadoop-klynge, inklusive NameNode, DataNode og ResourceManager. I en Hadoop-klynge hjælper Zookeeper med at:
- Vedligehold konfigurationsoplysninger: Zookeeper gemmer konfigurationsoplysningerne for Hadoop-klyngen, inklusive placeringen af NameNode, DataNode og ResourceManager.
- Administrer klyngens tilstand: Zookeeper sporer knudepunkternes tilstand i Hadoop-klyngen og kan bruges til at registrere, når en knude er fejlet eller blevet utilgængelig.
- Koordiner distribuerede processer: Zookeeper kan bruges til at koordinere distribuerede processer, såsom jobplanlægning og ressourceallokering, på tværs af noderne i en Hadoop-klynge.
Zookeeper hjælper med at sikre tilgængeligheden og pålideligheden af en Hadoop-klynge ved at levere en central koordineringsservice for knudepunkterne i klyngen.
Hvordan fungerer ZooKeeper i Hadoop?
ZooKeeper fungerer som et distribueret filsystem og afslører et simpelt sæt API'er, der gør det muligt for klienter at læse og skrive data til filsystemet. Den gemmer sine data i en trælignende struktur kaldet en znode, som kan opfattes som en fil eller en mappe i et traditionelt filsystem. ZooKeeper bruger en konsensusalgoritme til at sikre, at alle dets servere har en ensartet visning af de data, der er gemt i Znoderne. Dette betyder, at hvis en klient skriver data til en znode, vil disse data blive replikeret til alle de andre servere i ZooKeeper-ensemblet.
En vigtig egenskab ved ZooKeeper er dens evne til at understøtte forestillingen om et ur. Et ur giver en klient mulighed for at registrere sig for meddelelser, når de data, der er gemt i en znode, ændres. Dette kan være nyttigt til at overvåge ændringer af de data, der er gemt i ZooKeeper og reagere på disse ændringer i et distribueret system.
I Hadoop bruges ZooKeeper til en række forskellige formål, herunder:
- Lagring af konfigurationsoplysninger: ZooKeeper bruges til at gemme konfigurationsoplysninger, der deles af flere Hadoop-komponenter. For eksempel kan det bruges til at gemme placeringerne af NameNodes i en Hadoop-klynge eller adresserne på JobTracker-noder.
- Leverer distribueret synkronisering: ZooKeeper bruges til at koordinere aktiviteterne for forskellige Hadoop-komponenter og sikre, at de arbejder sammen på en ensartet måde. For eksempel kan det bruges til at sikre, at kun én NameNode er aktiv ad gangen i en Hadoop-klynge.
- Vedligeholdelse af navngivning: ZooKeeper bruges til at opretholde en centraliseret navngivningstjeneste for Hadoop-komponenter. Dette kan være nyttigt til at identificere og lokalisere ressourcer i et distribueret system.
ZooKeeper er en væsentlig komponent i Hadoop og spiller en afgørende rolle i at koordinere aktiviteten af dets forskellige underkomponenter.
Læsning og skrivning i Apache Zookeeper
ZooKeeper giver en enkel og pålidelig grænseflade til læsning og skrivning af data. Dataene gemmes i et hierarkisk navneområde, der ligner et filsystem, med noder kaldet znodes. Hver znode kan gemme data og have underordnede znoder. ZooKeeper-klienter kan læse og skrive data til disse znoder ved at bruge henholdsvis getData()- og setData()-metoderne. Her er et eksempel på læsning og skrivning af data ved hjælp af ZooKeeper Java API:
Java
// Connect to the ZooKeeper ensemble> ZooKeeper zk =>new> ZooKeeper(>'localhost:2181'>,>3000>,>null>);> // Write data to the znode '/myZnode'> String path =>'/myZnode'>;> String data =>'hello world'>;> zk.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);> // Read data from the znode '/myZnode'> byte>[] bytes = zk.getData(path,>false>,>null>);> String readData =>new> String(bytes);> // Prints 'hello world'> System.out.println(readData);> // Closing the connection> // to the ZooKeeper ensemble> zk.close();> |
>
>
Python3
from> kazoo.client>import> KazooClient> # Connect to ZooKeeper> zk>=> KazooClient(hosts>=>'localhost:2181'>)> zk.start()> # Create a node with some data> zk.ensure_path(>'/gfg_node'>)> zk.>set>(>'/gfg_node'>, b>'some_data'>)> # Read the data from the node> data, stat>=> zk.get(>'/gfg_node'>)> print>(data)> # Stop the connection to ZooKeeper> zk.stop()> |
>
afinstaller angular cli
>
Session og ure
Session
- Anmodninger i en session udføres i FIFO-rækkefølge.
- Når sessionen er etableret, så Sessions ID er tildelt kunden.
- Kunden sender Hjerteslag for at holde sessionen gyldig
- session timeout er normalt repræsenteret i millisekunder
Ure
- Ure er mekanismer for klienter til at få meddelelser om ændringerne i Zookeeperen
- Klienten kan se, mens han læser en bestemt znode.
- Znodes ændringer er modifikationer af data forbundet med znoderne eller ændringer i znodens børn.
- Ure udløses kun én gang.
- Hvis sessionen er udløbet, fjernes ure også.