I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster

Ukunyamezela iimpazamo kunye nokufumaneka okuphezulu zizihloko ezinkulu, ngoko ke siya kunikezela ngamanqaku ahlukeneyo kwiRabbitMQ kunye neKafka. Eli nqaku limalunga neRabbitMQ, kwaye elilandelayo lithetha ngeKafka, xa kuthelekiswa neRabbitMQ. Eli linqaku elide, ngoko zenzele ukhululekile.

Makhe sijonge ukunyamezela iimpazamo, ukuhambelana, kunye nokufumaneka okuphezulu (HA) izicwangciso kunye norhwebo olwenziwa yisicwangciso ngasinye. I-RabbitMQ inokuqhuba kwi-cluster of nodes - kwaye emva koko ihlelwa njengenkqubo esasazwayo. Xa kuziwa kwiinkqubo ezisasazwayo, sihlala sithetha ngokuhambelana kunye nokufumaneka.

Ezi ngcamango zichaza indlela inkqubo eziphatha ngayo xa isilela. Ukusilela koxhulumaniso lwenethiwekhi, ukusilela kweseva, ukungaphumeleli kwe-hard drive, ukungafumaneki okwethutyana kweseva ngenxa yokuqokelelwa kwenkunkuma, ukulahleka kwepakethi, okanye ukucotha koqhagamshelo lwenethiwekhi. Konke oku kunokukhokelela kwilahleko yedatha okanye iingxabano. Kuvela ukuba akunakwenzeka ukubeka inkqubo ehambelana ngokupheleleyo (akukho lahleko yedatha, akukho mahluko wedatha) kwaye iyafumaneka (iya kwamkela ukufunda nokubhala) kuzo zonke iimeko zokungaphumeleli.

Siza kubona ukuba ukungaguquguquki kunye nokufumaneka kukwiziphelo ezichaseneyo zespectrum, kwaye kufuneka ukhethe ukuba yeyiphi indlela yokwandisa. Iindaba ezilungileyo kukuba ngeRabbitMQ olu khetho lunokwenzeka. Unalo olu hlobo lwe-"nerdy" levers zokutshintsha ibhalansi ukuya kukuhambelana okukhulu okanye ukufikeleleka okukhulu.

Siya kuhlawula ingqalelo ekhethekileyo apho ulungelelwaniso lukhokelela ekulahlekeni kwedatha ngenxa yeerekhodi eziqinisekisiweyo. Kukho ikhonkco loxanduva phakathi kwabapapashi, abarhwebi kunye nabathengi. Emva kokuba umyalezo udluliselwe kumthengisi, ngumsebenzi wakhe ukuba angalahlekelwa ngumyalezo. Xa umthengisi evuma ukuba umpapashi uwufumene umyalezo, asilindelanga ukuba ulahleke. Kodwa siza kubona ukuba oku kunokwenzeka ngokuxhomekeke kumthengisi wakho kunye noqwalaselo lomshicileli.

I-Single Node Resilience Primitives

UKufola okuLungileyo/Umzila

Kukho iindidi ezimbini zemigca kwi-RabbitMQ: ehlala ixesha elide kwaye ayihlali. Yonke imigca igcinwe kuvimba weenkcukacha weMnesia. Imigca ehlala ihleli iphinda ibhengezwe kuqaliso lwendawo kwaye ngaloo ndlela isinde xa kuphinda kuqalwa, ungqubano lwenkqubo, okanye iingozi zeseva (ukuba nje idatha isaqhubeka). Oku kuthetha ukuba okoko uxela ukuba indlela (utshintshiselwano) kunye nomgca kufuneka uxhathise, iziseko zophuhliso zokufola/zokuhamba ziya kubuyela kwi-intanethi.

Imigca eguquguqukayo kunye neendlela ziyasuswa xa indawo iphinda iqalwa.

Imiyalezo eqhubekayo

Kungenxa yokuba umgca womelele akuthethi ukuba yonke imiyalezo yayo iya kusinda xa kuphinda kuqaliswe indawo. Yimiyalezo kuphela esetwe ngumpapashi njenge zizinzileyo (ezingisayo). Imiyalezo eqhubekayo yenza umthwalo owongezelelweyo kumthengisi, kodwa ukuba ilahleko yomyalezo ayamkelekanga, akukho ndlela yimbi.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 1. Uzinzo lwematriksi

Ukudibanisa kunye nesipili esisemgceni

