I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo

Ukubekezelela amaphutha nokutholakala okuphezulu kuyizihloko ezinkulu, ngakho-ke sizonikela ngezindatshana ezihlukene ku-RabbitMQ ne-Kafka. Lesi sihloko sikhuluma nge-RabbitMQ, futhi elandelayo imayelana ne-Kafka, uma iqhathaniswa ne-RabbitMQ. Lesi isihloko eside, ngakho zenze ukhululeke.

Ake sibheke ukubekezelela amaphutha, ukungaguquguquki, nokutholakala okuphezulu (i-HA) amasu kanye nokuhwebelana okwenziwa isu ngalinye. I-RabbitMQ ingasebenza ngeqoqo lamanodi - bese ihlukaniswa njengohlelo olusabalalisiwe. Uma kukhulunywa ngezinhlelo ezisabalalisiwe, sivame ukukhuluma ngokungaguquguquki nokutholakala.

Le mibono ichaza indlela uhlelo oluziphatha ngayo uma lwehluleka. Ukuhluleka kokuxhumeka kwenethiwekhi, ukwehluleka kweseva, ukuhluleka kwe-hard drive, ukungatholakali kwesikhashana kweseva ngenxa yokuqoqwa kukadoti, ukulahlekelwa kwephakethe, noma ukuncipha kokuxhumeka kwenethiwekhi. Konke lokhu kungaholela ekulahlekeni kwedatha noma izingxabano. Kuvele ukuthi cishe akunakwenzeka ukumisa isistimu evumelana ngokuphelele (akukho ukulahleka kwedatha, akukho ukwehluka kwedatha) futhi etholakalayo (ezokwamukela ukufunda nokubhala) kuzo zonke izimo zokuhluleka.

Sizobona ukuthi ukuvumelana nokutholakala kusemikhawulweni ephikisanayo ye-spectrum, futhi udinga ukukhetha ukuthi iyiphi indlela yokuthuthukisa. Izindaba ezinhle ukuthi nge-RabbitMQ lokhu kukhetha kungenzeka. Unalolu hlobo lwamaleveli β€œe-nerdy” ukuze ushintshe ibhalansi iye ekuvumelaneni okukhulu noma ukufinyeleleka okukhulu.

Sizonaka ngokukhethekile ukuthi yiziphi izilungiselelo eziholela ekulahlekeni kwedatha ngenxa yamarekhodi aqinisekisiwe. Kunoxhaxha lwezibopho phakathi kwabashicileli, abathengisi nabathengi. Uma umyalezo usudluliselwe kumdayisi, kuwumsebenzi wakhe ukungalahlekelwa umlayezo. Uma umthengisi evuma ukuthi umshicileli uwutholile umlayezo, asilindele ukuthi uzolahleka. Kodwa sizobona ukuthi lokhu kungenzeka ngempela kuye ngomthengisi wakho kanye nokulungiselelwa komshicileli.

I-Single Node Resilience Primitives

Umugqa Oqinile/Umzila

Kunezinhlobo ezimbili zemigqa ku-RabbitMQ: ehlala isikhathi eside futhi engahlali isikhathi eside. Yonke imigqa igcinwe kusizindalwazi se-Mnesia. Olayini abaqinile baphinde bakhangiswa ekuqalisweni kwenodi futhi ngaleyo ndlela basinde ekuqaliseni kabusha, ukuphahlazeka kwesistimu, noma ukuphahlazeka kweseva (inqobo nje uma idatha isaqhubeka). Lokhu kusho ukuthi inqobo nje uma umemezela ukuthi umzila (ukushintshana) kanye nolayini uzosimama, ingqalasizinda yomugqa/umzila izobuyela ku-inthanethi.

Olayini abaguquguqukayo kanye nomzila kuyasuswa lapho indawo iqalwa kabusha.

Imilayezo eqhubekayo

Ngenxa yokuthi ulayini uqinile akusho ukuthi yonke imilayezo yawo izosinda ekuqalweni kabusha kwenodi. Imilayezo kuphela emiswe umshicileli njenge esimeme (ephikelela). Imilayezo ephikelelayo idala umthwalo owengeziwe kumthengisi, kodwa uma ukulahlekelwa umlayezo kungamukeleki, ayikho enye inketho.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 1. I-matrix yokusimama

Ukuhlanganisa ngesibuko somugqa

