RabbitMQ Nachrichtenwarteschlange-basierte verteilte Transaktionslösungen - MQ verteilte Middleware-combat messaging

1 Geschwindigkeit verstehen MQ

Einführung Rabbitmg für die verteilte Transaktion zu lösen müssen die fünf Kernkonzepte beherrschen

Eine verteilte Messaging - Middleware, Netz hohe Parallelität Verarbeitung basierend auf Erlang Sprachentwicklung, mit dem Sprachniveau. Und das Spring Framework ist die gleiche Firma.
Unterstützung Ausdauer, hohe Verfügbarkeit

Fünf Kernkonzepte:

  1. Queue: Lokale realen Daten speichern
  2. Austausch: Empfangen einer Anforderung, die Daten-Dump
  3. Bind: Nach dem Empfang der Anforderung, wo zu speichern
  4. Anwendungsdaten übertragen: Meldung Produzent
  5. Nachricht Verbraucher: Entfernen Sie die Anwendungsdaten-Verarbeitungs

2, verteilte Transaktionsfragen

Verteilte Transaktion ist ein Business-Problem, nicht von der spezifischen Szene geschieden werden.

Mehrere Lösungen 2.1 verteilte Transaktionen

● basierte Datenbank XA / JTA Art und Weise einer Vereinbarung
bedarf die Datenbank - Anbieter zu unterstützen; JAVA - Komponente hat atomikos usw.
● asynchrone Korrektur liest die Art und Weise Daten
Alipay, Mikro-Kanal Pay Initiative Zahlungsstatus zu überprüfen, in Form von Rechnungen;
● Lösungen basieren auf zuverlässige Quellen (MQ) von
asynchronen Szene; universal stark; Ausbau der höher
● TCC Programmierlösungen
sorgfältig ausgewählt, Ali, Ameisen Goldkleid eigenes Paket DTX

Dieser Artikel Ziel: für alle die Menschen, lernen , das Problem der verteilten Transaktionen basierend auf verlässlichen Quellen zu lösen.
Lösungen für die verteilte Transaktion, sehr gezielte Geschäft ist es wichtig , Ideen anstelle des Kopierens

  • US-Mission Kommentar Systemarchitektur

Verteilte Transaktionsprobleme zwischen mehreren Systemen 2.2

  • Single-User-generierten Aufträge
  • Bestellungen müssen Daten zu übergeben, damit zwei Transaktionskonsistenz Fragen zu erzeugen

Falscher Fall

Wenn der Schnittstellen Aufruf fehlschlägt, wird die Transaktion zurückzuAuftragsSystem gerollt, wird der Benutzer aufgefordert, den Betrieb versagt

误以为这样的接口调用写法,就不会有分布式事务问题

Interface Aufruf Erfolg oder Misserfolg, wird eine verteilte Transaktion Probleme haben:

  1. Schnittstellen-Aufruf erfolgreich ist, das Auftragssystem Datenbank Transaktionscommit fehlschlägt, wird das System nicht die waybill zurückrollen, erzeugen Daten
  2. Schnittstelle ruft ein Timeout, die Rollback-Bestellsystem Datenbanktransaktion, waybill Systemschnittstelle weiterhin Daten zu erzeugen,

In beiden Fällen kann es zu inkonsistenten Daten führen

3 zu erreichen, eine verteilte Transaktion - Fünf-Step

Lösen Sie verteilte Transaktionen über MQ 5 Stufen, sowie lokale verteilte Transaktionsverarbeitung Kenntnis zu nehmen

  • Vor dem System der Bestellung der gesamte HTTP-Anforderungs-Schnittstelle waybill-System zu senden, ein Problem!
  • Daher betrachten wir eine Nachricht an MQ asynchrone Grund auf neu!

3.1 Gesamtkonzept


Nach Aufträge Catering, waybill Erzeugungs Rechenzentrum langsam wartet, ist nicht zwingend Gleichzeitigkeit

  1. Zuverlässige Produktion: um sicherzustellen, dass die Nachricht an den Dienst Rabitmq gesendet werden müssen
  2. Zuverlässige Verbrauch: um sicherzustellen, dass die Nachricht die richtige verbraucht nehmen müssen

