Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 57382|Svar: 3

[ASP.NET] ASP.NET Core (fem) baseras på CAP-distribuerade transaktioner

[Kopiera länk]
Publicerad den 2021-3-17 18:12:50 | | | |
CAP-principer

CAP-principen, även känd som CAP-satsen, syftar på konsistens, tillgänglighet och partitionstolerans i ett distribuerat system. CAP-principen säger att dessa tre element endast kan uppnå två punkter samtidigt.Det är omöjligt att ta alla tre samtidigt

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

Kärnan i CAP-principen är antingen AP, CP eller AC, men det finns ingen CAP. Om det inte finns någon kopia av data i ett distribuerat system måste systemet uppfylla villkoret för stark konsistens, eftersom det bara finns en unik data, det kommer inte att finnas någon datainkonsistens, vid denna tidpunkt finns de två elementen C och P, men om systemet har ett nätverkspartitionsvillkor eller driftstopp kommer det oundvikligen att leda till att viss data blir otillgänglig, och tillgänglighetsvillkoret kan inte uppfyllas, det vill säga CP-systemet erhålls i detta fall, menCAP kan inte uppfyllas samtidigt

Recension:

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

ASP.NET Core (iii) Skapa instanser dynamiskt med hjälp av ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Starta om applikationen via kod
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) använder Redis-cachelagring
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP är en händelsebuss och implementation i ett distribuerat system (SOA, MicroService).Slutlig konsekvens(Distributed Transactions) är ett öppen källkodsbibliotek för C# som är lättviktigt, högpresterande och lätt att använda.

GitHub-adress:Inloggningen med hyperlänken är synlig.

Dotnet CAP har alla funktioner som Event Bus, och CAP erbjuder ett mer strömlinjeformat sätt att hantera publicering/prenumeration i EventBus.

MediatR är ett pågående ramverk för prenumeration och publicering av meddelanden som tillhandahåller Skicka-metoden för publicering till en enda hanterare och Publicer-metoden för publicering till flera hanterare, vilket är mycket bekvämt att använda. För närvarande är .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 och andra versioner, som kan användas över plattformar.

ASP.NET Core använder MediatR-mellanliggande modellen
https://www.itsvse.com/thread-9272-1-1.html

Arkitekturförhandsvisning



CAP stöder meddelandeköer såsom Kafka, RabbitMQ, AzureServiceBus, AmazonSQS med flera, och CAP tillhandahåller tillägg för SQL Server, MySql, PostgreSQL och MongoDB som databaslagring.

Den här artikeln använder RabbitMQ och SQL Server som meddelandeköer och lagring.

Installera RabbitMQ

För specifika monteringsguider, vänligen se:

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

【Practice】RabbitMQ installerar webbhanteringspluginet
https://www.itsvse.com/thread-4631-1-1.html
Att lägga till ett konto utelämnas också, vänligen se:

【Practice】rabbitMQ console för att lägga till kontoinformation
https://www.itsvse.com/thread-4655-1-1.html
Jag lade till testkontot och taket för Virtual Hosts själv, som visas nedan:



Annars blir felet följande:

ACCESS_REFUSED - Inloggning nekades med autentiseringsmekanismen PLAIN. För detaljer, se mäklarens loggfil.

Ingen av de angivna slutpunkterna var nåbar.

.NET Core integrerar CAP

Först, skapa ett nytt ASP.NET Core-projekt som är både avsändare och mottagare. Använd nuget-kommandot för att installera paketet så här:

Vid uppstart, konfigurera tjänstemetoden ConfigureServices enligt följande:

Du kan besöka webbplatsen /cap-adressen för att se instrumentpanelen som visas nedan:



Databeständighet: Cap kommer att göra detAutomatisk skapelse"Publicerad" och "Mottagen" är två lokala databastabeller

SKAPA TABELL [cap]. [Publicerad] (
        [ID] [bigint] INTE NULL,
        [Version] [nvarchar] (20) INTE NULL,
        [Namn] [nvarchar] (200) INTE NULL,
        [Innehåll] [nvarchar] (max) NULL,
        [Försöker tillbaka] [int] INTE NULL,
        [Tillagd] [datetime2] (7) INTE NULL,
        [UtlösesAt] [datetime2] (7) NULL,
        [StatusNamn] [nvarchar] (50) INTE NULL,
BEGRÄNSNING [PK_cap. Publicerad] PRIMÄRNYCKEL KLUSTRADE
(
        [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]
KÖR
SKAPA TABELL [cap]. [Mottaget] (
        [ID] [bigint] INTE NULL,
        [Version] [nvarchar] (20) INTE NULL,
        [Namn] [nvarchar] (200) INTE NULL,
        [Grupp] [nvarchar] (200) NULL,
        [Innehåll] [nvarchar] (max) NULL,
        [Försöker tillbaka] [int] INTE NULL,
        [Tillagd] [datetime2] (7) INTE NULL,
        [UtlösesAt] [datetime2] (7) NULL,
        [StatusNamn] [nvarchar] (50) INTE NULL,
BEGRÄNSNING [PK_cap. Mottaget] PRIMÄRNYCKEL KLUSTRADE
(
        [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]
KÖR


HomeController-kontrollermetoden är som följer:

När användaren registrerar sig framgångsrikt skickas tre meddelanden med olika ämnen, och prenumeranten tar emot dem.

När CAP startar kommer den att skapa en standardkonsumentgrupp, om flera konsumenter av samma konsumentgrupp konsumerar samma ämnesmeddelande,Endast en konsument kommer att avrättas。 Tvärtom,Om konsumenterna alla tillhör olika konsumentgrupper är alla konsumenter exekverade

Att skapa ett nytt .NET Core-konsolprojekt, som abonnent (konsument), eller genom att referera till paketet, kan dashboarden ignoreras.

Om det finns i Controller, lägg till [CapSubscribe("")] direkt för att prenumerera på relevanta meddelanden.

Om din metod inte finns i Controller, måste klassen du prenumererar på ärva ICapSubscribe och sedan lägga till taggen [CapSubscribe("")].

Koden är följande:

Öppna prenumerationsklienten och försök komma åt http://localhost:28116/Home/UserRegister för att skicka meddelanden, effekten är följande:



Både konsolen och kontrollmottagaren aktiveras, som visas i figuren nedan:



Försök att manuellt lägga ett undantag i mottagarmeddelandemetoden, koden är följande:

CAP kommer automatiskt att försöka metoden igen,Antalet försök efter misslyckande är som standard 50, och intervallet efter misslyckande är 60 sekunder som standard, som visas i figuren nedan:



Ramverket kan inte vara 100 % säkert på att meddelandet bara körs en gångDärför uppmärksammar meddelandesidan i vissa nyckelscenarier affärsdeduplicering i processen för metodimplementering.

Gränssnittsproblem med idempotens
https://www.itsvse.com/thread-6010-1-1.html

Slutligen, bifoga källkoden:

Turister, om ni vill se det dolda innehållet i detta inlägg, snällaSvar






Föregående:CSV-onlinekonvertering av Markdown-syntax
Nästa:HttpClient POST direkt för att skicka bytebyte (gzip) komprimeringsförfrågningar
Publicerad den 2021-3-18 18:11:20 |
Kom och titta, tack för att du delade med dig
Publicerad den 2021-9-22 20:42:18 |
Lär dig att lära dig...
Publicerad den 2021-12-31 15:08:21 |
Lärande
Mycket bra, mycket fint
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com