RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht

В an t-alt deireanach d'fhéachamar ar bhraisliú RabbitMQ maidir le lamháltas lochtanna agus infhaighteacht ard. Anois déanaimis tochailt domhain isteach Apache Kafka.

Anseo is é aonad an mhacasamhlú an deighilt. Tá alt amháin nó níos mó ag gach topaic. Bíonn ceannaire ag gach rannóg le leantóirí nó nach bhfuil. Agus topaic á chruthú agat, sonraíonn tú líon na ndeighiltí agus an chomhéifeacht macasamhlaithe. Is é 3 an gnáthluach, rud a chiallaíonn trí mhacasamhail: ceannaire amháin agus dhá leantóir.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 1. Déantar ceithre chuid a dháileadh i measc trí bróicéir

Téann gach iarratas léite agus scríofa chuig an gceannaire. Seolann leantóirí iarratais chuig an gceannaire go tréimhsiúil chun na teachtaireachtaí is déanaí a fháil. Ní iompaíonn tomhaltóirí ar a lucht leanta go deo; níl an dara ceann ann ach le haghaidh iomarcaíochta agus lamháltais lochtanna.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht

Teip deighilte

Nuair a theipeann ar bhróicéir, is minic a theipeann ar cheannairí roinnt rannóg. I ngach ceann acu, déantar leantóir ó nód eile chun bheith ina cheannaire. Go deimhin, ní hé seo an cás i gcónaí, ós rud é go mbíonn tionchar ag an bhfachtóir sioncrónaithe freisin: an bhfuil leanúna sioncronaithe ann, agus mura bhfuil, ansin cibé an gceadaítear aistriú chuig macasamhail neamhshioncrónaithe. Ach ná déanaimis rudaí casta faoi láthair.

Fágann Bróicéir 3 an líonra, agus toghtar ceannaire nua le haghaidh alt 2 ag bróicéir 2.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 2. Faigheann bróicéir 3 bás agus toghtar a leantóir ar bhróicéir 2 mar cheannaire nua dheighilt 2

Ansin fágann bróicéir 1 agus cailleann alt 1 a cheannaire freisin, a théann a ról chuig bróicéir 2.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 3. Tá bróicéir amháin fágtha. Tá gach ceannaire ar bhróicéir amháin gan aon iomarcaíocht ar bith

Nuair a thagann bróicéir 1 ar ais ar líne, cuireann sé ceithre leantóir leis, ag soláthar roinnt iomarcaíochta do gach críochdheighilt. Ach d'fhan na ceannairí go léir fós ar bhróicéir 2.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 4. Fanann ceannairí ar bhróicéir 2

Nuair a thagann bróicéir 3 suas, táimid ar ais go dtí trí mhacasamhail in aghaidh na críochdheighilte. Ach tá na ceannairí go léir fós ar bhróicéir 2.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 5. Socrúchán neamhchothrom na gceannairí tar éis bróicéirí 1 agus 3 a athchóiriú

Tá uirlis ag Kafka chun ceannaire a athchothromú níos fearr ná RabbitMQ. Ansin, bhí ort breiseán nó script tríú páirtí a úsáid a d'athraigh na beartais chun an máistir nód a aistriú trí iomarcaíocht a laghdú le linn imirce. Ina theannta sin, le haghaidh scuainí móra bhí orainn glacadh le neamh-infhaighteacht le linn sioncrónaithe.

Tá coincheap na “macasamhla is fearr” ag Kafka don ról ceannaire. Nuair a chruthaítear deighiltí topaicí, déanann Kafka iarracht ceannairí a dháileadh go cothrom thar nóid agus marcálann sé na chéad cheannairí sin mar is fearr leo. Le himeacht ama, mar gheall ar reboots freastalaí, teipeanna, agus miondealuithe nascachta, féadfaidh ceannairí deireadh suas ar nóid eile, mar atá sa chás mhór cur síos orthu thuas.

Chun é seo a shocrú, cuireann Kafka dhá rogha ar fáil:

  • Rogha auto.leader.rebalance.enable=fíor ligeann sé don nód rialaitheora ceannairí a athshannadh go huathoibríoch ar ais go dtí na macasamhla is fearr agus ar an gcaoi sin dáileadh aonfhoirmeach a athbhunú.
  • Is féidir leis an riarthóir an script a rith kafka-preferred-macasamhail-election.sh le haghaidh athshannadh láimhe.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 6. Macasamhla tar éis athchothromú

Ba leagan simplithe den teip é seo, ach tá an réaltacht níos casta, cé nach bhfuil aon rud ró-chasta anseo. Tagann sé go léir síos go macasamhla sioncronaithe (In-Sync Replicas, ISR).

Macasamhlaithe Sioncrónaithe (ISR)

Is éard atá i ISR ​​ná sraith macasamhla de dheighilt a mheastar a bheith “sioncrónaithe” (i gcomhshioncronú). Tá ceannaire ann, ach b'fhéidir nach bhfuil leanúna ann. Meastar leantóir a bheith sioncronaithe má rinne sé cóipeanna cruinne de theachtaireachtaí uile an cheannaire sula dtéann an t-eatramh in éag macasamhail.lag.ama.uas.ms.

Baintear leantóir den tacar ISR má tá:

  • ní dhearna sé iarratas ar roghnú don eatramh macasamhail.lag.ama.uas.ms (toimhdeofar marbh)
  • níor éirigh leis an nuashonrú le linn an eatraimh macasamhail.lag.ama.uas.ms (a mheas go mall)

Déanann leantóirí iarratais samplála san eatramh macasamhail.fetch.wait.max.ms, a mhainníonn go 500ms.

Chun cuspóir an ISR a mhíniú go soiléir, ní mór dúinn breathnú ar dheimhnithe ón táirgeoir agus roinnt cásanna teipe. Is féidir le táirgeoirí a roghnú nuair a sheolann an bróicéir deimhniú:

  • acks=0, ní sheoltar deimhniú
  • acks=1, seoltar deimhniú tar éis don cheannaire teachtaireacht a scríobh chuig a loga áitiúil
  • acks=all, seoltar deimhniú tar éis do gach macasamhail san ISR an teachtaireacht a scríobh chuig na logaí áitiúla

I dtéarmaí Kafka, má tá teachtaireacht shábháilte ag an ISR, tá sé “tiomanta”. Is é Acks=all an rogha is sábháilte, ach cuireann sé moill bhreise leis freisin. Breathnaímid ar dhá shampla de theip agus ar an gcaoi a n-idirghníomhaíonn na roghanna éagsúla le coincheap an ISR.