Ukuze sisinde ekulahlekelweni umthengisi, sidinga ukuphindiselwa emuva. Singahlanganisa amanodi amaningi e-RabbitMQ sibe yiqoqo, bese sengeza ukuphindaphindeka okwengeziwe ngokuphindaphinda imigqa phakathi kwamanodi amaningi. Ngale ndlela, uma inodi eyodwa ihluleka, asilahlekelwa idatha futhi sihlala sitholakala.

Isibuko somugqa:

  • ulayini owodwa oyinhloko (master), owamukela yonke imiyalo yokubhala nokufunda
  • isibuko esisodwa noma ngaphezulu esamukela yonke imilayezo nemethadatha emugqeni omkhulu. Lezi zibuko azikho lapho kulinganiswa khona, kodwa zisetshenziselwa ukuphindaphinda.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 2. Ukwenza isibuko kumugqa

Ukwenza isibuko kusethwe yinqubomgomo efanele. Kuyo ungakhetha i-coefficient yokuphindaphinda ngisho namanodi lapho ulayini kufanele ube khona. Izibonelo:

  • ha-mode: all
  • ha-mode: exactly, ha-params: 2 (one master nesibuko esisodwa)
  • ha-mode: nodes, ha-params: rabbit@node1, rabbit@node2

Ukuqinisekisa komshicileli

Ukuze kuzuzwe ukurekhoda okungaguquki, Ukuqinisekisa Umshicileli kuyadingeka. Ngaphandle kwabo, kunengozi yokulahleka kwemiyalezo. Isiqinisekiso sithunyelwa kumshicileli ngemuva kokuthi umlayezo ubhalwe kudiski. I-RabbitMQ ibhala imilayezo kudiski hhayi lapho itholwa, kodwa ngezikhathi ezithile, endaweni yama-millisecond angamakhulu ambalwa. Uma ulayini uboniswa, umyalezo ovumayo uthunyelwa kuphela ngemva kokuba zonke izibuko nazo sezibhale ikhophi yazo yomlayezo kudiski. Lokhu kusho ukuthi ukusebenzisa iziqinisekiso kungeza ukubambezeleka, kodwa uma ukuphepha kwedatha kubalulekile, kusho ukuthi kuyadingeka.

Ulayini we-Failover

Uma umthengisi eyeka noma ephahlazeka, bonke abaholi bomugqa (izingcweti) kuleyo nodi bayaphahlazeka kanye nayo. Iqoqo libe selikhetha isibuko esidala kunazo zonke senkosi ngayinye bese lisiphromotha njengesiyinhloko esisha.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 3. Imigqa eminingi enezibuko kanye nezinqubomgomo zayo

U-Broker 3 uyehla. Qaphela ukuthi isibuko somugqa C ku-Broker 2 siyathuthukiswa ukuze sibe umpetha. Futhi qaphela ukuthi isibuko esisha senzelwe umugqa C ku-Broker 1. I-RabbitMQ ihlezi izama ukugcina isici sokuphindaphinda esicaciswe kuzinqubomgomo zakho.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 4. I-Broker 3 iyahluleka, okwenza ulayini C wehluleke

I-Broker 1 elandelayo iyawa! Sisele nomthengisi oyedwa kuphela. Isibuko sika-Queue B sithuthukiswa ukuze sibe umpetha.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
U-fig. 5

Sibuyise i-Broker 1. Kungakhathaliseki ukuthi idatha isinda kanjani ekulahlekeni nasekutholeni umthengisi, yonke imilayezo yomugqa oyizibuko iyalahlwa lapho iqalwa kabusha. Lokhu kubalulekile ukuqaphela ngoba kuzoba nemiphumela. Sizobheka le miphumela maduzane. Ngakho-ke u-Broker 1 manje useyilungu le-cluster futhi, futhi iqoqo lizama ukuthobela izinqubomgomo futhi ngenxa yalokho lidala izibuko ku-Broker 1.

Kulesi simo, ukulahlekelwa kwe-Broker 1 kuphelile, njengoba kwakunjalo nedatha, ngakho umugqa B ongabonakali ulahlekile ngokuphelele.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 6. U-Broker 1 ubuyela enkonzweni

U-Broker 3 ubuyile ku-inthanethi, ngakho olayini A no-B bathola izibuko ezidalwe kuyo ukuze banelise izinqubomgomo zabo ze-HA. Kodwa manje yonke imigqa emikhulu isendaweni eyodwa! Lokhu akulungile, ukusabalalisa okulinganayo phakathi kwama-node kungcono. Ngeshwa, azikho izinketho eziningi lapha zokulinganisa kabusha amakhosi. Sizobuyela kulolu daba ngokuhamba kwesikhathi ngoba sidinga ukubheka ukuvumelanisa komugqa kuqala.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 7. U-Broker 3 ubuyela enkonzweni. Yonke imigqa eyinhloko endaweni eyodwa!

