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。
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:
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:
Fiók hozzáadása is hiányzik, kérjük, lásd a következő címet:
É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.
Végül csatoljuk a forráskódot:
Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlek Válasz
|