Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 57382|Svar: 3

[ASP.NET] ASP.NET Core (fem) er baseret på CAP-distribuerede transaktioner

[Kopier link]
Opslået den 17-3-2021 kl. 18:12:50 | | | |
CAP-principper

CAP-princippet, også kendt som CAP-sætningen, refererer til konsistens, tilgængelighed og partitionstolerance i et distribueret system. CAP-princippet siger, at disse tre elementer kun kan opnå to punkter på samme tid.Det er umuligt at tage alle tre på samme tid

2PC &&&3PC af distribuerede transaktioner
https://www.itsvse.com/thread-9591-1-1.html

Essensen af CAP-princippet er enten AP, CP eller AC, men der findes ikke noget CAP. Hvis der ikke findes en kopi af dataene i et distribueret system, skal systemet opfylde den stærke konsistensbetingelse, fordi der kun er en unik data, der vil ikke være nogen datainkonsistens, på dette tidspunkt er de to elementer C og P til stede, men hvis systemet har en netværkspartitionsbetingelse eller nedetid, vil det uundgåeligt føre til, at nogle data er utilgængelige, og tilgængelighedsbetingelsen kan ikke opfyldes, det vil sige, CP-systemet opnås i dette tilfælde, menCAP kan ikke opfyldes samtidig

Anmeldelse:

ASP.NET Core(4)-filter, samlet ModelState-modelvalidering
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Opret dynamisk instanser ved hjælp af ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Genstart applikationen ved at kode
https://www.itsvse.com/thread-9480-1-1.html

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


DotNetCore.CAP

CAP er en eventbus og implementering i et distribueret system (SOA, MicroService).Endelig konsistens(Distributed Transactions) er et open source C#-bibliotek, der er letvægts, højtydende og let at bruge.

GitHub-adresse:Hyperlink-login er synlig.

Dotnet CAP har alle funktionerne fra Event Bus, og CAP giver en mere strømlinet måde at håndtere publicering/abonnement i EventBus.

MediatR er et in-process beskedabonnements- og publiceringsframework, der tilbyder Send-metoden til udgivelse til en enkelt handler og Publicer-metoden til publicering til flere håndterere, hvilket er meget praktisk at bruge. I øjeblikket er .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 og andre versioner, som kan bruges på tværs af platforme.

ASP.NET Core bruger MediatR-mellemledsmodellen
https://www.itsvse.com/thread-9272-1-1.html

Arkitekturforhåndsvisning



CAP understøtter beskedkøer som Kafka, RabbitMQ, AzureServiceBus, AmazonSQS osv., og CAP tilbyder udvidelser til SQL Server, MySql, PostgreSQL og MongoDB som databaselagring.

Denne artikel bruger RabbitMQ og SQL Server som beskedkøer og lagring.

Installer RabbitMQ

For specifikke installationsvejledninger, henvises til:

【Practical Combat】RabbitMQ installationsvejledning under Windows
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ installerer web management plugin'et
https://www.itsvse.com/thread-4631-1-1.html
Tilføjelse af en konto er også udeladt, henvises til:

【Practice】rabbitMQ console til at tilføje kontoinformation
https://www.itsvse.com/thread-4655-1-1.html
Jeg tilføjede selv testkontoen og loftet for virtuelle værter, som vist nedenfor:



Ellers vil fejlen være som følger:

ACCESS_REFUSED - Login blev nægtet ved hjælp af autentificeringsmekanismen PLAIN. For detaljer, se mæglerens logfil.

Ingen af de angivne endepunkter var tilgængelige

.NET Core integrerer CAP

Først skal du oprette et nyt ASP.NET Core-projekt, som både er afsender og modtager. Brug nuget-kommandoen til at installere pakken sådan her:

Ved opstart konfigureres servicemetoden ConfigureServices som følger:

Du kan besøge hjemmesiden /cap-adressen for at se dashboardet som vist nedenfor:



Datapersistens: Cap vilAutomatisk oprettelse"Publiceret" og "Modtaget" er to lokale databasetabeller

