Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 57382|Válasz: 3

[ASP.NET] ASP.NET Core (öt) CAP elosztott tranzakciókon alapul

[Linket másol]
Közzétéve: 2021-3-17 18:12:50 | | | |
CAP elvek

A CAP elv, más néven CAP tétel, az elosztott rendszerben a konzisztenciára, elérhetőségre és partíciós tűrésre utal. A CAP elv szerint ez a három elem egyszerre csak két pontot érhet el.Lehetetlen mindhármat egyszerre bevenni

2PC &&&3PC elosztott tranzakciók
https://www.itsvse.com/thread-9591-1-1.html

A CAP elv lényege vagy AP, CP vagy AC, de nincs CAP. Ha egy elosztott rendszerben nincs másolat az adatról, akkor a rendszernek teljesítenie kell az erős konzisztenciás feltételt, mivel csak egy egyedi adat létezik, nem lesz adatinkonzisztencia; ekkor jelen vannak a C és P elem, de ha a rendszernek hálózati partíciós feltétele vagy leállásideje van, az elkerülhetetlenül ahhoz vezet, hogy egyes adatok elérhetetlenné válnak, és a rendelkezésre állási feltétel nem teljesül, vagyis ebben az esetben a CP rendszer megszerzhető, deA CAP egyszerre nem elégíthető ki

Szemle:

ASP.NET Core(4) szűrő egységes ModelState modellvalidáció
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dinamikusan hozz létre példányokat az ActivatorUtilities használatával
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Újraindítsa az alkalmazást kód szerint
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) Redis gyorsítótárat használ
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

A CAP egy eseménybusz és megvalósítás egy elosztott rendszerben (SOA, MicroService).Végső következetesség(Distributed Transactions) egy nyílt forráskódú C# könyvtár, amely könnyű, nagy teljesítményű és könnyen használható.

GitHub cím:A hiperlink bejelentkezés látható.

A Dotnet CAP rendelkezik az Event Bus összes funkciójával, és a CAP egyszerűbb módot kínál az EventBus-on történő kiadás/előfizetés kezelésére.

A MediatR egy folyamatban lévő üzenet-előfizetési és publikációs keretrendszer, amely a Send módszert biztosítja egyetlen kezelőre való publikálásra, valamint a Publish módszert több kezelő számára történő publikálásra, ami nagyon kényelmes a használata. Jelenleg .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 és más verziók, amelyek különböző platformokon is használhatók.

ASP.NET Core a MediatR közvetítő modellt használja
https://www.itsvse.com/thread-9272-1-1.html

Építészeti előnézet



A CAP támogatja az üzenetsorokat, mint a Kafka, RabbitMQ, AzureServiceBus, AmazonSQS stb., és a CAP bővítéseket kínál a SQL Server, MySql, PostgreSQL és MongoDB adatbázis-tárolásként.

Ez a cikk a RabbitMQ-t és az SQL Servert használja üzenetsorként és tárolásként.

Telepítsd a RabbitMQ-t

Konkrét telepítési oktatóanyagokért kérjük, lásd meg:

【Practical Combat】RabbitMQ telepítési tutorial Windows alatt
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ installs the web management plugin
https://www.itsvse.com/thread-4631-1-1.html
Fiók hozzáadása is hiányzik, kérjük, lásd a következő címet:

【Practice】rabbitMQ console to add account information
https://www.itsvse.com/thread-4655-1-1.html
Én magam adtam hozzá a tesztfiókot és a Virtuális Hostokat korlátoztam, ahogy alább látható:



Ellenkező esetben a hiba a következő lesz:

ACCESS_REFUSED - A bejelentkezést a PLAIN hitelesítési mechanizmussal elutasították. Részletekért lásd a brókernaplót.

A megadott végpontok egyike sem volt elérhető

A .NET Core integrálja a CAP-ot

Először hozz létre egy új ASP.NET Core projektet, amely egyszerre a feladó és a fogadó is. Használd a nuget parancsot a csomag telepítésére így:

Indításkor konfiguráljuk a ConfigureServices szolgáltatási módszert a következőképpen konfigurálni:

A weboldalon / cap címen láthatja meg a vezérlőpultot az alábbi módon:



Adatkitartás: A CapAutomatikus létrehozásA "Közzétett" és a "Megérkezett" két helyi adatbázis-tábla