Acks=1 agus ISR

Sa sampla seo, feicfimid mura bhfanann an ceannaire ar gach teachtaireacht ó gach leantóir a shábháil, ansin is féidir sonraí a chailliúint má theipeann ar an gceannaire. Is féidir nascleanúint chuig leantóir neamhshioncronaithe a chumasú nó a dhíchumasú trí shocrú neamhghlan.cheannaire.toghchán.

Sa sampla seo, tá an luach acks=1 ag an monaróir. Tá an rannóg scaipthe ar fud na dtrí bróicéir. Tá bróicéir 3 taobh thiar de, rinne sé sioncronú leis an gceannaire ocht soicind ó shin agus tá sé anois 7456 teachtaireacht taobh thiar de. Ní raibh bróicéir 1 ach soicind amháin taobh thiar de. Seolann ár léiritheoir teachtaireacht agus faigheann sé ar ais go tapa, gan an forchostais de leanúna mall nó marbh nach bhfuil an ceannaire ag fanacht.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 7. ISR le trí mhacasamhail

Teipeann ar bhróicéir 2 agus faigheann an táirgeoir earráid cheangail. Tar éis don cheannaireacht dul go dtí bróicéir 1, caillimid 123 teachtaireacht. Bhí an leantóir ar bhróicéir 1 mar chuid den ISR, ach ní raibh sé sioncrónaithe go hiomlán leis an gceannaire nuair a thit sé.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 8. Cailltear teachtaireachtaí nuair a thuairteanna sé

I gcumraíocht bootstrap.freastalaithe Tá roinnt bróicéirí liostaithe ag an monaróir agus féadann sé iarraidh ar bhróicéir eile cé hé an ceannaire rannóg nua. Bunaíonn sé nasc ansin le bróicéir 1 agus leanann sé ag seoladh teachtaireachtaí.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 9. teachtaireachtaí a sheoladh arís tar éis sos gairid

Tá bróicéir 3 níos faide siar. Déanann sé iarratais bealaigh ach ní féidir sioncronú a dhéanamh. D'fhéadfadh sé seo a bheith mar gheall ar nasc líonra mall idir bróicéirí, saincheist stórála, etc. Baintear as an ISR é. Anois tá an ISR comhdhéanta de mhacasamhail amháin - an ceannaire! Leanann an monaróir ag seoladh teachtaireachtaí agus ag fáil deimhnithe.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 10. Baintear leantóir ar bhróicéir 3 den ISR

Téann bróicéir 1 síos agus téann an ról ceannaireachta chuig bróicéir 3 le caillteanas teachtaireachtaí 15286! Faigheann an monaróir teachtaireacht earráide ceangail. Níorbh fhéidir an t-aistriú chuig ceannaire lasmuigh den ISR ach amháin mar gheall ar an suíomh unclean.leader.election.enable=fíor. Má tá sé suiteáilte i bréagach, ní tharlódh an t-aistriú ansin agus diúltófaí do gach iarratas léite agus scríofa. Sa chás seo, fanaimid go dtiocfaidh bróicéir 1 ar ais lena shonraí slána sa mhacasamhail, rud a ghlacfaidh an cheannaireacht arís.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 11. Titeann bróicéir 1. Nuair a tharlaíonn teip, cailltear líon mór teachtaireachtaí

Bunaíonn an táirgeoir nasc leis an mbróicéir deireanach agus feiceann sé go bhfuil sé ina cheannaire ar an rannóg anois. Tosaíonn sé teachtaireachtaí a sheoladh chuig bróicéir 3.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 12. Tar éis sos gairid, seoltar teachtaireachtaí arís chuig alt 0

Chonaic muid, seachas cur isteach gearr chun naisc nua a bhunú agus cuardach a dhéanamh ar cheannaire nua, go raibh an monaróir i gcónaí ag seoladh teachtaireachtaí. Cinntíonn an chumraíocht seo infhaighteacht ar chostas comhsheasmhachta (slándáil sonraí). Chaill Kafka na mílte teachtaireachtaí ach lean sé ag glacadh le scríbhinní nua.

Acks=all agus ISR

Déanaimis an cás seo arís, ach le acks=gach. Tá meán-latency de cheithre soicind ag bróicéir 3. Seolann an monaróir teachtaireacht le acks=gach, agus ní fhaigheann sé freagra tapa anois. Fanann an ceannaire leis an teachtaireacht a shábháil ag gach macasamhail san ISR.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 13. ISR le trí mhacasamhail. Tá ceann amháin mall, rud a fhágann go mbíonn moilleanna taifeadta

Tar éis ceithre soicind de mhoill bhreise, cuireann bróicéir 2 ack. Tá gach macasamhail nuashonraithe go hiomlán anois.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 14. Gach macasamhail teachtaireachtaí a shábháil agus a sheoladh arck

Titeann bróicéir 3 níos faide siar anois agus baintear é den ISR. Laghdaítear an fhoighne go suntasach toisc nach bhfuil aon macasamhla mall fágtha san ISR. Ní fhanann bróicéir 2 ach le bróicéir 1 anois, agus tá aga moille de 500 ms ar an meán aige.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 15. Baintear an macasamhail ar bhróicéir 3 den ISR

Ansin titeann bróicéir 2 agus téann an cheannaireacht chuig bróicéir 1 gan teachtaireachtaí a chailliúint.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 16. Titeann bróicéir 2

Aimsíonn an monaróir ceannaire nua agus tosaíonn sé ag seoladh teachtaireachtaí chuige. Laghdaítear an fhoighne tuilleadh toisc go bhfuil macasamhail amháin san ISR anois! Dá bhrí sin an rogha acks=gach ní chuireann iomarcaíocht.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 17. Bíonn macasamhail ar bhróicéir 1 chun tosaigh gan teachtaireachtaí a chailliúint

Ansin tuairteanna bróicéir 1 agus téann an luaidhe chuig bróicéir 3 le caillteanas teachtaireachtaí 14238!

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 18. Faigheann bróicéir 1 bás agus cailleadh sonraí go forleathan mar thoradh ar aistriú ceannaireachta agus suíomh neamhghlan

