RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu

В ikpeazụ isiokwu anyị lere anya ụyọkọ RabbitMQ maka nnabata mmejọ yana ịdị elu dị elu. Ugbu a, ka anyị gwuo miri emi na Apache Kafka.

Ebe a unit nke replication bụ nkebi. Isiokwu ọ bụla nwere otu akụkụ ma ọ bụ karịa. Ngalaba ọ bụla nwere onye ndu nwere ma ọ bụ na-enweghị ndị na-eso ya. Mgbe ị na-eke isiokwu, ị na-akọwapụta ọnụọgụ nkebi na ọnụọgụ ngbanwe. Uru a na-emekarị bụ 3, nke pụtara nsụgharị atọ: otu onye ndu na ndị na-eso ụzọ abụọ.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 1. A na-ekesa akụkụ anọ n'etiti ndị na-ere ahịa atọ

Arịrịọ niile na-agụ na ide na-agara onye ndu. Ndị na-eso ụzọ na-ezigara onye ndu arịrịọ mgbe ụfọdụ ka ha nata ozi kacha ọhụrụ. Ndị na-eri ihe anaghị atụgharị na ndị na-eso ụzọ; nke ikpeazụ dị naanị maka redundancy na nnabata mmejọ.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu

Ọdịda nkebi

Mgbe onye na-ere ahịa daa, ndị isi nke ọtụtụ ngalaba na-adakarị. Na nke ọ bụla n'ime ha, onye na-eso ụzọ si ọnụ ụzọ ọzọ na-aghọ onye ndu. N'ezie, nke a abụghị mgbe niile, ebe ọ bụ na ihe mmekọrịta na-emetụtakwa: ma enwere ndị na-eso ụzọ mekọrịtara ọnụ, ma ọ bụrụ na ọ bụghị, mgbe ahụ, a na-ahapụ ma ọ bụrụ na ị gbanwee na oyiri na-enweghị mmekọrịta. Ma ka anyị ghara ime ka ihe dị mgbagwoju anya ugbu a.

Broker 3 hapụrụ netwọk ahụ, a ga-ahọpụta onye ndu ọhụrụ maka ngalaba 2 na onye na-ere ahịa 2.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 2. Broker 3 anwụọ wee họpụta onye na-eso ya na onye na-ere ahịa 2 ka onye ndu ọhụrụ nke nkebi 2.

Mgbe ahụ, onye na-ere ahịa 1 hapụrụ na ngalaba 1 tụfuru onye ndu ya, onye ọrụ ya na-agafe na onye na-ere ahịa 2.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 3. Enwere otu onye na-ere ahịa hapụrụ. Ndị isi niile nọ n'otu onye na-ere ahịa na-enweghị ọrụ efu

Mgbe onye na-ere ahịa 1 na-alọghachi na ntanetị, ọ na-agbakwunye ndị na-eso ụzọ anọ, na-enye ụfọdụ redundancy na nkebi ọ bụla. Mana ndị isi niile ka nọgidere na onye na-ere ahịa 2.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 4. Ndị isi na-anọgide na onye na-ere ahịa 2

Mgbe onye na-ere ahịa 3 bịarutere, anyị na-alaghachi na mbipụta atọ kwa nkebi. Mana ndị isi niile ka nọ na broker 2.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 5. Ndokwa ndị isi na-enweghị isi mgbe mweghachi nke ndị na-ere ahịa 1 na 3

Kafka nwere ngwá ọrụ maka nhazigharị onye ndu ka mma karịa RabbitMQ. N'ebe ahụ, ị ​​ga-eji ngwa mgbakwunye ma ọ bụ edemede nke ndị ọzọ gbanwere atumatu maka ịkwaga ọnụ ụlọ nna ukwu site na ibelata redundancy n'oge njem. Na mgbakwunye, maka nnukwu kwụ n'ahịrị anyị ga-anabata enweghị ya n'oge mmekọrịta.

Kafka nwere echiche nke "mkpụrụgharị ahọrọ" maka ọrụ onye ndu. Mgbe emepụtara akụkụ isiokwu, Kafka na-anwa ikesa ndị isi n'ofe ọnụ ọnụ wee gosi ndị isi mbụ ahụ dị ka ọkachamma. Ka oge na-aga, n'ihi nrụpụta ihe nkesa, ọdịda, na ndakpọ njikọ, ndị isi nwere ike ejedebe na ọnụ ụzọ ndị ọzọ, dịka n'okwu ikpe siri ike akọwara n'elu.

Iji dozie nke a, Kafka na-enye nhọrọ abụọ:

  • Nhọrọ auto.leader.rebalance.enable=ezi na-enye ohere ọnụ ụzọ njikwa ka ọ na-ekenye ndị isi na-akpaghị aka ka ha laghachi na ihe ndị a họọrọ ma si otú ahụ weghachi nkesa otu.
  • Onye nchịkwa nwere ike ịme edemede ahụ kafka-ọkachamma-replica-nhọpụta.sh maka ntughari aka.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 6. Replicas mgbe rebancing

Nke a bụ nsụgharị dị mfe nke ọdịda, ma eziokwu dị mgbagwoju anya karị, n'agbanyeghị na ọ dịghị ihe dị mgbagwoju anya ebe a. Ihe niile na-agbadata na oyiri mekọrịtara ọnụ (In-Sync Replicas, ISR).

Ntugharị mekọrịtara ọnụ (ISR)

Otu ISR bụ ihe nṅomi nke nkebi nke a na-ewere dị ka "mmekọrịta" (in-sync). Enwere onye ndu, mana enwere ike ọ gaghị enwe ndị na-eso ụzọ. A na-ahụta onye na-eso ụzọ mekọrịtara ọnụ ma ọ bụrụ na o meela ezigbo nnomi nke ozi onye ndu niile tupu oge ahụ agwụ. oyiri.lag.time.max.ms.

A na-ewepụ onye na-eso ụzọ na ntọala ISR ma ọ bụrụ:

  • emeghị arịrịọ ka ịhọrọ maka etiti oge oyiri.lag.time.max.ms (echere na ọ nwụọla)
  • enwebeghị ike imelite n'oge etiti oge oyiri.lag.time.max.ms (a na-ewere nwayọ nwayọ)

Ndị na-eso ụzọ na-arịọ arịrịọ nlele n'ime etiti oge oyiri.fetch.wait.max.ms, nke na-adaba na 500ms.

Iji kọwaa n'ụzọ doro anya nzube nke ISR, anyị kwesịrị ile anya na nkwenye sitere n'aka onye mmepụta na ụfọdụ ọdịda ndapụta. Ndị nrụpụta nwere ike ịhọrọ mgbe onye na-ere ahịa na-eziga nkwenye:

  • acks=0, ezipughi nkwenye
  • acks=1, a na-eziga nkwenye ka onye ndu dechara ozi na ndekọ mpaghara ya
  • acks=nil, ezipu nkwenye ka emechara ihe niile dị na ISR dere ozi na ndekọ mpaghara

