Teknologian jakaminen

Zookeeperin perusperiaate

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ZooKeeper on erittäin saatavilla oleva hajautettu koordinointipalvelu, jota käytetään laajasti hajautetuissa järjestelmissä ratkaisemaan hajautettujen järjestelmien johdonmukaisuusongelmat. Seuraavassa esitellään yksityiskohtaisesti ZooKeeperin taustalla olevat periaatteet, mukaan lukien sen arkkitehtuuri, tietomalli, ydinmekanismi ja johdonmukaisuusprotokolla.

1. Arkkitehtuuri

ZooKeeper ottaa käyttöön isäntä-orja-arkkitehtuurin, joka koostuu yleensä Leaderista ja useista seuraajista. On myös Observer-solmuja ei-äänestävänä solmuna, joka jakaa lukupyyntöjen paineen.

  • Johtaja: Vastaa kaikkien kirjoituspyyntöjen (tapahtumapyyntöjen) käsittelystä ja johdonmukaisuusprotokollan koordinoinnista.
  • Seuraaja: Osallistu äänestykseen ja synkronoi johtajan tila ja käsittele lukupyyntöjä.
  • Tarkkailija: Ei osallistu äänestykseen, käsittelee vain lukupyynnöt ja välittää edelleen asiakkaiden kirjoituspyynnöt.

2. Tietomalli

ZooKeeper tallentaa tiedot tiedostojärjestelmän kaltaiseen puurakenteeseen, ja jokaista solmua kutsutaan znodeksi.

  • znode: Datasolmu, jossa on polku-, data- ja tilatiedot.
  • Pysyvä znode: Solmu selviää asiakkaan yhteyden katkeamisesta, ellei sitä nimenomaisesti poisteta.
  • Efemeraalinen znode: Solmu poistetaan automaattisesti, kun asiakas katkaisee yhteyden.
  • Peräkkäinen znode: Solmuun lisätään automaattisesti kasvava järjestysnumero, kun se luodaan.

3. Ydinmekanismi

3.1 Istunnon hallinta

Kunkin asiakkaan ja ZooKeeper-klusterin välille muodostetaan istunto yhteyden tilan ylläpitämiseksi ja tilapäisten solmujen hallitsemiseksi. ZooKeeper tunnistaa asiakkaan yhteyden tilan sykemekanismin kautta. Jos sykettä ei vastaanoteta tietyn ajan kuluessa, istunto katsotaan katkenneeksi.

3.2. Tietojen synkronointi

Jokaisen solmun tietojen johdonmukaisuuden varmistamiseksi ZooKeeper ottaa käyttöön tietojen synkronointimekanismin. Kun Leader-solmu käsittelee kirjoituspyynnön, se lähettää muutostoiminnon kaikille seuraajasolmuille. Seuraajasolmu vahvistaa muutostoiminnon hyväksymisen jälkeen, ja Leader-solmu päättää lopulta, onko muutostoiminto onnistunut.

3.3 Ilmoitusmekanismi

ZooKeeper tukee Watch-mekanismia. Asiakas voi rekisteröidä Watchin määritetylle znode-solmulle, kun ZooKeeper ilmoittaa asiasta asiakkaalle.

4. Johdonmukaisuusprotokolla

ZooKeeper käyttää johdonmukaisuusprotokollaa nimeltä ZAB (Zookeeper Atomic Broadcast) varmistaakseen tietojen johdonmukaisuuden. ZAB koostuu kahdesta vaiheesta: vaalivaiheesta ja lähetysvaiheesta.

4.1. Vaalivaihe

Kun ZooKeeper-klusteri käynnistyy tai Leader-solmu epäonnistuu, uuden johtajan määrittämiseksi vaaditaan valinta. Vaalivaihe jakautuu pääasiassa seuraaviin vaiheisiin:

  1. äänestys: Kaikki solmut äänestävät itseään ja lähettävät ääniä muille solmuille.
  2. saada ääniä: Jokainen solmu vastaanottaa ääniä muilta solmuilta ja laskee äänestystulokset.
  3. Päivitä kysely: Jos saaduissa äänissä on ehdokas, joka saa enemmän ääniä kuin sinä, päivitä äänesi tälle ehdokkaalle.
  4. Määritä johtaja: Kun ehdokas saa yli puolet äänistä, hänestä tulee uusi johtaja.
4.2 Lähetysvaihe

Kun Leader on määritetty, lähetysvaihe siirtyy Leader on vastuussa asiakkaan kirjoituspyynnön käsittelystä ja muutosoperaation lähettämisestä kaikille seuraajasolmuille. Tarkat vaiheet ovat seuraavat:

  1. ehdotus: Vastaanotettuaan kirjoituspyynnön johtaja luo ehdotuksen ja lähettää ehdotuksen kaikille seuraajasolmuille.
  2. vahvistaa: Ehdotuksen saatuaan Seuraajasolmu suorittaa lokikirjauksen ja lähettää vahvistusviestin johtajalle.
  3. Lähetä: Kun Leader-solmu vastaanottaa yli puolet vahvistusviesteistä, se lähettää ehdotuksen ja ilmoittaa kaikille seuraajasolmuille lähetyksen tuloksesta.
  4. Ota muutokset käyttöön: Kun seuraajasolmu vastaanottaa vahvistusilmoituksen, se käyttää muutostoimintoa.

5. Esimerkkikoodi

Seuraavassa on yksinkertainen esimerkki ZooKeeperistä, joka näyttää kuinka luodaan solmuja, luetaan solmutietoja ja rekisteröidään Watch.

5.1 Riippuvuuksien esittely

olla olemassa pom.xml Ota käyttöön ZooKeeper-asiakasriippuvuus.

 

xmlKopioi koodi