Apache Kafka

„RabbitMQ“ ir „Apache Kafka“

„RabbitMQ“ ir „Apache Kafka“
Šiame įraše bandysime palyginti ir nustatyti keletą populiariausių pranešimų brokerių - „RabbitMQ“ ir „Apache Kafka“ - skirtumų.

Kai mes norime integruoti pranešimų tarpininkus į savo programą, kuri leidžia mums lengvai išplėsti mastelį ir asinchroniškai prijungti savo sistemą, yra daugybė pranešimų tarpininkų, kurie gali sudaryti sąrašą, iš kurio esate pasirenkami, pavyzdžiui:

Kiekvienas iš šių pranešimų brokerių turi savo privalumų ir trūkumų sąrašą, tačiau sudėtingiausi variantai yra pirmieji du - „RabbitMQ“ ir „Apache Kafka“. Šioje pamokoje mes išvardinsime taškus, kurie gali padėti susiaurinti sprendimą eiti vienas su kitu. Galiausiai verta pabrėžti, kad nė vienas iš jų nėra geresnis už kitą visais naudojimo atvejais ir tai visiškai priklauso nuo to, ko norite pasiekti, taigi nėra vieno teisingo atsakymo!

Pradėsime nuo paprasto šių priemonių pristatymo.

Apache Kafka

Kaip jau minėjome šioje pamokoje, „Apache Kafka“ yra paskirstytas, atsparus trikdžiams, horizontaliai keičiamo dydžio, įsipareigojimų žurnalas. Tai reiškia, kad „Kafka“ gali labai gerai atlikti padalijimo ir taisyklės terminą, ji gali atkartoti jūsų duomenis, kad būtų užtikrinta prieinamumas, ir yra labai keičiama ta prasme, kad galite įtraukti naujus serverius vykdymo metu, kad padidintumėte jos pajėgumą tvarkyti daugiau pranešimų.

„Kafka“ gamintojas ir vartotojas

TriušisMQ

„RabbitMQ“ yra bendresnio pobūdžio ir paprasčiau naudojamas pranešimų tarpininkas, kuris pats registruoja kliento vartojamus pranešimus ir išlieka kitas. Net jei dėl kokių nors priežasčių „RabbitMQ“ serveris neveikia, galite būti tikri, kad šiuo metu eilėse esantys pranešimai buvo išsaugoti failų sistemoje, kad kai „RabbitMQ“ vėl atsinaujins, vartotojai tuos pranešimus galės tvarkyti nuosekliai.

RabbitMQ Working

Supervalstybė: Apache Kafka

Pagrindinė „Kafka“ supervalstybė yra ta, kad ji gali būti naudojama kaip eilių sistema, tačiau tai nėra tik tai, kas. Kafka yra kažkas panašaus žiedinis buferis kuri gali mastelį pakeisti tiek, kiek diskas mašinoje esančioje mašinoje, ir tokiu būdu leidžia mums perskaityti pranešimus. Tai gali padaryti klientas, nepriklausydamas nuo „Kafka“ klasterio, nes klientas yra visiškai atsakingas už tai, kad pažymėtų šiuo metu skaitomus pranešimo metaduomenis, ir vėliau jis gali dar kartą apsilankyti „Kafka“ nurodytu intervalu, kad vėl skaitytų tą patį pranešimą.

Atkreipkite dėmesį, kad laikas, per kurį šį pranešimą galima perskaityti, yra ribotas ir jį galima sukonfigūruoti „Kafka“ konfigūracijoje. Taigi, pasibaigus šiam laikui, klientas niekada nebegali perskaityti senesnės žinutės.

Supervalstybė: TriušisMQ

Pagrindinė „RabbitMQ“ supervalstybė yra ta, kad ji yra tiesiog keičiamo dydžio, yra labai naši eilių sistema, turinti labai tiksliai apibrėžtas nuoseklumo taisykles ir galimybę sukurti daugybę pranešimų mainų modelių tipų. Pavyzdžiui, „RabbitMQ“ galite sukurti tris mainų tipus:

  1. Tiesioginiai mainai: keitimasis viena tema
  2. Temų mainai: A tema yra apibrėžta, kuria įvairūs gamintojai gali paskelbti pranešimą, o įvairūs vartotojai gali prisirišti klausytis ta tema, todėl kiekvienas iš jų gauna pranešimą, kuris yra siunčiamas šia tema.
  3. „Fanout“ mainai: tai griežtesnė nei „topic exchange“, nes kai pranešimas paskelbiamas „fanout“ mainų biržoje, visi vartotojai, kurie yra prisijungę prie eilučių, kurios prisijungia prie „fanout“ mainų, gaus pranešimą.