Na okwu Kafka, ọ bụrụ na ISR echekwala ozi, ọ "mere". Acks=niile bụ nhọrọ kacha dịrị nchebe, mana na-agbakwunye oge ọzọ. Ka anyị leba anya n'ihe atụ abụọ nke ọdịda yana otu nhọrọ 'acks' dị iche iche si emekọrịta na echiche ISR.

Acks = 1 na ISR

N'ihe atụ a, anyị ga-ahụ na ọ bụrụ na onye ndu anaghị echere ozi ọ bụla sitere na ndị na-eso ụzọ niile ka a zọpụta ya, mgbe ahụ, data ọnwụ ga-ekwe omume ma ọ bụrụ na onye ndu ahụ ada ada. Enwere ike ịgbanye ma ọ bụ gbanyụọ ịnyagharịa na onye na-eso ụzọ emekọrịtaghị ya site na ịtọ ntọala adịghị ọcha.ndú.nhọpụta. nwee ike.

Na ọmụmaatụ a, onye nrụpụta nwere uru acks=1. A na-ekesa ngalaba ahụ n'ofe ndị na-ere ahịa atọ niile. Broker 3 nọ n'azụ, ya na onye isi mekọrịtara ya na sekọnd asatọ gara aga ma ugbu a ọ bụ ozi 7456 n'azụ. Broker 1 nọ naanị otu sekọnd n'azụ. Onye na-emepụta anyị na-eziga ozi na ngwa ngwa na-enweta ack azụ, na-enweghị oke nke ndị na-eso ụzọ ngwa ngwa ma ọ bụ ndị nwụrụ anwụ nke onye ndu anaghị echere.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 7. ISR nwere ihe odide atọ

Broker 2 dara ma onye nrụpụta na-enweta njehie njikọ. Mgbe onye ndu gafere na onye na-ere ahịa 1, ozi 123 na-atụfu anyị. Onye na-eso ya na onye na-ere ahịa 1 bụ akụkụ nke ISR, mana emekọrịtaghị ya na onye ndu mgbe ọ dara.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 8. Ozi na-efunahụ mgbe ọ dara

Na nhazi bootstrap.sava Onye nrụpụta nwere ọtụtụ ndị na-ere ahịa depụtara ma nwee ike jụọ onye na-ere ahịa ọzọ bụ onye isi ngalaba ọhụrụ. Ọ na-ewepụta njikọ na onye na-ere ahịa 1 wee gaa n'ihu izipu ozi.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 9. Izipu ozi maliteghachiri mgbe obere oge ezumike gasịrị

Broker 3 dị ọbụna n'azụ. Ọ na-arịọ arịrịọ mana enweghị ike ịmekọrịta. Nke a nwere ike ịbụ n'ihi njikọ netwọk dị ngwa n'etiti ndị na-ere ahịa, okwu nchekwa, wdg. A na-ewepụ ya na ISR. Ugbu a ISR nwere otu oyiri - onye ndu! Onye nrụpụta na-aga n'ihu izipu ozi ma nata nkwenye.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 10. A na-ewepụ onye na-eso ya na onye na-ere ahịa 3 na ISR

Broker 1 na-agbada na ọrụ onye isi na-aga na onye na-ere ahịa 3 na mfu nke ozi 15286! Onye nrụpụta na-enweta ozi njehie njikọ. Mgbanwe na onye ndu na-abụghị nke ISR ga-ekwe omume naanị n'ihi ntọala ahụ adịghị ọcha.leader.election.enable=ezi. Ọ bụrụ na etinyere ya ụgha, mgbe ahụ mgbanwe agaghị eme, a ga-ajụ arịrịọ niile na-agụ na ide. N'okwu a, anyị na-echere onye na-ere ahịa 1 ka ọ laghachite na data ya na-emebibeghị na oyiri, nke ga-eweghara ọchịchị ọzọ.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 11. Broker 1 dara. Mgbe ọdịda mere, ọtụtụ ozi na-efunahụ

Onye na-emepụta ihe na-emepụta njikọ na onye na-ere ahịa ikpeazụ ma hụ na ọ bụzi onye ndu nke ngalaba ahụ. Ọ na-amalite izipu ozi na onye na-ere ahịa 3.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 12. Mgbe obere oge ezumike gachara, a ga-eziga ozi ọzọ na ngalaba 0

Anyị hụrụ na, ewezuga nkwụsịtụ dị mkpirikpi iji guzobe njikọ ọhụrụ na ịchọ onye ndu ọhụrụ, onye nrụpụta na-eziga ozi mgbe niile. Nhazi a na-eme ka o doo anya na ọ dị na-akwụ ụgwọ nkwụsi ike (nchekwa data). Kafka tụfuru puku kwuru puku ozi mana ọ gara n'ihu na-anabata akwụkwọ ọhụrụ.

Acks = niile na ISR

Ka anyị kwugharịa ọnọdụ a ọzọ, mana ya acks = niile. Broker 3 nwere nkezi latency nke sekọnd anọ. Onye nrụpụta na-eziga ozi ya acks = niile, ma ugbu a anaghị enweta nzaghachi ngwa ngwa. Onye ndu ahụ na-echere ka a zọpụta ozi site na ụdị oyiri niile dị na ISR.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 13. ISR nwere oyiri atọ. Otu na-adị nwayọ, na-ebute igbu oge na ndekọ

Mgbe sekọnd anọ nke igbu oge ọzọ gasịrị, onye na-ere ahịa 2 na-eziga ack. Emelitela ụdị oyiri niile ugbu a nke ọma.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 14. All oyiri na-echekwa ozi na zipu ack

Broker 3 na-adaba n'ihu ma wepụ ya na ISR. A na-ebelata nkwụsị nke ukwuu n'ihi na ọ dịghị ihe nṅomi dị nwayọ fọdụrụ na ISR. Broker 2 na-echere naanị onye na-ere ahịa 1, ma ọ nwere nkezi lag nke 500 ms.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 15. A na-ewepụ ihe oyiri na onye na-ere ahịa 3 na ISR

Mgbe ahụ, onye na-ere ahịa 2 dara na onye isi na-agafe na onye na-ere ahịa 1 na-enweghị ozi.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 16. Broker 2 dara

Onye nrụpụta ahụ chọtara onye ndu ọhụrụ wee malite iziga ya ozi. The latency na-na-ebelata n'ihi na ISR ugbu a nwere otu oyiri! Ya mere nhọrọ acks = niile adịghị atụkwasị redundancy.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 17. oyiri na ore ahia 1 na-ebute ụzọ na-enweghị efu ozi

Mgbe ahụ, onye na-ere ahịa 1 daa na onye isi na-aga na onye na-ere ahịa 3 na-efunahụ ozi 14238!

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 18. Broker 1 na-anwụ na-edu ndú mgbanwe na adịghị ọcha ntọala na-arụpụta nnukwu data ọnwụ

