Apache Kafka

RabbitMQ vs Apache Kafka

RabbitMQ vs Apache Kafka
Šajā ziņojumā mēs centīsimies salīdzināt un noteikt dažas atšķirības divos populārākajos ziņojumu starpniekos - RabbitMQ un Apache Kafka.

Ikreiz, kad mēs vēlamies integrēt ziņojumu starpniekus mūsu lietojumprogrammā, kas ļauj mums viegli mērogot un asinhroni savienot mūsu sistēmu, ir daudz ziņojumu starpnieku, kas var izveidot sarakstu, no kura jums ir jāizvēlas, piemēram:

Katram no šiem ziņojumu brokeriem ir savs plusi un mīnusi, taču vislielākās izaicinājuma iespējas ir pirmās divas - RabbitMQ un Apache Kafka. Šajā nodarbībā mēs uzskaitīsim punktus, kas var palīdzēt sašaurināt lēmumu iet pāri vienam. Visbeidzot, ir vērts norādīt, ka neviens no šiem gadījumiem nav labāks par citu visos lietošanas gadījumos un tas ir pilnībā atkarīgs no tā, ko vēlaties sasniegt, tāpēc nav vienas pareizas atbildes!

Mēs sāksim ar vienkāršu šo rīku ieviešanu.

Apache Kafka

Kā mēs teicām šajā nodarbībā, Apache Kafka ir sadalīts, izturīgs pret kļūdām, horizontāli mērogojams, saistību žurnāls. Tas nozīmē, ka Kafka var ļoti labi izpildīt dalīšanas un kārtulas terminu, tas var atkārtot jūsu datus, lai nodrošinātu pieejamību, un ir ļoti pielāgojams tādā ziņā, ka izpildlaika laikā varat iekļaut jaunus serverus, lai palielinātu tā spēju pārvaldīt vairāk ziņojumu.

Kafka ražotājs un patērētājs

TrusisMQ

RabbitMQ ir vispārīgāks un vienkāršāk lietojams ziņojumu starpnieks, kas pats reģistrē klienta patērētos ziņojumus un turpina pastāvēt otram. Pat ja kāda iemesla dēļ RabbitMQ serveris nedarbojas, varat būt pārliecināts, ka ziņojumi, kas pašlaik atrodas rindās, ir saglabāti failu sistēmā, lai, kad RabbitMQ atkal dublējas, patērētāji tos varētu konsekventi apstrādāt.

RabbitMQ Working

Lielvalsts: Apache Kafka

Kafka galvenā lielvara ir tā, ka to var izmantot kā rindu sistēmu, bet tas nav tikai. Kafka ir kaut kas līdzīgāks apļveida buferis kas var mērogot tikpat daudz kā disks uz klastera mašīnas un tādējādi ļauj mums atkārtoti lasīt ziņojumus. To var izdarīt klients, neuztraucoties no Kafka klastera, jo klienta pienākums ir pilnībā atzīmēt ziņojuma metadatus, ko tas pašlaik lasa, un tas var vēlāk noteiktā intervālā atkārtoti apmeklēt Kafka, lai vēlreiz lasītu to pašu ziņojumu.

Lūdzu, ņemiet vērā, ka laiks, kurā šo ziņojumu var atkārtoti izlasīt, ir ierobežots un to var konfigurēt Kafka konfigurācijā. Tātad, kad šis laiks ir beidzies, klients vairs nekad nevar lasīt vecāku ziņojumu.

Lielvalsts: TrusisMQ

RabbitMQ galvenā lielvara ir tā, ka tā ir vienkārši mērogojama, ir augstas veiktspējas rindu sistēma, kurai ir ļoti labi definēti konsekvences noteikumi un spēja izveidot daudzu veidu ziņojumu apmaiņas modeļus. Piemēram, vietnē RabbitMQ varat izveidot trīs apmaiņas veidus:

  1. Tiešā apmaiņa: tēmas apmaiņa viens pret vienu
  2. Tēmu apmaiņa: A tēma ir definēts, kurā dažādi ražotāji var publicēt ziņojumu, un dažādi patērētāji var piesieties klausīties šo tēmu, tāpēc katrs no viņiem saņem ziņojumu, kas tiek nosūtīts uz šo tēmu.
  3. Fanout apmaiņa: Tas ir stingrāk nekā tēmu apmaiņa, jo, kad ziņojums tiek publicēts fanout apmaiņas centrā, visi patērētāji, kuri ir saistīti ar rindām, kas piesaista sevi fanout apmaiņai, ziņojumu.

