I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu

Π’ inqaku lokugqibela sijonge i-RabbitMQ yokudibanisa ukunyamezela iimpazamo kunye nokufumaneka okuphezulu. Ngoku makhe simbe nzulu kwiApache Kafka.

Apha iyunithi yophindaphindo isahlulelo. Isihloko ngasinye sinecandelo elinye okanye ngaphezulu. Icandelo ngalinye linenkokeli enabalandeli okanye engenabo. Xa udala isihloko, ukhankanya inani lezahlulo kunye ne-coefficient yokuphindaphinda. Ixabiso eliqhelekileyo ngu-3, ​​oku kuthetha ii-replicas ezintathu: inkokeli enye kunye nabalandeli ababini.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 1. Amacandelo amane asasazwa phakathi kwabathengisi abathathu

Zonke izicelo zokufunda nokubhala ziya kwinkokeli. Abalandeli ngamaxesha athile bathumela izicelo kwinkokeli ukuze bafumane imiyalezo yamva nje. Abathengi abanakuze bajike kubalandeli; le yokugqibela ikhona kuphela ngenxa yokungafuneki kunye nokunyamezela iimpazamo.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu

Ukusilela kwesahlulo

Xa umthengisi engaphumeleli, iinkokeli zamacandelo amaninzi zihlala zisilela. Kuyo ngamnye kubo, umlandeli ovela kwenye i-node uba yinkokeli. Enyanisweni, oku akusoloko kunjalo, ekubeni i-synchronization factor iphinda ibe nefuthe: ingaba kukho abalandeli abahambelanayo, kwaye ukuba akunjalo, ngoko ke ukuba ukutshintshela kwi-replica engavumelaniyo kuvunyelwe. Kodwa masingacomplicate izinto okwangoku.

I-Broker 3 ishiya inethiwekhi, kwaye inkokeli entsha yonyulwa kwicandelo 2 kwi-broker 2.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 2. U-Broker 3 uyafa kwaye umlandeli wakhe kwi-broker 2 wonyulwa njengenkokeli entsha yecandelo lesi-2.

Emva koko i-broker 1 ishiya kunye necandelo loku-1 lilahlekelwa yinkokeli yalo, indima yayo idlula kwi-broker 2.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 3. Kukho umthengisi omnye oseleyo. Zonke iinkokeli zikumthengisi omnye kwaye akukho mfuneko yokungafuneki

Xa i-broker 1 ibuya kwi-intanethi, yongeza abalandeli abane, ibonelela ngokuphindaphinda kwisahlulelo ngasinye. Kodwa zonke iinkokeli zahlala kwi-broker 2.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 4. Iinkokeli zihlala kwi-broker 2

Xa umthengisi 3 esiza, sibuyela kwiikopi ezintathu kwisahlulelo ngasinye. Kodwa zonke iinkokeli zisekwibroker 2.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 5. Ukubekwa okungenakulinganisela kweenkokeli emva kokubuyiselwa kwee-brokers 1 kunye ne-3

I-Kafka inesixhobo senkokeli engcono yokulinganisa kwakhona kunoRabbitMQ. Apho, bekufuneka usebenzise iplagi yomntu wesithathu okanye iskripthi esitshintshe imigaqo-nkqubo yokufuduka i-master node ngokunciphisa ukungafuneki ngexesha lokufuduka. Ukongeza, kwimigca emikhulu kuye kwafuneka samkele ukungafumaneki ngexesha longqamaniso.

I-Kafka inombono "weekopi ezikhethiweyo" zendima yenkokeli. Xa kusenziwa izahlulo zesihloko, iKafka izama ukusasaza iinkokeli ngokulinganayo kuzo zonke iindawo kwaye iphawule ezo nkokeli zokuqala njengoko zikhethwayo. Ngokuhamba kwexesha, ngenxa yokuqalisa kwakhona iseva, ukungaphumeleli, kunye nokuqhawuka koxhulumaniso, iinkokeli zinokuphela kwezinye iindawo, njengakwimeko embi kakhulu echazwe ngasentla.

Ukulungisa oku, iKafka ibonelela ngeendlela ezimbini:

  • Ukhetho auto.leader.rebalance.enable=yinyaniso ivumela indawo yomlawuli ukuba iphinde inike iinkokeli ngokuzenzekelayo umva kwiikopi ezikhethiweyo kwaye ngaloo ndlela ibuyisela unikezelo olufanayo.
  • Umlawuli angasebenzisa iscript kafka-preferred-replica-election.sh ukunikezelwa ngesandla.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 6. Iikopi emva kokulinganisa kwakhona

Olu yayiluguqulelo olulula lokungaphumeleli, kodwa inyaniso inzima ngakumbi, nangona kungekho nto inzima kakhulu apha. Yonke yehla kwii-replicas ezilungelelanisiweyo (In-Sync Replicas, ISR).

IiReplicas ezilungelelanisiweyo (ISR)

I-ISR yiseti yeekopi zesahlulelo esithathwa njenge "synchronized" (in-sync). Kukho inkokeli, kodwa akunakubakho balandeli. Umlandeli uthathwa njengolungelelanisiweyo ukuba wenze iikopi ezichanekileyo zayo yonke imiyalezo yenkokeli ngaphambi kokuba ixesha lokuphumla liphele. replica.lag.time.max.ms.

Umlandeli uyasuswa kwiseti ye-ISR ukuba:

  • akenzanga sicelo sokukhetha ixesha lokuphumla replica.lag.time.max.ms (kucingelwa ukuba ufile)
  • ayikwazanga ukuhlaziya ngexesha lokuphumla replica.lag.time.max.ms (ithathwa ngokuba uyacotha)

Abalandeli benza izicelo zesampulu ngexesha lokuphumla replica.fetch.wait.max.ms, engagqibekanga ukuya kwi-500ms.

Ukucacisa ngokucacileyo injongo ye-ISR, kufuneka sijonge iziqinisekiso ezivela kumvelisi kunye nezinye iimeko zokungaphumeleli. Abavelisi banokukhetha xa umthengisi ethumela isiqinisekiso:

  • acks=0, uqinisekiso aluthunyelwanga
  • acks=1, isiqinisekiso sithunyelwa emva kokuba inkokeli ibhale umyalezo kwilog yendawo yayo
  • acks=konke, uqinisekiso luthunyelwe emva kokuba zonke iikopi ze-ISR zibhale umyalezo kwiilog zasekuhlaleni.