Anyị enweghị ike ịwụnye nhọrọ adịghị ọcha.ndú.nhọpụta. nwee ike n'ime ihe pụtara ezi. Site na ndabara ọ hà nhata ụgha. Ntọala acks = niile с adịghị ọcha.leader.election.enable=ezi na-enye ohere ịnweta ụfọdụ nchekwa data agbakwunyere. Ma dị ka ị pụrụ ịhụ, anyị ka nwere ike idapụ ozi.

Ma gịnị ma ọ bụrụ na anyị chọrọ ịbawanye nchekwa data? Ị nwere ike itinye Clean.leader.election.enable = ụgha, mana nke a agaghị echebe anyị pụọ na ọnwụ data. Ọ bụrụ na onye ndu ahụ daa nke ọma wee were data ahụ, mgbe ahụ ozi ka na-efunahụ ya, gbakwunyere nnweta na-efunahụ ruo mgbe onye nchịkwa weghachi ọnọdụ ahụ.

Ọ ka mma ịhụ na ozi niile anaghị arụ ọrụ, ma tụfuo ndekọ ahụ. Mgbe ahụ, ọ dịkarịa ala site n'echiche nke onye na-ere ahịa, data ọnwụ ga-ekwe omume na ihe omume nke abụọ ma ọ bụ karịa n'otu oge ọdịda.

Acks=niile, min.insync.replicas na ISR

Na nhazi isiokwu min.insync.replicas Anyị na-abawanye ọkwa nke nchekwa data. Ka anyị gabiga akụkụ ikpeazụ nke ọnọdụ gara aga ọzọ, mana oge a na min.insync.replicas=2.

Ya mere, onye na-ere ahịa 2 nwere onye ndu oyiri na onye na-eso ya na onye na-ere ahịa 3 na-ewepụ na ISR.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 19. ISR sitere na oyiri abụọ

Broker 2 dara na onye isi na-agafe na onye na-ere ahịa 1 na-enweghị ozi ọ bụla. Mana ugbu a, ISR nwere naanị otu oyiri. Nke a anaghị ezute ọnụ ọgụgụ kacha nta iji nata ndekọ, ya mere onye na-ere ahịa na-eji njehie azaghachi mbọ ide NotEnoughReplicas.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 20. Ọnụ ọgụgụ nke ISR bụ otu dị ala karịa akọwapụtara na min.insync.replicas

Nhazi a na-achụ àjà maka ịdị n'otu. Tupu ịnakwere ozi, anyị na-ahụ na edere ya na ọ dịkarịa ala ugboro abụọ. Nke a na-enye onye nrụpụta obi ike karịa. N'ebe a, ọnwụ ozi ga-ekwe omume naanị ma ọ bụrụ na oyiri abụọ na-ada n'otu oge n'ime obere oge ruo mgbe emegharịghachiri ozi ahụ na onye na-eso ụzọ ọzọ, nke a na-atụghị anya ya. Ma ọ bụrụ na ị bụ nnukwu paranoid, ị nwere ike ịtọ replication factor ka 5, na min.insync.replicas site 3. N'ebe a, ndị na-ere ahịa atọ ga-adaba n'otu oge iji tụfuo ndekọ ahụ! N'ezie, ị na-akwụ ụgwọ maka ntụkwasị obi a na nkwụsịtụ ọzọ.

Mgbe nnweta dị mkpa maka nchekwa data

Dị ka ikpe na RabbitMQ, mgbe ụfọdụ ịnweta dị mkpa maka nchekwa data. Nke a bụ ihe ị kwesịrị ichebara echiche:

  • Onye mbipụta ahụ nwere ike weghachi mperi naanị wee nwee ọrụ elu ma ọ bụ onye ọrụ nwaa ọzọ ma emechaa?
  • Onye mbipụta nwere ike ịchekwa ozi ahụ na mpaghara ma ọ bụ na nchekwa data iji nwaa ọzọ ma emechaa?

Ọ bụrụ na azịza ya bụ mba, mgbe ahụ ịkwalite nnweta na-eme ka nchekwa data dịkwuo mma. Ị ga-atụfu obere data ma ọ bụrụ na ịhọrọ nnweta kama ịdekọghị. Ya mere, ihe niile na-adabere na ịchọta nguzozi, na mkpebi ahụ dabere na ọnọdụ ahụ kpọmkwem.

Ihe ISR pụtara

Ụlọ ọrụ ISR na-enye gị ohere ịhọrọ nguzozi kachasị mma n'etiti nchekwa data na latency. Dịka ọmụmaatụ, hụ na ọ dị ma ọ bụrụ na ọdịda nke ọtụtụ n'ime oyiri, na-ebelata mmetụta nke oyiri nwụrụ anwụ ma ọ bụ jiri nwayọọ na usoro nke latency.

Anyị na-ahọrọ ihe ọ pụtara n'onwe anyị oyiri.lag.time.max.ms dị ka mkpa gị si dị. N'ezie, oke a pụtara ogologo oge anyị dị njikere ịnakwere mgbe acks = niile. Uru ndabara bụ sekọnd iri. Ọ bụrụ na nke a dị gị ogologo, ị nwere ike belata ya. Mgbe ahụ, ugboro nke mgbanwe na ISR ga-abawanye, ebe ọ bụ na a ga-ewepụ ndị na-eso ụzọ ma tinyekwuo ya ugboro ugboro.

RabbitMQ bụ naanị otu enyo nke kwesịrị ka emegharị ya. Igwe enyo dị nwayọ na-ewebata latency ọzọ, na enyo ndị nwụrụ anwụ nwere ike ichere ruo mgbe ngwugwu ndị na-elele ọnụ ọnụ nke ọ bụla (akọrọ net) iji zaghachi. ISR bụ ụzọ na-adọrọ mmasị iji zere okwu ndị a na-adịghị ahụ anya. Mana anyị nwere ike ịla n'iyi n'ihi na ISR nwere ike ịdaba na onye ndu. Iji zere ihe egwu a, jiri ntọala min.insync.replicas.

Nkwekọrịta njikọ ndị ahịa

Na ntọala bootstrap.sava onye na-emepụta ihe na onye na-azụ ahịa nwere ike ịkọwa ọtụtụ ndị na-ere ahịa maka ijikọ ndị ahịa. Echiche bụ na mgbe otu ọnụ na-agbada, enwere ọtụtụ ndị mapụtara nke onye ahịa nwere ike imepe njikọ. Ndị a abụghị ndị isi ngalaba, kama ọ bụ naanị isi mmalite maka nbudata mbụ. Onye ahịa ahụ nwere ike ịjụ ha nke ọnụ na-akwado onye ndu nkewa na-agụ / dee.

