Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 57382|Antwoord: 3

[ASP.NET] ASP.NET Core (vijf) is gebaseerd op CAP-gedistribueerde transacties

[Link kopiëren]
Geplaatst op 17-3-2021 18:12:50 | | | |
CAP-principes

Het CAP-principe, ook bekend als de CAP-stelling, verwijst naar de consistentie, beschikbaarheid en partitietolerantie in een gedistribueerd systeem. Het GLB-principe stelt dat deze drie elementen slechts twee punten tegelijk kunnen bereiken.Het is onmogelijk om alle drie tegelijk te nemen

2PC &&&3PC van gedistribueerde transacties
https://www.itsvse.com/thread-9591-1-1.html

De essentie van het CAP-principe is ofwel AP, CP of AC, maar er is geen CAP. Als er geen kopie van de data is in een gedistribueerd systeem, moet het systeem voldoen aan de sterke consistentievoorwaarde, omdat er alleen een unieke data is, zal er geen gegevensinconsistentie zijn; op dit moment zijn de twee elementen C en P aanwezig, maar als het systeem een netwerkpartitievoorwaarde of downtime heeft, zal dit onvermijdelijk leiden tot ontoegankelijke data, en kan de beschikbaarheidsvoorwaarde niet worden vervuld, dat wil zeggen, het CP-systeem wordt in dit geval verkregen, maarCAP kan niet tegelijkertijd worden bevredigd

Recensie:

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

ASP.NET Core (iii) Maakt dynamisch instanties aan met behulp van ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Herstart de applicatie via code
https://www.itsvse.com/thread-9480-1-1.html

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


DotNetCore.CAP

CAP is een eventbus en implementatie in een gedistribueerd systeem (SOA, MicroService).Eindconsistentie(Distributed Transactions) is een open-source C#-bibliotheek die lichtgewicht, hoogpresterend en gebruiksvriendelijk is.

GitHub-adres:De hyperlink-login is zichtbaar.

Dotnet CAP heeft alle functies van Event Bus, en CAP biedt een meer gestroomlijnde manier om publicatie/abonnement in EventBus te beheren.

MediatR is een in-process berichtabonnements- en publicatieframework dat de Verzendmethode biedt voor publiceren naar één handler en de Publishing-methode voor publiceren naar meerdere handlers, wat zeer handig is in gebruik. Momenteel is .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 en andere versies, die op verschillende platforms kunnen worden gebruikt.

ASP.NET Core gebruikt het MediatR-tussenliggende model
https://www.itsvse.com/thread-9272-1-1.html

Architectuurvoorbeeld



CAP ondersteunt berichtwachtrijen zoals Kafka, RabbitMQ, AzureServiceBus, AmazonSQS, enzovoort, en CAP biedt extensies voor SQL Server, MySql, PostgreSQL en MongoDB als databaseopslag.

Dit artikel gebruikt RabbitMQ en SQL Server als berichtwachtrijen en opslag.

Installeer RabbitMQ

Voor specifieke installatietutorials, verwijs je naar:

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

【Practice】RabbitMQ installeert de webbeheer-plugin
https://www.itsvse.com/thread-4631-1-1.html
Het toevoegen van een account is ook weggelaten, verwijs alstublieft naar:

【Practice】rabbitMQ console om accountinformatie toe te voegen
https://www.itsvse.com/thread-4655-1-1.html
Ik heb zelf het testaccount toegevoegd en Virtual Hosts begrensd, zoals hieronder te zien is:



Anders zal de fout als volgt zijn:

ACCESS_REFUSED - Inloggen werd geweigerd met behulp van het authenticatiemechanisme PLAIN. Voor details, zie het broker-logbestand.

Geen van de opgegeven eindpunten was bereikbaar

.NET Core integreert CAP

Maak eerst een nieuw ASP.NET Core-project aan dat zowel de zender als de ontvanger is. Gebruik het nuget-commando om het pakket zo te installeren:

Configureer bij het opstarten de servicemethode ConfigureServices als volgt:

Je kunt de website /cap address bezoeken om het dashboard hieronder te bekijken:



Datapersistentie: Cap zalAutomatische creatie"Gepubliceerd" en "Ontvangen" zijn twee lokale databasetabellen

