Apache Kafka

Apache Kafka particioniranje

Apache Kafka particioniranje
U ovoj ćemo lekciji vidjeti što podrazumijevamo pod particioniranjem u Apache Kafki i kako to utječe na performanse Kafka klastera. Koncept particioniranja središnji je za Kafka klaster jer particioniranje koristi kao primarni način skaliranja i povećanja performansi.

Napominjemo da ovo nije uvodna lekcija. Molimo pročitajte Što je Apache Kafka i kako to funkcionira prije nego što nastavite s ovom lekcijom kako biste stekli dublji uvid.

Teme na Kafki

Tema na Kafki je nešto gdje se šalje poruka. Potrošačke aplikacije koje zanima ta tema povlače poruku unutar te teme i s tim podacima mogu učiniti sve. Do određenog vremena, bilo koji broj potrošačkih aplikacija može povući ovu poruku bilo koji broj puta.

Razmotrite temu poput LinuxHintove stranice Ubuntu bloga. Lekcije se postavljaju do vječnosti i bilo koji broj čitatelja entuzijasta može doći i pročitati ih koliko god puta ili prijeći na sljedeću lekciju kako žele. Te čitatelje mogu zanimati i druge teme iz LinuxHinta.

Podjela teme

Kafka je dizajniran za upravljanje teškim aplikacijama i stavlja u red velikog broja poruka koje se čuvaju unutar teme. Da bi se osigurala visoka tolerancija grešaka, svaka je tema podijeljena u više particija teme, a svakom se particijom teme upravlja na zasebnom čvoru. Ako se jedan od čvorova sruši, drugi čvor može djelovati kao voditelj teme i može posluživati ​​teme zainteresiranim potrošačima. Evo kako se isti podaci zapisuju u više particija tema:

Tematske particije


Sada gornja slika pokazuje kako se isti podaci repliciraju na više particija. Zamislimo kako različite particije mogu djelovati kao predvodnik na različitim čvorovima / particijama:

Kafka Broker particioniranje

Kada klijent nešto napiše u temu na poziciji za koju je particija u Brokeru 0 vodeća, ti se podaci zatim repliciraju preko brokera / čvorova tako da ta poruka ostaje sigurna:

Replikacija na brokerskim particijama

Više particija, veća propusnost

Kafka se koristi Paralelizam pružiti vrlo veliku propusnost proizvođačima i potrošačima. Zapravo, na isti način, također zadržava svoj status sustava s visokom otpornošću na kvarove. Razumijemo koliko se propusnost postiže paralelizmom.

Kada aplikacija Producer napiše neku poruku na particiju u Brokeru 0, Kafka paralelno otvara više niti, tako da se ta poruka može istovremeno replicirati na sve odabrane Brokere. Na strani potrošača, potrošačka aplikacija troši poruke s jedne particije kroz nit. Što je veći broj particija, to se više potrošačkih niti može otvoriti tako da sve one mogu raditi paralelno. To znači da što je veći broj particija u klasteru, to se više paralelizma može iskoristiti, stvarajući vrlo visoku propusnost sustava.

Za više particija potrebno je više rukovatelja datotekama

Upravo tako da ste gore proučavali kako možemo povećati performanse sustava Kafka samo povećanjem broja particija. Ali moramo biti oprezni s kojom granicom idemo.

Svaka particija teme u Kafki preslikava se u direktorij u datotečnom sustavu posrednika poslužitelja u kojem je pokrenuta. Unutar tog direktorija dnevnika nalazit će se dvije datoteke: jedna za indeks i druga za stvarne podatke po segmentu dnevnika. Trenutno u Kafki svaki posrednik otvara obrađivač datoteke i za indeks i za podatkovnu datoteku svakog segmenta dnevnika. To znači da ako imate 10.000 particija na jednom brokeru, to će rezultirati paralelnim radom 20.000 rukovatelja datotekama. Iako se ovdje radi samo o konfiguraciji Brokera. Ako sustav na kojem je Broker raspoređen ima visoku konfiguraciju, to teško neće predstavljati problem.

Rizik od velikog broja particija

Kao što smo vidjeli na gornjim slikama, Kafka koristi tehniku ​​replikacije unutar klastera kako bi kopirao poruku vođe na particije Replica koje leže u drugim Brokerima. I proizvođačka i potrošačka aplikacija čitaju i zapisuju na particiju koja je trenutno voditelj te particije. Kada broker zakaže, vođa tog brokera postat će nedostupan. Metapodaci o tome tko je vođa čuvaju se u Zookeeperu. Na temelju ovih metapodataka, Kafka će automatski dodijeliti vodstvo nad particijom drugoj particiji.

Kada se broker isključi čistom naredbom, čvor kontrolera klastera Kafka serijski će pomicati vođe gašenja brokera i.e. jedan po jedan. ako uzmemo u obzir da pomicanje jednog voditelja traje 5 milisekundi, nedostupnost vođa neće ometati potrošače jer je nedostupnost u vrlo kratkom vremenskom razdoblju. Ali ako uzmemo u obzir kada je Broker ubijen na nečist način, a ovaj broker sadrži 5000 particija, a od toga 2000 je bilo vođa particija, dodjela novih vođa za sve ove particije trajat će 10 sekundi što je vrlo visoko kada je riječ o visoko aplikacije na zahtjev.

Zaključak

Ako uzmemo u obzir mislioca na visokoj razini, više particija u Kafkinom klasteru dovodi do veće propusnosti sustava. Imajući na umu ovu učinkovitost, također treba uzeti u obzir konfiguraciju Kafka klastera koju trebamo održavati, memoriju koju moramo dodijeliti tom klasteru i kako možemo upravljati dostupnošću i kašnjenjem ako nešto pođe po zlu.

Ovdje pročitajte više postova temeljenih na Ubuntuu i mnogo više o Apache kafki.

Najbolje igre naredbenog retka za Linux
Naredbeni redak nije samo vaš najveći saveznik pri korištenju Linuxa - on također može biti izvor zabave jer ga možete koristiti za igranje mnogih zab...
Najbolje aplikacije za mapiranje gamepada za Linux
Ako volite igrati igre na Linuxu s gamepadom umjesto tipičnim sustavom za unos tipkovnice i miša, za vas postoji nekoliko korisnih aplikacija. Mnoge r...
Korisni alati za Linux igrače
Ako volite igrati igre na Linuxu, velika je vjerojatnost da ste možda koristili aplikacije i uslužne programe poput Wine, Lutris i OBS Studio za pobol...