Eläintarhanhoitaja on hajautettu avoimen lähdekoodin koordinointipalvelu hajautetuille sovelluksille. Se paljastaa yksinkertaisen joukon primitiivejä ylemmän tason palveluiden toteuttamiseksi synkronointia, asetusten ylläpitoa sekä ryhmien ja nimeämisen kannalta.
Hajautetussa järjestelmässä on useita solmuja tai koneita, joiden on kommunikoitava toistensa kanssa ja koordinoitava toimintaansa. ZooKeeper tarjoaa tavan varmistaa, että nämä solmut ovat tietoisia toisistaan ja voivat koordinoida toimintaansa. Se tekee tämän ylläpitämällä hierarkkista puuta datasolmuista nimeltä Znodes , jota voidaan käyttää tietojen tallentamiseen ja hakemiseen sekä tilatietojen ylläpitämiseen. ZooKeeper tarjoaa joukon primitiivejä, kuten lukkoja, esteitä ja jonoja, joita voidaan käyttää koordinoimaan hajautetun järjestelmän solmujen toimintaa. Se tarjoaa myös ominaisuuksia, kuten johtajan valinnan, vikasietoisuuden ja palautuksen, mikä voi auttaa varmistamaan, että järjestelmä on kestävä virheitä vastaan. ZooKeeperiä käytetään laajasti hajautetuissa järjestelmissä, kuten Hadoop, Kafka ja HBase, ja siitä on tullut olennainen osa monissa hajautetuissa sovelluksissa.
Miksi tarvitsemme sitä?
- Koordinointipalvelut : Palvelujen integrointi/viestintä hajautetussa ympäristössä.
- Koordinointipalvelut ovat monimutkaisia saada oikein. Ne ovat erityisen alttiita virheille, kuten kilpailuolosuhteille ja umpikujalle.
- Kisa kunto -Kaksi tai useampi järjestelmää yrittää suorittaa jonkin tehtävän.
- umpikuja – Kaksi tai useampi toimenpide odottaa toisiaan.
- Jotta hajautettujen ympäristöjen koordinointi olisi helppoa, kehittäjät keksivät idean nimeltä zookeeper, jotta heidän ei tarvitse vapauttaa hajautettujen sovellusten vastuuta koordinointipalvelujen toteuttamisesta tyhjästä.
Mikä on hajautettu järjestelmä?
- Useat tietokonejärjestelmät työskentelevät yhden ongelman parissa.
- Se on verkko, joka koostuu itsenäisistä tietokoneista, jotka on yhdistetty hajautetun väliohjelmiston avulla.
- Avainominaisuudet : Samanaikainen, resurssien jakaminen, riippumaton, globaali, parempi vikasietoisuus ja hinta/suorituskyky-suhde on paljon parempi.
- Keskeinen tavoite s: Läpinäkyvyys, Luotettavuus, Suorituskyky, Skaalautuvuus.
- Haasteet : Turvallisuus, vika, koordinointi ja resurssien jakaminen.
Koordinointihaaste
- Miksi koordinointi hajautetussa järjestelmässä on vaikea ongelma?
- Hajautetun sovelluksen koordinointi tai kokoonpanon hallinta, jossa on useita järjestelmiä.
- Pääsolmu, johon klusterin tiedot on tallennettu.
- Työntekijäsolmut tai orjasolmut saavat tiedot tästä pääsolmusta.
- yksi epäonnistumispiste.
- synkronointi ei ole helppoa.
- Tarvitaan huolellista suunnittelua ja toteutusta.
Apache Zookeeper
Apache Zookeeper on hajautettu, avoimen lähdekoodin koordinointipalvelu hajautetuille järjestelmille. Se tarjoaa hajautetuille sovelluksille keskeisen paikan tietojen tallentamiseen, kommunikointiin ja toimintojen koordinointiin. Zookeeperiä käytetään hajautetuissa järjestelmissä hajautettujen prosessien ja palvelujen koordinointiin. Se tarjoaa yksinkertaisen, puurakenteisen tietomallin, yksinkertaisen API:n ja hajautetun protokollan tietojen johdonmukaisuuden ja saatavuuden varmistamiseksi. Zookeeper on suunniteltu erittäin luotettavaksi ja vikasietoiseksi, ja se pystyy käsittelemään korkeaa luku- ja kirjoituskapasiteettia.
Zookeeper on toteutettu Javalla ja sitä käytetään laajalti hajautetuissa järjestelmissä, erityisesti Hadoop-ekosysteemissä. Se on Apache Software Foundation -projekti, ja se julkaistaan Apache License 2.0 -lisenssillä.
Zookeeperin arkkitehtuuri

