Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 57382|Odgovoriti: 3

[ASP.NET] ASP.NET Core (pet) temelji na CAP distribuiranih transakcijah

[Kopiraj povezavo]
Objavljeno 17. 3. 2021 ob 18:12:50 | | | |
Načela CAP

Načelo CAP, znano tudi kot CAP izrek, se nanaša na konsistentnost, razpoložljivost in toleranco na razdelitev v distribuiranem sistemu. Načelo CAP pravi, da lahko ti trije elementi dosežejo le dve točki hkrati.Nemogoče je vzeti vse tri hkrati

2PC &&&3PC distribuiranih transakcij
https://www.itsvse.com/thread-9591-1-1.html

Bistvo načela CAP je bodisi AP, CP ali AC, vendar CAP ni. Če v distribuiranem sistemu ni kopije podatkov, mora sistem izpolnjevati pogoj močne konsistentnosti, saj je na voljo le edinstven podatek, ne bo podatkovne neskladnosti; v tem trenutku sta prisotna dva elementa C in P, vendar če ima sistem pogoj omrežne particije ali izpad, bo to neizogibno povzročilo, da so nekateri podatki nedostopni in pogoj razpoložljivosti ni mogoče izpolniti, torej je v tem primeru dosežen CP sistem, vendarCAP ni mogoče zadovoljiti hkrati

Pregled:

ASP.NET Core(4) filter unifikiran validacija modelov ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Jedro (iii) Dinamično ustvarjanje instanc z uporabo ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Jedro (2) Ponovni zagon aplikacije s kodo
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) uporablja Redis predpomnjenje
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP je dogodkovno vodilo in implementacija v distribuiranem sistemu (SOA, MicroService).Končna doslednost(Distributed Transactions) je odprtokodna C# knjižnica, ki je lahka, visoko zmogljiva in enostavna za uporabo.

GitHub naslov:Prijava do hiperpovezave je vidna.

Dotnet CAP ima vse funkcije Event Bus, CAP pa omogoča bolj poenostavljen način za objavljanje/naročanje v EventBus.

MediatR je okvir za naročanje in objavljanje sporočil v procesu, ki omogoča metodo Send za objavljanje enemu handlerju in Publish metodo za objavo na več handlerjih, kar je zelo priročno za uporabo. Trenutno .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 in druge različice, ki jih je mogoče uporabljati na različnih platformah.

ASP.NET Core uporablja vmesni model MediatR
https://www.itsvse.com/thread-9272-1-1.html

Predogled arhitekture



CAP podpira vrste sporočil, kot so Kafka, RabbitMQ, AzureServiceBus, AmazonSQS itd., CAP pa ponuja razširitve za Sql Server, MySql, PostgreSQL in MongoDB kot shranjevanje podatkov.

Ta članek uporablja RabbitMQ in SQL Server kot vrste sporočil in shranjevanje.

Namestite RabbitMQ

Za posebne vodiče za namestitev si oglejte:

【Praktični boj】Uvodni vodič za namestitev RabbitMQ pod Windows
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ namesti vtičnik za upravljanje spletnih strani
https://www.itsvse.com/thread-4631-1-1.html
Dodajanje računa je prav tako izpuščeno, prosimo, glejte:

【Practice】rabbitMQ konzola za dodajanje podatkov o računu
https://www.itsvse.com/thread-4655-1-1.html
Sam sem dodal testni račun in omejil virtualne gostitelje, kot je prikazano spodaj:



V nasprotnem primeru bo napaka naslednja:

ACCESS_REFUSED - Prijava je bila zavrnjena z uporabo avtentikacijskega mehanizma PLAIN. Za podrobnosti glejte dnevnik posrednika.

Nobena od določenih končnih točk ni bila dosegljiva

.NET Core integrira CAP

Najprej ustvarite nov ASP.NET Core projekt, ki je hkrati pošiljatelj in prejemnik. Uporabite ukaz nuget za namestitev paketa takole:

Pri zagonu konfigurirajte metodo storitve ConfigureServices tako:

Za ogled nadzorne plošče, kot je prikazano spodaj, lahko obiščete spletno stran /cap naslov:



Obstojnost podatkov: Cap boSamodejno ustvarjanje"Objavljeno" in "Prejeto" sta dve lokalni tabeli baze podatkov

