2016-06-10 14 views
0

Wir haben eine Reihe von Microservices, die im Ökosystem zusammenarbeiten. Wir hatten gelegentlich Probleme, bei denen einer oder mehrere dieser Microservices aus Versehen untergehen würden. Glücklicherweise haben wir ein Monitoring aufgebaut, das dies erkennen und korrigierende Maßnahmen ergreifen würde.Clustering Microservice Komponenten

Jetzt möchten wir Redundanz um jeden dieser Microservices aufgebaut haben. Ich denke eher an einen Master/Slave-Ansatz, bei dem ein Sklave immer in Bereitschaft ist und wenn der Master ausgeht, hebt der Slave es auf.

Sollten wir in Erwägung ziehen, ein Framework zu verwenden, das wir als Service Registry verwenden könnten, wo wir jeden dieser Microservices registrieren und zulassen, dass sie kontrolliert werden? Gibt es noch weitere Vorschläge, wie Sie mit den Microservices die Art von Master/Slave-Architektur erreichen können, die eine Failover-Redundanz ermöglicht?

Antwort

0

Ich dachte für ein paar Minuten darüber nach und das ist, was ich derzeit denke, die beste Methode, basierend auf Erfahrung.

Es gibt ein paar Probleme, die Sie mit der Verfügbarkeit konfrontiert werden. Erstens hat immer mindestens ein Endpunkt oben. Dies ist durch die Installation auf mehreren Servern problemlos möglich. Im Unternehmensbereich würden Sie einen Namen für den Endpunkt verwenden und ihn dann auf mehrere Server (virtuelle oder Hardware) auflösen lassen. Du würdest es auch ausbalancieren.

Die zweite ist die Registrierung. Dies ist ein sehr einfaches Problem mit der API-Verwaltungssoftware. Die wirklich gute Software in diesem Bereich ist nicht billig, also ist dies keine Wochenend-Hobby-Software. Aber es gibt Open-Source-API-Management-Lösungen da draußen. Da ich im Enterprise-Bereich arbeite, kenne ich Optionen wie Apigee, CA, Mashery usw. sehr gut, daher kann ich keine Open-Source-Option empfehlen und fühle mich wohl.

Sie könnten Ihre eigene Registrierung erstellen, wenn Sie es wünschen. Seien Sie vorsichtig, wie Sie es entwerfen, denn eine "Registrierung aller Schnittstellen" führt zu einem Dienst, der enger gekoppelt wird.

+0

Was wir wollen, ist nur eine Failover-Instanz, die aktiv wird, wenn der Master ausfällt. Es ist mehr oder weniger das gleiche Konzept mit Apache Kafka Brokern! – sparkr

+0

Kafka löst das, indem alle Knoten an einem zentralen Ort registriert sind und eine große Menge an Software vorhanden ist. Aber ich lache über das "out of the box" -Denken, denn die meisten Menschen betrachten Kafka nur als Nachrichtenbus und nicht als Blaupause für die Lösung von Problemen in anderen Bereichen. Aber, ja, einen zentralen "guaranteed up" -Dienst zu haben, der Endpunkte registriert, ist eine Option. Viel Glück bei Ihrer Lösung. –