Kwisigama se-Kafka, ukuba i-ISR igcine umyalezo, "izinikele". Acks=konke yeyona ndlela ikhuselekileyo, kodwa yongeza ulibaziseko olongezelelweyo. Makhe sijonge imizekelo emibini yokusilela kunye nendlela iinketho ezahlukeneyo 'ze-acks' ezidibana ngayo nombono we-ISR.

Ii-Acks=1 kunye ne-ISR

Kulo mzekelo, siya kubona ukuba ukuba inkokeli ayilindi ukuba wonke umyalezo ovela kubo bonke abalandeli ugcinwe, ngoko ukulahleka kwedatha kunokwenzeka ukuba inkokeli iyasilela. Ukukhangela umlandeli ongangqanyaniswanga unokwenziwa okanye ungasebenzi ngokuseta unyulo.olungcolileyo.lwenze.

Kulo mzekelo, umenzi unexabiso acks=1. Eli candelo lisasazwe kubo bobathathu abarhwebi. I-Broker 3 isemva, idityaniswe nenkokeli kwimizuzwana esibhozo eyadlulayo kwaye ngoku i-7456 imiyalezo ngasemva. I-Broker 1 yayisemva kwesibini kuphela. Umvelisi wethu uthumela umyalezo kwaye ngokukhawuleza ufumana i-ack back, ngaphandle kwe-overhead yabalandeli abacothayo okanye abafileyo ukuba inkokeli ayilindi.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 7. I-ISR ene-replicas ezintathu

I-Broker 2 iyasilela kwaye umvelisi ufumana impazamo yoqhagamshelwano. Emva kokuba ubunkokeli bugqithise kwi-broker 1, silahlekelwa yimiyalezo ye-123. Umlandeli kwi-broker 1 wayeyinxalenye ye-ISR, kodwa ayizange ihambelane ngokupheleleyo nenkokeli xa yawa.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 8. Imiyalezo iyalahleka xa intlitheka

Kubumbeko bootstrap.servers Umvelisi unabathengisi abaninzi abadwelisiweyo kwaye unokubuza omnye umthengisi ukuba ngubani inkokeli yecandelo elitsha. Emva koko iseka umdibaniso kwi-broker 1 kwaye iyaqhubeka nokuthumela imiyalezo.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 9. Ukuthumela imiyalezo kuphinda kuqalise emva kwekhefu elifutshane

I-Broker 3 isemva ngakumbi. Yenza izicelo zokulanda kodwa ayikwazi ukwenza ngaxeshanye. Oku kunokuba ngenxa yoqhagamshelwano olucothayo lwenethiwekhi phakathi kwee-broker, umba wogcino, njalo njalo. Iyasuswa kwi-ISR. Ngoku i-ISR ine-replica enye - inkokeli! Umenzi uyaqhubeka ukuthumela imiyalezo kwaye ufumana iziqinisekiso.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 10. Umlandeli kwi-broker 3 uyasuswa kwi-ISR

I-Broker 1 ihla kwaye indima yobunkokeli iya kwi-broker 3 kunye nokulahlekelwa kwemiyalezo ye-15286! Umenzi ufumana umyalezo wemposiso yoqhagamshelwano. Ukutshintshela kwinkokeli ngaphandle kwe-ISR kwakunokwenzeka kuphela ngenxa yokumisela olungacocekanga.unyulo.inkokeli.yenza=yinyani. Ukuba ifakiwe amanga, emva koko utshintsho aluyi kwenzeka kwaye zonke izicelo zokufunda nokubhala ziya kukhatywa. Kule meko, silindele umthengisi 1 ukuba abuye nedatha yakhe echanekileyo kwi-replica, eya kuphinda ithathe ubunkokeli.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 11. I-Broker 1 iyawa. Xa ukusilela kusenzeka, inani elikhulu lemiyalezo liyalahleka

Umvelisi useka uxhulumaniso kunye nomthengisi wokugqibela kwaye ubona ukuba ngoku uyinkokeli yecandelo. Uqala ukuthumela imiyalezo kumthengisi 3.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 12. Emva kwekhefu elifutshane, imiyalezo ithunyelwa kwakhona kwicandelo 0

Sibonile ukuba, ngaphandle kokuphazamiseka okufutshane ukuseka unxibelelwano olutsha kunye nokukhangela inkokeli entsha, umenzi wayehlala ethumela imiyalezo. Olu lungelelwaniso luqinisekisa ukufumaneka kwiindleko zokuhambelana (ukhuseleko lwedatha). U-Kafka ulahlekelwe ngamawaka emiyalezo kodwa waqhubeka nokwamkela ukubhalwa okutsha.

Ii-Acks=zonke kunye ne-ISR

Masiphinde le meko kwakhona, kodwa nge iick=zonke. I-Broker 3 ine-avareji latency yemizuzwana emine. Umenzi uthumela umyalezo nge iick=zonke, kwaye ngoku akafumani mpendulo ngokukhawuleza. Inkokeli ilindele ukuba umyalezo ugcinwe ngazo zonke ii-replicas kwi-ISR.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 13. I-ISR ene-replicas ezintathu. Enye iyacotha, ikhokelela ekurekhodeni ulibaziseko

Emva kwemizuzwana emine yokulibaziseka okongeziweyo, i-broker 2 ithumela i-ack. Zonke iikopi ngoku zihlaziywe ngokupheleleyo.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 14. Zonke iikopi zigcina imiyalezo kwaye zithumele i-ack

I-Broker 3 ngoku iwela ngakumbi ngasemva kwaye isusiwe kwi-ISR. Ukubambezeleka kuncitshiswe kakhulu kuba akukho zikopi zicothayo ezishiyekileyo kwi-ISR. I-Broker 2 ngoku ilinde kuphela i-broker 1, kwaye ine-avareji lag ye-500 ms.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 15. I-replica kwi-broker 3 isusiwe kwi-ISR

Emva koko i-broker 2 iyawa kwaye ubunkokeli budlula kwi-broker 1 ngaphandle kokulahlekelwa yimiyalezo.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 16. I-Broker 2 iyawa

Umenzi ufumana inkokeli entsha kwaye uqala ukuthumela imiyalezo kuye. I-latency iyancipha ngakumbi kuba i-ISR ngoku iqulethe i-replica enye! Ngoko ke ukhetho iick=zonke ayongezi ukuphinda-phinda.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 17. I-Replica kwi-broker 1 ikhokela ngaphandle kokulahlekelwa yimiyalezo

Emva koko u-broker 1 uphahlazeka kwaye ukhokelo luya kumthengisi we-3 ngokulahleka kwemiyalezo ye-14238!

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 18. I-Broker 1 iyafa kunye nokuguqulwa kobunkokeli kunye nokuhlelwa okungacocekanga kubangela ukulahlekelwa kwedatha enkulu