Níorbh fhéidir linn an rogha a shuiteáil neamhghlan.cheannaire.toghchán isteach sa chiall fíor. De réir réamhshocraithe tá sé comhionann bréagach. Socruithe acks=gach с unclean.leader.election.enable=fíor soláthraíonn sé inrochtaineacht le roinnt slándála sonraí breise. Ach mar a fheiceann tú, is féidir linn teachtaireachtaí a chailleadh fós.

Ach cad a tharlóidh má theastaíonn uainn slándáil sonraí a mhéadú? Is féidir leat a chur unclean.leader.election.enable = bréagach, ach ní gá go gcosnóidh sé seo sinn ó chaillteanas sonraí. Má thit an ceannaire go crua agus go dtógfadh sé na sonraí leis, cailltear teachtaireachtaí fós, agus cailltear infhaighteacht go dtí go ndéanfaidh an riarthóir an scéal a athchóiriú.

Is fearr a chinntiú go bhfuil gach teachtaireacht iomarcach, agus ar shlí eile caith an taifeadadh amach. Ansin, ar a laghad ó thaobh an bhróicéir de, ní féidir caillteanas sonraí ach amháin i gcás dhá theip nó níos mó ag an am céanna.

Acks=all, min.insync.replicas agus ISR

Le cumraíocht ábhar macasamhla.min.insync Táimid ag méadú leibhéal na slándála sonraí. A ligean ar dul tríd an chuid dheireanach den scéal roimhe seo arís, ach an uair seo le min.insync.replicas=2.

Mar sin tá macasamhail ceannaire ag bróicéir 2 agus baintear an leantóir ar bhróicéir 3 ón ISR.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 19. ISR as dhá mhacasamhail

Titeann bróicéir 2 agus téann an cheannaireacht chuig bróicéir 1 gan teachtaireachtaí a chailliúint. Ach anois níl san ISR ach macasamhail amháin. Ní shásaíonn sé seo an líon íosta chun taifid a fháil, agus dá bhrí sin freagraíonn an bróicéir an iarracht scríofa le hearráid NotEnoughReplicas.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 20. Tá líon na ISRanna ceann amháin níos ísle ná mar a shonraítear i min.insync.replicas

Sáraíonn an chumraíocht seo infhaighteacht ar mhaithe le comhsheasmhacht. Sula n-admhaítear teachtaireacht, déanaimid deimhin de go scríobhtar chuig dhá mhacasamhail ar a laghad í. Tugann sé seo i bhfad níos mó muiníne don mhonaróir. Anseo, ní féidir teachtaireacht a chailleadh ach amháin má theipeann ar dhá mhacasamhail ag an am céanna i gceann eatramh gearr go dtí go ndéanfar an teachtaireacht a mhacasamhlú chuig leantóir breise, rud nach dócha. Ach má tá tú thar a bheith paranoideach, is féidir leat an fachtóir macasamhlaithe a shocrú go 5, agus macasamhla.min.insync le 3. Anseo ní mór do thrí bróicéir titim ag an am céanna chun an taifead a chailleadh! Ar ndóigh, íocann tú as an iontaofacht seo i latency breise.

Nuair atá inrochtaineacht riachtanach do shlándáil sonraí

Mar atá i cás le RabbitMQ, uaireanta bíonn inrochtaineacht riachtanach le haghaidh slándála sonraí. Seo an méid a chaithfidh tú smaoineamh air:

  • An féidir leis an bhfoilsitheoir ach earráid a thabhairt ar ais agus an tseirbhís réamhtheachtacha nó an t-úsáideoir a thriail arís ar ball?
  • An féidir leis an bhfoilsitheoir an teachtaireacht a shábháil go háitiúil nó i mbunachar sonraí chun triail eile a bhaint as níos déanaí?

Mura bhfuil an freagra, feabhsaítear slándáil sonraí trí infhaighteacht a bharrfheabhsú. Caillfidh tú níos lú sonraí má roghnaíonn tú infhaighteacht seachas gan taifeadadh. Mar sin, baineann sé go léir le teacht ar chothromaíocht, agus braitheann an cinneadh ar an staid shonrach.

An bhrí atá le ISR

Ligeann sraith ISRanna duit an chothromaíocht is fearr a roghnú idir slándáil sonraí agus latency. Mar shampla, infhaighteacht a chinntiú i gcás teipe ar fhormhór na macasamhla, ag íoslaghdú tionchar macasamhla marbh nó mall ó thaobh foighne.

Roghnaímid an bhrí dúinn féin macasamhail.lag.ama.uas.ms de réir do riachtanas. Go bunúsach, ciallaíonn an paraiméadar seo cé mhéad moille a bhfuil muid sásta glacadh leis nuair a acks=gach. Is é an luach réamhshocraithe ná deich soicind. Má tá sé seo ró-fhada duit, is féidir leat é a laghdú. Ansin méadóidh minicíocht na n-athruithe ar an ISR, ós rud é go mbainfear leanúna agus cuirfear leo níos minice.

Níl i RabbitMQ ach sraith scátháin ar gá iad a mhacasamhlú. Tugann scátháin mall latency breise, agus is féidir le scátháin marbh fanacht go dtí na paicéid a sheiceáil infhaighteacht gach nód (tic glan) chun freagairt. Is bealach suimiúil é ISR chun na saincheisteanna folaigh seo a sheachaint. Ach tá an baol ann go gcaillfimid iomarcaíocht mar ní féidir leis an ISR ach an ceannaire a laghdú. Chun an riosca seo a sheachaint, bain úsáid as an socrú macasamhla.min.insync.

Ráthaíocht nasc cliant

I suíomhanna bootstrap.freastalaithe is féidir leis an táirgeoir agus leis an tomhaltóir bróicéirí iolracha a shonrú chun cliaint a nascadh. Is é an smaoineamh, nuair a théann nód amháin síos, go bhfuil roinnt cinn breise fágtha ar féidir leis an gcliant nasc a oscailt. Ní gá gur ceannairí rannóige iad seo, ach mar phreabchlár don luchtú tosaigh. Is féidir leis an gcliant fiafraí díobh cé acu nód atá ina óstach don cheannaire críochdheighilte léamh/scríobh.