Na RabbitMQ, ndị ahịa nwere ike jikọọ na ọnụ ụzọ ọ bụla, na ntụgharị nke ime na-eziga arịrịọ ahụ n'ebe ọ kwesịrị ịga. Nke a pụtara na ị nwere ike ịwụnye ihe nkwụnye ibu n'ihu RabbitMQ. Kafka chọrọ ka ndị ahịa jikọọ na ọnụ ọnụ nke na-akwado onye ndu nkebi kwekọrọ. N'ọnọdụ dị otú ahụ, ị ​​nweghị ike ịwụnye ihe nkwụnye ibu. Ndepụta bootstrap.sava Ọ dị oke mkpa na ndị ahịa nwere ike ịnweta wee chọta ọnụ ụzọ ziri ezi mgbe ọdịda gasịrị.

Kafka Consensus Architecture

Ruo ugbu a, anyị atụlebeghị ka ụyọkọ ahụ si amụta banyere ọdịda nke onye na-ere ahịa na otu esi ahọpụta onye ndu ọhụrụ. Iji ghọta ka Kafka si arụ ọrụ na nkebi netwọkụ, ị ga-ebu ụzọ ghọta ụkpụrụ ụkpụrụ nkwekọrịta.

A na-ebuga ụyọkọ Kafka ọ bụla yana ụyọkọ Zookeeper, nke bụ ọrụ nkwekọrịta ekesara nke na-enye ohere ka usoro ahụ nwee nkwenye na ụfọdụ steeti enyere, na-ebute nkwụsi ike karịa ịdị adị. Achọrọ nkwenye nke ọtụtụ ọnụ ụlọ Zookeeper iji kwado ọrụ ọgụgụ na ide.

Onye na-elekọta ụlọ na-echekwa ọnọdụ ụyọkọ ahụ:

  • Ndepụta isiokwu, ngalaba, nhazi, oyiri ndị ndu ugbu a, ihe ndị a họọrọ.
  • Ndị otu ụyọkọ. Onye na-ere ahịa ọ bụla na-atụgharị ụyọkọ Zookeeper. Ọ bụrụ na ọ nwetaghị ping n'ime oge a kapịrị ọnụ, mgbe ahụ Zookeeper na-edekọ onye na-ere ahịa ka ọ dịghị.
  • Ịhọrọ isi na ọnụ ụzọ mapụtara maka onye njikwa.

Ọnụ njikwa bụ otu n'ime ndị na-ere ahịa Kafka na-ahụ maka ịhọpụta ndị isi oyiri. Zookeeper na-ezigara onye njikwa ọkwa ọkwa gbasara otu ụyọkọ na mgbanwe isiokwu, na onye njikwa ga-eme ihe na mgbanwe ndị a.

Dịka ọmụmaatụ, ka anyị were isiokwu ọhụrụ nwere akụkụ iri na ihe ngbanwe nke 3. Onye njikwa ga-ahọrọ onye ndu maka nkebi ọ bụla, na-agbalị ikesa ndị isi n'etiti ndị na-ere ahịa.

Maka onye njikwa ngalaba ọ bụla:

  • na-emelite ozi na Zookeeper gbasara ISR na onye ndu;
  • Na-ezigara LeaderAndISRCommand na onye na-ere ahịa ọ bụla na-akwado ụdị nkebi a, na-agwa ndị na-ere ahịa banyere ISR na onye ndu.

Mgbe onye na-ere ahịa nwere onye ndu dara, Zookeeper na-ezigara onye njikwa ọkwa, wee họrọ onye ndu ọhụrụ. Ọzọ, onye njikwa ahụ na-ebu ụzọ kwalite Zookeeper wee ziga onye na-ere ahịa ọ bụla iwu na-agwa ha mgbanwe onye ndu.

Onye ndu ọ bụla na-ahụ maka iweta ndị ISR. Ntọala oyiri.lag.time.max.ms na-ekpebi onye ga-abanye ebe ahụ. Mgbe ISR gbanwere, onye ndu na-ebufe ozi ọhụrụ na Zookeeper.

A na-agwa onye na-elekọta anụ ọhịa maka mgbanwe ọ bụla nke mere na ọ bụrụ na ọdịda dara, njikwa na-aga n'ihu na onye ndu ọhụrụ.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 21. Kafka Consensus

Protocol mmụgharị

Ịghọta nkọwa nke nmegharịgharị na-enyere gị aka ịghọta nke ọma ọnọdụ ọnwụ data nwere ike ime.

Ajụjụ nlele, Log End Offset (LEO) na Highwater Mark (HW)

Anyị tụlere na ndị na-eso ụzọ na-ezigara onye ndu arịrịọ mgbe ụfọdụ. Oge ndabara bụ 500ms. Nke a dị iche na RabbitMQ na na RabbitMQ esiteghị n'enyo kwụ n'ahịrị butere ya kama ọ bụ nna ukwu. Nna-ukwu na-agbanye mgbanwe na enyo.

Onye ndu na ndị na-eso ụzọ niile na-echekwa akara Log End Offset (LEO) na akara Highwater (HW). Akara LEO na-echekwa nbido nke ozi ikpeazụ na oyiri mpaghara, na HW na-ejide nkwụghachi nke nkwa ikpeazụ. Cheta na maka itinye ọkwa, a ga-anọgidesi ike na ozi ahụ n'ofe ụdị ISR niile. Nke a pụtara na LEO na-anọkarị n'ihu HW.

Mgbe onye ndu natara ozi, ọ na-echekwa ya na mpaghara. Onye na-eso ụzọ na-arịọ arịrịọ site na ịnyefe LEO ya. Onye ndu ahụ zipụzie ozi ole na ole malite na LEO a ma na-ebufekwa HW dị ugbu a. Mgbe onye ndu natara ozi na oyiri niile echekwala ozi ahụ na nkwụghachi enyere, ọ na-akpali akara HW. Naanị onye ndu nwere ike ibugharị HW, yabụ ndị na-eso ụzọ niile ga-ama uru dị ugbu a na nzaghachi nke arịrịọ ha. Nke a pụtara na ndị na-eso ụzọ nwere ike ịla azụ n'azụ onye ndu na ozi na ihe ọmụma HW. Ndị ahịa na-enweta ozi naanị ruo HW dị ugbu a.

Rịba ama na "na-anọgide" pụtara na e dere na ebe nchekwa, ọ bụghị na diski. Maka arụmọrụ, Kafka na-emekọrịta na diski n'otu oge. RabbitMQ nwekwara oge dị otú ahụ, ma ọ ga-ezigara onye na-ebipụta akwụkwọ nkwenye naanị mgbe nna ukwu na enyo niile dechara ozi ahụ na diski. Ndị mmepe Kafka, maka ebumnuche arụmọrụ, kpebiri izipu ack ozugbo edere ozi ahụ na ebe nchekwa. Kafka zọtara na redundancy na-ewepụ ihe ize ndụ nke ịchekwa ozi ekwenyero na ebe nchekwa naanị.

ọdịda ndu