USTVARI TABELO [cap]. [Objavljeno] (
        [ID] [bigint] NI NIČ,
        [Verzija] [nvarchar] (20) NI NIČ,
        [Ime] [nvarchar] (200) NI NIČ,
        [Vsebina] [nvarchar] (Max) NULL,
        [Poskusi] [int] NI NIČ,
        [Dodano] [datetime2] (7) NI NIČ,
        [ExpiresAt] [datetime2] (7) NULL,
        [StatusIme] [nvarchar] (50) NI NIČ,
OMEJITEV [PK_cap. Objavljeno] PRIMARNI KLJUČ GRUČEN
(
        [Id] ASC
)Z (PAD_INDEX = IZKLOPLJENO, STATISTICS_NORECOMPUTE = IZKLOPLJENO, IGNORE_DUP_KEY = IZKLOPLJENO, ALLOW_ROW_LOCKS = VKLOPLJENO, ALLOW_PAGE_LOCKS = VKLOPLJENO) NA [PRIMARNO]
) NA [PRIMARNI] TEXTIMAGE_ON [PRIMARNI]
POJDI
USTVARI TABELO [cap]. [Prejeto] (
        [ID] [bigint] NI NIČ,
        [Verzija] [nvarchar] (20) NI NIČ,
        [Ime] [nvarchar] (200) NI NIČ,
        [Skupina] [nvarchar] (200) NULL,
        [Vsebina] [nvarchar] (Max) NULL,
        [Poskusi] [int] NI NIČ,
        [Dodano] [datetime2] (7) NI NIČ,
        [ExpiresAt] [datetime2] (7) NULL,
        [StatusIme] [nvarchar] (50) NI NIČ,
OMEJITEV [PK_cap. [PREJETO] PRIMARNI KLJUČ ZDRUŽEN
(
        [Id] ASC
)Z (PAD_INDEX = IZKLOPLJENO, STATISTICS_NORECOMPUTE = IZKLOPLJENO, IGNORE_DUP_KEY = IZKLOPLJENO, ALLOW_ROW_LOCKS = VKLOPLJENO, ALLOW_PAGE_LOCKS = VKLOPLJENO) NA [PRIMARNO]
) NA [PRIMARNI] TEXTIMAGE_ON [PRIMARNI]
POJDI


Metoda s krmilnikom HomeController je naslednja:

Ko se uporabnik uspešno registrira, se pošljejo 3 sporočila z različnimi temami, nato pa jih naročnik posluša.

Ko se CAP začne, bo ustvaril privzeto skupino potrošnikov, če več potrošnikov iste skupine potrošnikov porabi isto sporočilo o temi,Usmrčen bo le en potrošnik。 Nasprotno,Če so potrošniki vsi v različnih skupinah potrošnikov, so vsi potrošniki usmrčeni

Ustvarjanje novega .NET Core konzolnega projekta, kot naročnik (potrošnik) ali sklicevanje na paket, je mogoče nadzorno ploščo prezreti.

Če je v krmilniku, dodajte [CapSubscribe("")] neposredno za naročnino na ustrezna sporočila.

Če vaša metoda ni v krmilniku, mora razred, na katerega ste naročeni, podedovati ICapSubscribe in nato dodati oznako [CapSubscribe("")].

Koda je naslednja:

Odprite naročniški odjemalec in poskusite dostopati do http://localhost:28116/Home/UserRegister za pošiljanje sporočil, učinek je naslednji:



Tako konzola kot sprejemnik krmilnika se sprožita, kot je prikazano na spodnji sliki:



Poskusite ročno vnesti izjemo v metodo prejemanja sporočila, koda je naslednja:

CAP bo samodejno ponovno poskusil metodo,Število ponovnih poskusov po neuspehu je privzeto 50, interval ponovnih poskusov po neuspehu pa 60 sekund, kot je prikazano na spodnji sliki:



Okvir ne more biti 100 % prepričan, da je sporočilo izvedeno samo enkratZato v nekaterih ključnih scenarijih sporočilna stran posveča pozornost poslovnemu deduplikaciji v procesu implementacije metode.

Težave z idempotentnostjo vmesnikov
https://www.itsvse.com/thread-6010-1-1.html

Na koncu priložite izvorno kodo:

Turisti, če želite videti skrito vsebino te objave, prosimOdgovoriti






Prejšnji:CSV spletna pretvorba Markdown sintakse
Naslednji:HttpClient POST neposredno za pošiljanje zahtev za stiskanje bajtnih bajtov (gzip)
Objavljeno 18. 3. 2021 ob 18:11:20 |
Pridi in si oglej, hvala, ker si delil
Objavljeno 22. 9. 2021 ob 20:42:18 |
Nauči se učiti...
Objavljeno 31. 12. 2021 ob 15:08:21 |
Učenje
Zelo dobro, zelo lepo
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com