Apache Kafka

RabbitMQ vs Apache Kafka

RabbitMQ vs Apache Kafka
U ovom ćemo postu pokušati usporediti i utvrditi neke razlike u dva najpopularnija posrednika poruka, RabbitMQ i Apache Kafka.

Kad god želimo integrirati posrednike poruka u našu aplikaciju koja nam omogućuje jednostavno prilagođavanje i asinhroni način povezivanja sustava, postoji mnogo posrednika poruka koji mogu napraviti popis s kojeg ste stvoreni, poput:

Svaki od ovih posrednika poruka ima svoj popis prednosti i nedostataka, ali najizazovnije su opcije prve dvije, RabbitMQ i Apache Kafka. U ovoj ćemo lekciji navesti točke koje mogu pomoći u sužavanju odluke da se ide jedno s drugim. Na kraju, vrijedi istaknuti da niti jedan od ovih nije bolji od drugog u svim slučajevima korištenja i to u potpunosti ovisi o tome što želite postići, pa nema jednog ispravnog odgovora!

Počet ćemo s jednostavnim uvođenjem ovih alata.

Apache Kafka

Kao što smo rekli u ovoj lekciji, Apache Kafka je distribuirani dnevnik pogrešaka koji tolerira kvarove i vodoravno se skalira. To znači da Kafka može vrlo dobro izvršiti termin podijeli i vladaj, može replicirati vaše podatke kako bi osigurao dostupnost i vrlo je skalabilan u smislu da u vrijeme izvođenja možete uključiti nove poslužitelje kako biste povećali svoj kapacitet za upravljanje većim brojem poruka.

Kafka proizvođač i potrošač

RabbitMQ

RabbitMQ je općenitiji i jednostavniji za korištenje posrednik poruka koji sam vodi evidenciju o tome koje je poruke klijent konzumirao i nastavlja s drugim. Čak i ako iz nekog razloga RabbitMQ poslužitelj padne, možete biti sigurni da su poruke trenutno prisutne u redovima pohranjene u Datotečnom sustavu, tako da kada se RabbitMQ ponovo vrati, potrošači mogu te poruke obrađivati ​​na dosljedan način.

RabbitMQ radi

Supersila: Apache Kafka

Glavna Kafkina velesila je da se može koristiti kao sustav redova, ali to nije ono na što je ograničeno. Kafka je nešto sličnije kružni odbojnik koji se može prilagoditi disku na stroju na klasteru i tako nam omogućuje ponovno čitanje poruka. To može učiniti klijent, a da ne mora ovisiti o Kafka klasteru, jer je u potpunosti klijentova odgovornost da zabilježi metapodatke poruke koje trenutno čita, a kasnije može posjetiti Kafku u određenom intervalu kako bi ponovno pročitao istu poruku.

Napominjemo da je vrijeme u kojem se ova poruka može ponovno pročitati ograničeno i može se konfigurirati u Kafkinoj konfiguraciji. Dakle, nakon što to vrijeme prođe, klijent više nikada ne može pročitati stariju poruku.

Supersila: RabbitMQ

Glavna supersila RabbitMQ-a je što je jednostavno skalabilan, visoko učinkovit sustav čekanja koji ima vrlo dobro definirana pravila dosljednosti i sposobnost stvaranja mnogih vrsta modela razmjene poruka. Na primjer, postoje tri vrste razmjene koje možete stvoriti u RabbitMQ:

  1. Izravna razmjena: Jedna do jedna razmjena tema
  2. Razmjena tema: A tema definirano je na kojem različiti proizvođači mogu objaviti poruku, a različiti potrošači se mogu obvezati da će slušati tu temu, pa svaki od njih prima poruku koja se šalje na ovu temu.
  3. Razmjena navijača: Ovo je strože od razmjene tema, jer kada se poruka objavi na razmjeni navijača, svi potrošači koji su povezani u redove koji se vežu za razmjenu navijača primit će poruku.

Već sam primijetio razliku između RabbitMQ-a i Kafke? Razlika je u tome što ako se potrošač nije povezao s razmjenom obožavatelja u RabbitMQ-u kad je poruka objavljena, izgubit će se jer su je drugi korisnici potrošili, ali to se ne događa u Apache Kafki jer bilo koji potrošač može pročitati bilo koju poruku kao održavaju vlastiti kursor.

RabbitMQ je usmjeren na brokera

Dobar je posrednik netko tko jamči za sebe rad i u tome je RabbitMQ dobar. Nagnut je prema garancije isporuke između proizvođača i potrošača, s prolaznim prednostima pred trajnim porukama.

RabbitMQ koristi samog brokera za upravljanje stanjem poruke i osiguravajući da se svaka poruka isporuči svakom potrošaču s pravom.

RabbitMQ pretpostavlja da su potrošači uglavnom na mreži.

Kafka je usmjeren na proizvođača

Apache Kafka je usmjeren na proizvođača jer se u potpunosti temelji na particioniranju i toku paketa događaja koji sadrže podatke i pretvara ih u trajne posrednike poruka s kursorima, podržavajući skupne potrošače koji mogu biti izvan mreže ili mrežne potrošače koji žele poruke s malim kašnjenjem.

Kafka osigurava da poruka ostane sigurna do određenog vremenskog razdoblja replicirajući poruku na svojim čvorovima u klasteru i održavajući dosljedno stanje.

Dakle, Kafka nema pretpostaviti da je bilo koji od njegovih potrošača uglavnom na mreži i niti je to briga.

Poručivanje poruka

Uz RabbitMQ, redoslijed izdavaštva upravlja dosljedno a potrošači će poruku primiti u samoj objavljenoj narudžbi. S druge strane, Kafka to ne čini jer pretpostavlja da su objavljene poruke teške prirode, tako da su potrošači spori i mogu slati poruke bilo kojim redoslijedom, tako da narudžbom ne upravlja ni sam. Iako možemo postaviti sličnu topologiju za upravljanje redoslijedom u Kafki pomoću dosljedna razmjena hasha ili dodatak za razbijanje., ili čak više vrsta topologija.

Kompletni zadatak kojim upravlja Apache Kafka je djelovanje poput "amortizera" između neprekidnog tijeka događaja i potrošača od kojih su neki na mreži, a drugi mogu biti izvan mreže - konzumiranje samo serije na satu ili čak svakodnevno.

Zaključak

U ovoj smo lekciji proučavali glavne razlike (i sličnosti također) između Apachea Kafke i RabbitMQ-a. U nekim su okruženjima obje pokazale izvanredne performanse kao što RabbitMQ troši milijune poruka u sekundi, a Kafka nekoliko milijuna poruka u sekundi. Glavna arhitektonska razlika je u tome što RabbitMQ upravlja svojim porukama gotovo u memoriji, pa zato koristi veliki klaster (više od 30 čvorova), dok Kafka zapravo koristi moći sekvencijalnih I / O operacija diska i zahtjeva manje hardvera.

Opet, uporaba svakog od njih i dalje u potpunosti ovisi o slučaju upotrebe u aplikaciji. Sretne poruke !

Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...
SuperTuxKart za Linux
SuperTuxKart sjajan je naslov osmišljen kako bi vam besplatno pružio iskustvo Mario Kart na vašem Linux sustavu. Prilično je izazovno i zabavno igrati...
Vodič za bitku za Wesnoth
Bitka za Wesnoth jedna je od najpopularnijih strateških igara otvorenog koda koje trenutno možete igrati. Ne samo da se ova igra razvija već jako dugo...