In RabbitMQ, is féidir le cliaint nascadh le haon nód, agus cuireann ródú inmheánach an t-iarratas chuig an áit ar gá dó dul. Ciallaíonn sé seo gur féidir leat cothromóir ualaigh a shuiteáil os comhair RabbitMQ. Éilíonn Kafka go gceanglaíonn na cliaint ceangal leis an nód atá ina hóstach ar an gceannaire deighilte comhfhreagrach. I gcás den sórt sin, ní féidir leat cothromóir ualaigh a shuiteáil. Liosta bootstrap.freastalaithe Tá sé ríthábhachtach gur féidir le cliaint rochtain a fháil ar na nóid chearta agus iad a aimsiú tar éis teip.

Ailtireacht Comhdhearcadh Kafka

Go dtí seo, níor mheasamar conas a fhoghlaimíonn an bhraisle faoi thitim an bhróicéir agus conas a thoghtar ceannaire nua. Chun tuiscint a fháil ar an gcaoi a n-oibríonn Kafka le landairí líonra, ní mór duit an ailtireacht chomhdhearcadh a thuiscint ar dtús.

Imscartar gach braisle Kafka mar aon le braisle Zookeeper, ar seirbhís chomhthoil dháilte é a ligeann don chóras teacht ar chomhdhearcadh ar staid áirithe, ag tabhairt tosaíochta do chomhsheasmhacht thar infhaighteacht. Teastaíonn toiliú thromlach na nóid Zú-choimeádaithe chun oibríochtaí léamh agus scríobh a cheadú.

Stórálann Zookeeper staid an bhraisle:

  • Liosta topaicí, rannóga, cumraíocht, macasamhla ceannaire reatha, macasamhla is fearr.
  • Baill bhraisle. Buaileann gach bróicéir an braisle Zookeeper. Mura bhfaigheann sé ping laistigh de thréimhse shonraithe ama, taifeadann Zookeeper nach bhfuil an bróicéir ar fáil.
  • Na príomhnóid agus na nóid spártha a roghnú don rialtóir.

Tá an nód rialaitheora ar cheann de na bróicéirí Kafka atá freagrach as ceannairí macasamhail a thoghadh. Seolann Zookeeper fógraí chuig an rialaitheoir faoi bhallraíocht braisle agus athruithe topaicí, agus ní mór don rialaitheoir gníomhú ar na hathruithe seo.

Mar shampla, déanaimis ábhar nua a ghlacadh le deich ndeighiltí agus fachtóir macasamhlú 3. Ní mór don rialtóir ceannaire a thoghadh do gach críochdheighilt, ag iarraidh ceannairí a dháileadh go barrmhaith i measc na bróicéirí.

I gcás gach rialtóir rannóige:

  • nuashonruithe faisnéise i Zookeeper faoi ISR ​​agus ceannaire;
  • Seol LeaderAndISRCommand chuig gach bróicéir a dhéanann óstáil ar mhacasamhail den deighilt seo, ag cur na bróicéirí ar an eolas faoin ISR agus an ceannaire.

Nuair a thiteann bróicéir le ceannaire, seolann Zookeeper fógra chuig an rialtóir, agus toghann sé ceannaire nua. Arís, déanann an rialtóir Zookeeper a nuashonrú ar dtús agus ansin cuireann sé ordú chuig gach bróicéir á chur in iúl dóibh faoin athrú ceannaireachta.

Tá gach ceannaire freagrach as ISRanna a earcú. Socruithe macasamhail.lag.ama.uas.ms cinneann cé a rachaidh isteach ann. Nuair a athraíonn an ISR, tarchuireann an ceannaire faisnéis nua chuig Zookeeper.

Cuirtear Zookeeper ar an eolas i gcónaí faoi aon athruithe ionas go n-aistríonn an bhainistíocht go ceannaire nua go réidh i gcás teipe.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 21. Comhdhearcadh Kafka

Prótacal macasamhlaithe

Cuidíonn sonraí an mhacasamhlú leat tuiscint níos fearr a fháil ar chásanna caillteanas sonraí a d’fhéadfadh a bheith ann.

Ceisteanna samplála, Fritháireamh Deireadh Loga (LEO) agus Marc Arduisce (HW)

Mheasamar go seolfadh leantóirí iarratais ar ais chuig an gceannaire go tréimhsiúil. Is é 500ms an t-eatramh réamhshocraithe. Ní hionann é seo agus RabbitMQ sa mhéid is nach ag scáthán na scuaine a thionscnaíonn macasamhlú RabbitMQ ach ag an máistir. Brúnn an máistir athruithe ar na scátháin.

Sábhálann an ceannaire agus na leantóirí go léir an Lipéad Deireadh Fritháireamh (LEO) agus an lipéad Highwater (HW). Stórálann an marc LEO fritháireamh na teachtaireachta deiridh sa macasamhail áitiúil, agus coimeádann an HW fritháireamh an ghealltanais dheireanaigh. Cuimhnigh go gcaithfidh an teachtaireacht a bheith fós i ngach macasamhail ISR le haghaidh stádas gealltanais. Ciallaíonn sé seo go bhfuil LEO beagán chun tosaigh ar HW de ghnáth.

Nuair a fhaigheann an ceannaire teachtaireacht, déanann sé é a stóráil go háitiúil. Déanann an leantóir iarratas beir trína LEO a tharchur. Ansin cuireann an ceannaire baisc teachtaireachtaí ag tosú ón LEO seo agus tarchuireann sé an HW reatha freisin. Nuair a fhaigheann an ceannaire faisnéis go bhfuil an teachtaireacht stóráilte ag gach macasamhail ag an bhfritháireamh a tugadh, bogann sé an marc HW. Ní féidir ach leis an gceannaire an HW a bhogadh, agus mar sin beidh a fhios ag gach leantóir ar an luach reatha sna freagraí ar a n-iarratas. Ciallaíonn sé seo go bhféadfadh go mbeadh an lucht leanúna taobh thiar den cheannaire maidir le teachtaireacht agus eolas HW. Ní fhaigheann tomhaltóirí ach teachtaireachtaí suas go dtí an HW reatha.

Tabhair faoi deara go gciallaíonn "leanúint" scríofa chun cuimhne, ní chuig diosca. Le haghaidh feidhmíochta, sioncronaíonn Kafka go diosca ag eatramh ar leith. Tá eatramh den sórt sin ag RabbitMQ freisin, ach ní chuirfidh sé admháil chuig an bhfoilsitheoir ach amháin tar éis don mháistir agus do gach scáthán an teachtaireacht a scríobh chuig diosca. Chinn forbróirí Kafka, ar chúiseanna feidhmíochta, ack a sheoladh chomh luath agus a scríobhtar an teachtaireacht chun cuimhne. Geallann Kafka go seachnaíonn iomarcaíocht an baol a bhaineann le teachtaireachtaí admhaithe a stóráil go hachomair sa chuimhne amháin.