Asikwazanga ukuhlohla ukhetho unyulo.olungcolileyo.lwenze kwintsingiselo oyinyaniso. Ngokungagqibekanga ilingana no amanga. Iisetingi iick=zonke с olungacocekanga.unyulo.inkokeli.yenza=yinyani ibonelela ngofikelelo ngokhuseleko lwedatha olongeziweyo. Kodwa njengoko ubona, sisenokulahlekelwa yimiyalezo.

Kodwa kuthekani ukuba sifuna ukwandisa ukhuseleko lwedatha? Ungabeka unclean.leader.election.enable = bubuxoki, kodwa oku akuyi kusikhusela ekulahlekeni kwedatha. Ukuba inkokeli yawa kanzima kwaye ithatha idatha kunye nayo, ke imilayezo isalahlekile, kunye nokufumaneka kulahlekile de kube umlawuli abuyisele imeko.

Kungcono ukuqinisekisa ukuba yonke imiyalezo ayisebenzi, kwaye ukulahla ukurekhoda. Emva koko, ubuncinci ukusuka kwimbono yomthengisi, ukulahleka kwedatha kunokwenzeka kuphela xa kukho ukungaphumeleli ezimbini okanye ngaphezulu ngaxeshanye.

Acks=konke, min.insync.replicas kunye ne-ISR

Ngoqwalaselo lwesihloko min.insync.replicas Sandisa inqanaba lokhuseleko lwedatha. Masingene kwinxalenye yokugqibela yemeko yangaphambili kwakhona, kodwa ngeli xesha min.insync.replicas=2.

Ke i-broker 2 inenkokeli ye-replica kwaye umlandeli kwi-broker 3 uyasuswa kwi-ISR.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 19. I-ISR evela kwiikopi ezimbini

I-Broker 2 iyawa kwaye ubunkokeli budlula kwi-broker 1 ngaphandle kokulahlekelwa yimiyalezo. Kodwa ngoku i-ISR ine-replica enye kuphela. Oku akuhlangabezani nenani elincinci lokufumana iirekhodi, kwaye ngoko ke umthengisi uphendula kwimizamo yokubhala ngempazamo NotEnoughReplicas.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 20. Inani le-ISRs lingaphantsi elinye kunelo lichazwe kwi-min.insync.replicas

Olu qwalaselo luncama ukufumaneka kokuhambelana. Phambi kokuba sivume umyalezo, siyaqinisekisa ukuba ubhalelwe ubuncinane iikopi ezimbini. Oku kunika umenzi ukuzithemba ngakumbi. Apha, ukulahlekelwa komyalezo kunokwenzeka kuphela ukuba ii-replicas ezimbini zisilela ngaxeshanye kwisithuba esifutshane de umyalezo uphindaphindwe kumlandeli owongezelelweyo, into engenakwenzeka. Kodwa ukuba une-paranoid enkulu, unokuseta into yokuphindaphinda ukuya ku-5, kwaye min.insync.replicas ngo 3. Apha abarhwebi abathathu kufuneka bawe ngaxeshanye ukuze baphulukane nerekhodi! Ngokuqinisekileyo, uhlawula oku kuthembeka kwi-latency eyongezelelweyo.

Xa ukufikelela kuyimfuneko kukhuseleko lwedatha

Njengoko ityala kunye RabbitMQ, ngamanye amaxesha ukufikelela kuyimfuneko kukhuseleko lwedatha. Nantsi into ekufuneka ucinge ngayo:

  • Ngaba umshicileli angabuyisela impazamo ngokulula kwaye abe nenkonzo enyukayo okanye umsebenzisi azame kwakhona kamva?
  • Ngaba umshicileli angawugcina umyalezo kwindawo okanye kwindawo yogcino-lwazi ukuze uzame kwakhona kamva?

Ukuba impendulo nguhayi, ngoko ukongeza ukufumaneka kuphucula ukhuseleko lwedatha. Uya kuphulukana nedatha encinci ukuba ukhetha ukufumaneka endaweni yokungarekhoda. Ngaloo ndlela, konke kuhla ekufumaneni ibhalansi, kwaye isigqibo sixhomekeke kwimeko ethile.

Intsingiselo ye-ISR

Iseti yee-ISRs ikuvumela ukuba ukhethe ibhalansi efanelekileyo phakathi kokhuseleko lwedatha kunye ne-latency. Ngokomzekelo, qinisekisa ukufumaneka kwimeko yokungaphumeleli koninzi lwee-replicas, ukunciphisa impembelelo ye-replicas efileyo okanye ecothayo ngokwemiqathango ye-latency.

Sikhetha intsingiselo ngokwethu replica.lag.time.max.ms ngokweemfuno zakho. Ngokusisiseko, le parameter ithetha ukuba kungakanani ukulibaziseka esizimisele ukukwamkela nini iick=zonke. Ixabiso elimiselweyo yimizuzwana elishumi. Ukuba eli lide kakhulu kuwe, ungalinciphisa. Emva koko ukuphindaphinda kweenguqu kwi-ISR kuya kwanda, kuba abalandeli baya kususwa kwaye bongezwe rhoqo.

I-RabbitMQ yisethi nje yezibuko ezifuna ukuphindaphinda. Izibuko ezicothayo zizisa i-latency eyongezelelweyo, kwaye izibuko ezifileyo zinokulinda de iipakethi ezijonga ukufumaneka kwe-node nganye (i-tick net) ukuphendula. I-ISR yindlela enomdla yokuphepha le miba ye-latency. Kodwa sisengozini yokulahlekelwa yi-redundancy kuba i-ISR inokuncipha kuphela kwinkokeli. Ukuze ugweme lo mngcipheko, sebenzisa isethingi min.insync.replicas.

Isiqinisekiso soqhagamshelwano lomxhasi

Kwiisetingi bootstrap.servers umvelisi kunye nomthengi unokuchaza abathengisi abaninzi bokudibanisa abathengi. Umbono kukuba xa i-node enye ihla, kukho ezininzi ezishiyekileyo apho umxhasi anovula uxhulumaniso. Ezi ayizizo iinkokeli zecandelo, kodwa ziintsika zokulayisha okokuqala. Umxhasi unokubabuza ukuba yeyiphi i node ebamba inkokeli yokufunda/yokubhala isahlulelo.