Ngakho-ke manje kufanele ube nombono wokuthi izibuko zinikeza kanjani ukuphindaphinda nokubekezelela amaphutha. Lokhu kuqinisekisa ukutholakala uma kwenzeka ukwehluleka kwenodi eyodwa futhi kuvikela ekulahlekeni kwedatha. Kodwa asikaqedi okwamanje, ngoba empeleni kuyinkimbinkimbi kakhulu.

Ukuvumelanisa

Lapho udala isibuko esisha, yonke imilayezo emisha izohlala iphindaphindwa kulesi sibuko kanye nanoma yimiphi eminye. Ngokuqondene nedatha ekhona ku-master queue, singayiphindaphinda esibukweni esisha, esiba ikhophi ephelele yenkosi. Futhi singakhetha ukungaphindi imilayezo ekhona futhi sivumele ulayini oyinhloko nesibuko esisha kuhlangane ngesikhathi, nemilayezo emisha efika emsileni nemilayezo ekhona eshiya inhloko yomugqa omkhulu.

Lokhu kuvumelanisa kwenziwa ngokuzenzakalela noma mathupha futhi kulawulwa kusetshenziswa inqubomgomo yomugqa. Ake sibheke isibonelo.

Sinolayini ababili abanezibuko. Umugqa A uvumelaniswa ngokuzenzakalelayo, futhi Umugqa B uvumelaniswa ngesandla. Yomibili imigqa iqukethe imilayezo eyishumi.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 8. Imigqa emibili enezindlela ezihlukene zokuvumelanisa

Manje silahlekelwa ngu-Broker 3.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 9. U-Broker 3 uwile

U-Broker 3 ubuyela enkonzweni. Iqoqo lidala isibuko somugqa ngamunye endaweni entsha futhi livumelanisa ngokuzenzakalelayo Umugqa A omusha noyinhloko. Nokho, isibuko somugqa B omusha sihlala singenalutho. Ngale ndlela sinokungafuneki okugcwele kumugqa A nesibuko esisodwa kuphela semilayezo ekhona yomugqa B.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 10. Isibuko esisha sika-Queue A sithola yonke imilayezo ekhona, kodwa isibuko esisha sika-Queue B asiyitholi.

Kufika eminye imilayezo eyishumi kuyo yomibili imigqa. U-Broker 2 ube esephahlazeka bese umugqa A ugingqika ubuyele esibukweni esidala kunazo zonke, esiku-Broker 1. Akukho ukulahleka kwedatha uma yehluleka. Kulayini B, kunemilayezo engamashumi amabili ku-master futhi iyishumi kuphela esibukweni ngoba lo mugqa awuzange uphindaphinde imilayezo eyishumi yokuqala.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 11. Umugqa A ubuyela emuva ku-Broker 1 ngaphandle kokulahlekelwa imilayezo

Kufika eminye imilayezo eyishumi kuyo yomibili imigqa. Manje i-Broker 1 iyaphahlazeka. Umugqa A ushintshela esibukweni kalula ngaphandle kokulahlekelwa imilayezo. Nokho, umugqa B unezinkinga. Kuleli qophelo singakwazi ukuthuthukisa ukutholakala noma ukuvumelana.

Uma sifuna ukuthuthukisa ukufinyeleleka, sizobe sesilandela inqubomgomo ha-phromotha-ngokwehluleka kufanele ifakwe njalo. Leli inani elizenzakalelayo, ngakho awukwazi ukumane ungayicacisi nhlobo inqubomgomo. Kulokhu, empeleni sivumela ukwehluleka ezibukweni ezingavumelanisiwe. Lokhu kuzobangela ukuthi imilayezo ilahleke, kodwa ulayini uzohlala ufundeka futhi ubhaleka.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 12. Umugqa A uphindiselwa emuva ku-Broker 3 ngaphandle kokulahlekelwa imilayezo. Umugqa B ubuyela emuva ku-Broker 3 ngemilayezo eyishumi elahlekile