Ukuze sisinde kwilahleko ye-broker, sifuna ukuphinda-phinda. Sinokudibanisa iindawo ezininzi ze-RabbitMQ kwi-cluster, kwaye emva koko songeze i-redundancy eyongezelelweyo ngokuphindaphinda imigca phakathi kweenodi ezininzi. Ngale ndlela, ukuba i-node enye iyasilela, asilahlekelwa yidatha kwaye sihlala sikhona.

Ukujonga isipili emgceni:

  • umgca omnye ophambili (master), ofumana yonke imiyalelo yokubhala nokufunda
  • esinye okanye ngaphezulu kwesipili esifumana yonke imiyalezo kunye nemetadata kumgca ongundoqo. Ezi zipili azikho ukwenzela ukukala, kodwa zisetyenziselwa ukuphinda-phinda.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 2. Ukwenza isipili emgceni

I-Mirroring isetwa ngumgaqo-nkqubo ofanelekileyo. Kuyo ungakhetha i-coefficient yophindaphindo kunye neendawo apho umgca kufuneka ube khona. Imizekelo:

  • ha-mode: all
  • ha-mode: exactly, ha-params: 2 (inkosi enye kunye nesipili esinye)
  • ha-mode: nodes, ha-params: rabbit@node1, rabbit@node2

Ukuqinisekiswa kompapashi

Ukufezekisa ukurekhodwa okufanayo, iziQinisekiso zoMpapashi ziyafuneka. Ngaphandle kwabo, kukho umngcipheko wokulahleka kwemiyalezo. Isiqinisekiso sithunyelwa kumshicileli emva kokuba umyalezo ubhalwe kwidiski. I-RabbitMQ ibhala imiyalezo kwidisk hayi xa ifunyenwe, kodwa ngamaxesha athile, kwingingqi yamakhulu ama-milliseconds. Xa umgca uboniswa, ukuvuma kuthunyelwa kuphela emva kokuba zonke izipili nazo zibhale ikopi yazo yomyalezo kwidiski. Oku kuthetha ukuba ukusebenzisa iziqinisekiso zongeza i-latency, kodwa ukuba ukhuseleko lwedatha lubalulekile, ngoko luyimfuneko.

Umgca wokungaphumeleli

Xa i-broker iyeka okanye intlitheka, zonke iinkokeli zomgca (iinkosi) ezikuloo node ziyawa kunye nayo. Iqela ke ngoko likhetha esona sipili esidala senkosi nganye kwaye siyikhuthaze njengenkosi entsha.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 3. Imigca emininzi ebonisiweyo kunye nemigaqo-nkqubo yayo

Ubroker 3 uyehla. Qaphela ukuba isipili sika-Queue C kwi-Broker 2 siyakhuthazwa ukuba sibe yinkosi. Kwakhona qaphela ukuba isibuko esitsha senziwe kwi-Queue C kwi-Broker 1. I-RabbitMQ isoloko izama ukugcina i-replication factor echazwe kwimigaqo-nkqubo yakho.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 4. I-Broker 3 ayiphumelelanga, ibangela ukuba umgca C ungaphumeleli

IBroker 1 elandelayo iyawa! Sine-broker enye kuphela eseleyo. Isipili sika-Queue B siyanyuselwa ukuba sibe yinkosi.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Ikhiwane. 5

Sibuyisele i-Broker 1. Kungakhathaliseki ukuba idatha iphila njani kwilahleko kunye nokubuyiswa komthengisi, yonke imiyalezo edweliswe emgceni iyalahlwa ekuqaliseni kwakhona. Oku kubalulekile ukuqaphela kuba kuya kubakho iziphumo. Siza kujonga ezi ziphumo kungekudala. Ngoko i-Broker 1 ngoku ilungu le-cluster kwakhona, kwaye i-cluster izama ukuthobela imigaqo-nkqubo kwaye ngoko yenza izibuko kwi-Broker 1.

Kule meko, ilahleko ye-Broker 1 yayigqityiwe, njengoko yayiyidatha, ngoko i-Queue B engabonakaliyo yayilahlekile ngokupheleleyo.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 6. I-Broker 1 ibuyela kwinkonzo

I-Broker 3 ibuyele kwi-intanethi, ngoko ke umgca A kunye no-B babuyisela izibuko ezenziwe kuyo ukuze banelise imigaqo-nkqubo yabo ye-HA. Kodwa ngoku yonke imigca ephambili ikwindawo enye! Oku akulunganga, ukusasazwa ngokulinganayo phakathi kweendawo zokuhlala kungcono. Ngelishwa, akukho zikhetho zininzi apha zokuphinda ulungelelanise iinkosi. Siza kubuyela kulo mbandela kamva kuba kufuneka sijonge ungqamaniso lomgca kuqala.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 7. U-Broker 3 ubuyela kwinkonzo. Yonke imigca ephambili kwindawo enye!