Kwi-RabbitMQ, abathengi banokuxhuma kuyo nayiphi na i-node, kwaye umzila wangaphakathi uthumela isicelo apho kufuneka uhambe khona. Oku kuthetha ukuba ungafaka isilinganisi somthwalo phambi kweRabbitMQ. I-Kafka ifuna ukuba abathengi baqhagamshelane ne-node ebamba inkokeli ehambelanayo yokwahlula. Kwimeko enjalo, awukwazi ukufaka i-balancer yomthwalo. Uluhlu bootstrap.servers Kubalulekile ukuba abathengi bafikelele kwaye bafumane iindawo ezichanekileyo emva kokusilela.

I-Kafka Consensus Architecture

Ukuza kuthi ga ngoku, asikhange siqwalasele indlela iqela elifunda ngayo ngokuwa komthengisi kunye nendlela inkokeli entsha yonyulwa ngayo. Ukuqonda indlela iKafka esebenza ngayo kunye nezahlulo zenethiwekhi, kufuneka uqale uqonde ulwakhiwo lwemvumelwano.

Iqela ngalinye le-Kafka lisetyenziswa kunye neqela le-Zookeeper, eliyinkonzo yemvumelwano esasaziweyo evumela inkqubo ukuba ifikelele kwimvumelwano kwimeko ethile, ukubeka phambili ukuhambelana ngaphezu kokufumaneka. Imvume yesininzi seZookeeper nodes iyafuneka ukuze kuphunyezwe imisebenzi yokufunda nokubhala.

Umgcini wezilwanyana ugcina imeko yeqela:

  • Uluhlu lwezihloko, amacandelo, uqwalaselo, iikopi zeenkokeli zangoku, iikopi ezikhethiweyo.
  • Amalungu eqela. Umthengisi ngamnye u-ping iqela leZookeeper. Ukuba ayifumani i-ping ngexesha elithile, ngoko uZookeeper ubhala umthengisi njengongekhoyo.
  • Ukukhetha i-nodes eziphambili kunye ne-spare nodes kumlawuli.

I-node yomlawuli yenye yee-brokers ze-Kafka ezinoxanduva lokunyula iinkokeli ze-replica. I-Zookeeper ithumela izaziso kumlawuli malunga nobulungu beqela kunye notshintsho lwesihloko, kwaye umlawuli kufuneka enze olu tshintsho.

Umzekelo, makhe sithathe isihloko esitsha esinezahlulo ezilishumi kunye ne-replication factor ye-3. Umlawuli kufuneka akhethe inkokeli kwisahlulelo ngasinye, ezama ukusasaza iinkokeli phakathi kwee-brokers.

Kwicandelo ngalinye lomlawuli:

  • ihlaziya ulwazi kwiZookeeper malunga ne-ISR kunye nenkokeli;
  • Ithumela iNkokeliAndISRCommand kumthengisi ngamnye obamba umfanekiso wesi sahlulelo, ukwazisa abathengisi nge-ISR kunye nenkokeli.

Xa umthengisi onenkokeli ewa, iZookeeper ithumela isaziso kumlawuli, kwaye inyula inkokeli entsha. Kwakhona, umlawuli uqala ahlaziye iZookeeper aze athumele umyalelo kumthengisi ngamnye ebazisa ngotshintsho lobunkokeli.

Inkokeli nganye inoxanduva lokugaya ii-ISRs. Iisetingi replica.lag.time.max.ms ichaza ukuba ngubani na oya kungena apho. Xa i-ISR itshintsha, inkokeli idlulisela ulwazi olutsha kwiZookeeper.

U-Zookeeper uhlala ekwaziswa ngalo naluphi na utshintsho ukwenzela ukuba xa kukho ukungaphumeleli, iinguqu zolawulo zihamba kakuhle kwinkokeli entsha.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 21. Kafka Consensus

Iprotocol yokuphindaphinda

Ukuqonda iinkcukacha zokuphindaphinda kukunceda uqonde ngcono iimeko ezinokuthi zibekho zelahleko yedatha.

Imibuzo yesampulu, i-Log End Offset (LEO) kunye noPhawu lwamanzi aphezulu (HW)

Sithathele ingqalelo ukuba abalandeli bahlala bethumela izicelo zokulanda kwinkokeli. Ixesha elimiselweyo yi-500ms. Oku kwahlukile kwi-RabbitMQ kuba kwi-RabbitMQ ukuphindaphinda akuqalwa sisibuko somgca kodwa yinkosi. Inkosi ityhala utshintsho kwizibuko.

Inkokeli kunye nabo bonke abalandeli bagcina i-Log End Offset (LEO) kunye neleyibhile yeHighwater (HW). Uphawu lwe-LEO lugcina i-offset yomyalezo wokugqibela kwi-replica yendawo, kwaye i-HW igcina i-offset yesibophelelo sokugqibela. Khumbula ukuba kwisimo sokuzibophelela, umyalezo kufuneka uqhutyelwe kuzo zonke iikopi ze-ISR. Oku kuthetha ukuba i-LEO ikholisa ukuba phambili kancinane kune-HW.

Xa inkokeli ifumana umyalezo, iyawugcina ekuhlaleni. Umlandeli wenza isicelo sokulanda ngokuthumela i-LEO yakhe. Inkokeli ke ithumela ibhetshi yemiyalezo eqala kule LEO kwaye ikwathumela i-HW yangoku. Xa inkokeli ifumana ulwazi lokuba zonke iireplicas zigcine umyalezo kwi-offset enikiweyo, ihambisa uphawu lwe-HW. Yinkokeli kuphela enokuhambisa i-HW, kwaye ke bonke abalandeli baya kulazi ixabiso langoku kwiimpendulo kwisicelo sabo. Oku kuthetha ukuba abalandeli banokusalela emva kwenkokeli kuzo zombini umyalezo kunye nolwazi lwe-HW. Abathengi bafumana imiyalezo kuphela ukuya kuthi ga kwi-HW yangoku.

Qaphela ukuba "zingisa" kuthetha ukubhalwa kwimemori, kungekhona kwidisk. Ukusebenza, i-Kafka ingqamanisa kwidisk ngexesha elithile. I-RabbitMQ nayo inexesha elinjalo, kodwa iya kuthumela ukuvuma kumshicileli kuphela emva kokuba inkosi kunye nazo zonke izibuko zibhale umyalezo kwidiski. Abaphuhlisi beKafka, ngenxa yezizathu zokusebenza, banqume ukuthumela i-ack ngokukhawuleza ukuba umyalezo ubhalwe kwimemori. I-Kafka ibheja ukuba i-redundancy inciphisa umngcipheko wokugcina ngokufutshane imiyalezo evunyiweyo kwinkumbulo kuphela.

Ukungaphumeleli kweNkokeli

