Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 57382|Svare: 3

[ASP.NET] ASP.NET Core (fem) er basert på CAP-distribuerte transaksjoner

[Kopier lenke]
Publisert 17.03.2021 kl. 18:12:50 | | | |
CAP-prinsipper

CAP-prinsippet, også kjent som CAP-teoremet, refererer til konsistens, tilgjengelighet og partisjonstoleranse i et distribuert system. CAP-prinsippet sier at disse tre elementene kun kan oppnå to punkter samtidig.Det er umulig å ta alle tre samtidig

2PC &&&3PC av distribuerte transaksjoner
https://www.itsvse.com/thread-9591-1-1.html

Kjernen i CAP-prinsippet er enten AP, CP eller AC, men det finnes ingen CAP. Hvis det ikke finnes en kopi av dataene i et distribuert system, må systemet oppfylle den sterke konsistensbetingelsen, fordi det kun finnes unike data, det vil ikke være noen datainkonsistens, på dette tidspunktet er de to elementene C og P til stede, men hvis systemet har en nettverksoppdeling eller nedetid, vil det uunngåelig føre til at noen data blir utilgjengelige, og tilgjengelighetsbetingelsen kan ikke oppfylles, det vil si at CP-systemet oppnås i dette tilfellet, menCAP kan ikke tilfredsstilles samtidig

Anmeldelse:

ASP.NET Core(4)-filteret enhetlig ModelState-modellvalidering
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Opprett instanser dynamisk ved hjelp av ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Start applikasjonen på nytt via kode
https://www.itsvse.com/thread-9480-1-1.html

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


DotNetCore.CAP

CAP er en hendelsesbuss og implementering i et distribuert system (SOA, MicroService).Endelig konsistens(Distributed Transactions) er et åpen kildekode C#-bibliotek som er lett, høyytelses og lett å bruke.

GitHub-adresse:Innloggingen med hyperkoblingen er synlig.

Dotnet CAP har alle funksjonene til Event Bus, og CAP gir en mer strømlinjeformet måte å håndtere publisering/abonnement i EventBus.

MediatR er et pågående rammeverk for meldingsabonnement og publisering som tilbyr Send-metoden for publisering til én handler og Publish-metoden for publisering til flere håndterere, noe som er svært praktisk å bruke. For øyeblikket er .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 og andre versjoner, som kan brukes på tvers av plattformer.

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

Arkitekturforhåndsvisning



CAP støtter meldingskøer som Kafka, RabbitMQ, AzureServiceBus, AmazonSQS osv., og CAP tilbyr utvidelser for SQL Server, MySql, PostgreSQL og MongoDB som databaselagring.

Denne artikkelen bruker RabbitMQ og SQL Server som meldingskøer og lagring.

Installer RabbitMQ

For spesifikke installasjonsveiledninger, vennligst se til:

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

【Practice】RabbitMQ installerer web management pluginen
https://www.itsvse.com/thread-4631-1-1.html
Å legge til konto er også utelatt, vennligst se:

【Practice】rabbitMQ console for å legge til kontoinformasjon
https://www.itsvse.com/thread-4655-1-1.html
Jeg la til testkontoen og begrenser Virtual Hosts selv, som vist nedenfor:



Ellers vil feilen være som følger:

ACCESS_REFUSED - Innlogging ble nektet ved å bruke autentiseringsmekanismen PLAIN. For detaljer, se meglerens loggfil.

Ingen av de angitte endepunktene var tilgjengelige

.NET Core integrerer CAP

Først, opprett et nytt ASP.NET Core-prosjekt som både er avsender og mottaker. Bruk nuget-kommandoen for å installere pakken slik:

Ved oppstart, konfigurer tjenestemetoden ConfigureServices som følger:

Du kan besøke nettsiden /cap-adressen for å se dashbordet som vist nedenfor:



Datapersistens: Cap vilAutomatisk opprettelse"Publisert" og "Mottatt" er to lokale databasetabeller

