![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Ku aka sisiteme yo tshembheka, leyi kumekaka swinene, leyi hangalasiweke leyi nga ringanisiwaka swi lava ku namarhela tithekiniki to karhi, misinya ya milawu na swivumbeko. Ku endliwa ka maendlelo yo tano ku katsa ku lulamisa swiphiqo swo tala. Exikarhi ka timhaka leti hangalakeke swinene na ta masungulo i xiphiqo xa ku tsala kambirhi .
“Xiphiqo xa ku tsala kambirhi” i ntlhontlho lowu humelelaka eka tisisiteme leti hangalasiweke, ngopfungopfu loko ku tirhana na swihlovo swo tala swa datha kumbe tidathabeyisi leti lavaka ku hlayisiwa hi ku fambisana. Swi kombetela eka ku tika ka ku tiyisisa leswaku ku cinca ka datha ku tsariwa hi ku landzelelana eka switolo swo hambana swa datha, ku fana na tidathabeyisi kumbe tikhexe, handle ko nghenisa timhaka to fana na ku nga fambisani ka datha, ku kanetana, kumbe swiphiqo swa matirhelo.
Xivumbeko xa microservices na database ya xivumbeko hi vukorhokeri swi ku tisela mimbuyelo yo tala, ku fana na ku tirhisiwa loku tiyimeleke na ku ringanisa, ku tsandzeka loku nga yoxe, na ku tlakuka loku nga vaka kona ka rivilo ra nhluvukiso. Hambiswiritano, matirhelo ya lava ku cinca exikarhi ka ti microservices to tala, leswi ku sindzisaka ku ehleketa hi ntlhantlho lowu tshembekaka ku langutana na xiphiqo lexi.
A hi languteni xiyimo lexi eka xona domain ya hina yi katsaka ku amukela swikombelo swa xikweleti, ku swi kambela, ivi hi rhumela switsundzuxo swa xitiviso eka vaxavi.
Hi moya wa nsinya wa nawu wa vutihlamuleri byin’we, nawu wa Conway, na endlelo ra dizayini leri fambiwaka hi domain, endzhaku ka swiyenge swo hlayanyana swa event-storming, domain hinkwayo yi avanyisiwile hi tidomain tinharhu leti nga na swiyimo leswi hlamuseriweke leswi nga na swipimelo leswi nga na mindzilakano leyi nga erivaleni, timodeli ta domain, na ririmi leri kumekaka hinkwako.
Xo sungula xi nyikiwile ntirho wo nghenisa na ku hlengeleta swikombelo leswintshwa swa xikweleti. Sisiteme ya vumbirhi yi kambela switirhisiwa leswi naswona yi teka swiboho hi ku ya hi datha leyi nyikiweke. Endlelo leri ra nkambisiso, ku katsa na KYC/KYB, ku lwisana na vuxisi, na ku kambela khombo ra swikweleti, swi nga teka nkarhi, leswi lavaka vuswikoti byo khoma magidi ya swikombelo hi nkarhi wun’we. Hikwalaho, ntirho lowu wu nyikiwile eka microservice leyi tinyiketeleke leyi nga na database ya yona, leswi pfumelelaka ku ringanisa loku tiyimeleke.
Ku ya emahlweni, tisisiteme letitsongo leti ti lawuriwa hi swipano swimbirhi swo hambana, xin’wana na xin’wana xi na swirhendzevutani swa xona swo humesa, mintwanano ya xiyimo xa vukorhokeri (SLA), na swilaveko swa ku ringaniseriwa.
Lastly , vukorhokeri byo hlawuleka byo tivisa byi le ku tirheni ku rhumela switsundzuxo eka vaxavi.
Hi leyi nhlamuselo leyi antswisiweke ya xiyimo xa matirhiselo yo sungula ya sisiteme:
I sisiteme yo olova swinene na ya khale hi ku yi languta ro sungula, kambe a hi ngheneni eka ndlela leyi vukorhokeri bya xikombelo xa Loan byi tirhisaka xileriso xo rhumela xikombelo xa xikweleti.
Hi nga languta maendlelo mambirhi ya vuhlanganisi bya vukorhokeri:
First-Local-Commit-Then-Publish: Eka endlelo leri, vukorhokeri byi pfuxeta database ya byona ya laha kaya (commits) ivi byi kandziyisa xiendlakalo kumbe rungula eka vukorhokeri byin’wana.
First-Publish-Then-Local-Commit: Hi ndlela yo hambana, ndlela leyi yi katsa ku kandziyisa xiendlakalo kumbe rungula u nga si tinyiketela ku cinca eka database ya laha kaya.
Maendlelo lawa hamambirhi ya na swiphiqo swa wona naswona ya hlayiseka hi xiphemu ntsena eka vuhlanganisi eka tisisiteme leti hangalasiweke.
Lexi i xifaniso xa ntlhandlamano wa ku tirhisa endlelo ro sungula.
Eka xiyimo lexi, Vukorhokeri bya Xikombelo xa Xikweleti byi tirhisa endlelo ra First-Local-Commit-Then-Publish , laha byi rhanga hi ku endla nxaviselano ivi byi ringeta ku rhumela xitiviso eka sisiteme yin’wana. Hambiswiritano, endlelo leri ri nga ha tsandzeka loko, xikombiso, ku ri na timhaka ta netiweke, Vukorhokeri bya Nkambelo byi nga kumeki, kumbe Vukorhokeri bya Xikombelo xa Xikweleti byi hlangana na xihoxo xa Out of Memory (OOM) ivi byi wa. Eka swiyimo swo tano, rungula a ri ta lahleka, ri siya Nkambisiso wu nga ri na xitiviso xa xikombelo lexintshwa xa xikweleti, handle ka loko ku tirhisiwile magoza yo engetela.
Naswona ya vumbirhi.
Eka xiyimo xa ku Kandziyisa-Ku Sungula-Kutani-Ku Tinyiketela ka Ndhawu , Vukorhokeri bya Swikombelo swa Swikweleti byi langutane na makhombo lamakulu swinene. Yi nga ha tivisa Vukorhokeri bya Nkambisiso hi xitirhisiwa lexintshwa kambe yi tsandzeka ku hlayisa mpfuxeto lowu laha tikweni hikwalaho ka swiphiqo swo fana na timhaka ta database, swihoxo swa memori, kumbe swihoxo swa khodi. Endlelo leri ri nga vanga ku nga fambisani lokukulu eka datha, leswi nga vangaka swiphiqo leswikulu, ku ya hi ndlela leyi Vukorhokeri bya Nkambisiso wa Swikweleti byi khomaka swikombelo leswi nghenaka ha yona.
Hikwalaho, hi fanele ku kuma xitshunxo lexi nyikaka endlelo ro tiya ro kandziyisa swiendlakalo eka vatirhisi va le handle. Kambe, hi nga si nghenelela eka swintshuxo leswi nga vaka kona, hi fanele ku rhanga hi hlamusela tinxaka ta switiyisekiso swa ku rhumeriwa ka marungula leswi fikelelekaka eka tisisiteme leti hangalasiweke.
Ku ni mixaka ya mune ya switiyisekiso leswi hi nga swi fikelelaka.
Ku hava switiyisekiso
A ku na xitiyisekiso xa leswaku rungula ri ta yisiwa laha ri yaka kona. Endlelo ra First-Local-Commit-Then-Publish ri vulavula hi leswi kahle-kahle. Vaxavi va nga ha kuma marungula kan’we, minkarhi yo tala kumbe va nga si tshama va kuma marungula nikatsongo.
Hi xitalo ku rhumeriwa kan’we
At most once delivery swi vula leswaku rungula ri ta yisiwa laha ri yaka kona at most 1 time. Endlelo ra First-Local-Commit-Then-Publish ri nga tirhisiwa hi ndlela leyi xikan’we na pholisi yo ringeta nakambe ya matshalatshala lama nga na nkoka wo sungula.
At least kan'we delivery\Vaxavi va ta amukela no tirhisa rungula rin'wana na rin'wana kambe va nga ha amukela rungula rin'we ku tlula kan'we.
Exactly once delivery\Exactly once delivery swi vula leswaku muxavi u ta amukela rungula hi ndlela leyinene kan’we.
Hi tlhelo ra xithekiniki, swa koteka ku fikelela hi mabindzu ya Kafka na ku tirhisiwa ko karhi ka idempotent ka muhumelerisi na muxavi.
Hi xitalo, switiyisekiso swa ku rhumeriwa ka ‘kan’we’ swi langutana na timhaka to tala hi ku tiyisisa leswaku marungula ya yisiwa kan’we ntsena, kambe vatirhisi va fanele ku va na idempotent. Hambiswiritano, hi ku nyikiwa ku tsandzeka ka netiweke loku nga papalatekiki, logic hinkwayo ya vatirhisi yi fanele ku va idempotent ku papalata ku tirhisa marungula lama phindhiweke, ku nga langutiwi switiyisekiso swa muhumelerisi. Hikwalaho, xilaveko lexi a hi xiphiqo ngopfu kambe xi kombisa ntiyiso.
Ku ni swintshuxo swo tala swa xiphiqo lexi, leswi nga ni swilo leswinene ni leswo biha swa swona.
Hi ku ya hi Wikipedia, Two-Phase Commit (2PC) i phurotokholo ya vuxavisi lebyi hangalasiweke leyi tirhisiwaka eka sayense ya tikhompyuta na tisisiteme ta vulawuri bya database ku tiyisisa ku ringanana na ku tshembheka ka vuxavisi lebyi hangalasiweke. Yi endleriwe swiyimo laha switirhisiwa swo tala (xikombiso, tidathabeyisi) swi lavaka ku nghenelela eka nxaviselano wun’we, naswona yi tiyisisa leswaku kumbe hinkwavo va tinyiketela nxaviselano kumbe hinkwavo va wu herisa, hi ndlela yoleyo va hlayisa ku ringanana ka datha. Swi twala kahle leswi hi swi lavaka, kambe Two-Phase Commit yi na swiphiqo swo hlayanyana:
Ntlhantlho lowu vonakaka swinene eka microservices architecture i ku tirhisa xivumbeko (kumbe hambi ku ri minkarhi yin’wana anti-pattern) — database leyi avelaniwa. Endlelo leri ri twisiseka swinene loko u lava ku ringanana ka ntirhisano eka matafula yo tala eka tidathabeyisi to hambana, tirhisa ntsena database yin’we leyi avelaniwa eka ti microservices leti.
Swiphiqo swa endlelo leri swi katsa ku nghenisa yinhla yin’we ya ku tsandzeka, ku sivela ku ringanisiwa ka dathabeyisi loku tiyimeleke, na ku ringanyeta vuswikoti byo tirhisa swintshuxo swo hambana swa dathabeyisi leswi faneleke swinene eka swilaveko swo karhi na swiyimo swa matirhiselo. Ku engetela kwalaho, ku cinca eka tikhodibezi ta ti-microservices swi ta laveka ku seketela xivumbeko xo tano xa ntirhisano lowu hangalasiweke.
' Bokisi ra le handle ra vuxavisi ' i xivumbeko xa dizayini lexi tirhisiwaka eka tisisiteme leti hangalasiweke ku tiyisisa ku hangalasiwa ka marungula loku tshembekaka, hambi ku ri emahlweni ka tisisiteme ta marungula leti nga tshembekiki. Swi katsa ku hlayisa swiendlakalo eka tafula leri hlawuriweke ra ‘OutboxEvents’ endzeni ka ntirhisano lowu fanaka na ntirho hi woxe. Endlelo leri ri fambisana kahle na swihlawulekisi swa ACID swa tidathabeyisi ta vuxaka. Kuhambana na sweswo, tidathabeyisi to tala ta No-SQL a ti seketeli hi ku hetiseka swihlawulekisi swa ACID, ti hlawula ematshan’wini ya sweswo eka misinya ya milawu ya thiyori ya CAP na filosofi ya BASE, leyi rhangisaka ku kumeka na ku hetelela ku ringanana ku tlula ku ringanana loku tiyeke.
Bokisi ra le handle ra ntirhisano ri nyika xitiyisekiso xa kan’we naswona ri nga tirhisiwa hi maendlelo yo hlayanyana:
Ku landzelerisa ka log ya ntirhisano
Mukandziyisi wa ku hlawula
Endlelo ra transaction log tailing ri vula ku tirhisa swintshuxo leswi kongomisiweke eka database ku fana na CDC (Change Data Capture). Swiphiqo leswikulu swa endlelo rero hi leswi:
Switshuxo swo karhi swa database
Ku engeteleka ka ku hlwela hikwalaho ka swihlawulekisi swa ku tirhisiwa ka CDC
Ndlela yin’wana i Polling Publisher , leyi olovisaka ku rhurhisiwa ka outbox hi ku polling tafula ra outbox. Xiphiqo xo sungula xa endlelo leri i vuswikoti bya ku engeteleka ka ndzhwalo wa database, leswi nga tisaka ku durha ka le henhla. Ku tlula kwalaho, a hi tidathabeyisi hinkwato ta No-SQL leti seketelaka ku vutisa hi ndlela leyinene eka swiyenge swo karhi swa matsalwa. Ku humesa matsalwa hinkwawo swi nga, hikwalaho, swi endla leswaku ku va na ku hohloka ka matirhelo.
Hi lexi xifaniso lexitsongo xa ntlhandlamano lexi hlamuselaka ndlela leyi xi tirhaka ha yona.
Ntlhontlho wo sungula eka xivumbeko xa Bokisi ra Nhundzu ya Ntirhisano wu le ka ku titshega ka yona hi swihlawulekisi swa ACID ya database. Swi nga ha va swi kongomile eka tidathabeyisi ta OLTP leti tolovelekeke kambe swi tisa mintlhontlho eka xivandla xa NoSQL. Ku lulamisa leswi, ntlhantlho lowu nga vaka kona i ku tirhisa log ya ku engetela (xikombiso, Kafka) ku suka eku sunguleni ka ku lulamisiwa ka swikombelo.
Ematshan’wini yo tirhisa hi ku kongoma xileriso xa ‘rhumela xikombelo xa xikweleti’, hi hatlisa hi xi rhumela eka nhlokomhaka ya le ndzeni ya Kafka ivi hi tlherisela mbuyelo lowu ‘amukeriweke’ eka muxavi. Kambe, tanihi leswi swi nga ha endlekaka swinene leswaku xileriso xa ha lava ku endliwa, a hi nge hatli hi tivisa muxavi hi vuyelo bya kona. Ku lawula ku nga cinci loku eku heteleleni, hi nga tirhisa tithekiniki to fana na ku hlawula ko leha, ku hlawula loku sunguriweke hi tiklayenti, ku pfuxetiwa ka UI loku nga na ntshembo, kumbe ku tirhisa WebSockets kumbe Swiendlakalo leswi rhumeriweke hi Sevha eka switiviso. Hambiswiritano, leyi i nhloko-mhaka leyi hambaneke hi ku helela, kutani a hi tlheleleni eka mhaka ya hina yo sungula.
Hi rhumele rungula leri eka nhloko-mhaka ya le ndzeni ya Kafka. Vukorhokeri bya Xikombelo xa Xikweleti byi tlhela byi dya rungula leri — xileriso lexi fanaka lexi byi xi amukeleke eka muxavi — ivi byi sungula ku tirhisa. Xo sungula, yi tirhisa ku twisiseka ko karhi ka bindzu; ntsena endzhaku ka loko logic leyi yi endliwile hi ndlela leyi humelelaka naswona mbuyelo wu phikelerile, yi kandziyisa marungula lamantshwa eka nhlokomhaka ya Kafka ya mani na mani.
A hi languteni nyana pseudo-code.
public async Task HandleAsync(SubmitLoanApplicationCommand command, ...) { //First, process business logic var loanApplication = await _loanApplicationService.HandleCommandAsync(command, ...); //Then, send new events to public Kafka topic producer.Send(new LoanApplicationSubmittedEvent(loanApplication.Id)); //Then, commit offset consumer.Commit(); }
Ku vuriwa yini loko ku lulamisiwa ka logic ya bindzu ku tsandzeka? A wu vileli, tanihi leswi offset yi nga si endliwaka, rungula ri ta ringetiwa nakambe.
Ku vuriwa yini loko ku rhumela swiendlakalo leswintshwa eka Kafka swi tsandzeka? A swi vileli, tani hi leswi logic ya bindzu yi nga idempotent, a yi nge endli xikombelo xa xikweleti lexi phindhiweke. Ematshan’wini ya sweswo, yi ta ringeta ku rhumela marungula nakambe eka nhlokomhaka ya Kafka ya mani na mani.
Ku vuriwa yini loko marungula ya rhumeriwa eka Kafka, kambe ku tinyiketela ka offset ku tsandzeka? No worries, tani hi leswi business logic yi nga idempotent, a yi nge endli xikombelo xa loan lexi phindhiweke. Ematshan’wini ya sweswo, yi ta rhumela marungula nakambe eka nhlokomhaka ya Kafka ya mani na mani naswona yi tshemba leswaku ku tinyiketela ka offset ku humelela eka nkarhi lowu.
Swiphiqo leswikulu swa endlelo leri swi katsa ku rharhangana loku engetelekeke loku fambelanaka na xitayili lexintshwa xa minongonoko, ku hetelela ku nga cinci (tanihi leswi khalayente yi nga ta ka yi nga hatli yi tiva mbuyelo), na xilaveko xa leswaku logic hinkwayo ya bindzu yi va idempotent.
Xana event sourcing i yini, naswona yi nga tirhisiwa njhani laha? Ku kuma swihlovo swa swiendlakalo i xivumbeko xa vumaki bya software lexi tirhisiwaka ku modela xiyimo xa sisiteme hi ku khoma ku cinca hinkwako eka datha ya yona tanihi nxaxamelo wa swiendlakalo leswi nga cincekiki. Swiendlakalo leswi swi yimela mintiyiso kumbe ku cinca ka xiyimo naswona swi tirha tanihi xihlovo xin’we xa ntiyiso eka xiyimo xa sweswi xa sisiteme. Kutani, hi tlhelo ra xithekiniki, hi ku tirhisa sisiteme ya ku kuma swihlovo swa swiendlakalo, se hi na swiendlakalo hinkwaswo eka EventStore, naswona EventStore leyi yi nga tirhisiwa hi vatirhisi tanihi xihlovo xin’we xa ntiyiso mayelana na leswi humeleleke. A ku na xilaveko xa xitshunxo xo karhi xa database xo landzelerisa ku cinca hinkwako kumbe ku vilela hi ku oda, xiphiqo ntsena i ku tshama eka tlhelo ro hlaya tanihileswi ku kota ku kuma xiyimo xa xiviri xa entity swi lavekaka ku tlanga nakambe swiendlakalo hinkwaswo.
Eka xihloko lexi, hi kambisisile maendlelo yo hlayanyana yo aka marungula lama tshembekaka eka tisisiteme leti hangalasiweke. Kuna switsundzuxo swo hlayanyana leswi hi nga swi tekelaka enhlokweni loko hi ri karhi hi aka tisisiteme leti nga na swihlawulekisi leswi
Nkarhi lowu taka, hi ta languta xikombiso lexi tirhaka swinene xa ku tirhisa Bokisi ra Nhundzu ya Ntirhisano. Vona
wena!