Teip ceannaire

Nuair a thiteann ceannaire, cuireann Zookeeper an rialtóir ar an eolas, agus roghnaíonn sé macasamhail ceannaire nua. Socraíonn an ceannaire nua marc HW nua de réir a LEO. Faigheann lucht leanúna faisnéis ansin faoin gceannaire nua. Ag brath ar an leagan de Kafka, roghnóidh an leantóir ceann amháin de dhá chás:

  1. Gearrfaidh sé an loga áitiúil go HW aitheanta agus seolfaidh sé iarratas chuig an gceannaire nua le haghaidh teachtaireachtaí tar éis an marc seo.
  2. An mbeidh iarratas a sheoladh chuig an ceannaire chun a fháil amach an HW ag an am a toghadh é mar cheannaire, agus ansin teascadh an logáil chuig an fhritháireamh. Tosóidh sé ansin ag déanamh iarratais ghála tréimhsiúla ag tosú ag an bhfritháireamh seo.

D’fhéadfadh go mbeadh ar leantóir an loga a theorannú ar na cúiseanna seo a leanas:

  • Nuair a theipeann ar cheannaire, buaileann an chéad leantóir sa tsraith ISR atá cláraithe le Zookeeper an toghchán agus beidh sé ina cheannaire. B'fhéidir nach bhfuair gach leantóir ar ISR, cé go meastar go bhfuil sé "i gcomhshioncronú," cóipeanna de gach teachtaireacht ón iar-cheannaire. Is féidir go hiomlán nach bhfuil an chóip is nuashonraithe ag an leantóir faoi thrácht. Cinntíonn Kafka nach bhfuil aon éagsúlacht idir macasamhla. Mar sin, chun neamhréireachtaí a sheachaint, ní mór do gach leantóir a loga a theorannú go luach HW an cheannaire nua tráth a thofa. Is é seo an fáth eile a shocrú acks=gach chomh tábhachtach le haghaidh comhsheasmhachta.
  • Scríobhtar teachtaireachtaí chuig diosca go tréimhsiúil. Má theipeann ar gach nód braisle ag an am céanna, ansin déanfar macasamhla le fritháirimh éagsúla a stóráil ar na dioscaí. Is féidir nuair a thagann bróicéirí ar ais ar líne, go mbeidh an ceannaire nua a thoghfar taobh thiar dá lucht leanúna toisc gur shábháil sé ar diosca roimh na cinn eile.

Teacht le chéile leis an mbraisle

Agus iad ag filleadh ar an mbraisle, déanann na macasamhla an rud céanna nuair a theipeann ar cheannaire: seiceálann siad macasamhail an cheannaire agus gearrann siad a loga chuig a HW (tráth an toghcháin). I gcomparáid leis sin, déileálann RabbitMQ go cothrom le nóid athaontaithe mar nóid iomlána nua. Sa dá chás, caitheann an bróicéir aon stát atá ann cheana féin. Má úsáidtear sioncrónú uathoibríoch, ní mór don mháistir an t-ábhar reatha go léir a mhacasamhlú go dtí an scáthán nua ar mhodh “lig don domhan ar fad fanacht”. Ní ghlacann an máistir le haon oibríochtaí léite nó scríofa le linn na hoibríochta seo. Cruthaíonn an cur chuige seo fadhbanna i scuainí móra.

Is loga dáilte é Kafka agus go ginearálta stórálann sé níos mó teachtaireachtaí ná scuaine RabbitMQ, áit a mbaintear sonraí ón scuaine tar éis é a léamh. Ba cheart go bhfanfadh scuainí gníomhacha sách beag. Ach is logáil é Kafka lena bheartas coinneála féin, a fhéadfaidh tréimhse laethanta nó seachtainí a shocrú. Tá an cur chuige maidir le blocáil scuaine agus sioncrónaithe iomlán do-ghlactha i gcás loga dáilte. Ina áit sin, ní ghearrann lucht leanta Kafka ach a logáil isteach chuig HW an cheannaire (tráth a thofa) má tá a gcóip chun tosaigh ar an gceannaire. Sa chás is dóichí, nuair a bhíonn an leantóir taobh thiar, ní thosaíonn sé ach ag déanamh iarratais ag tosú leis an LEO reatha.

Tosaíonn lucht leanta nua nó lucht leanúna athaontaithe lasmuigh den ISR agus ní ghlacann siad páirt i ngealltanais. Go simplí oibríonn siad taobh leis an ngrúpa, ag fáil teachtaireachtaí chomh tapa agus is féidir leo go dtí go dtagann siad suas leis an gceannaire agus dul isteach sa ISR. Níl aon ghlasáil isteach agus ní gá do chuid sonraí go léir a chaitheamh amach.

Cailliúint nascachta

Tá níos mó comhpháirteanna ag Kafka ná RabbitMQ, agus mar sin tá sraith iompraíochta níos casta aige nuair a éiríonn an braisle dícheangailte. Ach dearadh Kafka do bhraislí ar dtús, agus mar sin déantar na réitigh a mheas go han-mhaith.

Seo thíos roinnt cásanna teip nascachta:

  • Cás 1: Ní fheiceann an leantóir an ceannaire, ach feiceann sé an Zú coimeádaí fós.
  • Cás 2: Ní fheiceann an ceannaire leantóir ar bith, ach feiceann sé Zookeeper fós.
  • Cás 3: Feiceann an leantóir an ceannaire, ach ní fheiceann sé an Zú.
  • Cás 4: Feiceann an ceannaire na leantóirí, ach ní fheiceann sé an Zú.
  • Cás 5: Tá an leantóir go hiomlán scartha ón dá nód Kafka eile agus ón Zookeeper.
  • Cás 6: Tá an ceannaire scartha go hiomlán ón dá nóid Kafka eile agus ón Zookeeper.
  • Cás 7: Ní féidir le nód rialaitheora Kafka nód Kafka eile a fheiceáil.
  • Cás 8: Ní fheiceann rialtóir Kafka Zookeeper.

Tá a iompar féin ag gach cás.

Cás 1: Ní fheiceann an leantóir an ceannaire, ach feiceann sé Zookeeper fós

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 22. Cás 1: ISR de thrí mhacasamhail

