![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Go aga tshepedišo ye e ka botwago, ye e hwetšagalago kudu, ye e phatlalatšwago ye e ka lekanyetšwago go nyaka go kgomarela dithekniki tše itšego, melawana le dipaterone. Tlhamo ya ditshepedišo tše bjalo e akaretša go rarolla ditlhohlo tše dintši kudu. Gare ga ditaba tšeo di atilego kudu le tša motheo ke bothata bja go ngwala gabedi .
“Bothata bja go ngwala gabedi” ke tlhohlo yeo e tšwelelago ditshepedišong tše di phatlalatšwago, kudu ge go šongwa le methopo ye mentši ya datha goba dipolokelo tša tshedimošo tšeo di swanetšego go bolokwa di sepelelana. E šupa bothata bja go netefatša gore diphetogo tša datha di ngwalwa ka go se fetoge mabenkeleng a datha a go fapafapana, go swana le dipolokelo tša tshedimošo goba di-cache, ntle le go tsebagatša ditaba tša go swana le go se dumelelane ga datha, dithulano, goba ditšhitišo tša tshepedišo.
Sebopego sa microservices le polokelo ya tshedimošo ya mohlala ka tirelo e go tlišetša mehola ye mentši, go swana le go tsenywa tirišong le go lekanya ka go ikemela, go palelwa mo go lego ka thoko, le kgodišo ye e ka bago gona ya lebelo la tlhabollo. Le ge go le bjalo, ditiro di nyaka diphetogo gare ga di-microservice tše ntši, e lego seo se go gapeletšago go nagana ka tharollo ye e ka botwago ya go rarolla bothata bjo.
A re ke re ela hloko boemo bjoo go bjona domain ya rena e akaretšago go amogela dikgopelo tša kadimo, go di hlahloba, gomme ka morago ra romela ditemošo tša tsebišo go bareki.
Ka moya wa molao wa motheo wa maikarabelo a tee, molao wa Conway, le mokgwa wa go hlama wo o laolwago ke domain, ka morago ga dithulaganyo tše mmalwa tša go swara ditiragalo, domain ka moka e ile ya arolwa ka didomain tše tharo ka diteng tše di hlalošitšwego tše di lekanyeditšwego tšeo di nago le mellwane ye e kwagalago, dika tša domain le polelo yeo e lego gohle.
Ya pele e filwe mošomo wa go tsenya le go kgoboketša dikgopelo tše mpsha tša dikadimo. Tshepedišo ya bobedi e sekaseka dikgopelo tše gomme e tšea diphetho go ya ka datha yeo e filwego. Tshepetšo ye ya kelo, go akaretšwa KYC/KYB, kgahlanong le bofora, le ditlhahlobo tša kotsi ya mokitlana, e ka ja nako, gomme ya nyaka bokgoni bja go swara dikgopelo tše dikete ka nako e tee. Ka lebaka leo, mošomo wo o abetšwe microservice ye e ineetšego yeo e nago le polokelo ya yona ya tshedimošo, yeo e dumelelago go lekanya ka go ikemela.
Go feta fao, ditshepedišo tše tša ka fasana di laolwa ke dihlopha tše pedi tše di fapanego, ye nngwe le ye nngwe e na le medikologo ya yona ya go lokollwa, ditumelelano tša maemo a tirelo (SLA), le dinyakwa tša go lekalekanywa.
Lastly , tirelo ya tsebišo ye e kgethegilego e gona go romela ditemošo go bareki.
Tlhaloso ye e hlwekišitšwego ya taba ya mathomo ya tšhomišo ya tshepedišo ye ke ye:
Ke tshepedišo ye bonolo kudu le ya pele ge o e lebelela la mathomo, eupša a re itahleng ka gare ga kamoo tirelo ya kgopelo ya Kadimo e šomago ka gona taelo ya go romela kgopelo ya kadimo.
Re ka ela hloko mekgwa ye mebedi ya ditirišano tša tirelo:
Pele-Selegae-Itlamo-Ke moka-Phatisa: Mokgweng wo, tirelo e mpshafatša polokelo ya yona ya tshedimošo ya selegae (e itlama) gomme ka morago ya phatlalatša tiragalo goba molaetša go ditirelo tše dingwe.
Pele-Phatisa-Ke moka-Selegae-Itlamo: Ka lehlakoreng le lengwe, mokgwa wo o akaretša go phatlalatša tiragalo goba molaetša pele o itlama diphetogo go polokelo ya tshedimošo ya selegae.
Mekgwa ye ka bobedi e na le mafokodi a yona gomme e bolokegile ka bontši fela bakeng sa kgokagano ka ditshepedišong tše di phatlalatšwago.
Ye ke seswantšho sa tatelano ya go diriša mokgwa wa mathomo.
Boemong bjo, Tirelo ya Kgopelo ya Kadimo e šomiša mokgwa wa Pele-Selegae-Itlama-Ke moka-Phatiša , moo e thomago ka go itlama kgwebišano gomme ka morago ya leka go romela tsebišo go tshepedišo ye nngwe. Le ge go le bjalo, tshepedišo ye e na le kgonagalo ya go palelwa ge, mohlala, go na le ditaba tša netiweke, Tirelo ya Tekolo ga e hwetšagale, goba Tirelo ya Kgopelo ya Kadimo e kopana le phošo ya go Tšwa Memory (OOM) gomme ya thula. Maemong a bjalo, molaetša o be o tla lahlega, wa tlogela Tekolo ntle le tsebišo ya kgopelo ye mpsha ya kadimo, ntle le ge magato a tlaleletšo a phethagatšwa.
Le ya bobedi.
Boemong bja go Phatlalatša Pele-Ke moka-Go Itlama ga Selegae , Tirelo ya Kgopelo ya Kadimo e lebane le dikotsi tše bohlokwa kudu. E ka tsebiša Tirelo ya Kelo ka ga tirišo ye mpsha eupša ya palelwa ke go boloka mpshafatšo ye ka mo nageng ka lebaka la mathata a go swana le ditaba tša polokelo ya tshedimošo, diphošo tša memori, goba diphošo tša khoutu. Mokgwa wo o ka lebiša go go se dumelelane mo gogolo ka go datha, mo go ka hlolago mathata a magolo, go ya ka ka fao Tirelo ya Tshekatsheko ya Kadimo e swarago dikgopelo tše di tsenago.
Ka fao, re swanetše go šupa tharollo yeo e fago mokgwa wo o tiilego wa go phatlalatša ditiragalo go bareki ba ka ntle. Eupša, pele re tsenelela ka gare ga ditharollo tšeo di ka bago gona, re swanetše go thoma ka go hlakiša mehuta ya ditiisetšo tša kabo ya melaetša tšeo di fihlelelwago ka ditshepedišong tše di phatlalatšwago.
Go na le mehuta ye mene ya ditiisetšo tšeo re bego re ka di fihlelela.
Ga go na ditiisetšo
Ga go na tiišetšo ya gore molaetša o tla išwa lefelong leo o yago go lona. Mokgwa wa Pele-Selegae-Itlamo-Ke moka-Phatiša o mabapi le se gabotse. Bareki ba ka amogela melaetša gatee, ka makga a mantši goba le ka mohla le gatee.
Ka boholo hang pelehi
At most hang delivery e ra gore molaetša o tla išwa lefelong leo o yago go lona ka nako ye 1. Mokgwa wa Pele-Selegae-Itlama-Ke moka-Phatisa o ka phethagatšwa ka tsela ye gammogo le pholisi ya go leka gape ya maiteko ao a nago le boleng bja pele.
Bonyane gatee thomelo\Badiriši ba tla amogela le go šoma molaetša wo mongwe le wo mongwe eupša ba ka amogela molaetša o swanago go feta gatee.
Tlhoko hang pelehi\Tlhoko hang pelehi bolela hore moreki tla amohela molaetsa ka katleho hang.
Ka setegeniki, go a kgonega go fihlelela ka ditirišano tša Kafka le phethagatšo ye e itšego ya idempotent ya motšweletši le moreki.
Maemong a mantši, ditiisetšo tša kabo tša ‘bonyenyane gatee’ di rarolla ditaba tše ntši ka go netefatša gore melaetša e tlišwa bonyane gatee, eupša bareki ba swanetše go ba le maatla a go se be le mohola. Le ge go le bjalo, ge go fiwa go palelwa ga netweke mo go sa phemegego, tlhaologanyo ka moka ya bareki e swanetše go ba idempotent go efoga go šoma melaetša ye e ipoeletšago, go sa šetšwe ditiisetšo tša motšweletši. Ka fao, nyakego ye ga se bofokodi kudu eupša e bontšha nnete.
Go na le ditharollo tše dintši tša bothata bjo, tšeo di nago le mehola le go se loke ga tšona.
Go ya ka Wikipedia, Two-Phase Commit (2PC) ke protocol ya kgwebišano ye e phatlalatšwago yeo e šomišwago ka go saense ya khomphutha le ditshepedišo tša taolo ya polokelo ya tshedimošo go netefatša go se fetoge le go tshepagala ga ditirišano tše di phatlalatšwago. E reretšwe maemo ao methopo ye mentši (mohlala, dipolokelo tša tshedimošo) e swanetšego go tšea karolo kgwebišano e tee, gomme e netefatša gore e ka ba ka moka ga bona ba itlama kgwebišano goba ka moka ga bona ba e fediša, ka go realo ba boloka go se fetoge ga datha. Go kwagala gabotse seo re se hlokago, eupša Two-Phase Commit e na le mafokodi a mmalwa:
Tharollo e bonahalang ka ho fetisisa bakeng sa microservices mohaho ke ho sebelisa mohlala (kapa esita le ka linako tse ling khahlanong le mohlala) - polokelongtshedimosetso arolelanoang. Mokgwa wo o kwešišega kudu ge o nyaka go se fetoge ga kgwebišano go ralala le ditafola tše ntši ka go dipolokelo tša tshedimošo tše di fapanego, šomiša fela polokelo ya tshedimošo e tee ye e abelanwago bakeng sa di-microservice tše.
Mafokodi a mokgwa wo a akaretša go tsebagatša ntlha e tee ya go palelwa, go thibela go lekanya polokelo ya tshedimošo ye e ikemetšego, le go lekanyetša bokgoni bja go šomiša ditharollo tša polokelo ya tshedimošo tše di fapanego tšeo di swanetšego kudu dinyakwa tše itšego le maemo a tšhomišo. Go tlaleletša, diphetogo go dikhoutu tša microservices di be di tla nyakega go thekga mokgwa wo bjalo wa kgwebišano ye e phatlalatšwago.
' Lepokisi la kgwebišano ' ke mokgwa wa tlhamo wo o šomišwago ka ditshepedišong tše di phatlalatšwago go netefatša phatlalatšo ya melaetša ye e ka botwago, le ge go lebane le ditshepedišo tša melaetša tše di sa tshepagalego. E akaretša go boloka ditiragalo ka tafoleng ye e kgethilwego ya 'Ditiragalo tša Lepokisi la Ntle' ka gare ga kgwebišano ye e swanago le tshepedišo ka boyona. Mokgwa wo o sepelelana gabotse le dithoto tša ACID tša dipolokelo tša tshedimošo tša kamano. Ka go fapana, dipolokelo tša tshedimošo tše ntši tša No-SQL ga di thekge ka botlalo dithoto tša ACID, di kgetha go e na le moo melawana ya teorema ya CAP le filosofi ya BASE, yeo e etšago pele go hwetšagala le go se fetoge ga mafelelong go feta go se fetoge mo go tiilego.
Lepokisi la ka ntle la kgwebišano le fa bonyane tiišetšo ya gatee gomme le ka phethagatšwa ka mekgwa ye mmalwa:
Mosela wa log ya kgwebišano
Mogatiši wa dikgetho
Mokgwa wa go latela log ya kgwebišano o bolela go šomiša ditharollo tše di itšego tša polokelo ya tshedimošo go swana le CDC (Change Data Capture). Mafokodi a magolo a mokgwa woo ke:
Database ditharollo itseng
Go oketšega ga latency ka lebaka la dilo tše di kgethegilego tša diphethagatšo tša CDC
Mokgwa o mongwe ke Polling Publisher , yeo e nolofatšago go fološa outbox ka go polling tafola ya outbox. Bofokodi bja mathomo bja mokgwa wo ke bokgoni bja go oketša mošomo wa polokelo ya tshedimošo, yeo e ka lebišago go ditshenyagalelo tše di phagamego. Go feta fao, ga se dipolokelo ka moka tša tshedimošo tša No-SQL tšeo di thekgago go botšiša ka bokgoni bakeng sa dikarolo tše itšego tša ditokomane. Ka fao, go ntšha ditokomane ka moka go ka feletša ka go senyega ga tshepedišo.
Seswantšho se sennyane sa tatelano seo se hlalošago ka fao se šomago ka gona ke se.
Tlhohlo ya mathomo ka paterone ya Lepokisi la Tšweletšo la Kgwebišano e letše go ithekga ga yona ka dithoto tša ACID ya polokelo ya tshedimošo. E ka ba e otlologilego ka dipolokelong tša tshedimošo tša OLTP tše di tlwaelegilego eupša e hlola ditlhohlo lefelong la NoSQL. Go rarolla se, tharollo ye e ka bago gona ke go leverage append log (mohlala, Kafka) thwii go tšwa go thoma tshepedišo ya kgopelo.
Go e na le go šoma ka go lebanya taelo ya ‘romela kgopelo ya kadimo’, re e romela gateetee go hlogotaba ya ka gare ya Kafka gomme ka morago ra bušetša sephetho seo se ‘amogetšwego’ go moreki. Le ge go le bjalo, ka ge go na le kgonagalo ye kgolo ya gore taelo e sa swanetše go šongwa, re ka se tsebiše moreki ka sephetho gateetee. Go laola go se fetoge mo ga mafelelong, re ka thwala dithekniki tša go swana le go bouta ka nako ye telele, go bouta mo go thomilwego ke moreki, diapdeite tša UI tše di nago le kholofelo, goba go šomiša WebSockets goba Ditiragalo tše di Rometšwego ke Sefepedi bakeng sa ditsebišo. Le ge go le bjalo, ye ke hlogotaba ye e fapanego ka moka, ka fao a re boeleleng tabeng ya rena ya mathomo.
Re rometše molaetša ka hlogotaba ya ka gare ya Kafka. Tirelo ya Kgopelo ya Kadimo e gona e ja molaetša wo — taelo ye e swanago yeo e e amogetšego go tšwa go moreki — gomme e thoma go šoma. Sa pele, e phethagatša tlhaologanyo e itšego ya kgwebo; feela ka morago ga ge tlhaologanyo ye e phethagaditšwe ka katlego gomme dipoelo di phegeletše, e phatlalatša melaetša ye mefsa ka hlogotaba ya setšhaba ya Kafka.
A re lebelele go se nene ga khoutu ya maaka.
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(); }
Go thwe’ng ge e ba tshepedišo ya tlhaologanyo ya kgwebo e palelwa? Ga go na matshwenyego, ka ge offset e sešo ya itlama, molaetša o tla lekwa gape.
Go thwe’ng ge e ba go romela ditiragalo tše difsa go Kafka go palelwa? Ga go na matshwenyego, ka ge tlhaologanyo ya kgwebo e le idempotent, e ka se hlole kgopelo ya kadimo ya go ipoeletša. Go e na le moo, e tla leka go romela melaetša gape go hlogo ya setšhaba ya Kafka.
Go thwe’ng ge e ba melaetša e romelwa go Kafka, eupša go itlama ga offset go a palelwa? Ga go na matshwenyego, ka ge logic ya kgwebo e le idempotent, e ka se hlole kgopelo ya kadimo ya go ipoeletša. Go e na le moo, e tla romela melaetša gape go hlogo ya setšhaba ya Kafka gomme ya holofela gore go itlama ga offset go a atlega mo nakong ye.
Mafokodi a magolo a mokgwa wo a akaretša go raragana mo go oketšegilego mo go sepedišanago le mokgwa o mofsa wa mananeo, go se fetoge mafelelong (ka ge moreki a ka se tsebe sephetho ka pela), le tlhokego ya gore logiki ka moka ya kgwebo e be idempotent.
Go hwetša mothopo wa ditiragalo ke eng, gomme go be go ka dirišwa bjang mo? Mothopo wa ditiragalo ke mokgwa wa go aga wa softwere wo o šomišwago go swantšha seemo sa tshepedišo ka go swara diphetogo ka moka go datha ya yona bjalo ka lelokelelo la ditiragalo tše di sa fetogego. Ditiragalo tše di emela dintlha goba diphetogo tša mmušo gomme di šoma bjalo ka mothopo o tee wa therešo bakeng sa boemo bja bjale bja tshepedišo. Ka fao, ka setegeniki, ka go phethagatša tshepedišo ya go hwetša methopo ya ditiragalo, re šetše re na le ditiragalo ka moka ka go EventStore, gomme EventStore ye e ka šomišwa ke bareki bjalo ka mothopo o tee wa therešo ka ga seo se diregilego. Ga go nyakege gore go be le tharollo ye e itšego ya polokelo ya tshedimošo ya go latela diphetogo ka moka goba matshwenyego ka go otara, bothata bjo bo nnoši ke go dula ka lehlakoreng la go bala ka ge go kgona go hwetša seemo sa nnete sa setheo go nyakega go bapala gape ditiragalo ka moka.
Sehlogong se, re ile ra sekaseka mekgwa ye mmalwa ya go aga melaetša ye e ka botwago ditshepedišong tše di phatlalatšwago. Go na le ditšhišinyo tše mmalwa tšeo re ka di elago hloko ge re aga ditshepedišo tšeo di nago le dimelo tše
Nakong ye e tlago, re tla lebelela mohlala wo o šomago kudu wa go phethagatša Lepokisi la Tšweletšo la Kgwebišano. Bona
wena!