Mgbe onye ndu dara, Zookeeper na-eme ka onye njikwa mara ya, wee họrọ ụdị onye ndu ọhụrụ. Onye ndu ọhụrụ ahụ na-esetịpụ akara HW ọhụrụ dịka LEO ya siri dị. Ndị na-eso ụzọ na-enweta ozi gbasara onye ndu ọhụrụ ahụ. Dabere na ụdị Kafka, onye na-eso ụzọ ga-ahọrọ otu n'ime ọnọdụ abụọ:

  1. Ọ ga-ewepụ ndekọ ndekọ mpaghara na HW amaara wee ziga arịrịọ onye ndu ọhụrụ maka ozi mgbe akara a gasịrị.
  2. Ọ ga-ezigara onye ndu arịrịọ ka ọ chọpụta HW n'oge a họpụtara ya onye isi, wee kpachie ndekọ ahụ na nkwụsị a. Ọ ga-amalite na-arịọ arịrịọ kwa oge malite na nkwụsị a.

Onye na-eso ụzọ nwere ike ịdị mkpa ịkpụpụ ndekọ ahụ maka ihe ndị a:

  • Mgbe onye ndu dara, onye mbụ na-eso ụzọ na ISR set nke edebara aha ya na Zookeeper meriri ntuli aka wee bụrụ onye ndu. Ndị na-eso ụzọ niile nọ na ISR, n'agbanyeghị na a na-atụle "na mmekọrịta," nwere ike ọ gaghị enweta akwụkwọ ozi niile sitere na onye ndu mbụ. Ọ ga-ekwe omume na onye na-eso ụzọ egosipụtara enweghị nnomi kachasị ọhụrụ. Kafka na-achọpụta na ọ dịghị ihe dị iche n'etiti nsụgharị. Ya mere, iji zere ndịiche, onye ọ bụla na-eso ụzọ ga-ewepụrịrị log ya na uru HW nke onye ndu ọhụrụ n'oge nhoputa ya. Nke a bụ ihe ọzọ kpatara ịtọ ntọala acks = niile dị mkpa maka ịdịgidesi ike.
  • A na-ede ozi kwa oge na diski. Ọ bụrụ na ọnụ ụyọkọ niile daa n'otu oge, mgbe ahụ, a ga-echekwa ihe ndị nwere mgbaghara dị iche iche na diski. O kwere omume na mgbe ndị na-ere ahịa na-alọghachi na ntanetị, onye ndu ọhụrụ a họpụtara ga-anọ n'azụ ndị na-eso ụzọ ya n'ihi na echekwara ya na diski n'ihu ndị ọzọ.

Njikọta na ụyọkọ ahụ

Mgbe ị na-ejikọta ụyọkọ ahụ, ihe ndị ahụ na-eme otu ihe ahụ dị ka mgbe onye ndu dara: ha na-enyocha oyiri onye ndu wee tinye akwụkwọ ndekọ ha na HW ya (n'oge ntuli aka). N'iji ya tụnyere, RabbitMQ na-ejikwa ọnụ ọnụ ọnụ ọnụ dị ka ihe ọhụrụ kpamkpam. N'okwu abụọ ahụ, onye na-ere ahịa na-atụfu steeti ọ bụla dị adị. Ọ bụrụ na ejiri mmekọrịta akpaaka, onye nwe ya ga-emegharịrịrị ọdịnaya niile dị ugbu a na enyo ọhụrụ na usoro "ka ụwa dum chere". Nna-ukwu anaghị anabata ọrụ ọgụgụ ma ọ bụ dee ọ bụla n'oge ọrụ a. Ụzọ a na-ebute nsogbu na nnukwu kwụ n'ahịrị.

Kafka bụ log na-ekesa, na n'ozuzu, ọ na-echekwa ozi karịa nke RabbitMQ kwụ n'ahịrị, ebe a na-ewepụ data na kwụ n'ahịrị mgbe agụchara ya. Ahịrị nọ n'ọrụ kwesịrị ịdị ntakịrị. Ma Kafka bụ log nwere amụma njigide nke ya, nke nwere ike ịtọ oge nke ụbọchị ma ọ bụ izu. Mgbochi kwụ n'ahịrị na ụzọ mmekọrịta zuru oke bụ ihe anabataghị nke ọma maka ndekọ nke kesara. Kama nke ahụ, ndị na-eso Kafka na-agbaji akwụkwọ ndekọ ha na HW onye ndu (n'oge nhoputa ya) ma ọ bụrụ na ha dị n'ihu onye ndu. N'okwu o yikarịrị, mgbe onye na-eso ụzọ nọ n'azụ, ọ na-amalite naanị ịrịọ arịrịọ malite na LEO ugbu a.

Ndị na-eso ụzọ ọhụrụ ma ọ bụ sonyeere ọzọ na-amalite na mpụga ISR na anaghị esonye na mmemme. Ha na-arụkọ ọrụ na otu ahụ, na-enweta ozi ngwa ngwa dị ka ha nwere ike ruo mgbe ha zutere onye ndu wee banye ISR. Enweghị mkpọchi ma ọ dịghị mkpa ịtụfu data gị niile.

Ọnwụ nke njikọta

Kafka nwere ihe ndị ọzọ karịa RabbitMQ, ya mere ọ nwere usoro omume dị mgbagwoju anya mgbe ụyọkọ ahụ kwụsịrị. Mana emere Kafka na mbụ maka ụyọkọ, yabụ a na-echepụta azịza ya nke ọma.

N'okpuru bụ ọtụtụ ndapụta ọdịda njikọ:

  • Ihe atụ nke 1: Onye na-eso ụzọ anaghị ahụ onye ndu, mana ọ ka na-ahụ onye nlekọta anụ ọhịa.
  • Ihe atụ 2: Onye ndu ahụghị ndị na-eso ụzọ ọ bụla, mana ọ ka na-ahụ Zookeeper.
  • Ihe atụ nke atọ: Onye na-eso ụzọ na-ahụ onye ndu, mana ọ naghị ahụ onye nlekọta anụ ọhịa.
  • Ihe atụ nke 4: Onye ndu na-ahụ ndị na-eso ụzọ, mana ọ naghị ahụ Zookeeper.
  • Ihe atụ 5: Onye na-eso ụzọ dị iche na ma ọnụ Kafka ndị ọzọ na Zookeeper.
  • Ihe atụ nke 6: Onye ndu dị iche na ma ndị ọzọ Kafka nodes na Zookeeper.
  • Ihe atụ 7: Ọnụ onye na-ahụ maka Kafka enweghị ike ịhụ ọnụ Kafka ọzọ.
  • Ihe atụ 8: Onye njikwa Kafka anaghị ahụ Zookeeper.

Ihe ngosi ọ bụla nwere omume nke ya.

Ihe atụ nke 1: Onye na-eso ụzọ ahụghị onye ndu, mana ọ ka na-ahụ onye na-elekọta anụ ọhịa

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 22. Dịruru ná njọ 1: ISR nke atọ oyiri