Scarann ​​an teip nascachta bróicéir 3 ó bhróicéirí 1 agus 2, ach ní ó Zookeeper. Ní féidir le bróicéir 3 iarratais ghála a sheoladh a thuilleadh. Tar éis am a rith macasamhail.lag.ama.uas.ms baintear den ISR é agus ní ghlacann sé páirt i ngealltanais teachtaireachta. Nuair a dhéantar an nascacht a athbhunú, athchromfaidh sé ar iarratais a fháil agus rachaidh sé isteach san ISR nuair a bheidh sé ag teacht suas leis an gceannaire. Leanfaidh Zookeeper ag fáil pings agus glacfaidh sé leis go bhfuil an bróicéir beo agus go maith.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 23. Cás 1: Baintear an bróicéir den ISR mura bhfaightear aon iarratas beirithe uaidh laistigh den eatramh replica.lag.time.max.ms

Níl aon fionraí scoilte-inchinn nó nód mar atá i RabbitMQ. Ina áit sin, laghdaítear an iomarcaíocht.

Cás 2: Ní fheiceann Leader aon leantóir, ach feiceann sé Zookeeper fós

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 24. Cás 2. Ceannaire agus beirt leantóir

Scarann ​​miondealú ar nascacht líonra an ceannaire ó na leanúna, ach is féidir leis an bróicéir Zookeeper a fheiceáil fós. Mar a tharla sa chéad chás, crapadh an ISR, ach an uair seo ach amháin chun an ceannaire mar gach leantóir stop a sheoladh iarratais beir. Arís, níl aon deighilt loighciúil ann. Ina áit sin, cailltear iomarcaíocht do theachtaireachtaí nua go dtí go ndéanfar an nascacht a athchóiriú. Leanann Zookeeper ag fáil pings agus creideann sé go bhfuil an bróicéir beo agus go maith.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 25. Cás 2. Tá an ISR tar éis dul i laghad chuig an gceannaire amháin

Cás 3. Feiceann an leantóir an ceannaire, ach ní fheiceann sé an Zookeeper

Tá an leantóir scartha ó Zookeeper, ach ní ón mbróicéir leis an gceannaire. Mar thoradh air sin, leanann an leantóir ag déanamh iarratais beir agus ina bhall den ISR. Ní fhaigheann Zookeeper pings a thuilleadh agus cláraíonn sé timpiste bróicéir, ach ós rud é nach bhfuil ann ach leantóir, níl aon iarmhairtí ann tar éis aisghabháil.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 26. Cás 3: Leanann an leantóir ag cur iarratais ar aghaidh chuig an gceannaire

Cás 4. Feiceann an Ceannaire a leanúna, ach ní fheiceann sé Zookeeper

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 27. Cás 4. Ceannaire agus beirt leantóir

Tá an ceannaire scartha ó Zookeeper, ach ní ó na bróicéirí le leanúna.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 28. Cás 4: Ceannaire scoite amach ón Zookeeper

Tar éis roinnt ama, cláróidh Zookeeper teip bróicéir agus cuirfidh sé an rialtóir ar an eolas faoi. Roghnóidh sé ceannaire nua i measc a lucht leanúna. Mar sin féin, leanfaidh an ceannaire bunaidh ag smaoineamh gurb é an ceannaire é agus leanfaidh sé ag glacadh le hiontrálacha ó aic=1. Níl an lucht leanúna ag seoladh iarratais chucu a thuilleadh, mar sin breithneoidh sé marbh iad agus déanfaidh sé iarracht an ISR a laghdú chuige féin. Ach ós rud é nach bhfuil baint aige le Zookeeper, ní bheidh sé in ann é seo a dhéanamh, agus ag an bpointe sin diúltóidh sé glacadh le haon iontrálacha breise.

Сообщения acks=gach ní bhfaighidh tú admháil mar go gcuireann an ISR gach macasamhail ar siúl ar dtús, agus ní shroicheann teachtaireachtaí iad. Nuair a dhéanann an ceannaire bunaidh iarracht iad a bhaint den ISR, ní bheidh sé in ann é sin a dhéanamh agus stopfaidh sé ag glacadh le haon teachtaireachtaí ar chor ar bith.

Tugann cliaint faoi deara go luath an t-athrú ceannaire agus tosaíonn siad ag seoladh taifid chuig an bhfreastalaí nua. Nuair a dhéantar an líonra a athchóiriú, feiceann an ceannaire bunaidh nach bhfuil sé ina cheannaire a thuilleadh agus gearrann sé a loga go dtí an luach HW a bhí ag an gceannaire nua tráth teipe chun éagsúlacht loga a sheachaint. Tosóidh sé ansin ag cur iarratais beir chuig an gceannaire nua. Cailltear gach taifead ón gceannaire bunaidh nach ndéantar a mhacasamhlú go dtí an ceannaire nua. Is é sin le rá, caillfear teachtaireachtaí nár admhaigh an ceannaire bunaidh sna cúpla soicind sin nuair a bhí beirt cheannairí ag obair.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 29. Cás 4. Éiríonn an ceannaire ar bhróicéir 1 ina leantóir tar éis an líonra a athchóiriú

Cás 5: Tá an leantóir go hiomlán scartha ón dá nód Kafka eile agus ón Zookeeper

Tá an leantóir scoite amach go hiomlán ón dá nóid Kafka eile agus ón Zookeeper. Ní dhéanann sé ach é féin a bhaint as an ISR go dtí go ndéantar an líonra a athchóiriú, agus ansin téann sé suas leis na cinn eile.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 30. Cás 5: Baintear leantóir scoite amach ón ISR

Cás 6: Tá an ceannaire scartha go hiomlán ón dá nóid Kafka eile agus ón Zookeeper

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 31. Cás 6. Ceannaire agus beirt leantóir

Tá an ceannaire scoite amach go hiomlán óna lucht leanúna, an rialtóir agus an Zookeeper. Ar feadh tréimhse ghearr leanfaidh sé ag glacadh le hiontrálacha ó aic=1.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 32. Cás 6: An ceannaire a leithlisiú ó nóid eile Kafka agus Zookeeper

Nach bhfuil iarratais faighte tar éis dul in éag macasamhail.lag.ama.uas.ms, déanfaidh sé iarracht an ISR a chrapadh leis féin, ach ní bheidh sé in ann é sin a dhéanamh toisc nach bhfuil aon chumarsáid ann le Zookeeper, stopfaidh sé ag glacadh le scríbhinní.

