Heim System-Tutorial LINUX Entdecken Sie die Implementierung zuverlässiger Messaging-Dienste

Entdecken Sie die Implementierung zuverlässiger Messaging-Dienste

Jan 09, 2024 pm 07:49 PM
linux 红帽

Eine gemeinsame Lösung
Einführung Verteilte Transaktionen sind oft der Schwachpunkt serviceorientierter Transaktionen, aber es gibt immer noch einige Szenarien, die auf verteilte Transaktionen angewiesen sind
Es gibt viele Möglichkeiten, verteilte Transaktionsprobleme zu lösen, und es gibt viele Blogs im Internet, die verschiedene Lösungen anbieten. Zusammenfassend kann es im Allgemeinen in die folgenden zwei Methoden unterteilt werden: 1. Two-Phase Commit (kurz 2PC): Dies ist eine gängige Lösung für verteilte Transaktionen. Bei dieser Methode ist der Koordinatorknoten dafür verantwortlich, die Vorgänge der Teilnehmerknoten zu koordinieren und sicherzustellen, dass alle Knoten beim Festschreiben oder Zurücksetzen eine Einigung erzielen. Starre verteilte Transaktionen und zweiphasiges Commit sind ein Mechanismus, um eine starke Konsistenz zu erreichen. Starre verteilte Transaktionen beziehen sich auf eine Reihe von Vorgängen, die von mehreren Teilnehmerknoten in einem verteilten System ausgeführt werden und die Atomizität gewährleisten müssen, d. h. entweder alle erfolgreich sind oder alle fehlschlagen. Dieser Mechanismus erfordert, dass alle Teilnehmerknoten während der Transaktionsausführung dem gleichen Protokoll folgen und die Transaktion unter Anleitung des Koordinatorknotens implementieren

Flexible verteilte Transaktionen sind eine Methode zur Verarbeitung von Transaktionen in einem verteilten System. Es verwendet die Best-Effort-Commit-Strategie, das heißt, es versucht sein Bestes, um die Transaktionsübermittlung abzuschließen, lässt aber auch zu, dass einige Vorgänge fehlschlagen. Bei flexiblen verteilten Transaktionen wird normalerweise der TCC-Modus (Try-Confirm-Cancel) verwendet, um das Transaktionsmanagement zu implementieren. Das TCC-Modell zerlegt Transaktionen in drei Phasen: Versuchen, Bestätigen und Abbrechen

Lösen Sie zunächst die Voraussetzungsgarantie für verteilte Transaktionen: Die Schnittstelle muss idempotent sein, um zu verhindern, dass das wiederholte Senden von Nachrichten das Geschäft beeinträchtigt.

2 Zuverlässiges Messaging-Systemdesign (das fühlt sich gut an und ist relativ einfach, also werde ich es teilen)

Wie oben gezeigt

Entdecken Sie die Implementierung zuverlässiger Messaging-DiensteAusführung starten. Zum Beispiel:

