Mindestens einmalige Zustellung mit Akka Persistence und dem Extra-Cameo-Muster

8

Ich entwickle eine Anwendung, die Akka verwendet, in der Akteure entworfen sind, um das Anfrage-Antwort-Muster zu vermeiden. Mithilfe des Extra- oder des Cameo-Musters können Interaktionen zwischen Akteuren als "Stream" von Nachrichten modelliert werden.

Die folgende Abbildung fasst die Architektur solcher Akteure zusammen.

Das Cameo-Muster wurde implementiert, um die Antworten von SK actors zu verarbeiten.

Stellen Sie sich nun vor, dass ich die mindestens einmal Semantik zwischen SF und SK -Aktoren garantieren möchte. Wie kann ich das machen? Die Implementierung der ato Semantik mit Akka-Persistenz erfordert die Implementierung eines Request-Response-Patterns zwischen diesen Akteuren.

Wie kann ich eine mindestens einmal Semantik zwischen Akteuren sicherstellen, die ein Cameo verwenden, um mit Antworten umzugehen?

Vielen Dank

    
riccardo.cardin 11.01.2018, 06:54
quelle

1 Antwort

0

Jamie Allen hilft mir auf Twitter, diese Frage zu beantworten. Die Twitter-Konversation ist das .

Ich versuche, die Diskussion zusammenzufassen, was Jamie gesagt hat.

  

Um zumindest ein Mal zuverlässig zu funktionieren, ist die Verwendung von Akka-Cluster und Persistenz möglich, aber wahrscheinlich zu viel. Ich sage, versuche es einfach zu halten. Habe eine GUID für die Anfrage und sende sie mit der Anfrage an die drei SKs.

     

Im unveränderlichen Ledger-Szenario würden Sie dann gelegentlich das Hauptbuch durchstreichen, um die GUID-Duplikate zu entfernen. Wie konsistent diese Daten sein müssen, wird dies definieren.

     

Einfachheit wird viel einfacher zu verwalten sein & amp; Vermeiden Sie Teilausfälle. Sie können Itispotenz auf der SK-Seite auf eine der folgenden Arten behandeln: entweder verfolgen Sie alle GUIDs, wenn die Anforderungen über einen ablaufenden Cache verarbeitet werden, oder speichern Sie die GUIDs mit den unveränderlichen Aktualisierungen in einem Hauptbuch.

In diesem Fall ist es also besser, Akka Persistence vollständig zu entfernen und das Problem auf eine gute alte Nachricht zu reduzieren.

SF sendet Nachrichten an SK s actors, der Cameo-Knoten wartet auf SK s Antworten. Wenn solche Reaktionen nicht in einem vorgegebenen Zeitfenster eintreffen, alarmiert der Cameo-Knoten SF mit einer Zeitüberschreitungsnachricht. SF sendet Nachrichten erneut an SKs-Akteure.

Das Diagramm, das die obige Lösung darstellt, ist das folgende.

Die Nachricht in rot, die mit Nummer 5 markiert ist, modelliert die Timeout-Nachricht.

Wie Jamie sagte:

  

Ich denke, ACK muss in der Verantwortung des Anrufers liegen, bis hin zum Absender der ursprünglichen Anfrage. Das ist der sicherste & amp; einfachste Annäherung.

Ich hoffe, es hilft.

    
riccardo.cardin 17.01.2018, 11:35
quelle