Singakwazi futhi ukufaka ha-promote-on-failure ibe yincazelo when-synced. Kulesi simo, esikhundleni sokubuyela esibukweni, ulayini uzolinda kuze kube yilapho i-Broker 1 nedatha yayo ibuyela kumodi ye-inthanethi. Ngemva kokubuya, ulayini oyinhloko ubuyela ku-Broker 1 ngaphandle kokulahleka kwedatha. Ukutholakala kuyadela ngenxa yokuphepha kwedatha. Kodwa lena imodi eyingozi engaholela ngisho nasekulahlekelweni kwedatha okuphelele, esizoyibheka maduze nje.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 13. Umugqa B usalokhu ungatholakali ngemva kokulahlekelwa u-Broker 1

Ungase ubuze, "Ingabe kungcono ukungasebenzisi ukuvumelanisa okuzenzakalelayo?" Impendulo iwukuthi ukuvumelanisa kuwumsebenzi wokuvimbela. Ngesikhathi sokuvumelanisa, ulayini omkhulu awukwazi ukwenza imisebenzi yokufunda noma yokubhala!

Ake sibheke isibonelo. Manje sesinolayini abade kakhulu. Angakhula kanjani aze afike ezingeni elingaka? Ngenxa yezizathu ezimbalwa:

  • Olayini abasetshenziswa ngokuqhubekayo
  • Lawa olayini abanesivinini esikhulu, futhi njengamanje abathengi bayanensa
  • Kulayini onesivinini esikhulu, kube khona inkinga futhi abathengi bayayibamba

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 14. Olayini ababili abakhulu abanezindlela ezihlukene zokuvumelanisa

Manje i-Broker 3 iyawa.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 15. U-Broker 3 uyawa, ashiye inkosi eyodwa nesibuko kulayini ngamunye

U-Broker 3 ubuya ku-inthanethi futhi kwakhiwa izibuko ezintsha. Umugqa Oyinhloko A uqala ukuphindaphinda imilayezo ekhona esibukweni esisha, futhi ngalesi sikhathi Umugqa awutholakali. Kuthatha amahora amabili ukuphindaphinda idatha, okuholela emahoreni amabili esikhathi sokuphumula salo Layini!

Nokho, umugqa B uhlala utholakala kuso sonke isikhathi. Udele ukungafuneki okuthile ukuze afinyeleleke.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 16. Ulayini uhlala ungatholakali ngesikhathi sokuvumelanisa

Ngemva kwamahora amabili, Umugqa A nawo uyatholakala futhi ungaqala ukwamukela ukufunda nokubhala futhi.

Izibuyekezo

Lokhu kuziphatha kokuvimbela ngesikhathi sokuvumelanisa kwenza kube nzima ukubuyekeza amaqoqo anemigqa emikhulu kakhulu. Ngesinye isikhathi, i-master node idinga ukuqaliswa kabusha, okusho ukuthi ukushintshela esibukweni noma ukukhubaza ulayini ngenkathi iseva ithuthukiswa. Uma sikhetha ukushintsha, sizolahlekelwa imilayezo uma izibuko zingavumelaniswa. Ngokuzenzakalelayo, ngesikhathi sokuphuma komthengisi, i-faillover esibukweni esingavumelanisiwe ayenziwa. Lokhu kusho ukuthi ngokushesha nje lapho umthengisi ebuya, asilahlekelwa yimilayezo, okuwukuphela komonakalo kwakuwumugqa olula. Imithetho yokuziphatha uma umthengisi enqanyulwa ihlelwa yinqubomgomo ha-promote-on-shutdown. Ungasetha inani elilodwa kwamabili:

  • always= ukushintshela ezibukweni ezingavumelanisiwe kuvuliwe
  • when-synced= ukushintshela esibukweni esivumelanisiwe kuphela, ngaphandle kwalokho ulayini uba ongafundeki futhi ungabhaleki. Ulayini ubuyela kusevisi ngokushesha nje lapho umthengisi ebuya

Ngandlela thize, ngolayini abakhulu kufanele ukhethe phakathi kokulahleka kwedatha nokungatholakali.

Lapho Ukutholakala Kuthuthukisa Ukuphepha Kwedatha

Kunenye futhi inkinga okufanele icatshangelwe ngaphambi kokwenza isinqumo. Nakuba ukuvumelanisa okuzenzakalelayo kungcono ekuphindaphindeni, kuthinta kanjani ukuphepha kwedatha? Yebo, ngokuphinda kusetshenziswe kangcono, i-RabbitMQ mancane amathuba okuba ilahlekelwe yimilayezo ekhona, kodwa kuthiwani ngemilayezo emisha evela kubashicileli?

