Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 57382|Odpověď: 3

[ASP.NET] ASP.NET Core (pět) je založen na distribuovaných transakcích podle CAP

[Kopírovat odkaz]
Zveřejněno 17. 3. 2021 v 18:12:50 | | | |
Principy CAP

Princip CAP, známý také jako věta o CAP, označuje konzistenci, dostupnost a toleranci rozdělení v distribuovaném systému. Princip CAP říká, že tyto tři prvky mohou dosáhnout pouze dvou bodů současně.Není možné vzít všechny tři najednou

2PC &&3PC distribuovaných transakcí
https://www.itsvse.com/thread-9591-1-1.html

Podstatou principu CAP je buď AP, CP nebo AC, ale CAP neexistuje. Pokud v distribuovaném systému není kopie dat, musí systém splňovat podmínku silné konzistence, protože existuje pouze jedinečná data, nebude žádná nekonzistence dat, v tomto okamžiku jsou přítomny dva prvky C a P, ale pokud má systém podmínku rozdělení sítě nebo výpadek, nevyhnutelně to povede k tomu, že některá data budou nedostupná a podmínka dostupnosti nemůže být splněna, tedy v tomto případě je CP systém získán, aleCAP nelze uspokojit současně

Přezkoumání:

ASP.NET Filtr Core(4) sjednocený validace modelů ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Jádro (iii) Dynamicky vytvářet instance pomocí ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Jádro (2) Restartovat aplikaci pomocí kódu
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) používá Redis caching
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP je event bus a implementace v distribuovaném systému (SOA, MicroService).Konečná konzistence(Distributed Transactions) je open-source knihovna v C#, která je lehká, vysoce výkonná a snadno použitelná.

Adresa GitHubu:Přihlášení k hypertextovému odkazu je viditelné.

Dotnet CAP má všechny funkce Event Bus a CAP poskytuje efektivnější způsob zpracovávání publikování a odběru v EventBusu.

MediatR je rámec pro předplatu a publikování zpráv v procesu, který poskytuje metodu Send pro publikování do jednoho handleru a metodu Publish pro publikování do více handlerů, což je velmi pohodlné na použití. V současnosti .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 a další verze, které lze používat napříč platformami.

ASP.NET Core používá model MediatR jako prostředník
https://www.itsvse.com/thread-9272-1-1.html

Náhled architektury



CAP podporuje fronty zpráv jako Kafka, RabbitMQ, AzureServiceBus, AmazonSQS atd. a CAP poskytuje rozšíření pro Sql Server, MySql, PostgreSQL a MongoDB jako databázové úložiště.

Tento článek používá RabbitMQ a SQL Server jako fronty zpráv a úložiště.

Nainstalovat RabbitMQ

Pro konkrétní instalační návody se prosím podívejte na:

【Praktický boj】Návod na instalaci RabbitMQ pod Windows
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ instaluje plugin pro správu webu
https://www.itsvse.com/thread-4631-1-1.html
Přidání účtu je také vynecháno, viz prosím:

【Practice】rabbitMQ konzole pro přidání informací o účtu
https://www.itsvse.com/thread-4655-1-1.html
Testovací účet a omezení virtuálních hostitelů jsem přidal sám, jak je vidět níže:



Jinak bude chyba následující:

ACCESS_REFUSED - Přihlášení bylo odmítnuto pomocí autentizačního mechanismu PLAIN. Podrobnosti najdete v logfile makléře.

Žádný ze specifikovaných koncových bodů nebyl dosažitelný

.NET Core integruje CAP

Nejprve vytvořte nový projekt ASP.NET Core, který je zároveň odesílatelem i příjemcem. Použijte příkaz nuget k instalaci balíčku takto:

Při startu nakonfigurujte metodu služby ConfigureServices následovně:

Můžete navštívit webové stránky / cap adresu a zobrazit dashboard, jak je uvedeno níže:



Trvalost dat: Cap budeAutomatické vytváření"Publikováno" a "Přijato" jsou dvě tabulky v lokálních databázích