Eläintarhanhoitajapalvelut
ZooKeeper-arkkitehtuuri koostuu znodeiksi kutsuttujen solmujen hierarkiasta, joka on järjestetty puumaiseen rakenteeseen. Jokainen znode voi tallentaa tietoja, ja sillä on joukko oikeuksia, jotka ohjaavat pääsyä zsolmuun. Zsolmut on järjestetty hierarkkiseen nimiavaruuteen, joka on samanlainen kuin tiedostojärjestelmä. Hierarkian juuressa on juuri-zsolmu, ja kaikki muut zsolmut ovat juuri-zsolmun jälkeläisiä. Hierarkia on samanlainen kuin tiedostojärjestelmähierarkia, jossa jokaisella znodella voi olla lapsia ja lastenlapsia ja niin edelleen.
Zookeeperin tärkeitä komponentteja

ZooKeeper-palvelut
- Johtaja & Seuraaja
- Pyydä prosessoria – Aktiivinen Leader Nodessa ja vastaa kirjoituspyyntöjen käsittelystä. Käsittelyn jälkeen se lähettää muutokset seuraajasolmuihin
- Atomic Broadcast – Läsnä sekä johtajasolmussa että seuraajasolmussa. Se on vastuussa muutosten lähettämisestä muille solmuille.
- Muistissa olevat tietokannat (Toistetut tietokannat) - Se on vastuussa tietojen tallentamisesta eläintarhanhoitajaan. Jokainen solmu sisältää omat tietokantansa. Tiedot kirjoitetaan myös tiedostojärjestelmään, mikä tarjoaa palautettavuuden mahdollisten klusterin ongelmien varalta.
Muut komponentit
- Asiakas – Yksi hajautetun sovellusklusterin solmuista. Pääsy tietoihin palvelimelta. Jokainen asiakas lähettää palvelimelle viestin ilmoittaakseen palvelimelle, että asiakas on elossa.
- Palvelin – Tarjoaa kaikki palvelut asiakkaalle. Antaa tunnustuksen asiakkaalle.
- Yhtye – Ryhmä Zookeeper-palvelimia. Ensemblen muodostamiseen vaadittavien solmujen vähimmäismäärä on 3.
Eläintarhanhoitajan tietomalli

