it-swarm.com.de

Veraltet Akka JMS / AMQP-Nachrichtenbroker?

Ich habe die letzte Woche damit verbracht, tief in die Akka docs und endlich einzutauchen, um zu verstehen, was Schauspielersysteme sind und welche Probleme sie lösen.

Mein Verständnis (und Erfahrung mit) traditionellen JMS/AMQP-Nachrichtenbrokern ist, dass sie existieren, um Folgendes bereitzustellen:

  • Asynchrone Verarbeitung zwischen Produzent und Konsument; und
  • Garantie für die Zustellung von Nachrichten, einschließlich Persistenz, Wiederholungsversuchen und Fallbacks

Aber bietet Akka dies nicht ohne die erforderliche Infrastruktur und den Betriebsaufwand an?

  • In Akka ist die gesamte Actor-Kommunikation asynchron und nicht blockierend. und
  • In Akka gibt es SupervisorStrategies, um Wiederholungsversuche, Fallback und Eskalation durchzuführen. Akteure können so konfiguriert werden, dass sie virtuell beliebig Speichertyp beibehalten, wenn dies ebenfalls erforderlich ist.

Ich frage mich also: Wenn meine App Akka verwendet, muss ich jemals JMS/AMQP-Broker (z. B. ActiveMQ, RabbitMQ, Kafka) ins Bild bringen? Mit anderen Worten, gibt es jemals einen Anwendungsfall, in dem eine neue Akka-basierte App dann auch die Einführung eines neu JMS/AMQP-Brokerclusters rechtfertigen würde? Warum oder warum nicht?

Das einzige Argument wäre, dass meine Akka-App möglicherweise in ein anderes System integriert werden muss. In diesem Fall kann Akka mit dem Modul Akka-Camel auf die umfassende, nahezu unendliche Liste der Integrationsfunktionen von Camel zugreifen (TCP, FTP, ZeroMQ, die Liste geht weiter und weiter ...).

Gedanken?

21
smeeb

Schauspieler-Modell

Das Akteurmodell ist eine Informatikstrategie zum Erstellen von Anwendungen, die viele gleichzeitige Berechnungen und zustandsbehaftete Verarbeitungen verarbeiten. Es ist nicht die einzige Strategie, aber es ist ein sehr gut getesteter, einfacher und zuverlässiger Ansatz, der die Berechnung in Akteure Verschiebt, die über Nachrichten kommunizieren, die sie einzeln und in der richtigen Reihenfolge verarbeiten.

Akka ist ein Framework, das das Akteurmodell implementiert und es Ihnen ermöglicht, Akteursysteme mit allen bereits erstellten Infrastrukturen und Funktionen zu erstellen (z. B. mit JQuery anstelle von Javascript).

Messaging

Nachrichtensysteme sind Anwendungen, die Nachrichten senden und abrufen können. Es gibt viele Varianten, von einfachen Warteschlangen bis hin zu Software für große Unternehmen mit Themen, Pub/Sub, Persistenz und anderen Funktionen, aber das Endziel ist dasselbe. Speichern Sie einige Bytes irgendwo und rufen Sie sie später mit einer bestimmten Reihenfolge erneut ab. Der primäre Anwendungsfall besteht heute darin, Systeme zu entkoppeln und eine asynchrone Verarbeitung mit unterschiedlichen Zeitplänen oder Geschwindigkeiten zu ermöglichen. RabbitMQ, NATS, Kafka usw. sind Beispiele für Nachrichtensysteme.

Vergleich

Das Actor-Modell und das Akka-Framework sind einfache Tools, mit denen sich Anwendungen erstellen lassen wie Nachrichtenwarteschlangen.

Können Sie Akka anstelle einer Nachrichtenwarteschlange verwenden? Sicher. Wenn Sie Software erstellen, die bereits das Akteurmodell verwendet, benötigen Sie wahrscheinlich keine externe Nachrichtenwarteschlange, insbesondere zum Senden von Nachrichten innerhalb desselben Threads oder derselben Anwendung. Mit den Akka Remoting-Funktionen können Sie sogar Nachrichten an andere Akteursysteme senden, die auf anderen Computern ausgeführt werden.

Macht dies Messaging-Systeme jedoch überflüssig? Absolut nicht. Nur weil Sie all diese Dinge selbst codieren können, müssen Sie dies nicht tun, insbesondere wenn ein Darstellermodell für Ihr Problem nicht geeignet ist oder Sie verschiedene Sprachen, Anwendungen, externe APIs, Betriebssysteme, Datenbanken usw. für die Kommunikation benötigen miteinander (ob sie Akteursysteme sind oder nicht).

Wenn Sie nur einige Nachrichten zwischen zwei Systemen übertragen müssen, verwenden Sie eine Nachrichtenwarteschlange. Wenn Sie eine skalierbare Stateful-Verarbeitung und Messaging mit geringer Latenz in derselben Anwendung benötigen, verwenden Sie das Akteurmodell. Beide existieren auf völlig unterschiedlichen Ebenen, und wie Sie sie verwenden, hängt von der Lösung ab, die Sie erstellen.


Es gibt eine großartige Antwort auf SO über dasselbe Schauspieler-Modell im Vergleich zu Messaging: https://stackoverflow.com/questions/5693346/when-to-use-actors-instead-of) -messaging-solutions-wie-websphere-mq-or-tibco

15
Mani Gandham