Ke ngoku kuya kufuneka ube nombono wendlela izibuko ezibonelela ngayo ukuphinda-phinda kunye nokunyamezela iimpazamo. Oku kuqinisekisa ukufumaneka kwimeko yokungaphumeleli kwe-node enye kwaye ikhusela ekulahlekeni kwedatha. Kodwa asikagqibi, kuba eneneni inzima kakhulu.

Ulungelelwaniso

Xa udala isibuko esitsha, yonke imilayezo emitsha iya kuhlala iphinda iphindwe kwesi sibuko kunye nayiphi na enye. Ngokuphathelele idatha ekhoyo kwi-master queue, sinokuyiphindaphinda kwisibuko esitsha, esiba yikopi epheleleyo yenkosi. Sinokukhetha kwakhona ukungaphindisi imiyalezo ekhoyo kwaye sivumele umgca oyintloko kunye nesibuko esitsha sidibanise ngexesha, kunye nemiyalezo emitsha efika emsila kunye nemiyalezo ekhoyo eshiya intloko yomgca oyintloko.

Olu ngqamaniso lwenziwa ngokuzenzekelayo okanye ngesandla kwaye lulawulwa kusetyenziswa umgaqo-nkqubo womgca. Makhe sijonge umzekelo.

Sinemigca emibini yezipili. Umgca A ungqamaniswa ngokuzenzekelayo, kwaye uMgceni B ungqamaniswa ngesandla. Yomibini imigca inemiyalezo elishumi.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 8. Imigca emibini eneendlela ezahlukeneyo zongqamaniso

Ngoku siphulukana neBroker 3.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 9. I-Broker 3 yawa

I-Broker 3 ibuyela kwinkonzo. Iqela lenza isibuko kumgca ngamnye kwi-node entsha kwaye ilungelelanise ngokuzenzekelayo i-Queue A entsha kunye nenkosi. Nangona kunjalo, isipili soMgca B omtsha sihlala singenanto. Ngale ndlela sinokungafuneki ngokupheleleyo kuQueue A kunye nesipili esinye kuphela semiyalezo ekhoyo kaQueue B.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 10. Isipili esitsha sikaQueue A sifumana yonke imiyalezo ekhoyo, kodwa isipili esitsha sikaQueue B asiyifumani.

Kufike eminye imiyalezo elishumi kuyo yomibini imigca. I-Broker 2 emva koko iyantlitheka kwaye i-Queue A iphinda ibuyele kwisibuko esidala, esiseBroker 1. Akukho lahleko yedatha xa ingaphumeleli. Kumgca B, kukho imiyalezo engamashumi amabini kumphathi kwaye ilishumi kuphela esipilini kuba lo mgca awuzange uphindaphinde imiyalezo elishumi yoqobo.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 11. Umgca A ubuyela umva kwiBroker 1 ngaphandle kokulahlekelwa yimiyalezo

Kufike eminye imiyalezo elishumi kuyo yomibini imigca. Ngoku iBroker 1 iyantlitheka. Umgca A utshintshela ngokulula kwisipili ngaphandle kokuphulukana nemiyalezo. Nangona kunjalo, uQueue B uneengxaki. Kweli nqanaba singenza ngcono nokuba kufumaneka okanye ukungaguquguquki.

Ukuba sifuna ukwandisa ufikelelo, ngoko umgaqo-nkqubo ha-ukukhuthaza-ngokusilela kufuneka ifakwe rhoqo. Eli lixabiso elingagqibekanga, ngoko awukwazi ukukhankanya umgaqo-nkqubo kwaphela. Kule meko, sivumela ukusilela kwizibuko ezingahambelaniyo. Oku kuya kubangela ukuba imiyalezo ilahleke, kodwa umgca uya kuhlala ufundeka kwaye ubhaleka.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 12. Umgca A ugqithiselwe umva kwi-Broker 3 ngaphandle kokulahlekelwa yimiyalezo. Umgca B ubuyela emva kwiBroker 3 kunye nemiyalezo elishumi elahlekileyo

