2017-11-09 3 views
0

Derzeit verwende ich die AWS EBS microservice docker-Umgebung, um die in Scala und Akka geschriebenen Mikrodienste bereitzustellen. Wenn jemand des Microservice Docker abstürzt und erneut gestartet wird. In diesem Fall verlieren wir die Benutzeranforderungen, und der Dienst gibt für diese Fälle keine Antwort zurück. Meine aktuelle Architektur kann bis zu 1000 gleichzeitige Anfragen ohne Probleme behandeln. Um diese Probleme zu vermeiden, plane ich, alle Anfragen und Antworten mit Kafka zu speichern und abzurufen.Verwenden Sie Kafka in der AWS EBS microservice docker-Umgebung, um Benutzeranfragen zu vermeiden und mehr gleichzeitige Treffer zu verarbeiten

Also ich möchte Kafka verwenden, um die Anfrage und Antworten aller meiner Webdienste zu verwalten und einen separaten Dienst oder Web-Socket enthalten, um alle Anfragen zu verarbeiten und die Antworten wieder an Kafka zu speichern. In diesem Fall, wenn mein Core-Prozess-Docker abstürzt oder neu gestartet wird. Es wird keine Anfrage und Antworten zu irgendeinem Zeitpunkt verlieren. Es wird wieder anfangen, die Anfragen von Kafka zu lesen und zu verarbeiten.

Alle Webservices speichern die Anfrage im relevanten Thema in Kafka und erhalten die Antwort vom relevanten Antwortthema und kehren zu einer API-Antwort zurück. Ich habe die folgende Bibliothek gefunden, um Kafka in Scala-Webdiensten zu verwenden.

https://github.com/akka/reactive-kafka/

enter image description here

Überprüfen Sie bitte das Architekturdiagramm angebracht, das ich es werde verwenden, um effizient eine große Anzahl von gleichzeitigen Anforderungen von Client-Anwendungen zu verarbeiten. Ist es ein guter Ansatz, um fortzufahren? Muss ich irgendetwas in meiner Architektur ändern?

Ich habe diese Architektur nach mehr Forschung über Kafka und Microservice Docker erstellt. Bitte lassen Sie mich wissen, wenn etwas mit dieser Architektur nicht stimmt.

+0

Im Allgemeinen sind diese Art von Fragen off-topic in SO. Können Sie näher erläutern, welchen Nutzen Kafka in dieser Architektur hat? Warum brauchst du es überhaupt? –

+0

Ich möchte alle Anfragen von Client-Anwendungen zu kafka speichern. Alle APIs speichern die Anfragen, und der Kernprozess nimmt die Anfrage entgegen und verarbeitet sie anschließend in einem separaten Thema. Die API erhält diese Antwort mithilfe der entsprechenden Korrelations-ID und gibt die Antwort an die Client-Apps zurück. Ich möchte Kafka verwenden, um Datenverlust zu vermeiden und eine große Anzahl gleichzeitiger Anfragen zu bearbeiten. –

Antwort

0

Das ist Kafkas Brot und Butter, also glaube ich nicht, dass Sie damit irgendwelche architektonischen Probleme bekommen. Seien Sie sich bewusst, dass Kafka einen erheblichen Overhead hat. Eine gute Quelle für den Einstieg ist Kafka: The Definitive Guide, geschrieben von Confluent (https://www.confluent.io/wp-content/uploads/confluent-kafka-definitive-guide-complete.pdf). Es geht ausführlich auf viele allgemeine betriebliche Probleme ein, die in der Dokumentation nicht erwähnt werden.

Verwandte Themen