Idir an dá linn, marcálfaidh Zookeeper an bróicéir scoite marbh agus toghfaidh an rialtóir ceannaire nua.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 33. Cás 6. Beirt ceannairí

Féadfaidh an ceannaire bunaidh glacadh le hiontrálacha ar feadh cúpla soicind, ach ansin stopann sé ag glacadh le haon teachtaireachtaí. Nuashonraítear cliaint gach 60 soicind leis na meiteashonraí is déanaí. Cuirfear an t-athrú ceannaire in iúl dóibh agus tosóidh siad ag cur iontrálacha chuig an gceannaire nua.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 34. Cás 6: Aistríonn monaróirí go ceannaire nua

Caillfear gach iontráil dheimhnithe a rinne an ceannaire bunaidh ó cailleadh nascacht. Nuair a bheidh an líonra athchóirithe, gheobhaidh an ceannaire bunaidh amach trí Zookeeper nach é an ceannaire é a thuilleadh. Ansin gearrfaidh sé a loga chuig HW an cheannaire nua tráth an toghcháin agus tosóidh sé ag seoladh iarratais mar leantóir.

RabbitMQ vs Kafka: Caoinfhulaingt Lochtanna agus Ard-Infhaighteacht
Rís. 35. Cás 6: Éiríonn an ceannaire bunaidh ina leantóir tar éis nascacht líonra a athchóiriú

Sa chás seo, d'fhéadfadh scaradh loighciúil tarlú ar feadh tréimhse ghearr, ach amháin más rud é aic=1 и macasamhla.min.insync freisin 1. Críochnaíonn scaradh loighciúil go huathoibríoch tar éis an líonra a athchóiriú, nuair a thuigeann an ceannaire bunaidh nach bhfuil sé ina cheannaire a thuilleadh, nó nuair a thuigeann gach cliant go bhfuil an ceannaire athraithe agus tosú ag scríobh chuig an gceannaire nua - cibé acu a tharlaíonn ar dtús. In aon chás, beidh roinnt teachtaireachtaí a bheith caillte, ach amháin le aic=1.

Tá leagan eile den chás seo inar thit an lucht leanúna taobh thiar de, díreach sular scoilt an líonra agus gur chomhbhrúigh an ceannaire an ISR go dtí é féin. Éiríonn sé scoite amach ansin mar gheall ar chailliúint nascachta. Toghtar ceannaire nua, ach leanann an ceannaire bunaidh ag glacadh le hiontrálacha, fiú acks=gach, toisc nach bhfuil aon duine eile san ISR ach é. Caillfear na taifid seo nuair a bheidh an líonra athchóirithe. Is é an t-aon bhealach chun an rogha seo a sheachaint min.insync.replicas = 2.

Cás 7: Nód Rialaitheoir Kafka Ní Féidir Nód Kafka Eile a fheiceáil

Go ginearálta, a luaithe a chailltear an nasc le nód Kafka, ní bheidh an rialaitheoir in ann aon fhaisnéis athraithe ceannaire a tharchur chuige. Sa chás is measa, beidh scaradh loighciúil gearrthéarmach mar thoradh air seo, mar atá i gcás 6. Níos minice ná a mhalairt, ní bheidh an bróicéir ina iarrthóir ar cheannaireacht má theipeann ar an bróicéir.

Cás 8: Ní fheiceann rialtóir Kafka Zookeeper

Ní bhfaighidh Zookeeper ping ón rialtóir tite agus roghnóidh sé nód Kafka nua mar an rialtóir. Is féidir leis an rialtóir bunaidh leanúint dá chur i láthair mar sin, ach ní fhaigheann sé fógraí ó Zookeeper, mar sin ní bheidh aon tascanna le déanamh aige. Nuair a bheidh an líonra athchóirithe, tuigfidh sé nach rialtóir é a thuilleadh, ach go bhfuil sé ina nód Kafka rialta.

Conclúidí ó na cásanna

Feicimid nach gcailltear teachtaireacht mar thoradh ar chailliúint nascachta leanúna, ach go laghdaítear an iomarcaíocht go sealadach go dtí go ndéanfar an líonra a athchóiriú. Is féidir go gcaillfí sonraí dá bharr seo, ar ndóigh, má chailltear nód amháin nó níos mó.

Má éiríonn an ceannaire scartha ó Zookeeper mar gheall ar chaillteanas nascachta, d’fhéadfadh go gcaillfí teachtaireachtaí uaidh aic=1. Easpa cumarsáide le Zookeeper is cúis le scoilt ghairid loighciúil leis an dá cheannaire. Réitíonn an paraiméadar an fhadhb seo acks=gach.

Paraiméadar macasamhla.min.insync tugann dhá mhacasamhail nó níos mó dearbhú breise nach gcaillfear teachtaireachtaí mar atá i gCás 6 de bharr cásanna gearrthéarmacha den sórt sin.

Achoimre ar Theachtaireachtaí Caillte

Déanaimis liosta de na bealaí ar féidir leat sonraí a chailleadh i Kafka:

  • Aon teip ceannaire má deimhníodh teachtaireachtaí á n-úsáid aic=1
  • Aon aistriú neamhghlan ceannaireachta, is é sin, chuig leantóir lasmuigh den ISR, fiú le acks=gach
  • An ceannaire a leithlisiú ó Zookeeper má deimhníodh teachtaireachtaí á n-úsáid aic=1
  • Leithlisiú iomlán an cheannaire a bhfuil an grúpa ISR ciorraithe aige féin cheana féin. Caillfear gach teachtaireacht, fiú acks=gach. Níl sé seo fíor ach amháin más rud é min.insync.replicas=1.
  • Teipeanna comhuaineacha de na nóid dheighilt go léir. Toisc go n-admhaítear teachtaireachtaí ón gcuimhne, seans nach mbeidh cuid acu scríofa ar diosca fós. Tar éis na freastalaithe a atosú, seans go mbeidh roinnt teachtaireachtaí in easnamh.

Is féidir aistrithe ceannaireachta neamhíonachta a sheachaint trí iad a thoirmeasc nó trí dhá iomarcaíocht ar a laghad a chinntiú. Is meascán é an chumraíocht is durable acks=gach и macasamhla.min.insync níos mó ná 1.

Comparáid dhíreach idir iontaofacht RabbitMQ agus Kafka