CREATE TABLE [cap]. [Megjelent] (
        [Id] [bigint] NEM NULL,
        [Verzió] [nvarchar] (20) NEM NULL,
        [Név] [nvarchar] (200) NEM NULL,
        [Tartalom] [nvarchar] (max) NULL,
        [Ismétlések] [int] NEM NULL,
        [Hozzáadva] [datetime2] (7) NEM NULL,
        [Lejár] [datetime2] (7) NULL,
        [ÁllapotNév] [nvarchar] (50) NEM NULL,
KORLÁTOZÁS [PK_cap. Közzétéve] ELSŐDLEGES KULCS KLASZTEREZVE
(
        [Id] ASC
)AHOL (PAD_INDEX = KIKAPCSOLVA, STATISTICS_NORECOMPUTE = KI, IGNORE_DUP_KEY = KIKAPCSOLVA, ALLOW_ROW_LOCKS = BEKAPCSOLVA, ALLOW_PAGE_LOCKS = BEKAPCSOLVA) [ELSŐDLEGES SZINTEN]
) A [ELŐZMÉNY] TEXTIMAGE_ON [ELŐZMÉNY]
MENJ
CREATE TABLE [cap]. [Elfogadva] (
        [Id] [bigint] NEM NULL,
        [Verzió] [nvarchar] (20) NEM NULL,
        [Név] [nvarchar] (200) NEM NULL,
        [Csoport] [nvarchar] (200) NULL,
        [Tartalom] [nvarchar] (max) NULL,
        [Ismétlések] [int] NEM NULL,
        [Hozzáadva] [datetime2] (7) NEM NULL,
        [Lejár] [datetime2] (7) NULL,
        [ÁllapotNév] [nvarchar] (50) NEM NULL,
KORLÁTOZÁS [PK_cap. Megkapva] ELSŐDLEGES KULCS KLASZTEREZVE
(
        [Id] ASC
)AHOL (PAD_INDEX = KIKAPCSOLVA, STATISTICS_NORECOMPUTE = KI, IGNORE_DUP_KEY = KIKAPCSOLVA, ALLOW_ROW_LOCKS = BEKAPCSOLVA, ALLOW_PAGE_LOCKS = BEKAPCSOLVA) [ELSŐDLEGES SZINTEN]
) A [ELŐZMÉNY] TEXTIMAGE_ON [ELŐZMÉNY]
MENJ


A HomeController vezérlő módszer a következő:

Amikor a felhasználó sikeresen regisztrál, 3 különböző témájú üzenetet küldenek, majd az előfizető felfogja őket.

Amikor a CAP elindul, alapértelmezett fogyasztói csoportot hoz létre, ha ugyanazon fogyasztói csoportból több fogyasztó is használja ugyanazt a témát,Csak egy fogyasztót fognak végrehajtani。 Épp ellenkezőleg,Ha a fogyasztók mind különböző fogyasztói csoportokban vannak, minden fogyasztót kivégeznek

Egy új .NET Core konzolprojekt létrehozása, előfizetőként (fogyasztóként), vagy a csomag hivatkozása esetén a dashboard figyelmen kívül hagyható.

Ha a vezérlőben van, adj hozzá közvetlenül a [CapSubscribe("")] feliratkozáshoz, hogy feliratkozhass a releváns üzenetekre.

Ha a metódusod nincs a kontrollerben, akkor az előfizető osztálynak öröklinie kell az ICapSubscribe-et, majd hozzáadnia kell a [CapSubscribe("")] címkét.

A kódex a következő:

Nyisd meg az előfizetéses klienst, és próbálj meg elérni http://localhost:28116/Home/UserRegister üzenetküldéshez, a hatás a következő:



Mind a konzol, mind a vezérlő vevő aktiválódik, ahogy az alábbi ábrán látható:



Próbálj meg manuálisan egy kivételt dobni a fogadó üzenet metódusban, a kód a következő:

A CAP automatikusan újra megpróbálja a módszert,A sikertelenség utáni újrapróbálkozások száma alapértelmezés szerint 50, és a sikertelenség utáni újrapróbálkozási intervallum alapértelmezés szerint 60 másodperc, ahogy az alábbi ábrán látható:



A keretrendszer nem lehet 100%-ban biztos abban, hogy az üzenetet csak egyszer hajtják végreEzért néhány kulcsfontosságú esetben az üzenetoldal figyelmet fordít az üzleti deduplikációra a módszer megvalósítása során.

Interfész idempotencia problémái
https://www.itsvse.com/thread-6010-1-1.html

Végül csatoljuk a forráskódot:

Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlekVálasz






Előző:Markdown szintaxis CSV online átalakítása
Következő:A HttpClient POST közvetlenül a byte byte (gzip) tömörítési kérések küldéséhez
Közzétéve: 2021-3-18 18:11:20 |
Gyere, nézd meg, köszönöm, hogy megosztottad
Közzétéve: 2021-9-22 20:42:18 |
Tanulj meg...
Közzétéve: 2021-12-31 15:08:21 |
Tanulás
Nagyon jó, nagyon szép
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com