Sinako kwakhona ukufaka ha-promote-on-failure kwintsingiselo when-synced. Kule meko, endaweni yokubuyela kwisibuko, umgca uya kulinda de i-Broker 1 kunye nedatha yayo ibuyele kwimodi ye-intanethi. Emva kokuba ibuyile, umgca ophambili ubuyele kwi-Broker 1 ngaphandle kokulahleka kwedatha. Ubukho bunikezelwa ngenxa yokhuseleko lwedatha. Kodwa le yimo enobungozi enokuthi ikhokelele ekulahlekeni kwedatha epheleleyo, esiya kuyijonga kungekudala.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 13. Umgca B uhlala ungafumaneki emva kokuphulukana neBroker 1

Unokubuza, "Ngaba kungcono ukuba ungaze usebenzise ungqamaniso oluzenzekelayo?" Impendulo kukuba ungqamaniso lumsebenzi ovimba. Ngexesha longqamaniso, umgca ophambili awukwazi ukwenza nayiphi na imisebenzi yokufunda okanye yokubhala!

Makhe sijonge umzekelo. Ngoku sinemigca emide kakhulu. Banokukhula njani babe bukhulu kangako? Ngenxa yezizathu ezininzi:

  • Imigca ayisetyenziswanga ngokusebenzayo
  • Le yimigca enesantya esiphezulu, kwaye ngoku abathengi bayacotha
  • Yimigca ebaleka ngesantya esiphezulu, kukho i-glitch kwaye abathengi bayayibamba.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 14. Imigca emibini emikhulu eneendlela ezahlukeneyo zongqamaniso

Ngoku iBroker 3 iyawa.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 15. I-Broker 3 iyawa, ishiya inkosi enye kunye nesibuko kumgca ngamnye

I-Broker 3 ibuya kwi-intanethi kwaye izibuko ezitsha zenziwe. Umgca ongundoqo A uqala ukuphindaphinda imiyalezo esele ikhona kwisibuko esitsha, kwaye ngeli xesha umgca awukho. Kuthatha iiyure ezimbini ukuphindaphinda idatha, okukhokelela kwiiyure ezimbini zokuphumla kulo Mjikelo!

Nangona kunjalo, uQueue B uhlala ufumaneka ngalo lonke ixesha. Uncame ukungafuneki okuthile ukuze afikeleleke.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 16. Umgca awukho ngexesha longqamaniso

Emva kweeyure ezimbini, uQueue A uyafumaneka kwaye unokuqalisa ukwamkela ukufunda nokubhala kwakhona.

Uhlaziyo

Oku kuthintela ukuziphatha ngexesha longqamaniso kwenza kube nzima ukuhlaziya amaqela anemigca emikhulu kakhulu. Ngexesha elithile, i-master node idinga ukuqaliswa kwakhona, oku kuthetha ukuba ukutshintshela kwisibuko okanye ukukhubaza umgca ngelixa umncedisi uphuculwa. Ukuba sikhetha ukutshintsha, siya kulahlekelwa yimiyalezo ukuba izibuko azihambelani. Ngokungagqibekanga, ngexesha lokuphuma kwe-broker, i-faillover kwisibuko esingahambelaniyo ayenziwa. Oku kuthetha ukuba ngokukhawuleza xa umthengisi ebuya, asilahlekelwa nayiphi na imiyalezo, umonakalo kuphela wawungumgca olula. Imithetho yokuziphatha xa i-broker inqanyuliwe isetwa ngumgaqo-nkqubo ha-promote-on-shutdown. Ungacwangcisa ixabiso elinye kula mabini:

  • always= ukutshintshela kwizipili ezingadityaniswanga kuvuliwe
  • when-synced= ukutshintshela kwisibuko esilungelelanisiweyo kuphela, ngaphandle koko umgca awufundeki kwaye ungabhaleki. Umgca ubuyela kwinkonzo ngokukhawuleza ukuba i-broker ibuyile

Enye indlela okanye enye, kunye nemigca emikhulu kufuneka ukhethe phakathi kwelahleko yedatha kunye nokungafumaneki.

Xa Ubukho buphucula uKhuseleko lweDatha

Kukho enye ingxaki ekufuneka uyiqwalasele ngaphambi kokuba wenze isigqibo. Ngelixa ungqamaniso oluzenzekelayo lungcono ukuphinda-phinda, luchaphazela njani ukhuseleko lwedatha? Ngokuqinisekileyo, ngokugqithiswa okungcono, i-RabbitMQ ayinakukwazi ukuphulukana nemiyalezo ekhoyo, kodwa kuthekani ngemiyalezo emitsha evela kubapapashi?