Chun iontaofacht agus infhaighteacht ard a chinntiú, cuireann an dá ardán córas macasamhlaithe príomhúil agus tánaisteach i bhfeidhm. Mar sin féin, tá sÚil Achilles ag RabbitMQ. Nuair a dhéantar athcheangal tar éis teip, caitheann nóid a gcuid sonraí agus cuirtear bac ar shioncrónú. Cuireann an t-uafás dúbailte seo amhras faoi fhad saoil na scuainí móra i RabbitMQ. Beidh ort glacadh le iomarcaíocht laghdaithe nó le hamanna fada blocála. Méadaítear an baol go gcaillfear sonraí ollmhóra trí iomarcaíocht a laghdú. Ach má tá na scuainí beag, ansin ar mhaithe le hiomarcaíocht, is féidir déileáil le tréimhsí gearra neamh-infhaighteachta (cúpla soicind) trí úsáid a bhaint as iarrachtaí ceangail arís agus arís eile.

Níl an fhadhb seo ag Kafka. Ní chaileann sé sonraí ach ón bpointe éagsúlachta idir an ceannaire agus an leantóir. Sábháiltear na sonraí comhroinnte go léir. Ina theannta sin, ní chuireann macasamhlú bac ar an gcóras. Leanann an ceannaire ar aghaidh ag glacadh le poist fad is a bhíonn an leantóir nua ag teacht suas, agus mar sin, le haghaidh devops, is tasc fánach é a bheith páirteach sa bhraisle nó ag athcheangal leis. Ar ndóigh, tá saincheisteanna fós ann mar bandaleithead líonra le linn macasamhlú. Má chuireann tú leantóirí iolracha leis ag an am céanna, seans go dtiocfaidh tú trasna ar theorainn bandaleithead.

Tá iontaofacht RabbitMQ níos fearr ná Kafka nuair a theipeann ar fhreastalaithe iolracha i mbraisle ag an am céanna. Mar atá ráite againn cheana féin, seolann RabbitMQ dearbhú chuig an bhfoilsitheoir ach amháin tar éis don mháistir agus na scátháin go léir an teachtaireacht a scríobh ar diosca. Ach cuireann sé seo latency breise ar dhá chúis:

  • fsync gach cúpla céad milleasoicind
  • Ní féidir teip an scátháin a thabhairt faoi deara ach amháin tar éis shaolré na bpacáistí a sheiceálann infhaighteacht gach nód (glan-tic) a bheith caite. Má mhoillíonn an scáthán nó má thiteann sé, cuireann sé seo moill leis.

Is é geall Kafka ná má stóráiltear teachtaireacht thar nóid iolracha, féadfaidh sé teachtaireachtaí a admháil chomh luath agus a bhuaileann siad cuimhne. Mar gheall air seo, tá an baol ann go gcaillfear teachtaireachtaí de chineál ar bith (fiú acks=gach, min.insync.replicas=2) i gcás mainneachtain comhuaineach.

Tríd is tríd, taispeánann Kafka feidhmíocht bogearraí níos fearr agus tá sé deartha ón talamh aníos le haghaidh cnuasaigh. Is féidir líon na leantóirí a mhéadú go 11 más gá ar mhaithe le hiontaofacht. Fachtóir macasamhla 5 agus íoslíon macasamhla sa sioncronú min.insync.replicas=3 is fíor-annamh a bheidh cailliúint teachtaireachta. Más féidir le do bhonneagar tacú leis an gcóimheas macasamhlaithe seo agus leis an leibhéal iomarcaíochta, is féidir leat an rogha seo a roghnú.

Tá cnuasú RabbitMQ go maith do scuainí beaga. Ach féadann scuainí beaga fás go tapa fiú nuair a bhíonn trácht trom ann. Nuair a éiríonn scuainí mór, beidh ort roghanna diana a dhéanamh idir infhaighteacht agus iontaofacht. Is fearr cnuasú RabbitMQ do chásanna neamhthipiciúla nuair is mó buntáistí solúbthachta RabbitMQ ná aon mhíbhuntáistí a bhaineann lena bhraisliú.

Antidote amháin a bhaineann le leochaileacht RabbitMQ do scuainí móra ná iad a bhriseadh suas i go leor scuainí níos lú. Mura dteastaíonn ordú iomlán an scuaine iomlán uait, ach na teachtaireachtaí ábhartha amháin (mar shampla, teachtaireachtaí ó chliant ar leith), nó mura n-ordaíonn tú rud ar bith, tá an rogha seo inghlactha: féach ar mo thionscadal Athchothromóir chun an scuaine a roinnt (tá an tionscadal fós ag céim luath).

Ar deireadh, ná déan dearmad faoi roinnt fabhtanna i meicníochtaí cnuasaithe agus macasamhlaithe RabbitMQ agus Kafka araon. Le himeacht ama, tá córais tar éis éirí níos aibí agus níos cobhsaí, ach ní bheidh aon teachtaireacht 100% sábháilte ó chaillteanas! Ina theannta sin, tarlaíonn timpistí ar scála mór in ionaid sonraí!

Má chaill mé rud éigin, má rinne mé botún, nó mura n-aontaíonn tú le haon cheann de na pointí, bíodh leisce ort tuairim a scríobh nó teagmháil a dhéanamh liom.

Is minic a chuirtear ceist orm: “Cad atá le roghnú, Kafka nó RabbitMQ?”, “Cén ardán is fearr?”. Is í an fhírinne go mbraitheann sé i ndáiríre ar do chás, taithí reatha, etc. Tá leisce orm mo thuairim a thabhairt mar go mbeadh sé i bhfad ró-shimpliú ardán amháin a mholadh do gach cás úsáide agus teorainneacha féideartha. Scríobh mé an tsraith alt seo ionas gur féidir leat do thuairim féin a dhéanamh.

Ba mhaith liom a rá go bhfuil an dá chóras ina gceannairí sa réimse seo. Seans go bhfuilim rud beag claonta mar gheall ar mo thaithí le tionscadail de ghnáth bíonn luach agam ar rudaí mar ordú ráthaithe teachtaireachta agus iontaofacht.

Feicim teicneolaíochtaí eile nach bhfuil an iontaofacht agus an t-ordú ráthaithe seo in easnamh orthu, ansin breathnaím ar RabbitMQ agus Kafka agus tuigim luach dochreidte an dá chóras seo.

Foinse: will.com

Add a comment