Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 57382|Risposta: 3

[ASP.NET] ASP.NET Core (cinque) si basa sulle transazioni distribuite CAP

[Copiato link]
Pubblicato il 17-03-2021 18:12:50 | | | |
Principi CAP

Il principio CAP, noto anche come teorema CAP, si riferisce alla coerenza, alla disponibilità e alla tolleranza di partizione in un sistema distribuito. Il principio CAP afferma che questi tre elementi possono ottenere solo due punti contemporaneamente.È impossibile prendere tutte e tre le cose contemporaneamente

2% &&3% delle transazioni distribuite
https://www.itsvse.com/thread-9591-1-1.html

L'essenza del principio CAP è AP, CP o AC, ma non esiste CAP. Se non c'è una copia dei dati in un sistema distribuito, allora il sistema deve soddisfare la forte condizione di coerenza, poiché esiste solo un dato unico, non ci sarà incoerenza nei dati; in questo momento sono presenti i due elementi C e P, ma se il sistema ha una condizione di partizione di rete o un tempo di inattività, ciò porterà inevitabilmente a un certo dato inaccessibile e la condizione di disponibilità non può essere soddisfatta, cioè in questo caso il sistema CP viene ottenuto, maIl CAP non può essere soddisfatto allo stesso tempo

Recensione:

ASP.NET Filtro Core(4) validazione unificata del modello ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Creare dinamicamente istanze usando ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Riavvia l'applicazione tramite codice
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) utilizza la cache Redis
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP è un bus eventi e un'implementazione in un sistema distribuito (SOA, MicroService).Costanza finale(Distributed Transactions) è una libreria C# open-source che è leggera, ad alte prestazioni e facile da usare.

Indirizzo GitHub:Il login del link ipertestuale è visibile.

Dotnet CAP ha tutte le funzionalità di Event Bus, e CAP offre un modo più snello per gestire la pubblicazione/abbonamento in EventBus.

MediatR è un framework di abbonamento e pubblicazione di messaggi in processo che fornisce il metodo Send per pubblicare su un singolo handler e il metodo Publish per pubblicare su più handler, molto comodo da usare. Attualmente, .NET Framework 4.5, . NET Stardand1.3、. NET Stardand 2.0 e altre versioni, che possono essere utilizzate su più piattaforme.

ASP.NET Core utilizza il modello intermedio MediatR
https://www.itsvse.com/thread-9272-1-1.html

Anteprima architetturale



CAP supporta code di messaggi come Kafka, RabbitMQ, AzureServiceBus, AmazonSQS, ecc., e CAP fornisce estensioni per Sql Server, MySql, PostgreSQL e MongoDB come archiviazione di database.

Questo articolo utilizza RabbitMQ e SQL Server come code e archiviazione dei messaggi.

Installa RabbitMQ

Per tutorial specifici sull'installazione, si prega di fare riferimento:

【Combattimento Pratico】Tutorial di installazione di RabbitMQ su Windows
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ installa il plugin di gestione web
https://www.itsvse.com/thread-4631-1-1.html
L'aggiunta di un account è anche omessa, si prega di fare riferimento:

【Pratica】rabbitMQ console per aggiungere informazioni sull'account
https://www.itsvse.com/thread-4655-1-1.html
Ho aggiunto io stesso l'account di test e il limite agli host virtuali, come mostrato qui sotto:



Altrimenti, l'errore sarà il seguente:

ACCESS_REFUSED - L'accesso è stato rifiutato usando il meccanismo di autenticazione PLAIN. Per i dettagli consulta il file di registro del broker.

Nessuno degli endpoint specificati era raggiungibile

.NET Core integra CAP

Per prima cosa, crea un nuovo progetto ASP.NET Core che sia sia il mittente che il ricevitore. Usa il comando nuget per installare il pacchetto così:

All'avvio, configura il metodo di servizio ConfigureServices come segue:

Puoi visitare il sito web /cap address per visualizzare il cruscotto come mostrato di seguito:



Persistenza dei dati: Cap willCreazione automatica"Pubblicato" e "Ricevuto" sono due tabelle di database locali