versuchen{

if(prepare()) { //Vorsendephase

doService(); //Geschäftslogik ausführen
updateMsgStatus();//Nachricht aktualisieren, um den Status zu bestätigen }
}


1 Testphase vor dem Senden der Nachricht: Wenn das Vorsenden der Nachricht fehlschlägt, wurde das Geschäft noch nicht ausgeführt, sodass die Systeme A und B immer noch konsistent sind und keine Verarbeitung erforderlich ist
Das ist leicht zu verstehen

2 Die zuvor gesendete Nachricht ist erfolgreich und die Geschäftslogik wird ausgeführt. Wenn die Ausführung erfolgreich ist, wird der Status der aktualisierten, zuvor gesendeten Nachricht in „Versand bestätigt“ geändert. Wenn die Ausführung der Geschäftslogik zu diesem Zeitpunkt fehlschlägt, wird die zuvor gesendete Nachricht nicht mit dem neuen Status aktualisiert. Zu diesem Zeitpunkt beginnt das Nachrichtenbestätigungssystem zu arbeiten und kehrt zum Geschäftssystem 1 zurück, um den Nachrichtenstatus zu überprüfen. Wenn festgestellt wird, dass die Geschäftsausführung fehlgeschlagen ist, wird der Status vor dem Senden auf den Status „Fehlgeschlagen“ aktualisiert.

3 Wenn zu diesem Zeitpunkt die Geschäftsausführung erfolgreich ist und die Nachricht aktualisiert wird, um den Versand zu bestätigen, ist sie in Ordnung und perfekt. Wenn die Nachrichtenaktualisierung fehlschlägt, prüft das Nachrichtenbestätigungssystem trotzdem den Status und aktualisiert, ob die Nachricht gelöscht oder zum Senden bestätigt wurde.

4 Messager beginnen zu konsumieren

1> Wenn beispielsweise der Verbrauch fehlschlägt und Inkonsistenzen auftreten, erkennt das Nachrichtenwiederherstellungssystem den Nachrichtenstatus und sendet die Nachricht erneut

2>Wenn die Ausführung des Geschäfts fehlschlägt, wird die Nachricht nicht bestätigt. Das Nachrichtenwiederherstellungssystem erkennt weiterhin den Nachrichtenstatus und sendet die Nachricht erneut

3> Wenn die Anfrage fehlschlägt, sollte die obige Logik zum erneuten Senden des Einspruchs verwendet werden. Natürlich gibt es eine Begrenzung für die Anzahl der erneuten Sendungen. Sie kann nicht immer gesendet werden gelangt in die Warteschlange für unzustellbare Nachrichten und wartet auf manuelles Eingreifen

4> Wenn die Anfrage erfolgreich ist, wird die Nachricht erfolgreich verarbeitet, was perfekt ist und das Problem eines zuverlässigen Nachrichtendienstes löst

Drei, arbeite hart, um einzureichen

Dies ist relativ einfach. Fehlgeschlagene Nachrichten werden wiederholt übermittelt, um in einigen Szenarien mit schwacher Echtzeitleistung einen erfolgreichen Nachrichten-Push sicherzustellen.

Zum Beispiel: Senden Sie eine Nachricht an einen Drittanbieter, wenn eine Transaktion abgeschlossen ist. Sie können zu diesem Zeitpunkt eine harte Unterwerfung verwenden

Der Artikel wurde von der Open Source China Community [http://www.oschina.net] abgedruckt.

Das obige ist der detaillierte Inhalt vonEntdecken Sie die Implementierung zuverlässiger Messaging-Dienste. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Apr 01, 2025 pm 05:09 PM

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Warum tritt bei der Installation einer Erweiterung mit PECL in einer Docker -Umgebung ein Fehler auf? Wie löst ich es? Warum tritt bei der Installation einer Erweiterung mit PECL in einer Docker -Umgebung ein Fehler auf? Wie löst ich es? Apr 01, 2025 pm 03:06 PM

Ursachen und Lösungen für Fehler Bei der Verwendung von PECL zur Installation von Erweiterungen in der Docker -Umgebung, wenn die Docker -Umgebung verwendet wird, begegnen wir häufig auf einige Kopfschmerzen ...

Wie kann man Node.js oder Python -Dienste in Lampenarchitektur effizient integrieren? Wie kann man Node.js oder Python -Dienste in Lampenarchitektur effizient integrieren? Apr 01, 2025 pm 02:48 PM

Viele Website -Entwickler stehen vor dem Problem der Integration von Node.js oder Python Services unter der Lampenarchitektur: Die vorhandene Lampe (Linux Apache MySQL PHP) Architekturwebsite benötigt ...

Wie löste ich Berechtigungsprobleme bei der Verwendung von Python -Verssionsbefehl im Linux Terminal? Wie löste ich Berechtigungsprobleme bei der Verwendung von Python -Verssionsbefehl im Linux Terminal? Apr 02, 2025 am 06:36 AM

Verwenden Sie Python im Linux -Terminal ...

Wie konfigurieren Sie die Timing -Timing -Aufgabe von ApScheduler als Dienst auf macOS? Wie konfigurieren Sie die Timing -Timing -Aufgabe von ApScheduler als Dienst auf macOS? Apr 01, 2025 pm 06:09 PM

Konfigurieren Sie die Timing -Timing -Timing -Timing -Timing auf der MacOS -Plattform, wenn Sie die Timing -Timing -Timing -Timing von APScheduler als Service konfigurieren möchten, ähnlich wie bei NGIN ...

Vier Möglichkeiten zur Implementierung von Multithreading in C -Sprache Vier Möglichkeiten zur Implementierung von Multithreading in C -Sprache Apr 03, 2025 pm 03:00 PM

Multithreading in der Sprache kann die Programmeffizienz erheblich verbessern. Es gibt vier Hauptmethoden, um Multithreading in C -Sprache zu implementieren: Erstellen Sie unabhängige Prozesse: Erstellen Sie mehrere unabhängig laufende Prozesse. Jeder Prozess hat seinen eigenen Speicherplatz. Pseudo-MultitHhreading: Erstellen Sie mehrere Ausführungsströme in einem Prozess, der denselben Speicherplatz freigibt und abwechselnd ausführt. Multi-Thread-Bibliothek: Verwenden Sie Multi-Thread-Bibliotheken wie PThreads, um Threads zu erstellen und zu verwalten, wodurch reichhaltige Funktionen der Thread-Betriebsfunktionen bereitgestellt werden. Coroutine: Eine leichte Multi-Thread-Implementierung, die Aufgaben in kleine Unteraufgaben unterteilt und sie wiederum ausführt.

Kann der Python -Dolmetscher im Linux -System gelöscht werden? Kann der Python -Dolmetscher im Linux -System gelöscht werden? Apr 02, 2025 am 07:00 AM

In Bezug auf das Problem der Entfernung des Python -Dolmetschers, das mit Linux -Systemen ausgestattet ist, werden viele Linux -Verteilungen den Python -Dolmetscher bei der Installation vorinstallieren, und verwendet den Paketmanager nicht ...

So öffnen Sie Web.xml So öffnen Sie Web.xml Apr 03, 2025 am 06:51 AM

Um eine Web.xml -Datei zu öffnen, können Sie die folgenden Methoden verwenden: Verwenden Sie einen Texteditor (z.

See all articles