Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 57382|Antwort: 3

[ASP.NET] ASP.NET Core (fünf) basiert auf CAP-verteilten Transaktionen

[Link kopieren]
Veröffentlicht am 17.03.2021, 18:12:50 | | | |
CAP-Grundsätze

Das CAP-Prinzip, auch bekannt als CAP-Theorem, bezieht sich auf die Konsistenz, Verfügbarkeit und Partitionstoleranz in einem verteilten System. Das CAP-Prinzip besagt, dass diese drei Elemente nur zwei Punkte gleichzeitig erreichen können.Es ist unmöglich, alle drei gleichzeitig zu nehmen

2PC &&&3PC verteilter Transaktionen
https://www.itsvse.com/thread-9591-1-1.html

Das Wesentliche des CAP-Prinzips ist entweder AP, CP oder AC, aber es gibt kein CAP. Wenn es keine Kopie der Daten in einem verteilten System gibt, muss das System die starke Konsistenzbedingung erfüllen, da es nur eine eindeutige Daten gibt, gibt es keine Dateninkonsistenz, zu diesem Zeitpunkt sind die beiden Elemente C und P vorhanden, aber wenn das System eine Netzwerkpartition oder einen Ausfall hat, führt dies zwangsläufig dazu, dass einige Daten unzugänglich sind, und die Verfügbarkeitsbedingung kann nicht erfüllt werden, das heißt, in diesem Fall wird das CP-System erhalten, aberCAP kann nicht gleichzeitig erfüllt werden

Rezension:

ASP.NET Core(4)-Filter einheitliche ModelState-Modellvalidierung
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Erstellen Sie Instanzen dynamisch mit ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Die Anwendung per Code neu starten
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) verwendet Redis-Caching
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP ist ein Ereignisbus und eine Implementierung in einem verteilten System (SOA, MicroService).Endgültige Konsistenz(Distributed Transactions) ist eine Open-Source-C#-Bibliothek, die leicht, leistungsstark und einfach zu bedienen ist.

GitHub-Adresse:Der Hyperlink-Login ist sichtbar.

Dotnet CAP verfügt über alle Funktionen des Event Bus, und CAP bietet eine schlankere Möglichkeit, Veröffentlichung und Abonnement in EventBus zu verwalten.

MediatR ist ein in Bearbeitung befindliches Nachrichtenabonnement- und Publishing-Framework, das die Send-Methode für die Veröffentlichung an einen einzelnen Handler und die Publishing-Methode für die Veröffentlichung an mehrere Handler bereitstellt, was sehr praktisch zu bedienen ist. Derzeit ist .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 und andere Versionen, die plattformübergreifend verwendet werden können.

ASP.NET Core verwendet das MediatR-Zwischenmodell
https://www.itsvse.com/thread-9272-1-1.html

Architekturvorschau



CAP unterstützt Nachrichtenwarteschlangen wie Kafka, RabbitMQ, AzureServiceBus, AmazonSQS usw., und CAP stellt Erweiterungen für SQL Server, MySql, PostgreSQL und MongoDB als Datenbankspeicher bereit.

Dieser Artikel verwendet RabbitMQ und SQL Server als Nachrichtenwarteschlangen und Speicher.

Installiere RabbitMQ

Für spezifische Installations-Tutorials siehe bitte:

【Practical Combat】RabbitMQ Installationsanleitung unter Windows
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ installiert das Webmanagement-Plugin
https://www.itsvse.com/thread-4631-1-1.html
Das Hinzufügen eines Kontos ist ebenfalls weggelassen, bitte beachten Sie:

【Practice】rabbitMQ console zum Hinzufügen von Kontoinformationen
https://www.itsvse.com/thread-4655-1-1.html
Ich habe das Testkonto selbst hinzugefügt und Virtual Hosts begrenzt, wie unten gezeigt:



Andernfalls lautet der Fehler wie folgt:

ACCESS_REFUSED – Die Anmeldung wurde mit dem Authentifizierungsmechanismus PLAIN abgelehnt. Details finden Sie im Makler-Logfile.

Keiner der angegebenen Endpunkte war erreichbar

.NET Core integriert CAP

Erstellen Sie zunächst ein neues ASP.NET Core-Projekt, das sowohl Sender als auch Empfänger ist. Verwenden Sie den Nuget-Befehl, um das Paket so zu installieren:

Beim Start konfigurieren Sie die Service-Methode ConfigureServices wie folgt:

Sie können die Website /cap-Adresse besuchen, um das unten gezeigte Dashboard einzusehen:



Datenpersistenz: Cap wird es tunAutomatische Erstellung"Veröffentlicht" und "Empfangen" sind zwei lokale Datenbanktabellen

