See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 57382|Vastuse: 3

[ASP.NET] ASP.NET Core (viis) põhineb CAP hajutatud tehingutel

[Kopeeri link]
Postitatud 2021-3-17 18:12:50 | | | |
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

2PC &&&3PC hajutatud tehingute kohta
https://www.itsvse.com/thread-9591-1-1.html

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:

ASP.NET Core(4) filter ühtlustatud ModelState mudeli valideerimine
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dünaamiliselt loo instantse ActivatorUtilities abil
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Taaskäivita rakendus koodi järgi
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) kasutab Redis vahemällu salvestamist
https://www.itsvse.com/thread-9393-1-1.html


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:

【Practical Combat】RabbitMQ paigaldusõpetus Windowsis
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ installib veebihaldusplugina
https://www.itsvse.com/thread-4631-1-1.html
Konto lisamine on samuti välja jäetud, palun viidake:

【Harjuta】rabbitMQ konsooli konto lisamiseks
https://www.itsvse.com/thread-4655-1-1.html
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.

Liidese idempotentsuse probleemid
https://www.itsvse.com/thread-6010-1-1.html

Lõpuks lisa lähtekood:

Turistid, kui soovite näha selle postituse peidetud sisu, palunVastuse






Eelmine:Markdowni süntaksi CSV veebis teisendamine
Järgmine:HttpClient POST otse baitbaitide (gzip) tihenduspäringute saatmiseks
Postitatud 2021-3-18 18:11:20 |
Tule ja vaata, aitäh jagamast
Postitatud 2021-9-22 20:42:18 |
Õpi õppima...
Postitatud 2021-12-31 15:08:21 |
Õppimine
Väga hea, väga kena
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com