Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 57382|Răspunde: 3

[ASP.NET] ASP.NET Core (cinci) se bazează pe tranzacții distribuite CAP

[Copiază linkul]
Postat la 2021-3-17 18:12:50 | | | |
Principiile CAP

Principiul CAP, cunoscut și sub denumirea de teorema CAP, se referă la consistență, disponibilitate și toleranța la partiții într-un sistem distribuit. Principiul CAP afirmă că aceste trei elemente pot obține doar două puncte simultan.Este imposibil să le iei pe toate trei simultan

2% &&3% din tranzacțiile distribuite
https://www.itsvse.com/thread-9591-1-1.html

Esența principiului CAP este fie AP, CP sau AC, dar nu există CAP. Dacă nu există o copie a datelor într-un sistem distribuit, atunci sistemul trebuie să îndeplinească condiția de consistență puternică, deoarece există doar o dată unică, nu va exista inconsistență de date; în acest moment, cele două elemente C și P sunt prezente, dar dacă sistemul are o condiție de partiție a rețelei sau o perioadă de nefuncționare, inevitabil va duce la inaccesibilitatea unor date, iar condiția de disponibilitate nu poate fi îndeplinită, adică sistemul CP este obținut în acest caz, darCAP nu poate fi satisfăcută în același timp

Recenzie:

ASP.NET Filtrul Core(4) validare unificată a modelului ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Crearea dinamică a instanțelor folosind ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Nucleu (2) Repornește aplicația prin cod
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) folosește cache Redis
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP este un bus de evenimente și o implementare într-un sistem distribuit (SOA, MicroService).Consistența finală(Distributed Transactions) este o bibliotecă C# open-source, ușoară, performantă și ușor de folosit.

Adresă GitHub:Autentificarea cu hyperlink este vizibilă.

Dotnet CAP are toate funcțiile Event Bus, iar CAP oferă o modalitate mai simplificată de a gestiona publicarea/abonarea în EventBus.

MediatR este un cadru de abonare și publicare a mesajelor în proces care oferă metoda Send pentru publicarea către un singur handler și metoda Publish pentru publicarea către mai mulți handleri, ceea ce este foarte convenabil de folosit. În prezent, .NET Framework 4.5, . NET Stardand1.3、. NET Stardand 2.0 și alte versiuni, care pot fi folosite pe mai multe platforme.

ASP.NET Core folosește modelul intermediar MediatR
https://www.itsvse.com/thread-9272-1-1.html

Previzualizare arhitecturală



CAP suportă cozi de mesaje precum Kafka, RabbitMQ, AzureServiceBus, AmazonSQS etc., iar CAP oferă extensii pentru Sql Server, MySql, PostgreSQL și MongoDB ca stocare a bazei de date.

Acest articol folosește RabbitMQ și SQL Server ca cozi de mesaje și stocare.

Instalează RabbitMQ

Pentru tutoriale specifice de instalare, vă rugăm să consultați:

【Practical Combat】Tutorial de instalare RabbitMQ sub Windows
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ instalează pluginul de management web
https://www.itsvse.com/thread-4631-1-1.html
Adăugarea unui cont este de asemenea omisă, vă rugăm să consultați:

【Practice】rabbitMQ consolă pentru a adăuga informații despre cont
https://www.itsvse.com/thread-4655-1-1.html
Am adăugat contul de test și am limitat Virtual Hosts, așa cum se arată mai jos:



În caz contrar, eroarea va fi următoarea:

ACCESS_REFUSED - Autentificarea a fost refuzată folosind mecanismul de autentificare PLAIN. Pentru detalii, consultați fișierul de jurnal al brokerilor.

Niciunul dintre punctele finale specificate nu era accesibil

.NET Core integrează CAP

În primul rând, creează un nou proiect ASP.NET Core care să fie atât expeditorul, cât și receptorul. Folosește comanda nuget pentru a instala pachetul astfel:

La pornire, configurați metoda de serviciu ConfigureServices astfel:

Puteți vizita site-ul web / adresa cap pentru a vedea tabloul de bord, așa cum este prezentat mai jos:



Persistența datelor: Limita vaCrearea automată"Published" și "Received" sunt două tabele locale de baze de date