Xa inkokeli isiwa, iZookeeper yazisa umlawuli, kwaye ikhetha ireplica yenkokeli entsha. Inkokeli entsha ibeka uphawu olutsha lwe-HW ngokwe-LEO yakhe. Abalandeli emva koko bafumana ulwazi malunga nenkokeli entsha. Ngokuxhomekeke kuguqulelo lweKafka, umlandeli uya kukhetha enye yeemeko ezimbini:

  1. Iya kucutha i-log yendawo kwi-HW eyaziwayo kwaye ithumele isicelo kwinkokeli entsha yemiyalezo emva kolu phawu.
  2. Uya kuthumela isicelo kwinkokeli ukuba ifumanise i-HW ngexesha lonyulwa njengenkokeli, emva koko icuthe ilog kule offset. Iya kuthi ke iqalise ukwenza izicelo zokulanda amaxesha ngamaxesha ukuqala kolu hlaselo.

Umlandeli unokufuna ukucutha ilog ngezi zizathu zilandelayo:

  • Xa inkokeli ingaphumeleli, umlandeli wokuqala kwi-ISR iseti ebhalisiweyo kunye neZookeeper iphumelele ukhetho kwaye ibe yinkokeli. Bonke abalandeli kwi-ISR, nangona bejongwa β€œkwi-sync,” kusenokwenzeka ukuba abazifumananga iikopi zayo yonke imiyalezo evela kwinkokeli yangaphambili. Kuyenzeka ngokupheleleyo ukuba umlandeli obonakalisiweyo akanayo ikopi yangoku. I-Kafka iqinisekisa ukuba akukho mahluko phakathi kweekopi. Ngaloo ndlela, ukuphepha ukungafani, umlandeli ngamnye kufuneka anciphise i-log yakhe kwixabiso le-HW lenkokeli entsha ngexesha lokunyulwa kwayo. Esi sesinye isizathu sokuba useto iick=zonke kubaluleke kakhulu ukuhambelana.
  • Imiyalezo ibhalwa ngamaxesha athile kwidiski. Ukuba zonke ii-cluster nodes ziyasilela ngexesha elinye, ii-replicas ezine-offsets ezahlukeneyo ziya kugcinwa kwiidiski. Kungenzeka ukuba xa ii-brokers zibuyela kwi-intanethi, inkokeli entsha ekhethiweyo iya kuba ngasemva kwabalandeli bayo kuba igcinwe kwidiski phambi kwabanye.

Ukudibana kwakhona kunye neqela

Xa uphinda udibana neqela, iireplicas zenza okufanayo naxa inkokeli isilela: bajonga umfanekiso wenkokeli kwaye banciphise ilog yabo kwi-HW yayo (ngexesha lonyulo). Xa kuthelekiswa, iRabbitMQ iphatha ngokulinganayo iindawo ezidityanisiweyo njengentsha ngokupheleleyo. Kuzo zombini ezi meko, umthengisi ulahla nayiphi na imeko ekhoyo. Ukuba ulungelelwaniso oluzenzekelayo lusetyenzisiwe, ngoko inkosi kufuneka iphindaphinde ngokupheleleyo yonke imixholo yangoku kwisibuko esitsha ngendlela ethi "vumela ihlabathi lonke lilinde". Umphathi akamkeli nayiphi na imisebenzi yokufunda okanye yokubhala ngexesha lo msebenzi. Le ndlela idala iingxaki kwimigca emikhulu.

I-Kafka yilogi esasazwayo kwaye ngokubanzi igcina imiyalezo emininzi kunomgca we-RabbitMQ, apho idatha isuswe kumgca emva kokuba ifundwe. Imigca esebenzayo kufuneka ihlale incinci. Kodwa i-Kafka yilogi enomgaqo-nkqubo wayo wokugcina, onokubeka ixesha leentsuku okanye iiveki. Indlela yokuvala umgca kunye nongqamaniso olupheleleyo ayamkelekanga kwaphela kwilog esasaziweyo. Endaweni yoko, abalandeli bakaKafka bamane banciphise ilog yabo kwi-HW yenkokeli (ngexesha lonyulo lwakhe) ukuba ikopi yabo iphambi kwenkokeli. Kwimeko enokwenzeka ngakumbi, xa umlandeli esemva, iqala ukwenza izicelo zokuqala nge-LEO yayo yangoku.

Abalandeli abatsha okanye abadibeneyo baqala ngaphandle kwe-ISR kwaye abathathi nxaxheba kwizibophelelo. Basebenza nje ecaleni kweqela, befumana imiyalezo ngokukhawuleza njengoko banako de babambe inkokeli kwaye bangene kwi-ISR. Akukho lock-in kwaye akukho mfuneko yokulahla yonke idatha yakho.

Ukulahleka koqhagamshelwano

I-Kafka inamacandelo amaninzi kune-RabbitMQ, ngoko ineseti enzima kakhulu yokuziphatha xa iqela liqhawulwa. Kodwa iKafka ekuqaleni yayiyilelwe amaqela, ngoko ke izisombululo zicingelwa kakuhle.

Ngezantsi kukho iimeko ezininzi zokusilela konxibelelwano:

  • Imeko 1: Umlandeli akayiboni inkokeli, kodwa usabona uMgcini-zilwanyana.
  • Imeko yesi-2: Inkokeli ayiboni balandeli, kodwa isabona uMgcini-Zookeeper.
  • Imeko yesi-3: Umlandeli ubona inkokeli, kodwa akaboni uMgcini-zilwanyana.
  • Imeko yesi-4: Inkokeli ibona abalandeli, kodwa ayiboni uMgcini-zilwanyana.
  • Imeko yesi-5: Umlandeli wahluke ngokupheleleyo kwezinye iindawo zeKafka kunye neZookeeper.
  • Imeko yesi-6: Inkokeli yahluke ngokupheleleyo kwezinye iindawo zeKafka kunye neZookeeper.
  • Imeko yesi-7: I-node yokulawula i-Kafka ayikwazi ukubona enye i-node ye-Kafka.
  • Imeko 8: Umlawuli weKafka akaboni uMgcini-Zookeeper.

Imeko nganye inokuziphatha kwayo.

Imeko 1: Umlandeli akayiboni inkokeli, kodwa usabona uMgcini-Zookeeper

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 22. Imeko 1: ISR yeekopi ezintathu