CREATE TABLE [cap] aan. [Gepubliceerd] (
        [Id] [bigint] NIET NULL,
        [Versie] [nvarchar] (20) NIET NULL,
        [Naam] [nvarchar] (200) NIET NUL,
        [Inhoud] [nvarchar] (max) NULL,
        [Probeert opnieuw] [int] NIET NULL,
        [Toegevoegd] [datetime2] (7) NIET NIETIG,
        [VerlooptAt] [datetime2] (7) NULL,
        [StatusNaam] [nvarchar] (50) NIET NIET,
BEPERKING [PK_cap. Gepubliceerd] PRIMAIRE SLEUTEL GECLUSTERD
(
        [Id] ASC
)MET (PAD_INDEX = UIT, STATISTICS_NORECOMPUTE = UIT, IGNORE_DUP_KEY = UIT, ALLOW_ROW_LOCKS = AAN, ALLOW_PAGE_LOCKS = AAN) AAN [PRIMAIR]
) OP [PRIMAIR] TEXTIMAGE_ON [PRIMAIR]
GA
CREATE TABLE [cap] aan. [Ontvangen] (
        [Id] [bigint] NIET NULL,
        [Versie] [nvarchar] (20) NIET NULL,
        [Naam] [nvarchar] (200) NIET NUL,
        [Groep] [nvarchar] (200) NULL,
        [Inhoud] [nvarchar] (max) NULL,
        [Probeert opnieuw] [int] NIET NULL,
        [Toegevoegd] [datetime2] (7) NIET NIETIG,
        [VerlooptAt] [datetime2] (7) NULL,
        [StatusNaam] [nvarchar] (50) NIET NIET,
BEPERKING [PK_cap. Ontvangen] PRIMAIRE SLEUTEL GECLUSTERD
(
        [Id] ASC
)MET (PAD_INDEX = UIT, STATISTICS_NORECOMPUTE = UIT, IGNORE_DUP_KEY = UIT, ALLOW_ROW_LOCKS = AAN, ALLOW_PAGE_LOCKS = AAN) AAN [PRIMAIR]
) OP [PRIMAIR] TEXTIMAGE_ON [PRIMAIR]
GA


De HomeController-controllermethode is als volgt:

Wanneer de gebruiker zich succesvol registreert, worden er 3 berichten met verschillende onderwerpen verzonden, waarna de abonnee ze consumeert.

Wanneer CAP begint, zal het een standaard consumentengroep aanmaken, als meerdere consumenten van dezelfde consumentengroep hetzelfde onderwerpbericht consumeren,Slechts één consument wordt geëxecuteerd。 Integendeel,Als de consumenten allemaal in verschillende consumentengroepen zitten, worden alle consumenten geëxecuteerd

Het aanmaken van een nieuw .NET Core-consoleproject, als abonnee (consument), of het verwijzen naar het pakket, kan het dashboard worden genegeerd.

Als het in de Controller staat, voeg dan [CapSubscribe("")] direct toe om je te abonneren op de relevante berichten.

Als jouw methode niet in de Controller zit, moet de klasse waarop je je abonneert ICapSubscribe erven en vervolgens de tag [CapSubscribe("")] toevoegen.

De code is als volgt:

Open de abonnementsclient en probeer http://localhost:28116/Home/UserRegister te bereiken om berichten te verzenden, het effect is als volgt:



Zowel de console als de controllerontvanger worden geactiveerd, zoals weergegeven in de onderstaande figuur:



Probeer handmatig een uitzondering te gooien in de ontvangende berichtmethode, de code is als volgt:

CAP zal de methode automatisch opnieuw proberen,Het aantal herpogingen na een mislukking is standaard 50, en het herpogingsinterval na een mislukking is standaard 60 seconden, zoals getoond in de onderstaande figuur:



Het framework kan niet 100% zeker zijn dat het bericht slechts één keer wordt uitgevoerdDaarom let de berichtzijde in sommige belangrijke scenario's op business deduplicatie tijdens het proces van methode-implementatie.

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

Voeg tenslotte de broncode bij:

Toeristen, als jullie de verborgen inhoud van dit bericht willen zien, alsjeblieftAntwoord






Vorig:CSV online conversie van Markdown-syntaxis
Volgend:HttpClient POST direct om bytebyte (gzip) compressieverzoeken te verzenden
Geplaatst op 18-3-2021 18:11:20 |
Kom eens kijken, bedankt voor het delen
Geplaatst op 22-9-2021 20:42:18 |
Leer leren...
Geplaatst op 31-12-2021 15:08:21 |
Leren
Heel goed, heel mooi
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com