Lapha udinga ukucabangela lokhu okulandelayo:

  • Ingabe umshicileli angavele abuyisele iphutha bese enikeza isevisi ekhuphukayo noma umsebenzisi azame futhi ngemva kwesikhathi?
  • Ingabe umshicileli angawugcina umlayezo endaweni noma kusizindalwazi ukuze azame futhi ngemva kwesikhathi?

Uma umshicileli ekwazi ukulahla kuphela umlayezo, empeleni, ukuthuthukisa ukufinyeleleka nakho kuthuthukisa ukuvikeleka kwedatha.

Ngakho, kufanele kufunwe ibhalansi, futhi isisombululo sincike esimweni esithile.

Izinkinga nge-ha-promote-on-failure=when-synced

I-Idea ha-phromotha-ngokwehluleka= lapho-kuvunyelanisiwe ukuthi sigwema ukushintshela esibukweni esingavumelanisiwe futhi ngaleyo ndlela sigweme ukulahleka kwedatha. Ulayini uhlala ungafundeki noma ubhaleka. Esikhundleni salokho, sizama ukubuyisela umthengisi ophahlazekile nedatha yakhe ingaguquki ukuze aqalise kabusha ukusebenza njengochwepheshe ngaphandle kokulahlekelwa idatha.

Kodwa (futhi lokhu kukhulu kodwa) uma umthengisi elahlekelwe idatha yakhe, khona-ke sinenkinga enkulu: ulayini ulahlekile! Yonke idatha ayikho! Ngisho noma unezibuko ezibamba ulayini omkhulu, lezo zibuko nazo ziyalahlwa.

Ukwengeza kabusha i-node enegama elifanayo, sitshela iqoqo ukuthi likhohlwe i-node elahlekile (ngomyalo rabbitmqctl forget_cluster_node) bese uqala umthengisi omusha onegama lomethuleli elifanayo. Ngenkathi iqoqo likhumbula indawo elahlekile, likhumbula ulayini omdala nezibuko ezingavumelanisiwe. Uma iqoqo litshelwa ukuthi likhohlwe indawo eyizintandane, lowo mugqa nawo uyakhohlwa. Manje sidinga ukukumemezela kabusha. Silahlekelwe yiyo yonke idatha, nakuba sinezibuko ezinesethi eyingxenye yedatha. Kungaba ngcono ukushintshela esibukweni esingavumelanisiwe!

Ngakho-ke, ukuvumelanisa okwenziwa ngesandla (nokwehluleka ukuvumelanisa) kuhlanganiswe ne ha-promote-on-failure=when-synced, ngokubona kwami, kuyingozi kakhulu. Amadokhumenti athi le nketho ikhona ukuze ivikeleke idatha, kodwa ingummese osika nhlangothi zombili.

Ukulinganisa kabusha okuyinhloko

Njengoba sithembisile, sibuyela enkingeni yokuqoqwa kwawo wonke amakhosi endaweni eyodwa noma eziningana. Lokhu kungenzeka ngisho nangomphumela wokubuyekezwa kweqoqo. Kuqoqo elinamanodi amathathu, yonke imigqa emikhulu izonqwabelana endaweni eyodwa noma ezimbili.

Ukulinganisa kabusha amakhosi kungaba yinkinga ngenxa yezizathu ezimbili:

  • Awekho amathuluzi amahle okwenza ukulinganisa kabusha
  • Ukuvumelanisa komugqa

Kukhona inkampani yesithathu yokulinganisa kabusha Xhuma, engasekelwe ngokusemthethweni. Mayelana nama-plugin ezinkampani zangaphandle kubhukwana le-RabbitMQ kusho: β€œI-plugin ihlinzeka ngamathuluzi engeziwe okumisa nawokubika, kodwa ayisekelwe noma ayiqinisekiswanga ithimba le-RabbitMQ. Sebenzisa ngokuzifaka wena engozini."

Kukhona elinye iqhinga lokuhambisa ulayini omkhulu ngezinqubomgomo ze-HA. Imanuwali iyakhuluma umbhalo kwalokhu. Isebenza kanje:

  • Isusa zonke izibuko kusetshenziswa inqubomgomo yesikhashana enokubaluleka okuphezulu kunenqubomgomo ye-HA ekhona.
  • Ishintsha inqubomgomo yesikhashana ye-HA ukuze isebenzise imodi yenodi, icacisa indawo lapho ulayini oyinhloko kufanele udluliselwe khona.
  • Ivumelanisa ulayini wokufuduka kophush.
  • Ngemuva kokuthi ukuthutha sekuqediwe, isusa inqubomgomo yesikhashana. Inqubomgomo yokuqala ye-HA iqala ukusebenza futhi inombolo edingekayo yezibuko iyakhiwa.