Jau pamanījāt atšķirību starp RabbitMQ un Kafka? Atšķirība ir tāda, ka, ja ziņojuma publicēšanas laikā patērētājs nav savienots ar fanotu apmaiņu RabbitMQ, tas tiks zaudēts, jo citi patērētāji ir patērējuši ziņojumu, taču tas nenotiek Apache Kafka, jo jebkurš patērētājs var izlasīt jebkuru ziņojumu kā viņi uztur savu kursoru.

RabbitMQ ir vērsts uz brokeri

Labs brokeris ir tas, kurš garantē darbu, ko tas pats uzņemas, un tieši tas ir labs RabbitMQ. Tas ir noliekts uz piegādes garantijas starp ražotājiem un patērētājiem, dodot priekšroku īslaicīgām, nevis ilgstošām ziņām.

RabbitMQ izmanto pašu brokeri, lai pārvaldītu ziņojuma stāvokli un pārliecinātos, ka katrs ziņojums tiek piegādāts katram tiesīgajam patērētājam.

RabbitMQ pieņem, ka patērētāji galvenokārt ir tiešsaistē.

Kafka ir orientēta uz ražotāju

Apache Kafka ir orientēts uz ražotāju, jo tas pilnībā balstīts uz sadalīšanu un pasākumu pakešu plūsmu, kas satur datus un pārveido tos par izturīgiem ziņojumu starpniekiem ar kursoriem, atbalsta pakešu patērētājus, kuri var būt bezsaistē, vai tiešsaistes patērētājus, kuri vēlas ziņojumus ar zemu aizturi.

Kafka pārliecinās, ka ziņojums ir drošs līdz noteiktam laika periodam, replicējot ziņojumu uz tā mezgliem kopā un saglabājot nemainīgu stāvokli.

Tātad, Kafka nav pieņemsim, ka kāds no tā patērētājiem galvenokārt ir tiešsaistē un neinteresē.

Ziņojumu pasūtīšana

Ar RabbitMQ pasūtījumu izdevējdarbība tiek pārvaldīta konsekventi un patērētāji ziņojumu saņems pašā publicētajā pasūtījumā. No otras puses, Kafka to nedara, jo pieņem, ka publicētie ziņojumi pēc būtības ir smagi, tāpēc patērētāji ir lēni un var nosūtīt ziņojumus jebkurā secībā, tāpēc arī pats nepārvalda pasūtījumu. Lai gan mēs varam izveidot līdzīgu topoloģiju, lai pārvaldītu pasūtījumu Kafkā, izmantojot konsekventa hash apmaiņa vai sharding spraudnis., vai pat vairāk veidu topoloģijas.

Pilnīgs Apache Kafka pārvaldītais uzdevums ir darboties kā „amortizatoram” starp nepārtrauktu notikumu plūsmu un patērētājiem, no kuriem daži ir tiešsaistē, bet citi var būt bezsaistē - tikai partijas patērē katru stundu vai pat katru dienu.

Secinājums

Šajā nodarbībā mēs pētījām galvenās atšķirības (un arī līdzības) starp Apache Kafka un RabbitMQ. Dažās vidēs abi ir parādījuši ārkārtas veiktspēju, piemēram, RabbitMQ patērē miljoniem ziņojumu sekundē, un Kafka patērē vairākus miljonus ziņojumu sekundē. Galvenā arhitektoniskā atšķirība ir tāda, ka RabbitMQ savus ziņojumus pārvalda gandrīz atmiņā un tāpēc izmanto lielu kopu (vairāk nekā 30 mezglus), savukārt Kafka faktiski izmanto secīgu diska I / O darbību spējas un prasa mazāk aparatūras.

Atkal katra no tām izmantošana joprojām ir pilnībā atkarīga no lietojuma gadījuma lietojumprogrammā. Priecīgas ziņojumapmaiņas !

Kā parādīt FPS skaitītāju Linux spēlēs
Linux spēles ieguva lielu impulsu, kad Valve 2012. gadā paziņoja par Linux atbalstu Steam klientam un viņu spēlēm. Kopš tā laika daudzas AAA un indie ...
Kā lejupielādēt un atskaņot Sid Meier Civilization VI operētājsistēmā Linux
Ievads spēlē Civilization 6 ir mūsdienīga klasiskā koncepcija, kas ieviesta Age of Empires spēļu sērijā. Ideja bija diezgan vienkārša; jūs sāktu pašā ...
Kā instalēt un spēlēt Doom uz Linux
Ievads liktenī Doom sērija radās 90. gados pēc sākotnējā Doom izlaišanas. Tas bija tūlītējs hīts, un kopš tā laika spēļu sērija ir saņēmusi daudzas ba...