Jau pastebėjo skirtumą tarp „RabbitMQ“ ir „Kafka“? Skirtumas yra tas, kad jei vartotojas nėra prijungtas prie „RabbitMQ“ fanų mainų, kai pranešimas buvo paskelbtas, jis bus prarastas, nes kiti vartotojai vartojo pranešimą, tačiau „Apache Kafka“ taip nenutinka, nes bet kuris vartotojas gali skaityti bet kurį pranešimą kaip jie palaiko savo žymeklį.

„RabbitMQ“ yra orientuota į brokerį

Geras brokeris yra tas, kuris garantuoja savo prisiimtą darbą ir būtent tuo „RabbitMQ“ yra geras. Jis pakreiptas link pristatymo garantijos gamintojų ir vartotojų, pirmenybę teikiant trumpalaikiams pranešimams, o ne ilgalaikiams pranešimams.

„RabbitMQ“ naudoja patį brokerį, kad valdytų pranešimo būseną ir užtikrintų, kad kiekviena žinutė būtų pristatyta kiekvienam turinčiam vartotojui.

„RabbitMQ“ daro prielaidą, kad vartotojai dažniausiai yra prisijungę.

„Kafka“ yra orientuota į gamintoją

„Apache Kafka“ yra orientuota į gamintoją, nes ji visiškai pagrįsta padalijimu ir įvykių paketų srautu, kuriame yra duomenų ir paverčia juos ilgalaikiais pranešimų tarpininkais su žymekliais, palaikant paketinius vartotojus, kurie gali būti neprisijungę, arba internetinius vartotojus, kurie nori pranešimų per mažą vėlavimą.

„Kafka“ užtikrina, kad pranešimas išliktų saugus iki nustatyto laiko, atkartodamas pranešimą savo klasterio mazguose ir išlaikydamas pastovią būseną.

Taigi, Kafka neturi manyti, kad bet kuris jo vartotojas dažniausiai yra internete ir jam tai nerūpi.

Pranešimų užsakymas

Su „RabbitMQ“ - užsakymas leidyba yra valdoma nuosekliai o vartotojai pranešimą gaus pačiame paskelbtame užsakyme. Kita vertus, „Kafka“ to nedaro, nes daro prielaidą, kad paskelbti pranešimai yra sunkūs, todėl vartotojai yra lėti ir gali siųsti pranešimus bet kokia tvarka, todėl ji taip pat nevaldo užsakymo. Nors mes galime sukurti panašią topologiją tvarkyti užsakymą „Kafka“ naudodami nuoseklus maišos keitimas arba dalijantis papildinį., ar net daugiau rūšių topologijų.

Visa „Apache Kafka“ valdoma užduotis yra elgtis kaip „amortizatorius“ tarp nuolatinio įvykių srauto ir vartotojų, iš kurių vieni yra prisijungę, o kiti gali būti neprisijungę - vartojami tik per valandą ar net kasdien.

Išvada

Šioje pamokoje mes ištyrėme pagrindinius Apache Kafka ir RabbitMQ skirtumus (ir panašumus). Kai kuriose aplinkose abu rodė nepaprastą našumą, pavyzdžiui, „RabbitMQ“ sunaudoja milijonus pranešimų per sekundę, o „Kafka“ sunaudojo kelis milijonus pranešimų per sekundę. Pagrindinis architektūrinis skirtumas yra tas, kad „RabbitMQ“ valdo savo pranešimus beveik atmintyje ir naudoja didelę grupę (daugiau nei 30 mazgų), o „Kafka“ iš tikrųjų naudoja nuoseklių disko įvesties / išvesties operacijų galias ir reikalauja mažiau aparatūros.

Vėlgi, kiekvieno iš jų naudojimas vis tiek visiškai priklauso nuo naudojimo atvejo programoje. Linksmų pranešimų !

Mūšis už Wesnothą 1.13.6 Išleista plėtra
Mūšis už Wesnothą 1.13.6 išleistas praėjusį mėnesį, yra šeštasis 1 versijos kūrimo leidimas.13.„x“ serija ir ji teikia daug patobulinimų, ypač vartoto...
Kaip įdiegti „League of Legends“ „Ubuntu 14“.04
Jei esate „League of Legends“ gerbėjas, tai jums yra galimybė išbandyti „League of Legends“. Atminkite, kad LOL palaikoma „PlayOnLinux“, jei esate „Li...
Įdiekite naujausią „OpenRA“ strategijos žaidimą „Ubuntu Linux“
„OpenRA“ yra „Free / Free Real Time Strategy“ žaidimų variklis, atkuriantis ankstyvuosius „Westwood“ žaidimus, tokius kaip klasikinis „Command & Conqu...