Ọdịda njikọ ahụ na-ekewa onye na-ere ahịa 3 na ndị na-ere ahịa 1 na 2, mana ọ bụghị na Zookeeper. Broker 3 enweghịzi ike izipu arịrịọ mbubata. Mgbe oge gafere oyiri.lag.time.max.ms a na-ewepụ ya na ISR na anaghị etinye aka na ozi. Ozugbo eweghachiri njikọta, ọ ga-amaliteghachi arịrịọ wee sonye na ISR mgbe ọ chọtara onye ndu. Onye na-elekọta ụlọ ga-aga n'ihu na-anata pings wee chee na onye na-ere ahịa ahụ dị ndụ ma dịkwa mma.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 23. Dịruru ná njọ 1: A na-ewepụ onye na-ere ahịa na ISR ma ọ bụrụ na ọ nweghị arịrịọ ọ bụla enwetara ya n'ime oge replica.lag.time.max.ms

Enweghị nkwusioru nkewa-ụbụrụ ma ọ bụ nkwusioru dịka na RabbitMQ. Kama nke ahụ, a na-ebelata ọrụ ọrụ.

Ihe atụ 2: Onye ndu ahụghị ndị na-eso ụzọ ọ bụla, mana ọ ka na-ahụ Zookeeper

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 24. Ihe atụ 2. Onye ndu na ndị na-eso ụzọ abụọ

Nkwụsị na njikọta netwọkụ na-ekewa onye ndu na ndị na-eso ụzọ, mana onye na-ere ahịa ka nwere ike ịhụ Zookeeper. Dị ka ọ dị na ọnọdụ mbụ, ISR na-ebelata, mana oge a bụ naanị onye ndu ka ndị na-eso ụzọ niile kwụsịrị iziga arịrịọ. Ọzọ, ọ dịghị nkewa ezi uche dị na ya. Kama, enwere mfu nke nrụgharị maka ozi ọhụrụ ruo mgbe eweghachiri njikọta. Onye na-elekọta ụlọ na-aga n'ihu na-enweta pings ma kwenye na onye na-ere ahịa ahụ dị ndụ ma dịkwa mma.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 25. Scenario 2. ISR adala naanị onye ndu

Ihe atụ 3. Onye na-eso ụzọ na-ahụ onye ndu, mana ọ naghị ahụ onye nlekọta anụ ọhịa

Ekewapụrụ onye na-eso ụzọ ya na Zookeeper, mana ọ bụghị na onye na-ere ahịa ya na onye ndu. N'ihi ya, onye na-eso ụzọ na-aga n'ihu na-arịọ arịrịọ ma bụrụ onye otu ISR. Onye na-elekọta anụ ọhịa anaghịzi anata pings ma debanye aha okuku onye na-ere ahịa, mana ebe ọ bụ naanị onye na-eso ụzọ, enweghị nsonaazụ ọ bụla ma mgbake gachara.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 26. Ihe atụ nke atọ: Onye na-eso ya na-aga n'ihu na-ezigara onye ndu arịrịọ

Ihe atụ 4. Onye ndu na-ahụ ndị na-eso ụzọ, mana ọ naghị ahụ Zookeeper

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 27. Ihe atụ 4. Onye ndu na ndị na-eso ụzọ abụọ

Ekewapụrụ onye isi na Zookeeper, mana ọ bụghị na ndị na-ere ahịa nwere ndị na-eso ụzọ.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 28. Ihe atụ nke anọ: Onye ndu dịpụrụ adịpụ na Zookeeper

Mgbe oge ụfọdụ gachara, Zookeeper ga-edebanye aha onye na-ere ahịa aha maka ọdịda wee gwa onye njikwa maka ya. Ọ ga-ahọpụta onye ndu ọhụrụ n’etiti ndị na-eso ụzọ ya. Otú ọ dị, onye ndu mbụ ga-anọgide na-eche na ọ bụ onye ndú na ọ ga-anọgide na-anabata ndenye site na acks=1. Ndị na-eso ụzọ anaghịzi ezigara ya arịrịọ, yabụ ọ ga-eche na ha anwụọla wee gbalịa imebi ISR ​​n'onwe ya. Mana ebe ọ nweghị njikọ na Zookeeper, ọ gaghị enwe ike ime nke a, na mgbe ahụ ọ ga-ajụ ịnakwere ndenye ọzọ.

ozi acks = niile agaghị enweta nkwenye n'ihi na ISR na-ebu ụzọ gbanye nsụgharị niile, na ozi adịghị eru ha. Mgbe onye ndu mbụ nwara iwepụ ha na ISR, ọ gaghị enwe ike ime ya ma kwụsị ịnakwere ozi ọ bụla.

N'oge na-adịghị anya ndị ahịa hụrụ mgbanwe na onye ndu wee malite izipu ndekọ na sava ọhụrụ. Ozugbo eweghachiri netwọkụ ahụ, onye ndu mbụ ahụ na-ahụ na ọ bụghịzi onye ndu wee kwụnye ndekọ ya na uru HW nke onye ndu ọhụrụ ahụ nwere n'oge ọdịda iji zere ọdịiche log. Ọ ga-amalite izipu arịrịọ maka onye ndu ọhụrụ. Ihe ndekọ niile sitere n'aka onye ndu mbụ na-abụghị nke onye ndu ọhụrụ ahụ furu efu. Ya bụ, ozi ndị onye ndu mbụ anabataghị n'ime sekọnd ole na ole mgbe ndị isi abụọ na-arụ ọrụ ga-efunahụ ya.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 29. Ihe atụ 4. Onye ndu na onye na-ere ahịa 1 na-aghọ onye na-eso ụzọ mgbe eweghachiri netwọk ahụ.

Ihe atụ 5: Onye na-eso ụzọ dị iche na ma ọnụ Kafka ndị ọzọ na Zookeeper

Onye na-eso ụzọ ahụ kewapụrụ kpamkpam na ọnụ ụzọ Kafka ndị ọzọ na Zookeeper. Ọ na-ewepụ onwe ya na ISR ruo mgbe eweghachiri netwọkụ ahụ, wee jide ndị ọzọ.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 30. Ihe atụ nke 5: A na-ewepụ onye na-eso ụzọ dịpụrụ adịpụ na ISR

Ihe atụ nke 6: Onye ndu dị iche na ma ndị ọzọ Kafka nodes na Zookeeper

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 31. Ihe atụ 6. Onye ndu na ndị na-eso ụzọ abụọ

Onye ndu dịpụrụ adịpụ kpamkpam na ndị na-eso ụzọ ya, onye njikwa na Zookeeper. Maka obere oge ọ ga-aga n'ihu na-anabata ndenye sitere na acks=1.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 32. Ihe atụ nke 6: Kewapụ onye isi na ọnụ Kafka ndị ọzọ na Zookeeper

Na-enwetabeghị arịrịọ mgbe ngafe gachara oyiri.lag.time.max.ms, ọ ga-agbalị imebi ISR ​​n'onwe ya, ma ọ gaghị enwe ike ime ya n'ihi na ọ dịghị nkwurịta okwu na Zookeeper, mgbe ahụ, ọ ga-akwụsị ịnakwere na-ede.