Apha kufuneka uqwalasele oku kulandelayo:

  • Ngaba umpapashi 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 umshicileli unokulahla kuphela umyalezo, ngoko ngokwenene, ukuphucula ukufikeleleka kuphucula ukhuseleko lwedatha.

Ngaloo ndlela, ulungelelwaniso kufuneka lufunwe, kwaye isisombululo sixhomekeke kwimeko ethile.

Iingxaki nge-ha-promote-on-falure=when-synced

Umbono ha-ukukhuthaza-ngokusilela= xa-synced kukuba sithintela ukutshintshela kwisibuko esingahambelaniyo kwaye ngaloo ndlela sinqande ukulahleka kwedatha. Umgca uhlala ungafundeki okanye ubhaleke. Endaweni yoko, sizama ukubuyisela i-broker eyaphukileyo kunye nedatha yayo ukuze iphinde iqalise ukusebenza njengenkosi ngaphandle kokulahleka kwedatha.

Kodwa (kwaye oku kukhulu kodwa) ukuba umthengisi ulahlekelwe idatha yakhe, ngoko sinengxaki enkulu: umgca ulahlekile! Yonke idatha iphelile! Nokuba unezipili ezibamba umgca ongundoqo, ezo zipili nazo ziyalahlwa.

Ukongeza kwakhona i-node enegama elifanayo, sixelela iqela ukuba lilibale i-node elahlekileyo (ngomyalelo rabbitmqctl forget_cluster_node) kwaye uqale umthengisi omtsha onegama lomamkeli ofanayo. Ngoxa i-cluster ikhumbula i-node elahlekileyo, ikhumbula umgca omdala kunye nezibuko ezingahambelaniyo. Xa iqela lixelelwa ukuba lilibale indawo yenkedama, loo mgca uyalityalwa. Ngoku kufuneka siyibhengeze kwakhona. Silahlekelwe yiyo yonke idatha, nangona sinezibuko ezineseti yedatha. Kuya kuba ngcono ukutshintshela kwisibuko esingavumelaniyo!

Ngoko ke, ungqamaniso lwezandla (kunye nokusilela ungqamaniso) ngokudityaniswa ne ha-promote-on-failure=when-synced, ngokokubona kwam, kuyingozi kakhulu. Amaxwebhu athi olu khetho lukhona kukhuseleko lwedatha, kodwa yimela ephindwe kabini.

Master rebalancing

Njengoko sithenjisiwe, sibuyela kwingxaki yokuqokelela zonke iinkosi kwindawo enye okanye ezininzi. Oku kunokwenzeka ngenxa yohlaziyo lweqela eliqengqelekayo. Kwiqela lee-node ezintathu, zonke ii-master quees ziya kuqokelelana kwindawo enye okanye ezimbini.

Ukubuyisela ukulinganisa iinkosi kunokuba yingxaki ngenxa yezizathu ezibini:

  • Akukho zixhobo zilungileyo zokwenza uhlengahlengiso
  • Ungqamaniso emgceni

Kukho iqela lesithathu lokulinganisa kwakhona iplagi, engaxhaswanga ngokusemthethweni. Ngokumalunga neeplagi zomntu wesithathu kwi-RabbitMQ manual watsho: β€œI-plugin ibonelela ngoqwalaselo olongezelelweyo kunye nezixhobo zokunika ingxelo, kodwa ayixhaswanga okanye ayiqinisekiswanga liqela leRabbitMQ. Sebenzisa ngomngcipheko wakho."

Kukho elinye iqhinga lokususa umgca ophambili ngemigaqo-nkqubo ye-HA. Le ncwadana ikhankanya umbhalo yale. Isebenza ngolu hlobo:

  • Ususa zonke izibuko usebenzisa umgaqo-nkqubo wexeshana obaluleke kakhulu kunomgaqo-nkqubo we-HA okhoyo.
  • Ukutshintsha umgaqo-nkqubo wexeshana we-HA ukusebenzisa imowudi ye-node, ichaza indawo apho umgca oyintloko kufuneka udluliselwe khona.
  • Ingqamanisa umgca wokutyhala.
  • Emva kokuba imfuduko igqityiwe, icima ipolisi yethutyana. Umgaqo-nkqubo we-HA wokuqala usebenza kwaye inani elifunekayo lezibuko lenziwe.

Icala elisezantsi lelokuba le ndlela isenokungasebenzi ukuba unemigca emikhulu okanye iimfuno ezingqongqo zokungafuneki.

Ngoku makhe sibone ukuba amaqela e-RabbitMQ asebenza njani kunye nezahlulo zenethiwekhi.