Okubi ukuthi le ndlela ingase ingasebenzi uma unolayini abakhulu noma nezidingo eziqinile zokungadingeki.

Manje ake sibone ukuthi amaqoqo e-RabbitMQ asebenza kanjani ngokuhlukaniswa kwenethiwekhi.

Ukulahleka kokuxhumana

Amanodi esistimu esabalalisiwe axhunywe izixhumanisi zenethiwekhi, futhi izixhumanisi zenethiwekhi zingakwazi futhi zizonqanyulwa. Ukuvama kokucisha kuncike engqalasizinda yendawo noma ukwethembeka kwefu elikhethiwe. Kunoma yikuphi, izinhlelo ezisabalalisiwe kufanele zikwazi ukubhekana nazo. Siphinde sibe nokukhetha phakathi kokutholakala nokuvumelana, futhi futhi izindaba ezinhle ukuthi i-RabbitMQ inikeza kokubili izinketho (hhayi ngesikhathi esifanayo).

Nge-RabbitMQ sinezinketho ezimbili eziyinhloko:

  • Vumela ukuhlukaniswa okunengqondo (ukuhlukana kobuchopho). Lokhu kuqinisekisa ukutholakala, kodwa kungase kubangele ukulahleka kwedatha.
  • Khubaza ukuhlukaniswa okunengqondo. Kungase kubangele ukulahlekelwa ukutholakala kwesikhathi esifushane kuye ngokuthi amaklayenti axhuma kanjani kuqoqo. Kungase futhi kuholele ekungatholakalini okuphelele kweqoqo elinamanodi amabili.

Kodwa kuyini ukuhlukana okunengqondo? Kulapho iqoqo lihlukana khona kabili ngenxa yokulahlekelwa ukuxhumana kwenethiwekhi. Ehlangothini ngalunye, izibuko zikhuthazwa ukuba zibe yinkosi, ukuze ekugcineni kube namakhosi amaningana ngokujika ngakunye.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 17. Ulayini omkhulu nezibuko ezimbili, ngasinye sisendaweni ehlukile. Bese kuba nokwehluleka kwenethiwekhi futhi isibuko esisodwa siyahlukaniswa. I-node ehlukanisiwe ibona ukuthi ezinye ezimbili ziwile futhi zikhuthaza izibuko zayo ku-master. Manje sesinemigqa emibili emikhulu, ebhalekayo nefundekayo.

Uma abashicileli bethumela idatha kubo bobabili ochwepheshe, sigcina sesinamakhophi amabili ahlukene olayini.

Izinhlobo ezahlukene ze-RabbitMQ zinikeza ukutholakala noma ukungaguquguquki.

Imodi yokuziba (okuzenzakalelayo)

Le modi iqinisekisa ukufinyeleleka. Ngemva kokulahlekelwa uxhumano, ukuhlukana okunengqondo kwenzeka. Ngemva kokubuyiselwa kokuxhumana, umlawuli kufanele anqume ukuthi iyiphi ukwahlukanisa okufanele abeke kuqala kukho. Uhlangothi olulahlekile luzoqalwa kabusha futhi yonke idatha eqoqwe kulolo hlangothi izolahleka.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 18. Abamemezeli abathathu bahlanganiswe nabathengi abathathu. Ngaphakathi, i-cluster ihambisa zonke izicelo kumugqa omkhulu ku-Broker 2.

Manje silahlekelwa u-Broker 3. Ubona ukuthi abanye abadayisi bawile futhi baphakamisa isibuko sakhe ku-master. Yile ndlela ukuhlukana okunengqondo okwenzeka ngayo.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 19. Ukuhlukaniswa okunengqondo (ukuhlukana-ubuchopho). Amarekhodi angena kolayini ababili abakhulu, futhi amakhophi amabili ayahlukana.

Ukuxhumana kubuyiselwe, kodwa ukuhlukana okunengqondo kusele. Umlawuli kufanele akhethe mathupha uhlangothi olulahlekile. Esimeni esingezansi, umlawuli uqalisa kabusha i-Broker 3. Yonke imilayezo angazange akwazi ukuyidlulisela ilahlekile.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 20. Umlawuli ukhubaza i-Broker 3.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 21. Umlawuli uqala i-Broker 3 futhi ijoyina iqoqo, ilahlekelwa yiyo yonke imilayezo eshiywe lapho.