Ka ọ dị ugbu a, Zookeeper ga-akara onye na-ere ahịa dịpụrụ adịpụ dị ka onye nwụrụ anwụ na onye njikwa ga-ahọpụta onye ndu ọhụrụ.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 33. Ihe atụ 6. Ndị isi abụọ

Onye ndu izizi nwere ike nabata ndenye maka sekọnd ole na ole, mana kwụsịzie ịnakwere ozi ọ bụla. A na-emelite ndị ahịa kwa sekọnd 60 site na iji metadata kachasị ọhụrụ. A ga-agwa ha maka mgbanwe onye ndu wee malite izipu ndenye na onye ndu ọhụrụ.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 34. Ihe atụ 6: Ndị nrụpụta na-agbanwe na onye ndu ọhụrụ

Ndenye niile enwetara nke onye ndu izizi mere kemgbe enweghị njikọ ga-efunahụ ya. Ozugbo eweghachiri netwọkụ ahụ, onye ndu mbụ ga-achọpụta site na Zookeeper na ọ bụghịzi onye ndu. Mgbe ahụ, ọ ga-akụda log ya na HW nke onye ndu ọhụrụ n'oge ntuli aka wee malite izipu arịrịọ dịka onye na-eso ụzọ.

RabbitMQ vs Kafka: Mmegide mmejọ yana nnweta dị elu
Osikapa. 35. Ihe atụ 6: Onye ndu mbụ na-aghọ onye na-eso ụzọ ka eweghachite njikọ netwọk

N'ọnọdụ a, nkewa ezi uche nwere ike ime maka obere oge, ma ọ bụrụ naanị acks=1 и min.insync.replicas nwekwara 1. ezi uche nkewa na-akpaghị aka agwụ ma mgbe netwọk e weghachiri eweghachi, mgbe mbụ onye ndú ghọtara na ọ bụghịzi onye ndú, ma ọ bụ mgbe niile ahịa ghọtara na onye ndú agbanweela na-amalite na-edere ọhụrụ ndú - nke ọ bụla mere mbụ. N'ọnọdụ ọ bụla, ụfọdụ ozi ga-efunahụ, mana ọ bụ naanị ya acks=1.

Enwere ihe ọzọ dị iche iche nke ọnọdụ a ebe, obere oge tupu netwọk ahụ kewaa, ndị na-eso ụzọ dara n'azụ na onye ndu abịakọrọ na ISR n'onwe ya. Mgbe ahụ, ọ ga-anọpụ iche n'ihi enweghị njikọ. A họpụtara onye ndu ọhụrụ, mana onye ndu mbụ gara n'ihu na-anabata ndenye, ọbụlagodi acks = niile, n'ihi na ọ dịghị onye ọzọ na ISR ma e wezụga ya. Ihe ndekọ ndị a ga-efunahụ ozugbo eweghachiri netwọkụ ahụ. Nanị ụzọ ị ga-esi zere nhọrọ a bụ min.insync.replicas = 2.

Ihe atụ nke 7: Ọnụ njikwa Kafka enweghị ike ịhụ ọnụ ọnụ Kafka ọzọ

N'ozuzu, ozugbo njikọ na ọnụ Kafka furu efu, onye nchịkwa agaghị enwe ike ịnyefe onye ndu ọ bụla mgbanwe ozi na ya. N'okwu kachasị njọ, nke a ga-eduga na nkewa ezi uche dị mkpirikpi, dị ka ọ dị na ọnọdụ 6. Ọtụtụ mgbe, onye na-ere ahịa agaghị abụ onye na-eme ntuli aka maka onye ndú ma ọ bụrụ na nke ikpeazụ ada ada.

Ihe atụ 8: Onye njikwa Kafka anaghị ahụ Zookeeper

Onye na-elekọta ụlọ agaghị enweta ping site na njikwa dara ada wee họrọ ọnụ Kafka ọhụrụ dị ka onye njikwa. Onye njikwa mbụ nwere ike ịga n'ihu na-egosipụta onwe ya dị ka nke a, mana ọ naghị enweta ozi sitere na Zookeeper, yabụ na ọ gaghị enwe ọrụ ọ bụla ọ ga-arụ. Ozugbo e weghachiri netwọk ahụ, ọ ga-achọpụta na ọ bụghịzi onye nchịkwa, ma ọ ghọọla ọnụ Kafka mgbe niile.

Mkpebi sitere na ndapụta

Anyị na-ahụ na ọnwụ nke njikọta nke ndị na-eso ụzọ anaghị ebute mfu ozi, kama ọ na-ebelata obere oge ọrụ ruo mgbe eweghachiri netwọk ahụ. Nke a, n'ezie, nwere ike iduga data ọnwụ ma ọ bụrụ na otu ma ọ bụ karịa ọnụ na-efu.

Ọ bụrụ na onye ndu kewapụrụ na Zookeeper n'ihi enweghị njikọ, nke a nwere ike ibute ozi na-efunahụ ya acks=1. Enweghị nkwurịta okwu na Zookeeper na-akpata nkewa ezi uche dị nkenke na ndị isi abụọ ahụ. A na-edozi nsogbu a site na paramita acks = niile.

Ogologo min.insync.replicas n'ime nsụgharị abụọ ma ọ bụ karịa na-enye mmesi obi ike na ụdị ọnọdụ dị mkpirikpi agaghị eme ka ozi efu dị ka ọ dị na Scenario 6.

Nchịkọta ozi furu efu

Ka anyị depụta ụzọ niile ị nwere ike tufuo data na Kafka:

  • Ọdịda onye ndu ọ bụla ma ọ bụrụ na enwetara ozi iji acks=1
  • Ntugharị ọ bụla na-adịghị ọcha nke ndu, ya bụ, na-eso ụzọ n'èzí ISR, ọbụna na acks = niile
  • Kewapụ onye ndu na Zookeeper ma ọ bụrụ na akwadoro iji ozi acks=1
  • Mwepu zuru oke nke onye ndu nke emebiela otu ISR n'onwe ya. Ozi niile ga-efunahụ, ọbụlagodi acks = niile. Nke a bụ naanị eziokwu ma ọ bụrụ min.insync.replicas=1.
  • Ọdịda otu oge nke ọnụ nkebi niile. N'ihi na anabatara ozi site na ebe nchekwa, ụfọdụ nwere ike edebeghị ya na diski. Ka ịmalitegharịa sava ahụ, ozi ụfọdụ nwere ike na-efu.

Enwere ike zere ngbanwe ọchịchị na-adịghị ọcha site na machibido ha ma ọ bụ hụ na ọ dịkarịa ala ugboro abụọ. Nhazi kachasị na-adịgide adịgide bụ ngwakọta acks = niile и min.insync.replicas ọzọ 1.

Ntụle ozugbo nke ntụkwasị obi nke RabbitMQ na Kafka