Ukulahleka koqhagamshelwano

Iinqununu zenkqubo esasazwayo zixhunywe ngamakhonkco enethiwekhi, kwaye amakhonkco enethiwekhi angakwazi kwaye aya kunqunyulwa. Ukuphindaphinda kokucima kuxhomekeke kwisiseko sendawo okanye ukuthembeka kwelifu elikhethiweyo. Kwimeko nayiphi na into, iinkqubo ezisasazwayo kufuneka zikwazi ukujamelana nazo. Kwakhona sinokukhetha phakathi kokufumaneka kunye nokuhambelana, kwaye kwakhona iindaba ezilungileyo kukuba i-RabbitMQ ibonelela ngeendlela zombini (kungekhona nje ngexesha elinye).

NgoRabbitMQ sineenketho ezimbini eziphambili:

  • Vumela ulwahlulo olunengqiqo (ukwahlukana-ubuchopho). Oku kuqinisekisa ukufumaneka, kodwa kunokubangela ilahleko yedatha.
  • Khubaza ukwahlukana okusengqiqweni. Ingakhokelela ekulahlekeni kwexesha elifutshane lokufumaneka ngokuxhomekeke kwindlela abathengi abanxibelelana ngayo kwiqela. Isenakho ukukhokelela ekungafumanekiyo okupheleleyo kwiqela leenodi ezimbini.

Kodwa yintoni ukwahlukana okusengqiqweni? Oku kuxa iqela liqhekeka kubini ngenxa yelahleko yoqhagamshelo lwenethiwekhi. Kwicala ngalinye, izibuko ziphakanyiswa ukuba zibe yinkosi, ukuze ekugqibeleni kubekho iinkosi ezininzi ngomgca.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 17. Umgca ophambili kunye nezibuko ezibini, nganye kwi-node eyahlukileyo. Emva koko ukusilela kwenethiwekhi kwenzeka kwaye esinye isibuko siyasuswa. I-node ehlukeneyo ibona ukuba ezinye ezimbini ziwile kwaye zikhuthaza izibuko zayo kwinkosi. Ngoku sinemigca emibini engundoqo, ebhalekayo kwaye efundekayo.

Ukuba abapapashi bathumela idatha kwiinkosi zombini, sigqiba ngeekopi ezimbini ezihlukeneyo zomgca.

Iimowudi ezahlukeneyo zeRabbitMQ zibonelela nokuba kufumaneka okanye ukungaguquguquki.

Imowudi yokungahoyi (ehlala ikho)

Le mowudi iqinisekisa ukufikeleleka. Emva kokulahlekelwa koqhagamshelwano, ukwahlukana okunengqiqo kwenzeka. Emva kokuba uqhagamshelo lubuyiselwe, umlawuli kufuneka enze isigqibo sokuba yeyiphi na isahlulelo asinike kuqala. Icala elilahlekileyo liya kuqaliswa kwakhona kwaye yonke idatha eqokelelweyo kwelo cala iya kulahleka.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 18. Abavakalisi abathathu banxulumana nabarhwebi abathathu. Ngaphakathi, iindlela zeqela zonke izicelo kumgca ongundoqo weBroker 2.

Ngoku silahlekelwa nguBroker 3. Uyabona ukuba abanye abadayisi bawile kwaye bakhuthaza isibuko sakhe kwinkosi. Yile ndlela ukwahlukana okunengqiqo okwenzeka ngayo.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 19. Ulwahlulo olusengqiqweni (i-split-brain). Iirekhodi zingena kwimigca emibini engundoqo, kwaye iikopi ezimbini ziyahlukana.

Uqhagamshelwano lubuyiselwe, kodwa ukwahlukana okunengqiqo kuhleli. Umlawuli kufuneka akhethe ngesandla icala elilahlekileyo. Kwimeko engezantsi, umlawuli uqalisa kwakhona iBroker 3. Yonke imiyalezo engazange ikwazi ukuyihambisa ilahlekile.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 20. Umlawuli uvala iBroker 3.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 21. Umlawuli uqala i-Broker 3 kwaye idibanisa i-cluster, ilahlekelwa yonke imiyalezo eshiywe apho.

Ngexesha lokulahleka koqhagamshelo nasemva kokubuyiselwa kwayo, iklasta kunye nalo mgca ziyafumaneka ukuze kufundwe nokubhala.

Imowudi yokuzilungisa