Ukungaphumeleli koqhagamshelwano kwahlula i-broker 3 kwi-broker 1 kunye ne-2, kodwa kungekhona kwi-Zookeeper. I-Broker 3 ayisakwazi ukuthumela izicelo zokulanda. Emva kwexesha lihambile replica.lag.time.max.ms iyasuswa kwi-ISR kwaye ayithathi nxaxheba kwii-compost zomyalezo. Nje ukuba unxibelelwano lubuyiselwe, luza kuqalisa kwakhona ukulanda izicelo kwaye lujoyine i-ISR xa ibamba inkokeli. UZookeeper uya kuqhubeka efumana iipings kwaye acinge ukuba umthengisi uyaphila kwaye uphilile.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 23. Imeko 1: Umrhwebi uyasuswa kwi-ISR ukuba akukho sicelo sifunyenweyo kuyo ngaphakathi kwesithuba se-replica.lag.time.max.ms

Akukho kunqunyanyiswa kwengqondo okanye i-node njengakwi-RabbitMQ. Endaweni yoko, ukungafuneki kuncitshisiwe.

Imeko yesi-2: Inkokeli ayiboni balandeli, kodwa isabona uMgcini-Zookeeper

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 24. Imeko 2. Inkokeli kunye nabalandeli ababini

Ukuqhekeka kunxibelelwano lwenethiwekhi kwahlula inkokeli kubalandeli, kodwa umthengisi usenokumbona uZookeeper. Njengakwimeko yokuqala, i-ISR iyancipha, kodwa ngeli xesha kuphela kwinkokeli njengoko bonke abalandeli beyeka ukuthumela izicelo zokulanda. Kwakhona, akukho kwahlukana okusengqiqweni. Endaweni yoko, kukho ilahleko yokungafuneki kwimiyalezo emitsha de uqhagamshelo lubuyiselwe. UZookeeper uyaqhubeka nokufumana iipings kwaye ukholelwa ukuba umthengisi uyaphila kwaye uphilile.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 25. Imeko 2. I-ISR icuthekile kuphela kwinkokeli

Imeko 3. Umlandeli ubona inkokeli, kodwa akaboni uMgcini-zilwanyana

Umlandeli wohluliwe kuZookeeper, kodwa hayi kumthengisi onenkokeli. Ngenxa yoko, umlandeli uyaqhubeka nokwenza izicelo zokulanda kwaye abe lilungu le-ISR. I-Zookeeper ayisayi kufumana i-pings kunye nerejista yengozi ye-broker, kodwa ekubeni ingumlandeli kuphela, akukho miphumo emva kokubuyisela.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 26. Imeko yesi-3: Umlandeli uyaqhubeka nokuthumela izicelo zokulanda kwinkokeli

Imeko 4. Inkokeli ibona abalandeli, kodwa ayiboni uMgcini-Zookeeper

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 27. Imeko 4. Inkokeli kunye nabalandeli ababini

Inkokeli yahluliwe kuZookeeper, kodwa hayi kubarhwebi abanabalandeli.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 28. Imeko yesi-4: Inkokeli ibekwe yodwa kwiZookeeper

Emva kwexesha elithile, i-Zookeeper iya kubhalisa ukungaphumeleli kwe-broker kwaye yazise umlawuli ngayo. Uya kunyula inkokeli entsha phakathi kwabalandeli bakhe. Nangona kunjalo, inkokeli yokuqala iya kuqhubeka ukucinga ukuba yinkokeli kwaye iya kuqhubeka nokwamkela amangeno avela iiesile=1. Abalandeli abasamthumeli ukuba bayolanda izicelo, ke uya kubathatha njengabafileyo kwaye azame ukuthoba i-ISR ngokwayo. Kodwa ekubeni ingenalo unxibelelwano kwiZookeeper, ayizukwazi ukwenza oku, kwaye ngelo xesha iyakwala ukwamkela nakuphi na ukungena.

Imiyalezo iick=zonke ayizukufumana ulwamkelo kuba i-ISR ivula kuqala zonke iikopi, kwaye imiyalezo ayifikeleli kubo. Xa inkokeli yasekuqaleni izama ukuwasusa kwi-ISR, ayiyi kukwazi ukwenza njalo kwaye iya kuyeka ukwamkela nayiphi na imiyalezo.

Abathengi baqaphela ngokukhawuleza utshintsho kwinkokeli kwaye baqale ukuthumela iirekhodi kwiseva entsha. Nje ukuba inethiwekhi ibuyiselwe, inkokeli yokuqala ibona ukuba ayisekho inkokeli kwaye inciphisa ilogi yayo kwixabiso le-HW eyayinalo inkokeli entsha ngexesha lokungaphumeleli ukuphepha ukuhlukana kwelogi. Iya kuthi ke iqalise ukuthumela izicelo zokulanda kwinkokeli entsha. Zonke iirekhodi ezivela kwinkokeli yokuqala ezingachazwanga kwinkokeli entsha zilahlekile. Oko kukuthi, imiyalezo engazange yamkelwe yinkokeli yokuqala kuloo mizuzwana embalwa xa iinkokeli ezimbini zazisebenza ziya kulahleka.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 29. Imeko 4. Inkokeli kwi-broker 1 iba ngumlandeli emva kokuba inethiwekhi ibuyiselwe

Imeko yesi-5: Umlandeli wahluke ngokupheleleyo kwezinye iindawo zeKafka kunye neZookeeper

Umlandeli uhlukaniswe ngokupheleleyo kwezinye iindawo zeKafka kunye neZookeeper. Uzisusa ngokulula kwi-ISR de inethiwekhi ibuyiselwe, kwaye ibambe nabanye.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 30. Imeko yesi-5: Umlandeli ozimeleyo uyasuswa kwi-ISR

Imeko yesi-6: Inkokeli yahluke ngokupheleleyo kwezinye iindawo zeKafka kunye neZookeeper

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 31. Imeko 6. Inkokeli kunye nabalandeli ababini

Inkokeli ihlukaniswe ngokupheleleyo kubalandeli bayo, umlawuli kunye neZookeeper. Ngexesha elifutshane iya kuqhubeka ukwamkela amangeno ukusuka iiesile=1.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 32. Imeko yesi-6: Ukwahlula inkokeli kwezinye iindawo zeKafka kunye neZookeeper

Ukungafumani zicelo emva kokuphelelwa lixesha replica.lag.time.max.ms, iya kuzama ukunciphisa i-ISR ngokwayo, kodwa ayiyi kukwazi ukwenza oko ngenxa yokuba akukho nxibelelwano kunye ne-Zookeeper, ngoko iya kuyeka ukuvuma ukubhala.

Ngeli xesha, uZookeeper uya kuphawula umthengisi ozimeleyo njengofileyo kwaye umlawuli uya kunyula inkokeli entsha.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 33. Imeko 6. Iinkokeli ezimbini

