Introducere în grupul de consumatori Kafka
Grupul de consumatori Kafka este practic un număr de consumatori Kafka care pot citi date în paralel dintr-un subiect Kafka. Un grup de consumatori Kafka are următoarele proprietăți:
- Toți consumatorii dintr-un grup au același grup.id.
- Fiecare partiție din subiect este citită de un singur consumator.
- Numărul maxim de consumatori este egal cu numărul de partiții din subiect. Dacă există mai mulți consumatori decât partiții, unii dintre consumatori vor rămâne inactivi.
- Un consumator poate citi din mai multe partiții.
Importanța grupului de consumatori Kafka
Pentru o organizație de vânzare cu amănuntul, va exista un număr mare de producători care vor genera date într-un ritm imens. Acum, pentru a citi un volum mare de date, avem nevoie de mai mulți consumatori care rulează în paralel. Este relativ ușor în partea producătorului, unde fiecare producător generează date independent de ceilalți. Dar, din partea Consumatorului, dacă avem mai mulți consumatori citind din același subiect, există șanse mari ca fiecare mesaj să fie citit de mai multe ori. Kafka rezolvă această problemă folosind Consumer Group. În orice caz, un singur consumator are voie să citească date dintr-o partiție.
Partiții ale grupului de consumatori Kafka
Să presupunem că avem un subiect Kafka și există 4 partiții. Atunci putem avea următoarele scenarii:
1. Număr de consumatori = Număr de partiții
În acest caz, fiecare Consumator va citi date din fiecare partiție și acesta este cazul ideal.
2. Număr de consumatori> Număr de partiții
În acest caz, un consumator va rămâne inactiv și duce la o utilizare slabă a resursei.
3. Număr de consumatori <Număr de partiții
În acest caz, unul dintre consumatori va citi date din mai multe partiții.
4. Numărul grupului de consumatori> 1
În acest caz, subiectul este subscris de mai multe grupuri de consumatori care se ocupă de două aplicații diferite. Cele două aplicații pot rula independent una de cealaltă.
Avantajele grupului de consumatori Kafka
Grupul de consumatori adaugă următoarele avantaje:
- Scalabilitate: un număr de consumatori care citesc în paralel crește cu siguranță rata de consum a datelor și face ca sistemul să poată citi un volum mare de date.
- Toleranță la erori: Să presupunem că am avut un singur Consumator (pentru citirea unui volum nu atât de mare de date), ce s-ar întâmpla dacă Consumatorul eșuează dintr-un anumit motiv? Întreaga conductă se va rupe.
- Echilibrarea încărcăturii: Kafka împărtășește partițiile în mod echitabil fiecărui Consumator, făcând astfel procesul de consum de date să fie lin și eficient.
- Reechilibrare: Dacă se adaugă un consumator nou sau se oprește unul existent, Kafka reechilibrează încărcătura pe consumatorii disponibili.
Cât de punți Kafka cele două modele?
Să discutăm mai întâi cele două modele de mesagerie.
1. Cozi de mesaje
În acest model, un flux de mesaje este trimis de la un producător la un singur consumator. Astfel, fiecare mesaj este citit doar o dată și odată ce un consumator trage un mesaj, mesajul este șters de la coadă. Un exemplu tipic poate fi emiterea unui cec în care fiecare plată trebuie să fie emisă o singură dată. De asemenea, acest model nu asigură că mesajele vor fi livrate în ordine. Scalabilitatea procesării mesajelor este limitată la un singur domeniu.
2. Publicare-Abonare mesaje
În acest model, mesajele publicate de un producător pot fi abonate de mai mulți consumatori. Producătorul și Consumatorul sunt decuplați în mare măsură. Acest model asigură că fiecare Consumator va primi mesaje pe un subiect în ordinea exactă generată de producător. Un exemplu tipic poate fi un platou TV care publică diferite canale precum muzică, film, sport etc., iar consumatorii se pot abona la mai mult de un canal. Deoarece există mai mulți abonați la un subiect, reducerea procesării fluxurilor este o provocare.
Kafka este atât de popular pentru că, deși se bazează pe modelul de publicare-abonare, are avantajele unui sistem de cozi de mesagerie. Așa cum am discutat anterior, dacă avem un grup de consumatori, Kafka se asigură că fiecare mesaj dintr-un subiect este citit o singură dată de către un consumator (care este similar cu un sistem de mesaje). Avantajele adăugate sunt că mesajele sunt păstrate de către brokerii (pentru o perioadă de timp, ceea ce face ca acesta să fie tolerant la erori) și dacă avem mai mult de un grup de consumatori, ei pot citi mesaje din același subiect, dar să le proceseze diferit.
Utilizați Implicarea cazurilor
Să presupunem că avem o platformă Cloud simplă, unde permitem utilizatorii următoarele operații:
- Stocați fișiere în Cloud.
- Vizualizați fișierele lor în Cloud.
- Descărcați fișierele lor din Cloud.
La început, aveam o bază de utilizatori foarte mică. Am vrut să obținem diferite statistici (o oră), cum ar fi utilizatorii activi, numărul de solicitări de încărcare, numărul de solicitări de descărcare și așa mai departe. Pentru a răspunde cerințelor, configurăm un Kafka Cluster care produce jurnalele (generate de aplicația noastră) într-un subiect și există o aplicație care consumă subiectul (folosind un Consumator) și apoi procesează-l pentru a genera statisticile necesare și, în final, afișarea. cei dintr-o pagina web.
Pe măsură ce oamenii au început să-și placă serviciile noastre, mai multe persoane au început să-l folosească, generând astfel o mulțime de jurnale pe oră. Am constatat că aplicația care consumă subiectul a devenit extrem de lentă, deoarece foloseam un singur Consumator. Pentru a rezolva problema, am adăugat câțiva consumatori în grup și am constatat îmbunătățiri semnificative ale performanței.
Am dat peste o altă cerință, în care a trebuit să scriem jurnalele într-un cluster HDFS și acest proces ar trebui să funcționeze independent de aplicația anterioară (asta pentru că, odată cu creșterea suplimentară a datelor, intenționam să dezafectăm prima aplicație și să derivăm toate statisticile în mediul HDFS). Pentru a răspunde acestei cerințe, am dezvoltat o altă aplicație care s-a abonat la subiect folosind un alt grup de consumatori și am scris datele în clusterul HDFS.
Articole recomandate
Acesta este un ghid pentru Grupul de consumatori Kafka. Aici vom discuta despre importanța grupului de consumatori Kafka și modul în care Kafka pune la punct două modele împreună cu implicarea cazului său de utilizare. De asemenea, puteți consulta următoarele articole pentru a afla mai multe-
- Aplicații Kafka
- Cum se instalează Kafka?
- Întrebări la interviu Kafka
- Arhitectură HDFS
- Diferite tipuri de instrumente Kafka