Uvod u ActiveMQ vs Kafka
Apache ActiveMQ je open-source, više protokol, Java-baziran poslužitelj za razmjenu poruka. Provodi JMS (Java Message Service) API i može podržavati razne protokole za razmjenu poruka uključujući AMQP, STOMP i MQTT. Uobičajeno se koristi za slanje poruka između aplikacija / usluga. U ovoj ćemo temi upoznati ActiveMQ i Kafka.
S druge strane, Apache Kafka je open-source softver za obradu podataka koji je razvio LinkedIn (a kasnije doniran Apacheu) kako bi učinkovito upravljao svojim rastućim podacima i prešao na stvarnu obradu iz serijske obrade. Napisana je na skali i Javi, a temelji se na modelu za objavljivanje i pretplatu poruka.
Usporedba između ActiveMQ-a i Kafke (Infographics)
Ispod su gornje razlike između ActiveMQ i Kafka
Ključne razlike između ActiveMQ i Kafka
ActiveMQ i Kafka dizajnirani su za različite svrhe. Ovo su ključne razlike:
Kafka je distribuirana strujna platforma koja nudi visoku horizontalnu skalabilnost. Također, osigurava visoku propusnost i zato se koristi za obradu podataka u stvarnom vremenu. ActiveMQ je rješenje za opću namjenu poruka koje podržava razne protokole za razmjenu poruka. Kafka je mnogo brži od ActiveMQ-a. Može podnijeti milijune poruka u sekundi.
ActiveMQ podržava i redove poruka i objavljuje / pretplaćuje sustave za razmjenu poruka. S druge strane, Kafka se temelji na objavljivanju / pretplati, ali ima određene prednosti u redovima poruka.
ActiveMQ jamči da će biti isporučena poruka, ali kod Kafke postoji vjerojatnost (koliko god ona bila mala) da se poruka možda neće isporučiti.
Gubitak poruke u Kafki može se dogoditi u sljedećem scenariju:
- To se može dogoditi dok paralelno konzumirate poruke. Razmotrite situaciju kada dvije poruke dolaze potrošačima: X i Y. Dvije poruke se obrađuju paralelno. Tijekom obrade poruka, Y je bio uspješan i počinio je odstupanje. Međutim, tijekom rukovanja porukom, X je proizveo pogrešku. S obzirom na to da poruka B ima veći odstupanje, Kafka će spremiti najnoviji offset i poruku A nikad se neće vratiti potrošaču.
Prilično je jednostavnije implementirati točno jednom isporuku poruka u ActiveMQ-u nego što je to slučaj u Kafki. Duplikat poruka u Kafki može se dogoditi u sljedećem scenariju:
- Potrošač je poruke uspješno potrošio, a zatim ih počinio u svojoj lokalnoj trgovini, ali ruši se i ne može izvršiti nadoknadu za Kafku prije nego što se srušio. Kad se potrošač ponovno pokrene, Kafka će isporučiti poruke od posljednjeg pomaka.
U Kafki je poruka u osnovi par ključ-vrijednost. Korisni teret poruke je vrijednost. S druge strane, ključ se obično koristi za particioniranje i mora sadržavati ključ specifičan za tvrtku kako bi se poruke postavile na istu particiju.
U ActiveMQ-u se poruka sastoji od metapodataka (zaglavlja i svojstva) i tijela (što je korisni teret).
Usporedna tablica ActiveMQ vs Kafka
Razgovarajmo o prvih 10 razlike između ActiveMQ-a i Kafke
ActiveMQ | Kafka |
To je tradicionalni sustav za razmjenu poruka koji se bavi s malom količinom podataka. Ima sljedeće slučajeve upotrebe:
| To je distribuirani sustav namijenjen za obradu ogromne količine podataka. Ima sljedeće slučajeve upotrebe:
|
Ima podršku za transakcije. Dvije razine podrške za transakcije su:
Za transakcije koristi TransactionStore. TransactionStore će predmemorirati sve poruke i ACKS dok se ne dogodi počinjenje ili povratak. | Kafka u početku nije podržao transakcije, ali otkad je izdao 0, 11, u određenoj mjeri podržava transakcije. |
Održava stanje isporuke svake poruke što rezultira nižom propusnošću. | Proizvođači Kafke ne čekaju priznanja Brokera. Dakle, posrednici mogu pisati poruke vrlo velikom brzinom što rezultira većom propusnošću |
U ActiveMQ-u je odgovornost proizvođača da osiguraju isporuku poruka. | U Kafki je odgovornost potrošača da konzumiraju sve poruke koje trebaju potrošiti. |
Ne može osigurati da se poruke primaju istim redoslijedom u kojem su poslane. | Može osigurati da se poruke primaju redoslijedom kojim su poslane na razini particije. |
Postoji nešto što se zove JMS API izbornik poruka, što dopušta potrošaču da odredi poruke koje ga zanimaju. Dakle, rad filtriranja poruka preuzima JMS, a ne aplikacije. | Kafka nema koncept filtera kod brokera koji bi mogao osigurati da poruke koje preuzimaju potrošači odgovaraju određenom kriteriju. Filtriranje moraju obaviti potrošači ili aplikacije. |
To je platforma za razmjenu poruka push-tipa na kojoj pružatelji usluga šalju poruke potrošačima. | To je platforma za razmjenu poruka tipa „pull“ na kojoj potrošači povlače poruke posrednika. |
Nije moguće skalirati vodoravno. Također ne postoji koncept replikacije. | Visoko je skalabilan. Zbog replikacija particija, nudi i veću dostupnost. |
Izvođenje i reda i tema opada, kako se povećava broj potrošača. | Ne usporava se s dodavanjem novih potrošača. |
Ne nudi kontrolne zbrojeve za otkrivanje korupcije poruka izvan okvira. | Sadrži provjere za otkrivanje korupcije poruka u pohrani i ima sveobuhvatan skup sigurnosnih značajki. |
Zaključak
Vidjeli smo da Kafka i ActiveMQ imaju različite slučajeve upotrebe. Tvrtka će se obratiti Kafki ako mora obraditi ogromnu količinu podataka u stvarnom vremenu i može podnijeti gubitak poruke u određenoj mjeri. Dok bi ActiveMQ bio pravi izbor ako se brine o jednokratnoj isporuci, a poruke su vrijedne (poput financijskih transakcija).
Preporučeni članak
Ovo je vodič ActiveMQ-a i Kafke. Ovdje smo raspravljali o glavnim razlikama ActiveMQ i Kafka s infografikom i tablicom usporedbe. Možete također pogledati sljedeće članke da biste saznali više -
- Kafka vs Spark
- Svinja vs Spark
- Hadoop vs Apache Spark
- Apache Storm vs Kafka: 9 najboljih razlika koje morate znati