Ngesikhathi sokulahlekelwa ukuxhuma nangemva kokubuyiselwa kwayo, iqoqo kanye nalo mugqa bekutholakala ukuze kufundwe nokubhala.

Imodi yokuzilungisa

Isebenza ngendlela efanayo nemodi yokuthi Ziba, ngaphandle kokuthi iqoqo ngokwalo likhetha ngokuzenzakalelayo uhlangothi olulahlekile ngemva kokuhlukanisa nokubuyisela ukuxhumana. Uhlangothi olulahlekile lubuyela kuqoqo lungenalutho, futhi umugqa ulahlekelwa yiyo yonke imilayezo ethunyelwe kulolo hlangothi kuphela.

Misa Imodi Yabancane

Uma singafuni ukuvumela ukwahlukanisa okunengqondo, inketho yethu kuphela ukulahla okufundiwe nokubhala ohlangothini oluncane ngemva kokuhlukaniswa kweqoqo. Lapho umthengisi ebona ukuthi ohlangothini oluncane, umisa umsebenzi, okungukuthi, uvala konke ukuxhumana okukhona futhi wenqaba noma yikuphi okusha. Kanye ngomzuzwana ihlola ukubuyiselwa kokuxhumana. Uma uxhumano selubuyiselwe, luqalisa kabusha ukusebenza futhi lujoyine iqoqo.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 22. Abamemezeli abathathu bahlanganiswe nabathengi abathathu. Ngaphakathi, i-cluster ihambisa zonke izicelo kumugqa omkhulu ku-Broker 2.

Abadayisi 1 no-2 babe sebehlukana no-Broker 3. Esikhundleni sokuphromotha isibuko sabo ukuze sibe umpetha, u-Broker 3 uyamisa okwesikhashana futhi angatholakali.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 23. I-Broker 3 iyama, inqamula wonke amaklayenti, futhi yenqaba izicelo zokuxhuma.

Uma uxhumano selubuyiselwe, lubuyela kuqoqo.

Ake sibheke esinye isibonelo lapho ulayini omkhulu uku-Broker 3.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 24. Ulayini oyinhloko ku-Broker 3.

Khona-ke ukulahlekelwa okufanayo kokuxhumana kwenzeka. U-Broker 3 uyama kancane ngoba usohlangothini oluncane. Ngakolunye uhlangothi, ama-node abona ukuthi i-Broker 3 iwile, ngakho-ke isibuko esidala esivela ku-Brokers 1 no-2 siyakhuthazwa ukuba sibe yinkosi.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 25. Ukushintshela ku-Broker 2 uma i-Broker 3 ingatholakali.

Uma uxhumano lubuyiselwa, i-Broker 3 izojoyina iqoqo.

I-RabbitMQ vs Kafka: Ukubekezelela Amaphutha kanye Nokutholakala Okuphezulu Kumaqoqo
Ilayisi. 26. Iqoqo selibuyele ekusebenzeni okujwayelekile.

Into ebalulekile okufanele siyiqonde lapha ukuthi sithola ukuvumelana, kodwa futhi singathola ukutholakala, uma Sizodlulisela ngempumelelo amaklayenti engxenyeni enkulu. Ezimweni eziningi, mina ngokwami ​​ngingakhetha imodi ethi Misa Isikhashana esincane, kodwa kuncike esimweni ngasinye.

Ukuze uqinisekise ukutholakala, kubalulekile ukuqinisekisa ukuthi amaklayenti axhuma ngempumelelo kumsingathi. Ake sibheke izinketho zethu.

Ukuqinisekisa Ukuxhumana Kwekhasimende

Sinezinketho ezimbalwa zokuqondisa amaklayenti engxenyeni eyinhloko yeqoqo noma kuma-node asebenzayo (ngemuva kokuthi i-node eyodwa ihluleka) ngemva kokulahlekelwa uxhumano. Okokuqala, masikhumbule ukuthi ulayini othile usingathwa endaweni ethile, kodwa umzila nezinqubomgomo ziphindaphindwa kuwo wonke ama-node. Amaklayenti angaxhuma kunoma iyiphi indawo, futhi umzila wangaphakathi uzowaqondisa lapho adinga ukuya khona. Kodwa uma i-node imisiwe, inqaba ukuxhumana, ngakho amaklayenti kufanele axhume kwenye i-node. Uma i-node iwa, kuncane angakwenza nhlobo.