CREATE TABLE [cap]. [Publicat] (
        [ID] [bigint] NU NUL,
        [Versiune] [nvarchar] (20) NU NUL,
        [Nume] [nvarchar] (200) NU NUL,
        [Conținut] [nvarchar] (max) NULL,
        [Întoarce] [int] NU NUL,
        [Adăugat] [datetime2] (7) NU NUL,
        [Expiră] [datetime2] (7) NUL,
        [NumeStatus] [nvarchar] (50) NU NUL,
CONSTRÂNGERE [PK_cap. [Publicat] CHEIE PRIMARĂ CLUSTERATĂ
(
        [Id] ASC
)CU (PAD_INDEX = OPRIT, STATISTICS_NORECOMPUTE = OPRIT, IGNORE_DUP_KEY = OPRIT, ALLOW_ROW_LOCKS = PORNIT, ALLOW_PAGE_LOCKS = PORNIT) PORNIT [PRIMAR]
) PE [PRIMAR] TEXTIMAGE_ON [PRIMAR]
DU-TE
CREATE TABLE [cap]. [Recepționat] (
        [ID] [bigint] NU NUL,
        [Versiune] [nvarchar] (20) NU NUL,
        [Nume] [nvarchar] (200) NU NUL,
        [Grup] [nvarchar] (200) NULL,
        [Conținut] [nvarchar] (max) NULL,
        [Întoarce] [int] NU NUL,
        [Adăugat] [datetime2] (7) NU NUL,
        [Expiră] [datetime2] (7) NUL,
        [NumeStatus] [nvarchar] (50) NU NUL,
CONSTRÂNGERE [PK_cap. Recepționat] CHEIE PRIMARĂ CLUSTERATĂ
(
        [Id] ASC
)CU (PAD_INDEX = OPRIT, STATISTICS_NORECOMPUTE = OPRIT, IGNORE_DUP_KEY = OPRIT, ALLOW_ROW_LOCKS = PORNIT, ALLOW_PAGE_LOCKS = PORNIT) PORNIT [PRIMAR]
) PE [PRIMAR] TEXTIMAGE_ON [PRIMAR]
DU-TE


Metoda controlerului HomeController este următoarea:

Când utilizatorul se înregistrează cu succes, vor fi trimise 3 mesaje cu subiecte diferite, iar apoi abonatul le va consuma.

Când începe CAP, va crea un grup implicit de consumatori, dacă mai mulți consumatori din același grup consumă același mesaj tematic,Doar un singur consumator va fi executat。 Dimpotrivă,Dacă toți consumatorii sunt în grupuri diferite de consumatori, toți consumatorii sunt executați

Crearea unui nou proiect de consolă .NET Core, ca abonat (consumator) sau referința la pachet, poate fi ignorată.

Dacă este în Controller, adăugați [CapSubscribe("")] direct pentru a vă abona la mesajele relevante.

Dacă metoda ta nu este în Controller, atunci clasa la care ești abonat trebuie să moștenească ICapSubscribe și apoi să adauge eticheta [CapSubscribe("")].

Codul este următorul:

Deschide clientul de abonament și încearcă să accesezi http://localhost:28116/Home/UserRegister pentru a trimite mesaje, efectul este următorul:



Atât consola, cât și receptorul controllerului sunt declanșate, așa cum se arată în figura de mai jos:



Încearcă să arunci manual o excepție în metoda mesajului de recepție, codul este următorul:

CAP va încerca automat metoda,Numărul de încercări după eșec este implicit 50, iar intervalul de reîncercare după eșec este implicit de 60 de secunde, așa cum se arată în figura de mai jos:



Framework-ul nu poate fi 100% sigur că mesajul este executat o singură datăPrin urmare, în unele scenarii cheie, partea de mesaj acordă atenție deduplicării afacerilor în procesul de implementare a metodei.

Probleme legate de idempotența interfeței
https://www.itsvse.com/thread-6010-1-1.html

În final, atașează codul sursă:

Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rogRăspunde






Precedent:Conversia online CSV a sintaxei Markdown
Următor:HttpClient POST direct pentru a trimite cereri de compresie byte byte (gzip)
Postat la 2021-3-18 18:11:20 |
Vino să vezi, mulțumesc că ai împărtășit
Postat la 2021-9-2022 20:42:18 |
Învață să înveți...
Postat la 2021-12-31 15:08:21 |
Învățare
Foarte bine, foarte frumos
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com