Iji hụ na a pụrụ ịdabere na ya na ịdị elu dị elu, ma nyiwe abụọ na-emejuputa usoro mmeghari nke mbụ na nke abụọ. Agbanyeghị, RabbitMQ nwere ikiri ụkwụ Achilles. Mgbe ị na-ejikọta ọzọ mgbe ọdịda gasịrị, ọnụ na-atụfu data ha ma gbochie mmekọrịta. Ugboro abụọ a na-ajụ ajụjụ ogologo ndụ nke nnukwu kwụ n'ahịrị na RabbitMQ. Ị ga-anakwere ma ọ bụ mbelata ụgwọ ọrụ ma ọ bụ ogologo oge mgbochi. Mbelata redundancy na-abawanye ohere nke nnukwu ọnwụ data. Ma ọ bụrụ na kwụ n'ahịrị dị ntakịrị, mgbe ahụ n'ihi nkwụsịtụ, obere oge nke enweghị ohere (sekọnd ole na ole) nwere ike ime ya site na iji mgbalị njikọ ugboro ugboro.

Kafka enweghị nsogbu a. Ọ na-atụfu data naanị site na ọdịiche dị n'etiti onye ndu na onye na-eso ya. A na-echekwa data niile ekekọrịtara. Tụkwasị na nke ahụ, ịmegharị anaghị egbochi usoro ahụ. Onye ndu na-aga n'ihu na-anabata ọkwa mgbe onye na-eso ụzọ ọhụrụ na-ejide ya, yabụ maka deps, isonye ma ọ bụ ịbanye na ụyọkọ ahụ na-aghọ obere ọrụ. N'ezie, a ka nwere okwu dị ka bandwit netwọk n'oge mmeghari. Ọ bụrụ na ị gbakwunye ọtụtụ ndị na-eso ụzọ n'otu oge, ị nwere ike izute oke bandwit.

RabbitMQ dị elu karịa Kafka na ntụkwasị obi mgbe ọtụtụ sava na ụyọkọ dara n'otu oge. Dị ka anyị kwurula, RabbitMQ na-ezigara onye na-ebipụta akwụkwọ nkwenye naanị mgbe nna ukwu na enyo niile dechara ozi na diski. Mana nke a na-agbakwunye latency ọzọ maka ebumnuche abụọ:

  • fsync ọ bụla narị ole na ole millisecond
  • Enwere ike ịhụ ọdịda nke enyo naanị mgbe ndụ nke ngwugwu ndị na-elele ọnụnọ nke ọnụ ọnụ ọ bụla (akọrọ net) agwụla. Ọ bụrụ na enyo akwụsịlata ma ọ bụ daa, nke a na-agbakwunye igbu oge.

Nzọ Kafka bụ na ọ bụrụ na echekwara ozi gafee ọtụtụ ọnụ ọnụ, ọ nwere ike ịnakwere ozi ozugbo ha rutere ebe nchekwa. N'ihi nke a, enwere ihe ize ndụ nke ịla n'iyi ụdị ọ bụla (ọbụlagodi acks = niile, min.insync.replicas=2) n'ọnọdụ ọdịda n'out oge.

N'ozuzu, Kafka na-egosipụta arụmọrụ sọftụwia ka mma ma emebere ya site na ala maka ụyọkọ. Enwere ike ịbawanye ọnụ ọgụgụ ndị na-eso ụzọ na 11 ma ọ bụrụ na ọ dị mkpa maka ntụkwasị obi. Ihe ngbanwe 5 na ọnụọgụ kacha nta nke oyiri na mmekọrịta min.insync.replicas=3 ga-eme ka mfu ozi bụrụ ihe omume dị ụkọ. Ọ bụrụ na akụrụngwa gị nwere ike ịkwado oke ngbanwe a na ọkwa nke redundancy, mgbe ahụ ị nwere ike họrọ nhọrọ a.

Nchịkọta RabbitMQ dị mma maka obere kwụ n'ahịrị. Ma ọbụna obere kwụ n'ahịrị nwere ike ito ngwa ngwa mgbe enwere nnukwu okporo ụzọ. Ozugbo kwụ n'ahịrị buru ibu, ị ga-eme nhọrọ siri ike n'etiti nnweta na ntụkwasị obi. Nchịkọta RabbitMQ kacha dabara adaba maka ọnọdụ anaghị ahụkarị ebe uru nke mgbanwe nke RabbitMQ karịrị ọghọm ọ bụla nke nchịkọta ya.

Otu ihe ngwọta maka adịghị ike nke RabbitMQ na nnukwu kwụ n'ahịrị bụ ịgbaji ha n'ọtụtụ obere kwụ n'ahịrị. Ọ bụrụ na ịchọghị ịtụ usoro kwụ n'ahịrị niile, mana naanị ozi ndị dị mkpa (dịka ọmụmaatụ, ozi sitere n'aka otu onye ahịa), ma ọ bụ enyeghị iwu ihe ọ bụla, yabụ nhọrọ a bụ nke a na-anabata: lelee ọrụ m. Nhazigharị iji kewaa kwụ n'ahịrị (ọrụ a ka na-amalite n'oge).

N'ikpeazụ, echefula banyere ọtụtụ ahụhụ na usoro nchịkọta na nhazigharị nke ma RabbitMQ na Kafka. Ka oge na-aga, sistemụ na-eto eto ma kwụsie ike, mana ọ nweghị ozi ga-adị 100% nchekwa na mfu! Na mgbakwunye, nnukwu ihe mberede na-eme na ebe data!

Ọ bụrụ na ihe funahụrụ m, mehiere, ma ọ bụ na ị kwenyeghị na isi ihe ọ bụla, nweere onwe gị ide okwu ma ọ bụ kpọtụrụ m.

A na-ajụkarị m: "Gịnị ka ị ga-ahọrọ, Kafka ma ọ bụ RabbitMQ?", "Olee ikpo okwu ka mma?". Nke bụ eziokwu bụ na ọ na-adabere n'ezie na ọnọdụ gị, ugbu a ahụmahụ, wdg M na-ala azụ na-enye echiche m n'ihi na ọ ga-abụ nke ukwuu nke ihe oversimplification na-akwado otu ikpo okwu niile ojiji ikpe na-ekwe omume na-agaghị emeli. Edere m usoro isiokwu a ka ị nwee ike ịmepụta echiche nke gị.

Achọrọ m ịsị na usoro abụọ a bụ ndị isi na mpaghara a. Enwere m ike ịbụ onye na-adịghị mma n'ihi na site na ahụmahụ m na ọrụ m na-achọkarị ihe dị ka ịnye ozi na ntụkwasị obi.

M na-ahụ teknụzụ ndị ọzọ na-enweghị ntụkwasị obi a na-ekwe nkwa ịtụ, mgbe ahụ, m na-ele RabbitMQ na Kafka ma ghọta uru dị egwu nke usoro abụọ a.

isi: www.habr.com

Tinye a comment