ZooKeeper-tietomalli
Zookeeperissa tiedot tallennetaan hierarkkiseen nimiavaruuteen, joka on samanlainen kuin tiedostojärjestelmä. Jokaista nimiavaruuden solmua kutsutaan Znodeksi, ja se voi tallentaa tietoja ja saada lapsia. Znodit ovat samanlaisia kuin tiedostojärjestelmän tiedostot ja hakemistot. Zookeeper tarjoaa yksinkertaisen sovellusliittymän Znodien luomiseen, lukemiseen, kirjoittamiseen ja poistamiseen. Se tarjoaa myös mekanismeja, joilla havaitaan muutokset Znodeihin tallennettuihin tietoihin, kuten kelloihin ja laukaisuihin. Znodes ylläpitää tilastorakennetta, joka sisältää: versionumeron, ACL:n, aikaleiman ja datan pituuden
Znodien tyypit :
- Sitkeys : Elossa, kunnes ne on nimenomaisesti poistettu.
- Efemeraalinen : Aktiivinen, kunnes asiakasyhteys on elossa.
- Peräkkäinen : Joko jatkuva tai lyhytaikainen.
Miksi tarvitsemme ZooKeeperin Hadoopissa?
Zookeeperiä käytetään Hadoop-klusterin solmujen hallintaan ja koordinointiin, mukaan lukien NameNode, DataNode ja ResourceManager. Hadoop-klusterissa Zookeeper auttaa:
- Ylläpidä kokoonpanotietoja: Zookeeper tallentaa Hadoop-klusterin määritystiedot, mukaan lukien NameNoden, DataNoden ja ResourceManagerin sijainnin.
- Hallitse klusterin tilaa: Zookeeper seuraa Hadoop-klusterin solmujen tilaa, ja sitä voidaan käyttää havaitsemaan, milloin solmu on epäonnistunut tai ei ole käytettävissä.
- Koordinoi hajautettuja prosesseja: Zookeeperiä voidaan käyttää hajautettujen prosessien, kuten töiden ajoituksen ja resurssien allokoinnin, koordinoimiseen Hadoop-klusterin solmujen välillä.
Zookeeper auttaa varmistamaan Hadoop-klusterin saatavuuden ja luotettavuuden tarjoamalla keskitetyn koordinointipalvelun klusterin solmuille.
Kuinka ZooKeeper Hadoopissa toimii?
ZooKeeper toimii hajautettuna tiedostojärjestelmänä ja paljastaa yksinkertaisen joukon API-liittymiä, joiden avulla asiakkaat voivat lukea ja kirjoittaa tietoja tiedostojärjestelmään. Se tallentaa tietonsa puumaiseen rakenteeseen, jota kutsutaan znodeksi, jota voidaan pitää tiedostona tai hakemistona perinteisessä tiedostojärjestelmässä. ZooKeeper käyttää konsensusalgoritmia varmistaakseen, että kaikilla sen palvelimilla on johdonmukainen kuva Znodeihin tallennetusta tiedosta. Tämä tarkoittaa, että jos asiakas kirjoittaa tietoja znodeen, tiedot replikoidaan kaikille muille ZooKeeper-palvelimille.
Yksi tärkeä ZooKeeperin ominaisuus on sen kyky tukea kellon käsitettä. Kellon avulla asiakas voi rekisteröityä vastaanottamaan ilmoituksia, kun znodeen tallennetut tiedot muuttuvat. Tästä voi olla hyötyä ZooKeeperiin tallennettujen tietojen muutosten seurannassa ja näihin muutoksiin reagoimisessa hajautetussa järjestelmässä.
Hadoopissa ZooKeeperiä käytetään useisiin tarkoituksiin, mukaan lukien:
- Määritystietojen tallentaminen: ZooKeeperiä käytetään useiden Hadoop-komponenttien jakamien määritystietojen tallentamiseen. Sitä voidaan esimerkiksi käyttää tallentamaan Hadoop-klusterin NameNodesin sijainnit tai JobTracker-solmujen osoitteet.
- Hajautetun synkronoinnin tarjoaminen: ZooKeeperiä käytetään koordinoimaan Hadoop-komponenttien toimintaa ja varmistamaan, että ne toimivat yhdessä johdonmukaisesti. Sitä voidaan käyttää esimerkiksi varmistamaan, että vain yksi NameNode on aktiivinen kerrallaan Hadoop-klusterissa.
- Nimeämisen ylläpito: ZooKeeperiä käytetään Hadoop-komponenttien keskitetyn nimeämispalvelun ylläpitämiseen. Tämä voi olla hyödyllistä resurssien tunnistamisessa ja paikantamisessa hajautetussa järjestelmässä.
ZooKeeper on Hadoopin olennainen osa ja sillä on ratkaiseva rooli sen eri osakomponenttien toiminnan koordinoinnissa.
Lukeminen ja kirjoittaminen Apache Zookeeperissa
ZooKeeper tarjoaa yksinkertaisen ja luotettavan käyttöliittymän tietojen lukemiseen ja kirjoittamiseen. Tiedot tallennetaan hierarkkiseen nimiavaruuteen, joka on samanlainen kuin tiedostojärjestelmä, ja solmuja kutsutaan znodeiksi. Jokainen znode voi tallentaa tietoja ja niillä voi olla lapsi-znodeja. ZooKeeper-asiakkaat voivat lukea ja kirjoittaa tietoja näihin zsolmuihin käyttämällä getData()- ja setData()-menetelmiä, vastaavasti. Tässä on esimerkki tietojen lukemisesta ja kirjoittamisesta ZooKeeper Java API:n avulla:
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();> |
>
>
Python 3
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()> |
>
minun näytön koko
>
Istunto ja kellot
Istunto
- Istunnon pyynnöt suoritetaan FIFO-järjestyksessä.
- Kun istunto on perustettu, sitten istunnon tunniste on määrätty asiakkaalle.
- Asiakas lähettää sydämenlyöntejä pitääksesi istunnon voimassa
- istunnon aikakatkaisu esitetään yleensä millisekunteina
Kellot
- Kellot ovat mekanismeja, joilla asiakkaat saavat ilmoituksia Zookeeperin muutoksista
- Asiakas voi katsoa lukiessaan tiettyä znodea.
- Zsolmujen muutokset ovat zsolmuihin liittyvien tietojen muutoksia tai muutoksia zsolmun lapsissa.
- Kellot laukeavat vain kerran.
- Jos istunto vanhenee, myös kellot poistetaan.