Isebenza ngokufanayo kwimowudi yokungahoyi, ngaphandle kokuba iqela ngokwalo likhetha ngokuzenzekelayo icala elilahlekileyo emva kokwahlula nokubuyisela uxhulumaniso. Icala elilahlekileyo libuyela kwiqela elingenanto, kwaye umgca ulahlekelwa yiyo yonke imiyalezo ebithunyelwe kwelo cala kuphela.

Misa iMowudi yabaNcinci

Ukuba asifuni kuvumela ulwahlulo olunengqiqo, ngoko ukhetho lwethu ekuphela kwalo kukulahla ukufunda nokubhala kwicala elincinane emva kokwahlulwa kweqela. Xa umthengisi ebona ukuba kwicala elincinci, uyamisa umsebenzi, oko kukuthi, uvala zonke iidibansi ezikhoyo kwaye wenqaba nayiphi na entsha. Kanye ngesekhondi ijonga ukubuyiswa koqhagamshelo. Nje ukuba uqhagamshelo lubuyiselwe, luphinda luqalise ukusebenza kwaye ludibanise neqela.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 22. Abavakalisi abathathu banxulumana nabarhwebi abathathu. Ngaphakathi, iindlela zeqela zonke izicelo kumgca ongundoqo weBroker 2.

I-Broker 1 kunye ne-2 emva koko yahlukana kwi-Broker 3. Esikhundleni sokukhuthaza isibuko sabo ukuba siphumelele, i-Broker 3 iyamisa kwaye ingabikho.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 23. I-Broker 3 iyayeka, ikhupha bonke abathengi, kwaye iyala izicelo zokuxhuma.

Nje ukuba uqhagamshelwano lubuyiselwe, lubuyela kwiqela.

Makhe sijonge omnye umzekelo apho umgca ophambili ukuBroker 3.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 24. Umgca ongundoqo kwi-Broker 3.

Emva koko ilahleko efanayo yoqhagamshelwano iyenzeka. I-Broker 3 iyanqumama kuba ikwicala elincinci. Ngakolunye uhlangothi, ii-nodes zibona ukuba i-Broker 3 iwile, ngoko isibuko esidala esivela kwi-Brokers 1 kunye ne-2 sikhuthazwa ukuba siphumelele.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 25. Ukutshintshela kwi-Broker 2 ukuba i-Broker 3 ayifumaneki.

Xa uxhulumaniso lubuyiselwe, iBroker 3 iya kujoyina iqela.

I-RabbitMQ vs Kafka: Ukunyamezelwa kweFault kunye nokuFumana okuphezulu kwiiCluster
Irayisi. 26. Iqela libuyele ekusebenzeni kwesiqhelo.

Into ebalulekileyo ekufuneka siyiqonde apha kukuba sifumana ukungaguquguquki, kodwa sinokufumana nokufumaneka, ukuba Siya kuphumelela ukudlulisela abathengi kuninzi lwecandelo. Kwiimeko ezininzi, mna ngokwam ndingakhetha imowudi yokuMisa ubuNcinane, kodwa ixhomekeke kwimeko nganye.

Ukuqinisekisa ukufumaneka, kubalulekile ukuqinisekisa ukuba abathengi baxhuma ngempumelelo kumamkeli. Makhe sijonge ukhetho lwethu.

Ukuqinisekisa uQhagamshelwano loMthengi

Sinokhetho oluninzi lwendlela yokuqondisa abathengi kwinxalenye ephambili yeqela okanye kwiindawo zokusebenza (emva kokuba enye i-node ingaphumeleli) emva kokulahlekelwa koqhagamshelwano. Okokuqala, masikhumbule ukuba umgca othile ubanjelwe kwindawo ethile, kodwa indlela kunye nemigaqo-nkqubo iphindaphindwa kuzo zonke iindawo. Abathengi banokuqhagamshela kuyo nayiphi na i-node, kwaye indlela yangaphakathi iya kubakhokelela apho bafuna ukuya khona. Kodwa xa i-node inqunyanyisiwe, iyala ukudibanisa, ngoko ke abathengi kufuneka badibanise kwenye i-node. Ukuba i-node iyawa, kuncinci anokukwenza konke konke.

