![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Ygtybarly, ýokary elýeterli, ulaldylan paýlanan ulgam gurmak, belli bir tehnikalara, ýörelgelere we nagyşlara boýun bolmagy talap edýär. Şeýle ulgamlaryň dizaýny köp sanly kynçylyklary çözmegi öz içine alýar. Iň ýaýran we esasly meseleleriň arasynda goşa ýazmak meselesi bar.
“Ikitaraplaýyn ýazmak meselesi” paýlanan ulgamlarda ýüze çykýan kynçylyk, esasanam sinhron saklanmaly köp sanly maglumat çeşmesi ýa-da maglumat bazasy bilen iş salyşanda. Maglumatlaryň üýtgemezligi, gapma-garşylyklar ýa-da öndürijilik päsgelçilikleri ýaly meseleler girizmezden, maglumatlar üýtgemeleriniň maglumatlar bazalary ýa-da keşler ýaly dürli maglumatlar dükanlaryna yzygiderli ýazylmagyny üpjün etmegiň kynlygyny aňladýar.
Her hyzmat üçin mikroservis arhitekturasy we nagyş binýady size garaşsyz ýerleşdirmek we ulaltmak, izolirlenen şowsuzlyklar we ösüş tizligini ýokarlandyrmak ýaly köp peýdalary getirýär. Şeýle-de bolsa, amallar birnäçe mikroservisiň arasynda üýtgeşmeleri talap edýär we bu meseläni çözmek üçin ygtybarly çözgüt hakda pikirlenmäge mejbur edýär.
Geliň, domenimiz karz arzalaryny kabul etmegi, olara baha bermegi we müşderilere duýduryş duýduryşlaryny öz içine alýan bir ssenariýa seredeliň.
Responsibilityeke-täk jogapkärçilik ýörelgesi, Konwaýyň kanuny we domen bilen dolandyrylýan dizaýn çemeleşmesi, birnäçe hadysadan soň, tutuş domen anyk çäkleri, domen modelleri we hemme ýerde dili kesgitlenen çäkli kontekst bilen üç subdomaine bölündi.
Birinjisine münmek we täze karz arzalaryny düzmek tabşyrylýar. Ikinji ulgam bu programmalara baha berýär we berlen maglumatlara esaslanyp karar berýär. Bu baha beriş prosesi, şol sanda KYC / KYB, antifraud we karz töwekgelçiligini barlamak, bir wagtyň özünde müňlerçe arzany dolandyrmak ukybyny talap edip, köp wagt talap edip biler. Netijede, bu funksiýa garaşsyz ulalmaga mümkinçilik berýän öz maglumatlar bazasy bilen ýörite mikroservise berildi.
Mundan başga-da, bu kiçi ulgamlar iki dürli topar tarapyndan dolandyrylýar, hersiniň öz goýberiş siklleri, hyzmat derejesi şertnamalary (SLA) we göwrümlilik talaplary bar.
Netijede , müşderilere duýduryş ibermek üçin ýöriteleşdirilen habar beriş hyzmaty bar.
Ine, ulgamyň ilkinji ulanylyş ýagdaýynyň takyk beýany:
Bir seretseň gaty ýönekeý we ýönekeý ulgam, ýöne geliň, karz arzasy hyzmatynyň tabşyryş karzy buýrugyny nähili işleýändigini öwreneliň.
Hyzmat gatnaşyklary üçin iki çemeleşmäni göz öňünde tutup bileris:
Ilki bilen -erli-borçly-soň-çap ediň: Bu çemeleşmede hyzmat ýerli maglumat bazasyny täzeleýär (ýerine ýetirýär) we soňra beýleki hyzmatlara bir waka ýa-da habar çap edýär.
Ilki çap et, soň-ýerli-borçnama: Tersine, bu usul ýerli maglumatlar bazasyna üýtgeşmeler girizmezden ozal bir hadysany ýa-da habary çap etmegi öz içine alýar.
Iki usulyňam kemçilikleri bar we paýlanan ulgamlarda aragatnaşyk üçin diňe bölekleýin howpsuz däl.
Bu ilkinji çemeleşmäni ulanmagyň yzygiderli diagrammasy.
Bu ssenariýada, Karz amaly gullugy ilki bilen geleşik baglaşyp, soň başga bir sistema habarnamany ibermäge synanyşýan “First-Local-Commit-Then-Publish” çemeleşmesini ulanýar. Şeýle-de bolsa, meselem, tor meselesi bar bolsa, Bahalandyryş hyzmaty elýeterli däl bolsa ýa-da Karz Programma Hyzmaty oryadyň daşynda (OOM) ýalňyşlyk ýüze çyksa we şowsuzlyga uçrap biler. Şeýle ýagdaýlarda, goşmaça çäreler görülmese, täze karz arzasy barada baha bermezden baha ýitiriler.
Ikinjisi.
Ilkinji neşir etmek-soň-ýerli-borçnama ssenarisinde Karz amaly hyzmaty has möhüm töwekgelçiliklere duçar bolýar. Bahalandyryş gullugyna täze programma barada habar berip biler, emma maglumat bazasy, ýat ýalňyşlyklary ýa-da kod ýalňyşlyklary ýaly kynçylyklar sebäpli bu täzelenmäni ýerli derejede saklap bilmez. Bu çemeleşme, Karzy gözden geçirmek gullugynyň gelýän programmalary nähili alyp barýandygyna baglylykda çynlakaý problemalara sebäp bolup biljek maglumatlardaky düýpli gapma-garşylyklara sebäp bolup biler.
Şonuň üçin wakalary daşarky sarp edijilere neşir etmek üçin ygtybarly mehanizm hödürleýän çözgüdi kesgitlemeli. Potentialöne, mümkin bolan çözgütleri öwrenmezden ozal, paýlanan ulgamlarda ýetip boljak habarlary kepillendirmegiň görnüşlerini anyklamaly.
Biz gazanyp biljek kepillikleriň dört görnüşi bar.
Kepillik ýok
Habaryň barmaly ýerine ýetiriljekdigine kepillik ýok. Ilki-ýerli-komitet-soň-çap etmek çemeleşmesi hut şu hakda. Sarp edijiler bir gezek, birnäçe gezek habar alyp bilerler ýa-da asla bolmaz.
Iň köp gezek eltip bermek
Bir gezek gowşuryş, habaryň iň köp wagtda 1 gezek iberiljekdigini aňladýar. “First-Local-Commit-Then-Publish” çemeleşmesi bu usul bilen amala aşyrylyp bilner, şeýle hem bir synanyşyk synanyşygy syýasaty.
Iň bolmanda bir gezek gowşuryş \ Sarp edijiler her habary alar we gaýtadan işlär, ýöne şol bir habary bir gezekden köp alyp biler.
Takyk bir gezek eltip bermek \ Takyk bir gezek gowşuryş, sarp edijiniň habary bir gezek netijeli aljakdygyny aňladýar.
Tehniki taýdan, Kafka amallary we öndürijiniň we sarp edijiniň belli bir manysyz durmuşa geçirilmegi bilen gazanyp bolýar.
Köplenç habarlaryň azyndan bir gezek iberilmegini üpjün etmek arkaly “iň bolmanda bir gezek” gowşurmak kepillendirilýär, ýöne sarp edijiler ejiz bolmaly. Şeýle-de bolsa, gutulgysyz tor şowsuzlyklaryny göz öňünde tutup, öndürijiniň kepilliklerine garamazdan, iki gezeklik habarlary gaýtadan işlemekden gaça durmak üçin ähli sarp ediji logikasy ejiz bolmaly. Şonuň üçin bu talap hakykaty görkezýän ýaly bir kemçilik däl.
Bu meseläniň artykmaçlyklary we kemçilikleri bar.
Wikipediýa görä, iki fazaly borçnama (2PC) paýlanan amallaryň yzygiderliligini we ygtybarlylygyny üpjün etmek üçin kompýuter ylymlarynda we maglumatlar binýadyny dolandyrmak ulgamlarynda ulanylýan paýlanan geleşik protokolydyr. Birnäçe çeşmäniň (meselem, maglumat bazalary) bir geleşige gatnaşmagy zerur bolan ýagdaýlar üçin döredildi we olaryň hemmesiniň geleşigi amala aşyrmagyny ýa-da hemmesiniň ýatyrylmagyny üpjün edip, maglumatlaryň yzygiderliligini üpjün edýär. Bu bize gerek zat ýaly bolup görünýär, ýöne iki fazaly borçnamanyň birnäçe kemçiligi bar:
Mikroservis arhitekturasy üçin iň görnükli çözgüt, umumy maglumat bazasyny (ýa-da käwagt anti-nagyş) ulanmakdyr. Dürli maglumat bazalarynda birnäçe tablisanyň üstünde tranzaksiýa yzygiderliligi zerur bolsa, bu çemeleşme gaty içgin, bu mikroservisler üçin diňe bir umumy maglumat bazasyny ulanyň.
Bu çemeleşmäniň kemçilikleri, şowsuzlygyň ýekeje nokadyny girizmegi, garaşsyz maglumat bazasynyň ulalmagyny çäklendirmegi we belli bir talaplar we ýagdaýlary ulanmak üçin iň amatly dürli maglumatlar bazasynyň çözgütlerini ulanmak mümkinçiligini çäklendirmekdir. Mundan başga-da, paýlanan geleşigiň şeýle görnüşini goldamak üçin mikroservis kod bazalaryna üýtgetmeler girizmek zerurdyr.
' Tranzaksiýa gutusy ', ygtybarly habar ulgamlarynyň öňünde-de bolsa, habaryň ygtybarly ýaýramagyny üpjün etmek üçin paýlanan ulgamlarda ulanylýan dizaýn nagşydyr. Wakalary amalyň özi bilen birmeňzeş geleşikde bellenen 'OutboxEvents' tablisasynda saklamagy öz içine alýar. Bu çemeleşme baglanyşyk bazalarynyň ACID häsiýetleri bilen gowy gabat gelýär. Munuň tersine, No-SQL maglumat bazalarynyň köpüsi ACID häsiýetlerini doly goldamaýar, ýerine CAP teoremasynyň we BASE pelsepesiniň ýörelgelerini saýlap alýar, bu bolsa yzygiderliligi ileri tutýar.
Geleşik gutusy azyndan bir gezek kepillik berýär we birnäçe çemeleşme bilen amala aşyrylyp bilner:
Geleşik gündeligi
Saýlaw neşirçisi
Geleşik gündeligini düzmek çemeleşmesi, CDC (Maglumatlary üýtgetmek) ýaly maglumatlar bazasyna mahsus çözgütleri ulanmagy göz öňünde tutýar. Bu çemeleşmäniň esasy kemçilikleri:
Maglumatlar bazasynyň anyk çözgütleri
CDC ýerine ýetiriş aýratynlyklary sebäpli gijä galmak
Anotherene bir usul, gutularyň tablisasyna ses bermek arkaly poçta gutusyny düşürmegi aňsatlaşdyrýan Saýlaw neşirçisi . Bu çemeleşmäniň esasy kemçiligi, has köp çykdajylara sebäp bolup biljek maglumatlar bazasynyň ýüküni köpeltmek üçin potensialdyr. Mundan başga-da, No-SQL maglumat bazalarynyň hemmesi belli bir resminama segmentleri üçin netijeli gözlegleri goldamaýar. Documentshli resminamalary çykarmak, öndürijiligiň peselmegine sebäp bolup biler.
Ine, nähili işleýändigini düşündirýän kiçijik yzygiderlilik diagrammasy.
Transactional Outbox nagşy bilen esasy kynçylyk, maglumatlar bazasynyň ACID häsiýetlerine baglylygydyr. Adaty OLTP maglumat bazalarynda gönümel bolup biler, ýöne NoSQL äleminde kynçylyk döredýär. Bu meseläni çözmek üçin goşundy gündeligini (mysal üçin Kafka) haýyşy gaýtadan işlemekden başlamak mümkin.
“Karz arzasyny tabşyrmak” buýrugyny gönüden-göni işlemegiň ýerine derrew içerki Kafka mowzugyna iberýäris we soňra “kabul edilen” netijäni müşderä gaýtaryp berýäris. Şeýle-de bolsa, buýrugyň henizem işlenmeli bolmagy gaty ähtimal, netijäni derrew müşderä habar berip bilmeris. Bu ahyrky yzygiderliligi dolandyrmak üçin, uzak ses berişlik, müşderi tarapyndan geçirilen ses berişlik, optimal UI täzelenmeleri ýa-da habarnamalar üçin WebSockets ýa-da Serwer tarapyndan iberilen wakalary ulanmak ýaly usullary ulanyp bileris. Şeýle-de bolsa, bu düýbünden başga bir mowzuk, geliň başlangyç mowzugymyza gaýdyp geleliň.
Habary içerki Kafka mowzugyna iberdik. Karz amaly hyzmaty soňra bu habary sarp edýär - müşderiden alan buýrugy - we gaýtadan işlemäge başlaýar. Birinjiden, käbir iş logikasyny ýerine ýetirýär; diňe şu logika üstünlikli ýerine ýetirilenden we netijeler dowam etdirilenden soň, köpçülige açyk Kafka mowzugynda täze habarlar çap edýär.
Geliň, birneme pseudo-koda göz aýlalyň.
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(); }
Iş logikasyny gaýtadan işlemek başa barmasa näme etmeli? Alada etme, ofset entek ýerine ýetirilmänsoň, habar gaýtadan ulanylar.
Kafka täze wakalary ibermek başa barmasa näme etmeli? Alada etme, biznes logikasy ejiz bolansoň, iki gezek karz arzasyny döretmez. Munuň ýerine köpçülige Kafka mowzugyna habar ibermäge synanyşar.
Kafka habar iberilse-de, ofset borçnamasy başa barmasa näme etmeli? Alada etme, iş logikasy ejiz bolansoň, iki gezek karz arzasy döredip bilmez. Muňa derek, köpçülige Kafka mowzugyna habar iberer we ofset borçnamasynyň bu gezek üstünlikli boljakdygyna umyt edýärin.
Bu çemeleşmäniň esasy kemçilikleri, täze programmirleme stili bilen baglanyşykly goşmaça çylşyrymlylygy, ahyrky yzygiderliligi (müşderi netijäni derrew bilmezligi sebäpli) we ähli iş logikasynyň ejiz bolmagy talaplaryny öz içine alýar.
Wakanyň çeşmesi näme we bu ýerde nädip ulanylyp bilner? Waka gözlegleri, maglumatlardaky ähli üýtgeşmeleri üýtgewsiz wakalar hökmünde ele alyp, ulgamyň ýagdaýyny modellemek üçin ulanylýan programma üpjünçiligi binagärlik nagşydyr. Bu wakalar faktlary ýa-da döwlet geçişlerini görkezýär we ulgamyň häzirki ýagdaýy üçin hakykatyň ýeke-täk çeşmesi bolup hyzmat edýär. Şeýlelik bilen, tehniki taýdan, hadysalary gözlemek ulgamyny ornaşdyrmak arkaly, eýýäm “EventStore” -da ähli wakalarymyz bar we bu “EventStore” alyjylar tarapyndan bolup geçen wakalar barada hakykatyň ýeke-täk çeşmesi hökmünde ulanylyp bilner. Sargyt bilen baglanyşykly ähli üýtgeşmeleri ýa-da aladalary yzarlamak üçin belli bir maglumat bazasynyň çözgüdiniň zerurlygy ýok, ýeke-täk mesele okalýan tarapda oturýar, sebäbi ähli hadysalary gaýtalamak üçin hakyky ýagdaýyny bilmek zerur.
Bu makalada paýlanan ulgamlarda ygtybarly habarlaşma gurmak üçin birnäçe çemeleşmäni gözden geçirdik. Bu aýratynlyklary bolan ulgamlar gurlanda göz öňünde tutup biljek birnäçe maslahatymyz bar
Indiki gezek, Transaksiýa gutusyny durmuşa geçirmegiň has amaly mysalyna serederis. Serediň
sen!