CREATE TABLE [cap]. [Pubblicato] (
        [Id] [bigint] NON NULLO,
        [Versione] [nvarchar] (20) NON NULLA,
        [Nome] [nvarchar] (200) NON NULLO,
        [Contenuto] [nvarchar] (max) NULL,
        [Ripeti] [int] NON NULLO,
        [Aggiunto] [datetime2] (7) NON NULLO,
        [Scadenza] [datetime2] (7) NULLO,
        [NomeStato] [nvarchar] (50) NON NULLO,
VINCOLO [PK_cap. [PUBBLICATO] CLUSTER DI CHIAVE PRIMARIA
(
        [Id] ASC
)CON (PAD_INDEX = SPENTO, STATISTICS_NORECOMPUTE = SPENTE, IGNORE_DUP_KEY = SPENTE, ALLOW_ROW_LOCKS = ACCESO, ALLOW_PAGE_LOCKS = ACCESO) ACCESO [PRIMARIO]
) SU [PRIMARIA] TEXTIMAGE_ON [PRIMARIA]
VAI
CREATE TABLE [cap]. [Ricevuto] (
        [Id] [bigint] NON NULLO,
        [Versione] [nvarchar] (20) NON NULLA,
        [Nome] [nvarchar] (200) NON NULLO,
        [Gruppo] [nvarchar] (200) NULLO,
        [Contenuto] [nvarchar] (max) NULL,
        [Ripeti] [int] NON NULLO,
        [Aggiunto] [datetime2] (7) NON NULLO,
        [Scadenza] [datetime2] (7) NULLO,
        [NomeStato] [nvarchar] (50) NON NULLO,
VINCOLO [PK_cap. [Ricevuto] CHIAVE PRIMARIA CLUSTERIZZATA
(
        [Id] ASC
)CON (PAD_INDEX = SPENTO, STATISTICS_NORECOMPUTE = SPENTE, IGNORE_DUP_KEY = SPENTE, ALLOW_ROW_LOCKS = ACCESO, ALLOW_PAGE_LOCKS = ACCESO) ACCESO [PRIMARIO]
) SU [PRIMARIA] TEXTIMAGE_ON [PRIMARIA]
VAI


Il metodo del controller HomeController è il seguente:

Quando l'utente si registra con successo, verranno inviati 3 messaggi con argomenti diversi, che poi l'abbonato li consumerà.

Quando inizia il CAP, creerà un gruppo di consumatori predefinito, se più consumatori dello stesso gruppo consumano lo stesso messaggio di argomento,Solo un consumatore sarà eseguito。 Al contrario,Se i consumatori appartengono tutti a gruppi diversi, tutti i consumatori sono trattati

Creando un nuovo progetto console .NET Core, come abbonato (consumatore), o facendo riferimento al pacchetto, la dashboard può essere ignorata.

Se è nel Controller, aggiungi [CapSubscribe("")] direttamente per iscriverti ai messaggi rilevanti.

Se il tuo metodo non è nel Controller, allora la classe a cui sei iscritto deve ereditare ICapSubscribe e poi aggiungere il tag [CapSubscribe("")].

Il codice è il seguente:

Apri il client in abbonamento e prova ad accedere http://localhost:28116/Home/UserRegister per inviare messaggi, l'effetto è il seguente:



Sia la console che il ricevitore del controller vengono attivati, come mostrato nella figura sottostante:



Prova a lanciare manualmente un'eccezione nel metodo del messaggio ricevente, il codice è il seguente:

CAP riproverà automaticamente il metodo,Il numero di tentativi dopo il fallimento è 50 di default, e l'intervallo di ritentativi dopo il fallimento è di 60 secondi di default, come mostrato nella figura sottostante:



Il framework non può essere sicuro al 100% che il messaggio venga eseguito solo una voltaPertanto, in alcuni scenari chiave, il lato del messaggio presta attenzione alla deduplicazione aziendale nel processo di implementazione del metodo.

Problemi di idempotenza dell'interfaccia
https://www.itsvse.com/thread-6010-1-1.html

Infine, allega il codice sorgente:

Turisti, se volete vedere il contenuto nascosto di questo post, vi pregoRisposta






Precedente:Conversione online in CSV della sintassi Markdown
Prossimo:HttpClient POST direttamente per inviare richieste di compressione byte byte (gzip)
Pubblicato il 18-03-2021 18:11:20 |
Vieni a dare un'occhiata, grazie per aver condiviso
Pubblicato il 2021-9-22 20:42:18 |
Impara a imparare...
Pubblicato il 31-12-2021 15:08:21 |
Apprendimento
Molto bene, molto bello
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com