Kafkan kuluttajaryhmän esittely
Kafka-kuluttajaryhmä on pohjimmiltaan joukko Kafka-kuluttajia, jotka voivat lukea tietoja rinnakkain Kafka-aiheesta. Kafkan kuluttajaryhmällä on seuraavat ominaisuudet:
- Kaikilla ryhmän kuluttajilla on sama group.id.
- Aiheen jokaista osiota lukee vain yksi kuluttaja.
- Kuluttajien enimmäismäärä on yhtä suuri kuin aiheen osioiden lukumäärä. Jos kuluttajia on enemmän kuin osioita, osa kuluttajista jää käyttämättä.
- Kuluttaja voi lukea useammasta kuin yhdestä osiosta.
Kafkan kuluttajaryhmän merkitys
Vähittäiskaupan organisaatiossa on suuri määrä tuottajia, jotka tuottavat tietoja valtavalla nopeudella. Nyt, jotta voimme lukea suuren määrän tietoja, tarvitsemme useita kuluttajia, jotka toimivat samanaikaisesti. Tuottajan puolella se on suhteellisen helppoa, kun jokainen tuottaja tuottaa tietoja muista riippumatta. Mutta kuluttajapuolella, jos meillä on useita kuluttajia lukemassa samaa aihetta, on suuri todennäköisyys, että kukin viesti luetaan useammin kuin kerran. Kafka ratkaisee tämän ongelman Consumer Groupilla. Joka tapauksessa vain yksi asiakas saa lukea tietoja osiosta.
Kafka Consumer Groupin osiot
Oletetaan, että meillä on Kafka-aihe ja siinä on 4 osiota. Sitten meillä voi olla seuraavat skenaariot:
1. Kuluttajien lukumäärä = osioiden lukumäärä
Tässä tapauksessa kukin kuluttaja lukee tietoja jokaisesta osiosta, ja tämä on ihanteellinen tapaus.
2. Kuluttajien lukumäärä> Osioiden lukumäärä
Tässä tapauksessa yksi kuluttaja pysyy käyttämättömänä ja johtaa resurssin huonoon käyttöön.
3. Kuluttajien lukumäärä <osioiden lukumäärä
Tässä tapauksessa yksi kuluttajista lukee tietoja useammasta kuin yhdestä osiosta.
4. Kuluttajaryhmän lukumäärä> 1
Tällöin aihetta tilaa useampi kuin yksi kuluttajaryhmä, joka hoitaa kaksi erilaista sovellusta. Nämä kaksi sovellusta voivat toimia toisistaan riippumattomasti.
Kafka Consumer Groupin edut
Kuluttajaryhmä lisää seuraavat edut:
- Skaalautuvuus: Useat samanaikaisesti tietoja lukevat kuluttajat lisäävät ehdottomasti datan kulutusta ja tekevät järjestelmästä kykenevän lukemaan suuren tietomäärän.
- Vikatoleranssi: Oletetaan, että meillä oli vain yksi kuluttaja (vain niin suuren tietomäärän lukemiseen), mitä tapahtuisi, jos kuluttaja epäonnistuu jostain syystä? Koko putkilinja rikkoutuu.
- Kuormituksen tasapainotus: Kafka jakaa osiot oikeudenmukaisesti kullekin kuluttajalle, mikä tekee tiedonkulutuksen prosessista sujuvaa ja tehokasta.
- Tasapainotus: Jos uusi asiakas lisätään tai olemassa oleva pysähtyy, Kafka tasapainottaa käytettävissä olevien kuluttajien kuormitusta.
Kuinka Kafka siltaa kaksi mallia?
Keskustelemme ensin kahdesta viestintämallista.
1. Viestijonot
Tässä mallissa viestivirta lähetetään yhdeltä tuottajalta vain yhdelle kuluttajalle. Siten kukin viesti luetaan vain kerran ja kun kuluttaja vetää viestin, viesti poistetaan jonosta. Tyypillinen esimerkki voi olla palkkien myöntäminen, jolloin jokainen palkkio on annettava vain kerran. Tämä malli ei myöskään takaa viestien toimittamista kunnossa. Viestien käsittelyn skaalautuvuus on rajoitettu yhteen verkkotunnukseen.
2. Julkaise ja tilaa viestit
Tässä mallissa tuottajan julkaisemat viestit voivat tilata useampi kuin yksi kuluttaja. Tuottaja ja Kuluttaja ovat erottuneet suurelta osin. Tämä malli varmistaa, että jokainen kuluttaja saa viestejä aiheesta aiheellisessa järjestyksessä, jonka tuottaja on luonut. Tyypillinen esimerkki voi olla lautastelevisio, joka julkaisee erilaisia kanavia, kuten musiikkia, elokuvia, urheilua jne., Ja kuluttajat voivat tilata useita kanavia. Koska aihetta on useita tilaajia, streamien käsittelyn skaalaaminen on haaste.
Kafka on niin suosittu, että vaikka se perustuu julkaise-tilaa-malliin, sillä on viestijonojärjestelmän etuja. Kuten aiemmin keskusteltiin, jos meillä on kuluttajaryhmä, Kafka varmistaa, että kuluttaja lukee vain jokaisen aiheen viestin kerran (mikä on samanlainen kuin viestijonojärjestelmä). Lisäetuina on, että välittäjät säilyttävät viestit (tekevät siitä jonkin aikaa virheestä sietäviä) ja jos meillä on useampia kuin yksi kuluttajaryhmä, he voivat lukea saman aiheen viestejä, mutta käsitellä niitä eri tavalla.
Käytä tapauskohdetta
Oletetaan, että meillä on yksinkertainen pilviympäristö, jossa sallimme seuraavien toimintojen käyttäjille:
- Tallenna tiedostot Cloudiin.
- Tarkastele heidän tiedostojaan pilvessä.
- Lataa heidän tiedostot pilvistä.
Alussa meillä oli hyvin pieni käyttäjäkunta. Halusimme saada erilaisia tilastotietoja (tunneittain), kuten aktiiviset käyttäjät, latauspyyntöjen lukumäärä, latauspyyntöjen lukumäärä ja niin edelleen. Vaatimusten täyttämiseksi perustimme Kafka-klusterin, joka tuottaa lokit (sovelluksemme tuottama) aiheeseen, ja siellä on sovellus, joka kuluttaa aiheen (Käyttäjän avulla) ja käsittelee sen sitten luodakseen tarvittavat tilastot ja lopulta näyttää ne, jotka ovat verkkosivulla.
Kun ihmiset alkoivat rakastaa palveluitamme, yhä useammat ihmiset alkoivat käyttää sitä tuottaen siten paljon lokituntia tunnissa. Huomasimme, että aihetta kuluttava sovellus tuli erittäin hitaa, kun käytimme vain yhtä kuluttajaa. Ongelman ratkaisemiseksi lisäsimme ryhmään joitain kuluttajia ja havaitsimme suorituskyvyn paranemista merkittävästi.
Kohdasimme toisen vaatimuksen, jossa meidän oli kirjoitettava lokit HDFS-klusteriin ja tämän prosessin pitäisi toimia riippumatta edellisestä sovelluksesta (Tämä johtuu siitä, että datan lisääntyessä suunnittelemme ensimmäisen sovelluksen käytöstäpoistamista ja kaikkien tilastojen johtamista) HDFS-ympäristössä). Tämän vaatimuksen täyttämiseksi kehitimme toisen sovelluksen, joka tilasi aiheen eri kuluttajaryhmällä ja kirjoitti tiedot HDFS-klusteriin.
Suositellut artikkelit
Tämä on opas Kafkan kuluttajaryhmään. Tässä keskustellaan Kafkan kuluttajaryhmän tärkeydestä ja siitä, kuinka Kafka yhdistää kaksi mallia sen käyttötapa-merkityksen kanssa. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja-
- Kafka-sovellukset
- Kuinka asentaa Kafka?
- Kafkan haastattelukysymykset
- HDFS-arkkitehtuuri
- Erityyppiset Kafka-työkalut