CAP põhimõtted
CAP printsiip, tuntud ka kui CAP teoreem, viitab järjepidevusele, kättesaadavusele ja partitsioonitaluvusele hajutatud süsteemis. CAP põhimõte ütleb, et need kolm elementi suudavad korraga saavutada ainult kaks punkti.Kõiki kolme korraga võtta on võimatu。
CAP printsiibi olemus on kas AP, CP või AC, kuid CAP-i ei ole. Kui hajutatud süsteemis andmete koopiat ei ole, peab süsteem täitma tugeva järjepidevuse tingimuse, sest on olemas ainult unikaalne andmestik, andmete vastuolu puudub, sel hetkel on olemas kaks elementi C ja P, kuid kui süsteemil on võrgupartitsioonitingimus või seisaku, viib see paratamatult mõne andmestikku kättesaamatuks ja kättesaadavuse tingimust ei saa täita, st antud juhul saadakse CP süsteem, kuidCAP-i ei saa samal ajal täita。
Läbivaatamine:
DotNetCore.CAP
CAP on sündmuste buss ja rakendus hajutatud süsteemis (SOA, MicroService).Lõplik järjepidevus(Distributed Transactions) on avatud lähtekoodiga C# teek, mis on kerge, kõrge jõudlusega ja lihtne kasutada.
GitHubi aadress:Hüperlingi sisselogimine on nähtav.
Dotnet CAP-il on kõik Event Busi funktsioonid ning CAP pakub sujuvamat viisi avaldamise/tellimise haldamiseks EventBuses.
MediatR on protsessis olev sõnumite tellimuse ja avaldamise raamistik, mis pakub Send meetodit avaldamiseks ühele käitlejale ning Publish meetodit mitmele haldajale avaldamiseks, mis on väga mugav kasutada. Praegu on .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 ja teised versioonid, mida saab kasutada erinevatel platvormidel.
ASP.NET Core kasutab MediatR vahendusmudelit
https://www.itsvse.com/thread-9272-1-1.html Arhitektuuri eelvaade
CAP toetab sõnumijärjekordi nagu Kafka, RabbitMQ, AzureServiceBus, AmazonSQS jne ning CAP pakub laiendusi Sql Serverile, MySQL-ile, PostgreSQL-ile ja MongoDB-le andmebaasi salvestuseks.
See artikkel kasutab RabbitMQ-d ja SQL Serverit sõnumijärjekordade ja salvestusena.
Paigalda RabbitMQ
Konkreetsete paigaldusõpetuste jaoks palun vaata:
Konto lisamine on samuti välja jäetud, palun viidake:
Lisasin ise testkonto ja piirangi virtuaalsete hostide jaoks, nagu allpool näidatud:
Vastasel juhul on viga järgmine:
ACCESS_REFUSED - Sisselogimine keelati autentimismehhanismi PLAINi abil. Lisateabe saamiseks vaata maakleri logifaili.
Ükski määratud lõpp-punktidest ei olnud ligipääsetav
.NET Core integreerib CAP-i
Esiteks loo uus ASP.NET Core projekt, mis on nii saatja kui ka vastuvõtja. Kasuta nuget käsku paketi paigaldamiseks nii:
Käivitamisel konfigureeri teenusemeetod ConfigureServices järgmiselt:
Saad külastada veebilehte /cap aadressi, et vaadata allpool näidatud armatuurlauda:
Andmete püsivus: CapAutomaatne loomine"Avaldatud" ja "Saadud" on kaks kohalikku andmebaasitabelit
LOO TABEL [cap]. [Avaldatud] ( [Id] [bigint] MITTE NULL, [Versioon] [nvarchar] (20) MITTE NULL, [Nimi] [nvarchar] (200) MITTE NULL, [Sisu] [nvarchar] (max) NULL, [Kordab] [int] MITTE NULL, [Lisatud] [datetime2] (7) MITTE NULL, [Aegub] [datetime2] (7) NULL, [StaatusNimi] [nvarchar] (50) MITTE NULL, PIIRANG [PK_cap. Avaldatud] PRIMAARVÕTI KLASTERDATUD
( [ID] ASC )KUS (PAD_INDEX = VÄLJAS, STATISTICS_NORECOMPUTE = VÄLJAS, IGNORE_DUP_KEY = VÄLJAS, ALLOW_ROW_LOCKS = SEES, ALLOW_PAGE_LOCKS = SEES) [PRIMAARS] PEAL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] MINE LOO TABEL [cap]. [Vastu võetud] ( [Id] [bigint] MITTE NULL, [Versioon] [nvarchar] (20) MITTE NULL, [Nimi] [nvarchar] (200) MITTE NULL, [Grupp] [nvarchar] (200) NULL, [Sisu] [nvarchar] (max) NULL, [Kordab] [int] MITTE NULL, [Lisatud] [datetime2] (7) MITTE NULL, [Aegub] [datetime2] (7) NULL, [StaatusNimi] [nvarchar] (50) MITTE NULL, PIIRANG [PK_cap. Saadud] PRIMAARVÕTI KLASTERDATUD
( [ID] ASC )KUS (PAD_INDEX = VÄLJAS, STATISTICS_NORECOMPUTE = VÄLJAS, IGNORE_DUP_KEY = VÄLJAS, ALLOW_ROW_LOCKS = SEES, ALLOW_PAGE_LOCKS = SEES) [PRIMAARS] PEAL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] MINE
HomeController kontrolleri meetod on järgmine:
Kui kasutaja registreerub edukalt, saadetakse 3 erineva teemaga sõnumit ning seejärel tarbib tellija need.
Kui CAP käivitub, loob see vaikimisi tarbijagrupi, kui sama tarbijagrupi mitu tarbijat kasutavad sama teema sõnumit,Ainult üks tarbija hukkutakse。 Vastupidi,Kui tarbijad on kõik erinevates tarbijagruppides, hukatakse kõik tarbijad。
Uue .NET Core konsooliprojekti loomisel, tellijana (tarbijana) või viidates paketile, võib juhtpaneeli ignoreerida.
Kui see on kontrolleris, lisa otse [CapSubscribe("")], et tellida vastavad sõnumid.
Kui sinu meetod ei ole kontrolleris, peab klass, millele tellid, pärima ICapSubscribe'i ja lisama [CapSubscribe("")] silti. Kood on järgmine:
Ava tellimusklient ja proovi http://localhost:28116/Home/UserRegister ligi pääseda sõnumite saatmiseks, tulemus on järgmine:
Nii konsool kui ka kontrolleri vastuvõtja käivituvad, nagu alloleval joonisel näidatud:
Proovi visata erand käsitsi vastuvõtusõnumi meetodis, kood on järgmine:
CAP proovib meetodit automaatselt uuesti,Korduskatsete arv pärast ebaõnnestumist on vaikimisi 50 ja korduskatsete intervall pärast ebaõnnestumist on vaikimisi 60 sekundit, nagu alloleval joonisel näidatud:
Raamistik ei saa olla 100% kindel, et sõnum käivitatakse ainult korraSeetõttu pöörab sõnumipool mõnes võtmessenaariumis tähelepanu ärilisele deduplikatsioonile meetodi rakendamise protsessis.
Lõpuks lisa lähtekood:
Turistid, kui soovite näha selle postituse peidetud sisu, palun Vastuse
|