Princípy CAP
Princíp CAP, známy aj ako CAP veta, sa vzťahuje na konzistenciu, dostupnosť a toleranciu rozdelenia v distribuovanom systéme. Princíp CAP hovorí, že tieto tri prvky môžu dosiahnuť len dva body naraz.Nie je možné brať všetky tri naraz。
Podstatou princípu CAP je buď AP, CP alebo AC, ale CAP neexistuje. Ak v distribuovanom systéme nie je kópia dát, systém musí spĺňať podmienku silnej konzistencie, pretože ide len o jedinečné dáta, nebude žiadna nekonzistencia údajov, v tomto čase sú prítomné dva prvky C a P, ale ak má systém podmienku rozdelenia siete alebo výpadok, nevyhnutne to povedie k tomu, že niektoré dáta budú neprístupné a podmienka dostupnosti nemôže byť splnená, teda v tomto prípade sa dosiahne CP systém, aleCAP nemožno uspokojiť súčasne。
Revízia:
DotNetCore.CAP
CAP je zbernica udalostí a implementácia v distribuovanom systéme (SOA, MicroService).Konečná konzistencia(Distributed Transactions) je open-source C# knižnica, ktorá je ľahká, výkonná a ľahko použiteľná.
GitHub adresa:Prihlásenie na hypertextový odkaz je viditeľné.
Dotnet CAP má všetky funkcie Event Bus a CAP poskytuje prehľadnejší spôsob spracovania publikovania a prihlásenia sa do EventBusu.
MediatR je rámec pre predplatné a publikovanie správ v procese, ktorý poskytuje metódu Send pre publikovanie jednému handlerovi a metódu Publish pre publikovanie viacerým handlerom, čo je veľmi pohodlné na používanie. V súčasnosti .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 a ďalšie verzie, ktoré je možné používať naprieč platformami.
ASP.NET Core používa model sprostredkovateľa MediatR
https://www.itsvse.com/thread-9272-1-1.html Náhľad architektúry
CAP podporuje fronty správ ako Kafka, RabbitMQ, AzureServiceBus, AmazonSQS a podobne, a CAP poskytuje rozšírenia pre Sql Server, MySql, PostgreSQL a MongoDB ako databázové úložisko.
Tento článok používa RabbitMQ a SQL Server ako fronty správ a úložisko.
Nainštalujte RabbitMQ
Pre konkrétne inštalačné návody si pozrite na:
Pridanie účtu je tiež vynechané, prosím, pozrite si:
Testovací účet a obmedzenie virtuálnych hostiteľov som pridal sám, ako je uvedené nižšie:
Inak bude chyba nasledovná:
ACCESS_REFUSED - Prihlásenie bolo zamietnuté pomocou autentifikačného mechanizmu PLAIN. Podrobnosti nájdete v logfile makléra.
Žiadny zo špecifikovaných koncových bodov nebol dosiahnuteľný
.NET Core integruje CAP
Najprv vytvorte nový ASP.NET Core projekt, ktorý je zároveň odosielateľom aj prijímateľom. Použite príkaz nuget na inštaláciu balíka takto:
Pri štarte nakonfigurujte metódu služby ConfigureServices nasledovne:
Môžete navštíviť webovú stránku / cap adresu a pozrieť si dashboard, ako je uvedené nižšie:
Pretrvávanie dát: Cap budeAutomatické vytváranie"Publikované" a "Prijaté" sú dve lokálne databázové tabuľky
VYTVORIŤ TABUĽKU [cap]. [Publikované] ( [Id] [bigint] NIE NULL, [Verzia] [nvarchar] (20) NIE NULOVÁ, [Meno] [nvarchar] (200) NIE NULOVÁ, [Obsah] [nvarchar] (Max) NULL, [Skúša] [int] NIE NULL, [Pridané] [datetime2] (7) NIE NULL, [ExpiresAt] [datetime2] (7) NULL, [StatusName] [nvarchar] (50) NIE NULOVÁ, OBMEDZENIE [PK_cap. Publikované] PRIMÁRNY KĽÚČ ZOSKUPENÝ
( [Id] ASC )KDE (PAD_INDEX = VYPNUTÉ, STATISTICS_NORECOMPUTE = VYPNUTÉ, IGNORE_DUP_KEY = VYPNUTÉ, ALLOW_ROW_LOCKS = ZAPNUTÉ, ALLOW_PAGE_LOCKS = ZAPNUTÉ) ZAPNUTÉ [PRIMÁRNE] ) V [PRIMÁRKE] TEXTIMAGE_ON [PRIMÁRKY] CHOĎ VYTVORIŤ TABUĽKU [cap]. [Prijaté] ( [Id] [bigint] NIE NULL, [Verzia] [nvarchar] (20) NIE NULOVÁ, [Meno] [nvarchar] (200) NIE NULOVÁ, [Skupina] [nvarchar] (200) NULL, [Obsah] [nvarchar] (Max) NULL, [Skúša] [int] NIE NULL, [Pridané] [datetime2] (7) NIE NULL, [ExpiresAt] [datetime2] (7) NULL, [StatusName] [nvarchar] (50) NIE NULOVÁ, OBMEDZENIE [PK_cap. prijaté] PRIMÁRNY KĽÚČ ZOSKUPENÝ
( [Id] ASC )KDE (PAD_INDEX = VYPNUTÉ, STATISTICS_NORECOMPUTE = VYPNUTÉ, IGNORE_DUP_KEY = VYPNUTÉ, ALLOW_ROW_LOCKS = ZAPNUTÉ, ALLOW_PAGE_LOCKS = ZAPNUTÉ) ZAPNUTÉ [PRIMÁRNE] ) V [PRIMÁRKE] TEXTIMAGE_ON [PRIMÁRKY] CHOĎ
Metóda ovládača HomeController je nasledovná:
Keď sa používateľ úspešne zaregistruje, odošlú sa 3 správy s rôznymi témami, ktoré potom odberateľ spotrebuje.
Keď CAP začne, vytvorí predvolenú skupinu spotrebiteľov, ak viacerí spotrebitelia z tej istej skupiny konzumujú tú istú správu o téme,Bude popravený len jeden spotrebiteľ。 Naopak,Ak sú spotrebitelia všetci v rôznych spotrebiteľských skupinách, všetci spotrebitelia sú popravení。
Pri vytváraní nového .NET Core konzolového projektu, ako predplatiteľovi (spotrebiteľ) alebo odkazovaní na balík, dashboard môže byť ignorovaný.
Ak je v Controlleri, pridajte [CapSubscribe("")] priamo, aby ste sa prihlásili na odber príslušných správ.
Ak vaša metóda nie je v Controlleri, trieda, ktorej sa prihlasujete, musí zdediť ICapSubscribe a potom pridať značku [CapSubscribe("")]. Kód je nasledovný:
Otvorte predplatné klienta a skúste sa dostať http://localhost:28116/Home/UserRegister na odoslanie správ, efekt je nasledovný:
Konzola aj prijímač ovládača sú spustené, ako je znázornené na obrázku nižšie:
Skúste manuálne vyhodiť výnimku v metóde prijímajúcej správy, kód je nasledovný:
CAP automaticky skúša metódu znova,Počet opakovaní po neúspechu je predvolene 50 a interval opakovaných pokusov po neúspechu je štandardne 60 sekúnd, ako je znázornené na obrázku nižšie:
Framework si nemôže byť 100% istý, že správa sa vykoná iba razPreto v niektorých kľúčových scenároch strana správ venuje pozornosť obchodnej deduplikácii počas implementácie metódy.
Nakoniec pripojte zdrojový kód:
Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím. Odpoveď
|