Izinketho zethu:

  • Iqoqo lifinyelelwa kusetshenziswa isilinganisi somthwalo esivele sijikeleze kumanodi futhi amaklayenti aphinde azame ukuxhuma aze aphumelele. Uma i-node iphansi noma imisiwe, imizamo yokuxhuma kuleyo nodi izohluleka, kodwa imizamo elandelayo izoya kwamanye amaseva (ngemfashini ye-round-robin). Lokhu kulungele ukulahleka kokuxhumeka kwesikhashana noma iseva eyehlisiwe ezobuyiselwa ngokushesha.
  • Finyelela iqoqo ngokusebenzisa isilinganisi somthwalo bese ususa amanodi amisiwe/ahlulekile ohlwini ngokushesha nje lapho etholwa. Uma senza lokhu ngokushesha, futhi uma amaklayenti ekwazi ukuphinda azame ukuxhumana, sizobe sesithola ukutholakala njalo.
  • Nikeza iklayenti ngalinye uhlu lwawo wonke ama-node, futhi iklayenti likhetha ngokungahleliwe elilodwa lawo lapho lixhuma. Uma ithola iphutha lapho izama ukuxhuma, iya endaweni elandelayo ohlwini ize ixhumeke.
  • Susa ithrafikhi endaweni ehlulekile/emisiwe usebenzisa i-DNS. Lokhu kwenziwa kusetshenziswa i-TTL encane.

okutholakele

Ukuhlanganisa i-RabbitMQ kunezinzuzo kanye nokubi. Okubi kakhulu ukuthi:

  • lapho ujoyina iqoqo, ama-node alahla idatha yawo;
  • ukuvimbela ukuvumelanisa kubangela ukuthi ulayini ungatholakali.

Zonke izinqumo ezinzima zisuka kulezi zici ezimbili zezakhiwo. Uma i-RabbitMQ ibingagcina idatha lapho iqoqo lihlanganiswa kabusha, ukuvumelanisa bekuzoshesha. Uma ibikwazi ukuvumelanisa okungavimbeli, bekuzosekela kangcono olayini abakhulu. Ukulungisa lezi zinkinga ezimbili kuzothuthukisa kakhulu ukusebenza kwe-RabbitMQ njengobuchwepheshe bokubekezelela amaphutha nobutholakala kakhulu bemiyalezo. Ngingabaza ukuncoma i-RabbitMQ ngokuhlanganisa kulezi zimo ezilandelayo:

  • Inethiwekhi engathembekile.
  • Isitoreji esingathembekile.
  • Olayini abade kakhulu.

Uma kuziwa kuzilungiselelo zokutholakala okuphezulu, cabanga okulandelayo:

  • ha-promote-on-failure=always
  • ha-sync-mode=manual
  • cluster_partition_handling=ignore (noma autoheal)
  • imilayezo ephikelelayo
  • qinisekisa ukuthi amaklayenti axhumeka ku-node esebenzayo lapho enye i-node ihluleka

Ukuze uthole ukuvumelana (ukuphepha kwedatha), cabangela izilungiselelo ezilandelayo:

  • Umshicileli Uqinisekisa kanye Nokubonga Ngesandla ngasohlangothini lwabathengi
  • ha-promote-on-failure=when-synced, uma abashicileli bengazama futhi kamuva futhi uma unesitoreji esithembeke kakhulu! Kungenjalo beka =always.
  • ha-sync-mode=automatic (kodwa kolayini abakhulu abangasebenzi imodi yesandla ingase idingeke; cabanga futhi ukuthi ukungatholakali kuzokwenza ukuthi imilayezo ilahleke)
  • Misa isikhashana imodi yabancane
  • imilayezo ephikelelayo

Asikahlanganisi zonke izindaba zokubekezelela amaphutha nokutholakala okuphezulu okwamanje; isibonelo, ukuthi uzenza kanjani ngokuphephile izinqubo zokuphatha (ezifana nokukhishwa kwezibuyekezo). Sidinga futhi ukukhuluma ngomfelandawonye kanye ne-plugin yeFosholo.

Uma kukhona okunye engikuphuthelwe, ngicela ungazise.

Bheka futhi wami okusheshayo, lapho ngenza khona umonakalo kuqoqo le-RabbitMQ ngisebenzisa i-Docker ne-Blockade ukuze ngihlole ezinye zezimo zokulahlekelwa kwemilayezo ezichazwe kulesi sihloko.

Izindatshana ezidlule ochungechungeni:
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

Source: www.habr.com

Engeza amazwana