VYTVOŘTE TABULKU [cap]. [Publikováno] (
        [ID] [bigint] NE NULL,
        [Verze] [Nvarchar] (20) NE NULL,
        [Jméno] [Nvarchar] (200) NENÍ NULL,
        [Obsah] [Nvarchar] (Max) NULL,
        [Opakuje] [int] NE NULL,
        [Přidáno] [datetime2] (7) NENÍ NULL,
        [ExpiresAt] [datetime2] (7) NULL,
        [StatusName] [Nvarchar] (50) NE NULL,
OMEZENÍ [PK_cap. Publikováno] PRIMÁRNÍ KLÍČ SHLUKOVÁN
(
        [Id] ASC
)KDE (PAD_INDEX = VYPNUTO, STATISTICS_NORECOMPUTE = VYPNUTO, IGNORE_DUP_KEY = VYPNUTO, ALLOW_ROW_LOCKS = ZAPNUTO, ALLOW_PAGE_LOCKS = ZAPNUTO) ZAPNUTÉ [PRIMÁRNÍ]
) NA [PRIMÁRNĚ] TEXTIMAGE_ON [PRIMÁRKY]
JDI
VYTVOŘTE TABULKU [cap]. [Přijato] (
        [ID] [bigint] NE NULL,
        [Verze] [Nvarchar] (20) NE NULL,
        [Jméno] [Nvarchar] (200) NENÍ NULL,
        [Skupina] [Nvarchar] (200) NULL,
        [Obsah] [Nvarchar] (Max) NULL,
        [Opakuje] [int] NE NULL,
        [Přidáno] [datetime2] (7) NENÍ NULL,
        [ExpiresAt] [datetime2] (7) NULL,
        [StatusName] [Nvarchar] (50) NE NULL,
OMEZENÍ [PK_cap. [PŘIJATO] PRIMÁRNÍ KLÍČ SESKUPEN
(
        [Id] ASC
)KDE (PAD_INDEX = VYPNUTO, STATISTICS_NORECOMPUTE = VYPNUTO, IGNORE_DUP_KEY = VYPNUTO, ALLOW_ROW_LOCKS = ZAPNUTO, ALLOW_PAGE_LOCKS = ZAPNUTO) ZAPNUTÉ [PRIMÁRNÍ]
) NA [PRIMÁRNĚ] TEXTIMAGE_ON [PRIMÁRKY]
JDI


Metoda ovladače HomeController je následující:

Když se uživatel úspěšně zaregistruje, budou odeslány 3 zprávy s různými tématy, které pak odběratel spotřebuje.

Když CAP začne, vytvoří výchozí skupinu spotřebitelů, pokud více spotřebitelů ze stejné skupiny konzumuje stejnou zprávu o tématu,Bude popraven pouze jeden spotřebitel。 Naopak,Pokud jsou spotřebitelé všichni v různých skupinách spotřebitelů, všichni spotřebitelé jsou popraveni

Při vytváření nového .NET Core konzolového projektu jako odběratel (spotřebitel) nebo odkazování na balíček lze dashboard ignorovat.

Pokud je v řadiči, přidej [CapSubscribe("")] přímo pro odběr příslušných zpráv.

Pokud vaše metoda není v Controlleru, pak třída, ke které se přihlásíte, musí zdědit ICapSubscribe a poté přidat značku [CapSubscribe("")].

Kód je následující:

Otevřete klienta předplatného a zkuste se dostat k http://localhost:28116/Home/UserRegister pro odesílání zpráv, efekt je následující:



Spouštějí se jak konzole, tak receiver ovladače, jak je znázorněno na obrázku níže:



Zkuste ručně vyhodit výjimku v metodě přijímací zprávy, kód je následující:

CAP automaticky zkusí metodu znovu,Počet opakování po neúspěchu je ve výchozím nastavení 50 a interval opakovaných pokusů po neúspěchu je ve výchozím nastavení 60 sekund, jak je znázorněno na obrázku níže:



Framework nemůže být stoprocentně jistý, že zpráva se vykoná pouze jednouProto v některých klíčových scénářích věnuje zprávová strana pozornost obchodní deduplikaci při implementaci metody.

Problémy s idempotencií rozhraní
https://www.itsvse.com/thread-6010-1-1.html

Nakonec přiložte zdrojový kód:

Turisté, pokud chcete vidět skrytý obsah tohoto příspěvku, prosímOdpověď






Předchozí:Online převod syntaxe Markdown v CSV
Další:HttpClient POST přímo pro odeslání požadavků na kompresi bajtů bajtů (gzip)
Zveřejněno 18. 3. 2021 v 18:11:20 |
Pojďte se podívat, díky za sdílení
Zveřejněno 2021-9-22 20:42:18 |
Uč se učit...
Zveřejněno 31. 12. 2021 15:08:21 |
Učení
Velmi dobře, velmi pěkně
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com