CREATE TABLE [cap]. [Publisert] (
        [ID] [bigint] IKKE NULL,
        [Versjon] [nvarchar] (20) IKKE NULL,
        [Navn] [nvarchar] (200) IKKE NULL,
        [Innhold] [nvarchar] (max) NULL,
        [Prøver igjen] [int] IKKE NULL,
        [Lagt til] [datetime2] (7) IKKE NULL,
        [UtløperAtt] [datetime2] (7) NULL,
        [StatusNavn] [nvarchar] (50) IKKE NULL,
BEGRENSNING [PK_cap. Publisert] PRIMÆRNØKKEL KLYNGET
(
        [Id] ASC
)MED (PAD_INDEX = AV, STATISTICS_NORECOMPUTE = AV, IGNORE_DUP_KEY = AV, ALLOW_ROW_LOCKS = PÅ, ALLOW_PAGE_LOCKS = PÅ) PÅ [PRIMÆR]
) PÅ [PRIMÆR] TEXTIMAGE_ON [PRIMÆR]
CREATE TABLE [cap]. [Mottatt] (
        [ID] [bigint] IKKE NULL,
        [Versjon] [nvarchar] (20) IKKE NULL,
        [Navn] [nvarchar] (200) IKKE NULL,
        [Gruppe] [nvarchar] (200) NULL,
        [Innhold] [nvarchar] (max) NULL,
        [Prøver igjen] [int] IKKE NULL,
        [Lagt til] [datetime2] (7) IKKE NULL,
        [UtløperAtt] [datetime2] (7) NULL,
        [StatusNavn] [nvarchar] (50) IKKE NULL,
BEGRENSNING [PK_cap. Mottatt] PRIMÆRNØKKEL KLYNGET
(
        [Id] ASC
)MED (PAD_INDEX = AV, STATISTICS_NORECOMPUTE = AV, IGNORE_DUP_KEY = AV, ALLOW_ROW_LOCKS = PÅ, ALLOW_PAGE_LOCKS = PÅ) PÅ [PRIMÆR]
) PÅ [PRIMÆR] TEXTIMAGE_ON [PRIMÆR]


HomeController-kontrollermetoden er som følger:

Når brukeren registrerer seg, vil 3 meldinger med ulike temaer bli sendt, og deretter vil abonnenten konsumere dem.

Når CAP starter, vil den opprette en standard forbrukergruppe, hvis flere brukere av samme forbrukergruppe konsumerer samme temamelding,Kun én forbruker vil bli henrettet。 Tvert imot,Hvis alle forbrukerne tilhører ulike forbrukergrupper, blir alle forbrukere utført

Ved å opprette et nytt .NET Core-konsollprosjekt, som abonnent (forbruker), eller ved å referere til pakken, kan dashbordet ignoreres.

Hvis det er i kontrolleren, legg til [CapSubscribe("")] direkte for å abonnere på de relevante meldingene.

Hvis metoden din ikke er i Controller, må klassen du abonnerer på arve ICapSubscribe og deretter legge til taggen [CapSubscribe("")].

Koden er som følger:

Åpne abonnementsklienten og prøv å få tilgang til http://localhost:28116/Home/UserRegister for å sende meldinger, effekten er som følger:



Både konsollen og kontrollermottakeren utløses, som vist i figuren nedenfor:



Prøv å legge inn et unntak manuelt i mottakende meldingsmetode, koden er som følger:

CAP vil automatisk prøve metoden på nytt,Antall forsøk etter feil er som standard 50, og intervallet etter feil er 60 sekunder som standard, som vist i figuren nedenfor:



Rammeverket kan ikke være 100 % sikkert på at meldingen bare kjøres én gangDerfor er meldingssiden i noen nøkkelscenarier oppmerksom på forretningsdeduplisering i prosessen med metodimplementering.

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

Til slutt, legg ved kildekoden:

Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snillSvare






Foregående:CSV online-konvertering av Markdown-syntaks
Neste:HttpClient POST direkte for å sende byte byte (gzip) komprimeringsforespørsler
Publisert 18.03.2021 18:11:20 |
Kom og ta en titt, takk for at du delte
Publisert 2021-9-22 20:42:18 |
Lær å lære...
Publisert 31.12.2021 15:08:21 |
Læring
Veldig bra, veldig fint
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com