OPRET TABEL [cap]. [Udgivet] (
        [Id] [bigint] IKKE NULL,
        [Version] [nvarchar] (20) IKKE NULL,
        [Navn] [nvarchar] (200) IKKE NULL,
        [Indhold] [nvarchar] (max) NULL,
        [Forsøger igen] [int] IKKE NULL,
        [Tilføjet] [datetime2] (7) IKKE NULL,
        [UdløberAt] [datetime2] (7) NULL,
        [StatusNavn] [nvarchar] (50) IKKE NULL,
BEGRÆNSNING [PK_cap. Publiceret] PRIMÆR NØGLE KLYNGET
(
        [Id] ASC
)MED (PAD_INDEX = SLUKKET, STATISTICS_NORECOMPUTE = SLUKKET, IGNORE_DUP_KEY = SLUKKET, ALLOW_ROW_LOCKS = TÆNDT, ALLOW_PAGE_LOCKS = TÆNDT) PÅ [PRIMÆRT]
) PÅ [PRIMÆR] TEXTIMAGE_ON [PRIMÆR]
OPRET TABEL [cap]. [Modtaget] (
        [Id] [bigint] IKKE NULL,
        [Version] [nvarchar] (20) IKKE NULL,
        [Navn] [nvarchar] (200) IKKE NULL,
        [Gruppe] [nvarchar] (200) NULL,
        [Indhold] [nvarchar] (max) NULL,
        [Forsøger igen] [int] IKKE NULL,
        [Tilføjet] [datetime2] (7) IKKE NULL,
        [UdløberAt] [datetime2] (7) NULL,
        [StatusNavn] [nvarchar] (50) IKKE NULL,
BEGRÆNSNING [PK_cap. Modtaget] PRIMÆRNØGLE KLYNGET
(
        [Id] ASC
)MED (PAD_INDEX = SLUKKET, STATISTICS_NORECOMPUTE = SLUKKET, IGNORE_DUP_KEY = SLUKKET, ALLOW_ROW_LOCKS = TÆNDT, ALLOW_PAGE_LOCKS = TÆNDT) PÅ [PRIMÆRT]
) PÅ [PRIMÆR] TEXTIMAGE_ON [PRIMÆR]


HomeController-controller-metoden er som følger:

Når brugeren registrerer sig succesfuldt, vil der blive sendt 3 beskeder med forskellige emner, og derefter vil abonnenten modtage dem.

Når CAP starter, vil den oprette en standard forbrugergruppe, hvis flere forbrugere af samme forbrugergruppe forbruger det samme emnebudskab,Kun én forbruger vil blive henrettet。 Tværtimod,Hvis forbrugerne alle er i forskellige forbrugergrupper, bliver alle forbrugere henrettet

Oprettelse af et nyt .NET Core-konsolprojekt som abonnent (forbruger) eller ved at referere til pakken, kan dashboardet ignoreres.

Hvis det er i controlleren, tilføj [CapSubscribe("")] direkte for at abonnere på de relevante beskeder.

Hvis din metode ikke er i Controlleren, skal den klasse, du abonnerer på, arve ICapSubscribe og derefter tilføje tagget [CapSubscribe("")].

Koden er som følger:

Åbn abonnementsklienten og prøv at få adgang til http://localhost:28116/Home/UserRegister for at sende beskeder, effekten er som følger:



Både konsollen og controller-modtageren aktiveres, som vist i figuren nedenfor:



Prøv manuelt at kaste en undtagelse i den modtagende beskedmetode, koden er som følger:

CAP vil automatisk prøve metoden igen,Antallet af forsøg efter fejl er som standard 50, og intervallet efter fejl er som standard 60 sekunder, som vist i figuren nedenfor:



Frameworket kan ikke være 100% sikker på, at beskeden kun udføres én gangDerfor lægger beskedsiden i nogle nøglescenarier vægt på forretningsdeduplikering i processen med metodeimplementering.

Interface-idempotensproblemer
https://www.itsvse.com/thread-6010-1-1.html

Endelig vedhæft kildekoden:

Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venligSvar






Tidligere:CSV online konvertering af Markdown-syntaks
Næste:HttpClient POST direkte for at sende byte byte (gzip) komprimeringsanmodninger
Opslået den 18-3-2021 18:11:20 |
Kom og kig, tak fordi du delte
Opslået den 22-9-2021 kl. 20:42:18 |
Lær at lære...
Opslået den 31-12-2021 15:08:21 |
Læring
Meget godt, meget flot
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com