Inkokeli yokuqala inokwamkela amangeno imizuzwana embalwa, kodwa iyeke ukwamkela nayiphi na imiyalezo. Abathengi bahlaziywa rhoqo ngemizuzwana engama-60 ngemethadatha yamva nje. Baza kwaziswa ngotshintsho lwenkokeli kwaye baya kuqalisa ukuthumela amangeno kwinkokeli entsha.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 34. Imeko 6: Abavelisi batshintshela kwinkokeli entsha

Zonke iingenelo eziqinisekisiweyo ezenziwe yinkokeli yokuqala ukususela ekulahlekelweni koqhagamshelwano ziya kulahleka. Nje ukuba inethiwekhi ibuyiselwe, inkokeli yokuqala iya kufumanisa ngeZookeeper ukuba ayiseyiyo inkokeli. Emva koko iya kucutha ilog yayo kwi-HW yenkokeli entsha ngexesha lonyulo kwaye iqalise ukuthumela izicelo njengomlandeli.

I-RabbitMQ vs Kafka: Ukunyamezela impazamo kunye nokuFumana okuphezulu
Irayisi. 35. Imeko yesi-6: Inkokeli yokuqala iba ngumlandeli emva kokuba unxibelelwano lwenethiwekhi lubuyiselwe

Kule meko, ukwahlukana okunengqiqo kunokwenzeka ixesha elifutshane, kodwa kuphela ukuba iiesile=1 ΠΈ min.insync.replicas kwakhona 1. Ukwahlula okunengqondo kuphelela ngokuzenzekelayo nokuba emva kokuba uthungelwano lubuyiselwe, xa inkokeli yokuqala iqonda ukuba ayisekho inkokeli, okanye xa bonke abathengi baqaphela ukuba inkokeli ishintshile kwaye iqale ukubhala kwinkokeli entsha - nayiphi na into eyenzekayo kuqala. Kuyo nayiphi na imeko, eminye imiyalezo iya kulahleka, kodwa kuphela nge iiesile=1.

Kukho enye into eyahlukileyo kule meko apho, ngaphambi kokuba inethiwekhi ihlukane, abalandeli bawela ngasemva kwaye inkokeli yacinezela i-ISR ukuba izenzele yena. Emva koko iba yodwa ngenxa yokulahleka koqhagamshelwano. Inkokeli entsha yonyulwa, kodwa inkokeli yokuqala iyaqhubeka nokwamkela amangenelo, nokuba iick=zonke, kuba akukho mntu wumbi kwi-ISR ngaphandle kwakhe. Ezi rekhodi ziya kulahleka xa uthungelwano lubuyiselwe. Ekuphela kwendlela yokuphepha olu khetho min.insync.replicas = 2.

Imeko yesi-7: I-Kafka Controller Node ayiboni enye iNode yeKafka

Ngokuqhelekileyo, xa uxhulumaniso kunye ne-Kafka node lulahlekile, umlawuli akayi kukwazi ukuhambisa nayiphi na inkokeli yokutshintsha ulwazi kuyo. Kwimeko embi kakhulu, oku kuya kukhokelela ekuhlukaneni okunengqiqo kwexesha elifutshane, njengakwimeko yesi-6. Amaxesha amaninzi, umthengisi akayi kuba ngumgqatswa wobunkokeli ukuba lo mva uyasilela.

Imeko 8: Umlawuli weKafka akaboni uMgcini-Zookeeper

UZookeeper akayi kufumana i-ping kumlawuli owileyo kwaye uya kukhetha i-node entsha ye-Kafka njengomlawuli. Umlawuli wokuqala unokuqhubeka nokuzibonakalisa enjalo, kodwa akafumani izaziso ezivela kwi-Zookeeper, ngoko ke akayi kuba nayo nayiphi na imisebenzi yokwenza. Emva kokuba inethiwekhi ibuyiselwe, uya kuqonda ukuba akaseyena umlawuli, kodwa uye waba yinto eqhelekileyo yeKafka.

Izigqibo ezivela kwimiba

Siyabona ukuba ukulahleka koqhagamshelwano lomlandeli akuphumeleli ekulahlekeni komyalezo, kodwa kunciphisa okwethutyana ukungafuneki de inethiwekhi ibuyiselwe. Oku, kunjalo, kunokukhokelela ekulahlekeni kwedatha ukuba enye okanye iindawo ezininzi zilahlekile.

Ukuba inkokeli iyahlukana neZookeeper ngenxa yokulahleka konxibelelwano, oku kunokubangela ukuba imiyalezo ilahleke. iiesile=1. Ukunqongophala konxibelelwano kunye noZookeeper kubangela uqhekeko olufutshane olunengqondo kunye neenkokeli ezimbini. Le ngxaki isonjululwe yiparameter iick=zonke.

IParamu min.insync.replicas kwiikopi ezimbini okanye ngaphezulu zibonelela ngesiqinisekiso esongezelelweyo sokuba iimeko zexesha elifutshane aziyi kukhokelela kwimiyalezo elahlekileyo njengakwiSimo sesi-6.

Isishwankathelo semiyalezo elahlekileyo

Masidwelise zonke iindlela onokuphulukana nazo idatha eKafka:

  • Nakuphi na ukusilela kwenkokeli ukuba imiyalezo yaqinisekiswa kusetyenziswa iiesile=1
  • Naluphi na utshintsho olungcolileyo lobunkokeli, oko kukuthi, kumlandeli ongaphandle kwe-ISR, nokuba iick=zonke
  • Ukwahlula inkokeli kuZookeeper ukuba imiyalezo iqinisekisiwe kusetyenziswa iiesile=1
  • Ukwahlulwa ngokupheleleyo kwenkokeli esele ilicuthe ngokwalo iqela le-ISR. Yonke imiyalezo iya kulahleka, nokuba iick=zonke. Oku kuyinyani kuphela ukuba min.insync.replicas=1.
  • Ukusilela kwangaxeshanye kuzo zonke iindawo zokwahlulahlula. Kuba imiyalezo yamkelwa kwinkumbulo, eminye isenokungabhalwa kwidisk. Emva kokuqalisa kwakhona iiseva, eminye imiyalezo inokungabikho.

Iinguqu zobunkokeli ezingacocekanga zinokuphetshwa ngokuzithintela okanye ngokuqinisekisa ukugxothwa kabini ubuncinane. Olona qwalaselo lomelele ludibaniso iick=zonke ΠΈ min.insync.replicas ngaphezulu kwe1.

Ukuthelekisa ngokuthe ngqo ukuthembeka kweRabbitMQ kunye neKafka