TABELLE ERSTELLEN [Cap]. [Veröffentlicht] (
        [ID] [bigint] NICHT NULL,
        [Version] [nvarchar] (20) NICHT NULL,
        [Name] [nvarchar] (200) NICHT NULL,
        [Inhalt] [nvarchar] (max) NULL,
        [Versucht wieder] [int] NICHT NULL,
        [Hinzugefügt] [Datetime2] (7) NICHT NULL,
        [AblaufAt] [Datetime2] (7) NULL,
        [StatusName] [nvarchar] (50) NICHT NULL,
EINSCHRÄNKUNG [PK_cap. Veröffentlicht] PRIMÄRSCHLÜSSEL CLUSTERED
(
        [ID] ASC
)MIT (PAD_INDEX = AUS, STATISTICS_NORECOMPUTE = AUS, IGNORE_DUP_KEY = AUS, ALLOW_ROW_LOCKS = AN, ALLOW_PAGE_LOCKS = AN) AUF [PRIMÄR]
) AUF [PRIMÄR] TEXTIMAGE_ON [PRIMÄR]
LOS
TABELLE ERSTELLEN [Cap]. [Empfangen] (
        [ID] [bigint] NICHT NULL,
        [Version] [nvarchar] (20) NICHT NULL,
        [Name] [nvarchar] (200) NICHT NULL,
        [Gruppe] [nvarchar] (200) NULL,
        [Inhalt] [nvarchar] (max) NULL,
        [Versucht wieder] [int] NICHT NULL,
        [Hinzugefügt] [Datetime2] (7) NICHT NULL,
        [AblaufAt] [Datetime2] (7) NULL,
        [StatusName] [nvarchar] (50) NICHT NULL,
EINSCHRÄNKUNG [PK_cap. Empfangen] PRIMÄRSCHLÜSSEL GRUPPIERT
(
        [ID] ASC
)MIT (PAD_INDEX = AUS, STATISTICS_NORECOMPUTE = AUS, IGNORE_DUP_KEY = AUS, ALLOW_ROW_LOCKS = AN, ALLOW_PAGE_LOCKS = AN) AUF [PRIMÄR]
) AUF [PRIMÄR] TEXTIMAGE_ON [PRIMÄR]
LOS


Die HomeController-Controller-Methode ist wie folgt:

Wenn der Nutzer sich erfolgreich registriert, werden 3 Nachrichten mit unterschiedlichen Themen gesendet, die der Abonnent dann konsumiert.

Wenn CAP startet, wird eine Standard-Konsumentengruppe erstellt, wenn mehrere Konsumenten derselben Konsumentengruppe dieselbe Themennachricht konsumieren,Nur ein Konsument wird hingerichtet。 Im GegenteilWenn alle Konsumenten zu verschiedenen Verbrauchergruppen gehören, werden alle Konsumenten ausgeführt

Das Erstellen eines neuen .NET Core-Konsolenprojekts als Abonnent (Konsument) oder durch Referenzen auf das Paket kann das Dashboard ignoriert werden.

Wenn es im Controller ist, fügen Sie [CapSubscribe("")] direkt hinzu, um die entsprechenden Nachrichten zu abonnieren.

Wenn deine Methode nicht im Controller ist, muss die Klasse, die du abonnierst, ICapSubscribe übernehmen und dann das Tag [CapSubscribe("")] hinzufügen.

Der Code lautet wie folgt:

Öffnen Sie den Abonnement-Client und versuchen Sie, auf http://localhost:28116/Home/UserRegister zuzugreifen, um Nachrichten zu senden, der Effekt ist wie folgt:



Sowohl die Konsole als auch der Controller-Empfänger werden ausgelöst, wie in der untenstehenden Abbildung dargestellt:



Versuchen Sie, eine Ausnahme manuell in der empfangenden Nachrichtenmethode zu verwenden, der Code lautet wie folgt:

CAP wird die Methode automatisch erneut versuchen,Die Anzahl der Wiederholungen nach einem Fehlschlag beträgt standardmäßig 50, und das Intervall nach dem Scheitern beträgt standardmäßig 60 Sekunden, wie in der untenstehenden Abbildung dargestellt:



Das Framework kann nicht zu 100 % sicher sein, dass die Nachricht nur einmal ausgeführt wirdDaher achtet die Nachrichtenseite in einigen Schlüsselszenarien auf Geschäftsdeduplizierung im Prozess der Methodenimplementierung.

Probleme mit der Interface Idempotenz
https://www.itsvse.com/thread-6010-1-1.html

Zum Schluss fügen Sie den Quellcode an:

Touristen, wenn ihr den versteckten Inhalt dieses Beitrags sehen wollt, bitteAntwort






Vorhergehend:CSV-Online-Konvertierung der Markdown-Syntax
Nächster:HttpClient POST direkt zum Senden von Byte-Byte-(gzip)-Kompressionsanfragen
Veröffentlicht am 18.03.2021, 18:11:20 |
Komm und schau dir das an, danke fürs Teilen
Veröffentlicht am 22.9.2021, 20:42:18 |
Lerne zu lernen...
Veröffentlicht am 31.12.2021, 15:08:21 |
Lernen
Sehr gut, sehr schön
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com