Uvod v ActiveMQ proti Kafki

Apache ActiveMQ je odprtokodni več protokolarni strežnik za sporočanje na osnovi Jave. Izvaja API JMS (Java Message Service) in lahko podpira različne protokole za sporočanje, vključno z AMQP, STOMP in MQTT. Običajno se uporablja za pošiljanje sporočil med aplikacijami / storitvami. V tej temi bomo spoznali ActiveMQ proti Kafki.

Po drugi strani je Apache Kafka odprtokodna programska oprema za obdelavo tokov, ki jo je razvil LinkedIn (in jo pozneje podarila Apache), da učinkovito upravlja s svojimi naraščajočimi podatki in preide na sprotno obdelavo iz paketne obdelave. Napisana je v Scali in Java in temelji na modelu za objavo in naročanje sporočil.

Primerjava med glavo in ActiveMQ proti Kafki (Infographics)

Spodaj so zgornje razlike med ActiveMQ proti Kafki

Ključne razlike med ActiveMQ in Kafka

ActiveMQ in Kafka sta zasnovana za različne namene. Ključne razlike so naslednje:

Kafka je distribuirana pretočna platforma, ki ponuja visoko horizontalno razširljivost. Prav tako zagotavlja visoko prepustnost in zato se uporablja za obdelavo podatkov v realnem času. ActiveMQ je rešitev za sporočanje splošne namene, ki podpira različne protokole za sporočanje. Kafka je hitrejša od ActiveMQ. Na sekundo lahko prenese milijone sporočil.

ActiveMQ podpira obe čakalni vrsti sporočil in objavlja / naroči sisteme za sporočanje. Po drugi strani Kafka temelji na objavi / naročnini, vendar ima določene prednosti čakalnih vrst.

ActiveMQ zagotavlja, da bo sporočilo dostavljeno, vendar s Kafko obstaja verjetnost (čeprav je nizka), da sporočilo morda ne bo dostavljeno.

Izguba sporočil v Kafki se lahko zgodi v naslednjem scenariju:

  • To se lahko zgodi med vzporednim uživanjem sporočil. Razmislite o situaciji, ko prideta do potrošnika 2 sporočila: X in Y. Obe sporočili se obdelujeta vzporedno. Med obdelavo sporočil je bil Y uspešen in je storil pobot. Vendar je X pri ravnanju s sporočilom povzročil napako. Glede na to, da ima sporočilo B večji odmik, Kafka shrani zadnji odmik in sporočilo A se nikoli ne vrne k potrošniku.

Precej lažje je izvajati natančno enkratno pošiljanje sporočil v ActiveMQ, kot je to v Kafki. Podvajanje sporočil v Kafki se lahko zgodi v naslednjem scenariju:

  • Potrošnik je sporočila uspešno porabil, nato pa jih zavezal v svojo lokalno trgovino, vendar se zruši in Kafke ni mogel izravnati, preden se je zrušil. Ko se potrošnik znova zažene, Kafka dostavi sporočila od zadnjega pobota.

V Kafki je sporočilo v bistvu par ključ-vrednost. Uporabna obremenitev sporočila je vrednost. Ključ na drugi strani se običajno uporablja za particioniranje in mora vsebovati ključ, ki je namenjen podjetju, da lahko na isto particijo postavite povezana sporočila.

V ActiveMQ je sporočilo sestavljeno iz metapodatkov (glave in lastnosti) in telesa (kar je koristna obremenitev).

Primerjalna tabela ActiveMQ proti Kafki

Pogovorimo se o 10 najboljših razlikah med ActiveMQ in Kafka

ActiveMQKafka
Gre za tradicionalni sistem sporočanja, ki obravnava majhno količino podatkov. Ima naslednje primere uporabe:

  • Transakcijsko sporočilo
  • Visokozmogljiva distribucija tržnih podatkov
  • Model grundiranja in splošnega namena asinhrovanja sporočil
  • Spletna pretakanje podatkov
  • Restful API za sporočila s HTTP
Gre za porazdeljeni sistem, namenjen za obdelavo ogromne količine podatkov. Ima naslednje primere uporabe:

  • Sporočila
  • Sledenje dejavnosti spletnega mesta
  • Meritve
  • Združevanje dnevnikov
  • Stream Processing
  • Sourcing dogodkov
  • Dnevnik zavez
Ima podporo za transakcije. Podpora za dve ravni transakcij sta:

  • Transakcije JMS
  • Transakcije XA

Za transakcije uporablja TransactionStore. TransactionStore bo predpomnil vsa sporočila in ACKS, dokler ne pride do izdaje ali vračanja.

Kafka sprva ni podpirala transakcij, vendar od izdaje 0, 11 do neke mere podpira transakcije.
Ohranja stanje dostave vsakega sporočila, kar ima za posledico nižjo prepustnost.Proizvajalci Kafke ne čakajo na potrditve posrednikov. Tako lahko posredniki pišejo sporočila z zelo veliko hitrostjo, kar ima za posledico večji pretok
V ActiveMQ so proizvajalci odgovorni za zagotavljanje pošiljanja sporočil.V Kafki je odgovornost potrošnikov, da porabijo vsa sporočila, ki naj bi jih porabila.
Ne more zagotoviti, da se sporočila prejemajo v enakem vrstnem redu, kot so bila poslana.Zagotavlja lahko, da so sporočila prejeta v vrstnem redu, kot so bila poslana na ravni particije.
Obstaja nekaj, kar imenujemo izbirnik sporočil API-ja JMS, ki potrošniku omogoča, da določi sporočila, ki ga zanimajo. Torej delo filtriranja sporočil je v JMS in ne v aplikacijah.Kafka pri posrednikih nima koncepta filtrov, ki bi lahko zagotovil, da sporočila, ki jih potrošniki prevzamejo, ustrezajo določenemu kriteriju. Filtriranje mora opraviti potrošnik ali aplikacije.
Gre za platformo za sporočila s potisnim tipom, kjer ponudniki sporočila potiskajo potrošnikom.Gre za platformo za pošiljanje sporočil (pull-type), na kateri potrošniki pošiljajo sporočila posrednikov.
Vodoravno ni mogoče meriti. Prav tako ni koncepta replikacije.Je zelo razširljiv. Zaradi podvajanja particij ponuja tudi večjo razpoložljivost.
Učinkovitost čakalne vrste in teme se poslabšuje, ko narašča število potrošnikov.

Z dodajanjem novih potrošnikov se ne upočasni.
Ne zagotavlja kontrolnih vsot za odkrivanje korupcije sporočil izven polja.Vključuje kontrolne vsote za odkrivanje korupcije sporočil v shrambi in ima obsežen nabor varnostnih funkcij.

Sklep

Videli smo, da imata Kafka in ActiveMQ različne primere uporabe. Podjetje bo šlo za Kafko, če bo moralo v realnem času obdelati ogromno količino podatkov in lahko do neke mere nosi izgubo sporočil. Medtem ko bi bil ActiveMQ prava izbira, če skrbi za enkratno dostavo in sporočila so dragocena (kot pri finančnih transakcijah).

Priporočeni članek

To je vodnik za ActiveMQ proti Kafki. Tukaj razpravljamo o ključnih razlikah ActiveMQ vs Kafka z infografiko in primerjalno tabelo. Za več informacij si lahko ogledate tudi naslednje članke -

  1. Kafka proti Spark
  2. Pig vs Spark
  3. Hadoop proti Apache Spark
  4. Apache Storm proti Kafki: 9 najboljših razlik, ki jih moraš vedeti