Ukuqinisekisa ukuthembeka kunye nokufumaneka okuphezulu, zombini iiplatifomu zisebenzisa inkqubo yokuphindaphinda ephambili kunye neyesibini. Nangona kunjalo, i-RabbitMQ inesithende se-Achilles. Xa udibanisa kwakhona emva kokusilela, ii-nodes zilahla idatha yazo kwaye ulungelelwaniso luvaliwe. Oku kuphinda kuphindwe kabini kubuza umbuzo wobomi obude bemigca emikhulu kwiRabbitMQ. Kuya kufuneka wamkele nokuba kuncitshisiwe ukufunelwa umsebenzi okanye ixesha elide lokuthintela. Ukunciphisa ukungafuneki kwandisa umngcipheko welahleko enkulu yedatha. Kodwa ukuba imigca incinci, ngoko ngenxa yokuphindaphinda, ixesha elifutshane lokungafumaneki (imizuzwana embalwa) linokujongwa ngokusebenzisa imizamo yokudibanisa ngokuphindaphindiweyo.

I-Kafka ayinayo le ngxaki. Ilahla idatha kuphela ukusuka kwinqanaba lokuhlukana phakathi kwenkokeli kunye nomlandeli. Yonke idatha ekwabelwana ngayo igciniwe. Ukongeza, ukuphindaphinda akuthinteli inkqubo. Inkokeli iyaqhubeka nokwamkela izithuba ngelixa umlandeli omtsha ebamba, ngoko ke kwi-devops, ukujoyina okanye ukujoyina iqela kuba ngumsebenzi omncinci. Ewe kunjalo, kusekho imiba efana ne-bandwidth yenethiwekhi ngexesha lokuphindaphinda. Ukuba wongeza abalandeli abaninzi ngexesha elinye, unokuhlangabezana nomda womda.

I-RabbitMQ iphezulu kuneKafka ngokuthembeka xa iiseva ezininzi kwiqela zisilela ngexesha elinye. Njengoko sele sitshilo, i-RabbitMQ ithumela isiqinisekiso kumshicileli kuphela emva kokuba umyalezo ubhalwe kwidiski yinkosi kunye nazo zonke izibuko. Kodwa oku kongeza i-latency eyongezelelweyo ngenxa yezizathu ezibini:

  • fsync onke amakhulu ambalwa emillisecond
  • Ukungaphumeleli kwesibuko kunokubonwa kuphela emva kwexesha lokuphila kweepakethi ezihlola ukufumaneka kwe-node nganye (i-tick inet) iphelile. Ukuba isibuko sinciphisa okanye siwa, oku kongeza ukulibaziseka.

Ukubheja kukaKafka kukuba umyalezo ugcinwe kwiindawo ezininzi, unokuvuma imiyalezo nje ukuba ibethe imemori. Ngenxa yoku, kukho umngcipheko wokuphulukana nemiyalezo yalo naluphi na uhlobo (nokuba iick=zonke, min.insync.replicas=2) kwimeko yokusilela ngaxeshanye.

Ngokubanzi, i-Kafka ibonisa ukusebenza kwesoftware engcono kwaye iyilwe ukusuka emhlabeni ukuya kumaqela. Inani labalandeli linokunyuswa ukuya kwi-11 ukuba kuyimfuneko ukuthembeka. I-replication factor 5 kunye nenani elincinci le-replicas kungqamaniso min.insync.replicas=3 izakwenza ukulahleka komyalezo kube sisiganeko esinqabileyo kakhulu. Ukuba iziseko zakho zoncedo zinokuxhasa oku kuphindaphindwa komlinganiselo kunye nenqanaba lokungafuneki, ngoko ungakhetha olu khetho.

Ukudibana kweRabbitMQ kulungile kwimigca emincinci. Kodwa nemigca emincinci ingakhula ngokukhawuleza xa kukho izithuthi ezininzi. Nje ukuba imigca ibe mikhulu, kuya kufuneka wenze ukhetho olunzima phakathi kokufumaneka kunye nokuthembeka. Ukudibanisa i-RabbitMQ ifaneleke kakhulu kwiimeko ezingezizo eziqhelekileyo apho izibonelelo zokuguquguquka kwe-RabbitMQ zigqithise naziphi na iingxaki zokuhlanganisana kwayo.

Elinye ikhambi lokuba sesichengeni kweRabbitMQ kwimigca emikhulu kukuyohlula ibe yimigca emininzi emincinci. Ukuba awufuni ulandelelwano olupheleleyo lomgca uphela, kodwa kuphela imiyalezo efanelekileyo (umzekelo, imiyalezo evela kumxhasi othile), okanye ungaodoli nto kwaphela, ngoko olu khetho lwamkelekile: jonga kwiprojekthi yam. Rebalancer ukwahlula umgca (iprojekthi isekwinqanaba lokuqala).

Okokugqibela, ungalibali ngenani leebhugi ekudibaneni kunye neendlela zokuphindaphinda zombini iRabbitMQ kunye neKafka. Ngokuhamba kwexesha, iinkqubo ziye zakhula ngakumbi kwaye zizinzile, kodwa akukho myalezo uya kuba yi-100% ekhuselekileyo ekulahlekeni! Ukongeza, iingozi ezinkulu zenzeke kumaziko edatha!

Ukuba kukho into endiyiphosileyo, ndenze impazamo, okanye awuvumelani nawo nawaphi na amanqaku, zikhululeke ukubhala izimvo okanye uqhagamshelane nam.

Ndihlala ndibuzwa: "Yintoni enokuyikhetha, iKafka okanye iRabbitMQ?", "Yeyiphi iqonga elingcono?". Inyaniso kukuba ngokwenene kuxhomekeke kwimeko yakho, amava angoku, njl. Ndiyathandabuza ukunika uluvo lwam ngenxa yokuba kuya kuba yinto eninzi yokwenziwa lula ukucebisa iqonga elinye kuzo zonke iimeko zokusetyenziswa kunye nokunciphisa okunokwenzeka. Ndibhale olu ngcelele lwamanqaku ukuze ube noluvo lwakho.

Ndifuna ukuthi zombini iinkqubo zinkokheli kule ndawo. Ndinokuba ngumkhethe omncinci ngenxa yokuba kumava am ngeeprojekthi ndidla ngokuxabisa izinto ezifana nomyalelo oqinisekisiweyo womyalezo kunye nokuthembeka.

Ndibona obunye ubuchwephesha obungenalo ukuthembeka kunye nomyalelo oqinisekisiweyo, emva koko ndijonge iRabbitMQ kunye neKafka kwaye ndibone ixabiso elimangalisayo lazo zombini ezi nkqubo.

umthombo: www.habr.com

Yongeza izimvo