Und schließlich zu Mehrparteien-Daten Konsens zu erreichen.

3.2 Schritt 1 - zuverlässige Informationen aufgezeichnete Nachricht Herstellung

  • Es gibt versteckte Gefahren - möglich, Nachrichten fehlgeschlagen es zu senden!

Um den Erfolg bestimmter Daten sicherzustellen , wird den MQ gesendet.
In der gleichen Transaktion ein Rekordanstieg in dem OP - Tisch, der Datensatz 每一条发往MQ的数据以及它的发送状态
so fügen wir einen lokalen Informationstabelle in der Reihenfolge System

So in der Praxis des Code, nicht durch das HTTP-Schnittstelle Aufruf Abrechnungssysteme Schnittstellen, aber die Verwendung von MQ

Wenn Aufträge zu erzeugen, sondern auch speichert die lokale Informationstabelle


3.3 Schritt 2 - Herstellung Reliable Messaging (Modifikationsnachricht Übertragungszustand)

  • Verwendung RabbitMQ Transaktionsveröffentlichung Bestätigungsmechanismus (Bestätigen)
    nach dem Öffnen, MQ genaue Annahmenachricht Empfangsbestät

  • Dann in der Lage sein zu wissen, wie die lokale Informationstabelle aktualisieren

- Bestätigen Mechanismus, um sicherzustellen, offen in SB


  • Wenn die Bestätigung nicht empfangen wird, die Nachricht fehlgeschlagen Modifikationszustand und andere besondere Umstände
    兜底方案:定时检查消息表,超时没发送成功,再次重发

3.4 Schritt 3 - Reliable Messaging Verarbeitung (normale Verarbeitung)

  • Nach waybill System empfängt geht die Nachrichtendaten plötzlich nach unten, oder die waybill besuchen, wenn DB, plötzlich ausfällt, wird die Nachricht über Sie erhobenen Daten nicht verloren !!!

Also brauchen wir die folgenden Eigenschaften:

Idempotent
verhindern doppelte Verarbeitung der Nachrichtendaten, eine Benutzeroperation, Datenzeitverarbeitung nur an entsprechende

offenen 手动ACK模式
vom Verbraucher Steuernachricht Neuübertragung / Entfernen / Verwerfen

3.5 Schritt 4 - Reliable Messaging (Nachrichtenverbreitung)


Die Verbraucher Verarbeitung fehlschlägt, müssen wir wieder MQ wieder an den Verbraucher.
Abnormalitäten in der Regel mehrmals wiederholen durch die Verbraucher selbst die Rekordzahl von Wiederholungen, und die Anzahl der Kontrollen (nicht immer wiederholen!)

Fünfter Schritt 3.6 - Reliable Messaging (Nachrichten Discard)

Verbraucher Handhabung Versagen oder verworfen direkt an eine Warteschlange für unzustellbare übertragen (die DLQ)
重试次数过多、消息内容格式错误等情况,通过线上预警机制通知运维人员

4 Zusammenfassung und Erweiterungen

Vor- und Nachteile von 4.1 MQ-Programm

Eröffnungsvorteil

  1. Vielseitigkeit
  2. Entwicklung und starke
  3. ausgereiftes Programm

Mouth Mängel

  1. Message-basierte Middleware, nur für asynchrone Szenarien
  2. Die Nachrichtenverarbeitung verzögert wird, müssen in der Lage sein auf die Unternehmen zu tolerieren

Versuchen Sie verteilte Transaktion zu vermeiden,
versuchen asynchrone Nicht-Kerngeschäfte zu machen;

4.2 Erweiterung

Theoretische Grundlage für die verteilte Transaktionslösungen

CAP Theorie
BASE Theorie
2PC Protokoll
3pc Protokoll
Paxos - Algorithmus.
Raft Kohärenzprotokoll

Veröffentlicht fünf Originalartikel · erntete Lob 0 · Aufrufe 245

Ich denke du magst

Origin blog.csdn.net/weixin_32822759/article/details/105365940
Empfohlen
Rangfolge