Eine solche Frage könnte ein Hinweis auf eine schlechte architektonische Aufteilung in Mikrodienste sein. Von was sind Microservices? ::
Diese Services basieren auf Geschäftsfunktionen und können
unabhängig voneinander von vollautomatisierten Bereitstellungsmaschinen bereitgestellt werden.
Der entscheidende Punkt, der in einem solchen Fall übersehen wird, wäre ihr unabhängig einsetzbarer Aspekt.
Der Punkt könnte auch einfach missverstanden werden: Es bedeutet nicht unbedingt, dass jeder Mikrodienst in der Lage sein sollte, seine gesamte Funktionalität für sich selbst auszuführen, sondern nur, dass er ordnungsgemäß entlassen werden kann, wenn ein anderer Mikrodienst, von dem seine Funktionalität abhängt, nicht verfügbar ist. Vielleicht behalten Sie den Überblick über "Aufgaben" für die spätere Ausführung, wenn dieser Microservice verfügbar wird.
Aus einer anderen Perspektive betrachtet: Die Behandlung der Nichtverfügbarkeit externer Dienstabhängigkeiten sollte eigentlich Teil jeder Mikroservice-Funktionalität sein - daher kann man den Mikroservice auch dann als voll funktionsfähig betrachten, wenn seine Laufzeitabhängigkeiten nicht erfüllt sind :)
Ich denke, es ist erwähnenswert, dass ich mich in den obigen Kommentaren auf die Nichtverfügbarkeit von Microservices beziehe, unabhängig von deren Grund, sei es die Reihenfolge der Bereitstellungsabhängigkeit oder etwas anderes (z. B. Ausfälle).
Eine andere zu berücksichtigende Sache wäre der feinere Unterschied zwischen der Bereitstellung der Mikrodienste und ihrer Umsetzung durch Umschalten des Datenverkehrs auf sie. Das Wechseln des Datenverkehrs ist häufig schneller als die Bereitstellung selbst. Daher kann die Verfügbarkeit auf der gesamten Systemebene erhöht werden, indem zuerst alle Mikrodienste bereitgestellt werden und erst dann die Verkehrsumschaltung für alle ausgeführt wird.
Wir hatten eine ähnliche Situation, in der eine unserer Anwendungen erstellt, bereitgestellt und betriebsbereit sein musste, bevor die zweite ausgeführt wurde. Dies lag daran, dass Anwendung A über einige Funktionen verfügt, die ausgeführt werden sollten, bevor über Anwendung B auf sie verwiesen wird. Wir haben dies erreicht, indem wir sie in eine einzelne Übermittlungspipeline integriert haben. Auf diese Weise wurden alle Abhängigkeiten nach Bedarf entweder nacheinander oder parallel bereitgestellt. Wir hatten auch unsere Datenbankskripte nacheinander zusammen mit Rollback-Funktionen, nur für den Fall. Um Ihren Fall neu zu formulieren, können Sie Ihre API vor Ihrem Front-End-Service bereitstellen. Hoffe das hilft.
quelle
Die Lösung besteht darin, die Mikrodienste mithilfe des blau / grünen Bereitstellungsmusters bereitzustellen.
quelle