Ukhetho lwethu:

  • Iqela lifikelelwa kusetyenziswa isilinganisi somthwalo esijikeleza ngokulula kwiindawo zeendawo kwaye abathengi baphinde bazame ukudibanisa kude kube yimpumelelo. Ukuba i-node iphantsi okanye inqunyanyisiwe, ngoko ke iinzame zokuqhagamshela kuloo nodi ziya kusilela, kodwa iinzame ezilandelayo ziya kwezinye iiseva (ngendlela ejikelezayo). Oku kulungele ukulahleka kwexesha elifutshane loqhagamshelwano okanye iseva ephantsi eya kubuyiselwa ngokukhawuleza.
  • Fikelela kwiqela ngokusebenzisa isilinganisi somthwalo kwaye ususe iindawo ezimisiweyo/ezisileleyo kuluhlu ngokukhawuleza nje ukuba zibhaqwe. Ukuba senza oku ngokukhawuleza, kwaye ukuba abathengi bayakwazi ukuphinda bazame uxhulumaniso, ngoko siya kufezekisa ukufumaneka rhoqo.
  • Nika umxhasi ngamnye uluhlu lwazo zonke iindawo, kwaye umxhasi ukhetha ngokungenamkhethe enye yazo xa uqhagamshela. Ukuba ifumana impazamo xa izama ukudibanisa, iya kwindawo elandelayo kuluhlu ide idibanise.
  • Susa itrafikhi kwindawo engaphumelelanga/emisiweyo usebenzisa iDNS. Oku kwenziwa kusetyenziswa i-TTL encinci.

ezifunyanisiweyo

Ukuhlanganiswa kweRabbitMQ kunenzuzo kunye nokungalunganga. Ezona zinto zingeloncedo kakhulu zezi:

  • xa ujoyina i-cluster, ii-nodes zilahla idatha yazo;
  • Ukuvala ungqamaniso kubangela ukuba umgca ungafumaneki.

Zonke izigqibo ezinzima zivela kwezi mpawu zimbini zokwakha. Ukuba iRabbitMQ inokugcina idatha xa iqela lidityanisiwe, ungqamaniso luya kukhawuleza. Ukuba ikwazile ukungathinteli ungqamaniso, ibiya kuxhasa ngcono imigca emikhulu. Ukulungisa le miba mibini kungaphucula kakhulu ukusebenza kwe-RabbitMQ njengobuxhakaxhaka bokunyamezela iimpazamo kunye nobuchwephesha bemiyalezo obufumaneka kakhulu. Ndiyathandabuza ukucebisa iRabbitMQ ngokudibanisa kwezi meko zilandelayo:

  • Inethiwekhi engathembekanga.
  • Ugcino olungathembekanga.
  • Imigca emide kakhulu.

Xa kuziwa kwisetingi zokufumaneka okuphezulu, qwalasela oku kulandelayo:

  • ha-promote-on-failure=always
  • ha-sync-mode=manual
  • cluster_partition_handling=ignore (okanye autoheal)
  • imiyalezo eqhubekayo
  • qinisekisa ukuba abathengi baqhagamshele kwindawo esebenzayo xa enye node isilela

Ukungqinelana (ukhuseleko lwedatha), qwalasela olu setingi lulandelayo:

  • Umshicileli uqinisekisa kunye neMibono yeNcwadi kwicala labathengi
  • ha-promote-on-failure=when-synced, ukuba abapapashi banokuzama kwakhona kamva kwaye ukuba unokugcinwa okuthembekileyo kakhulu! Kungenjalo beka =always.
  • ha-sync-mode=automatic (kodwa kwimigca emikhulu engasebenziyo imo yesandla ingafuneka; kananjalo qwalasela ukuba ukungafumaneki kuya kubangela ukuba imiyalezo ilahleke)
  • Misa imowudi yabaNcinci
  • imiyalezo eqhubekayo

Asikayihlanganisi yonke imiba yokunyamezela iziphene kunye nokufumaneka okuphezulu okwangoku; umzekelo, ukwenza njani ngokukhuselekileyo iinkqubo zolawulo (ezifana nohlaziyo oluqengqelekayo). Kukwafuneka sithethe malunga nefederation kunye neplagi yeFosholo.

Ukuba kukho enye into endiyiphosileyo, ndicela undazise.

Bona kwakhona wam iposti, apho ndenza khona umonakalo kwi-RabbitMQ cluster usebenzisa i-Docker kunye ne-Blockade ukuvavanya ezinye zeemeko zokulahlekelwa komyalezo ezichazwe kweli nqaku.

Amanqaku angaphambili kuthotho:
Inombolo 1 - habr.com/ru/company/itsuma/blog/416629
Inombolo 2 - habr.com/ru/company/itsuma/blog/418389
Inombolo 3 - habr.com/ru/company/itsuma/blog/437446

umthombo: www.habr.com

Yongeza izimvo