Frage

Einer der Grundsätze von SOA ist: „Service ist autonom“. Ich habe 2 Dienstleistungen. Service A abhängig von Service B. Service A können die Kunden nicht dienen, es sei denn Service B ist und läuft. Muss ich verletzen die Lehre hier?

Oder wenn autonome muss „entkoppelt“ bedeuten, genügen ich den Grundsatz, wenn ich eine ausfallsichere (sagen wir eine andere Instanz von Dienst B läuft an anderer Stelle, die verbunden ist, wenn primäre Instanz ist nach unten.) Haben? Dies kann meine Verfügbarkeit Anforderungen erfüllen, aber ich bin nicht sicher, wie dies meine Abhängigkeit zu reduzieren. Ja, das könnte der Failsafe auch Service C von einem Dritten sein und in diesem Fall habe ich meine Autonomie verbessere.

Oder bedeutet die Lehre nur, dass die Dienste als „fifedoms“ mit klar definierten Schnittstellen für das Erhalten der Daten in & out zu gestalten sind. Allerdings scheinen einige Gurus zu denken, dass Sie benötigen, um auch diese Daten zu speichern, die Sie intern empfangen Abhängigkeit zu reduzieren und pflegen Sie Ihre Autonomie ...

Ist es ein Fehler, wenn ich Dienste als Komponenten mit Messaging behandeln? :)

Die Gedanken?

War es hilfreich?

Lösung

Sehen Sie diesen Beitrag auf SOA Tenets . Siehe auch The Fractal Constellation von Autonom Dienstleistungen .

„Service sollte unabhängig von anderen Dienstleistungen und / oder Anwendungen implementiert, verwaltet und versioniert wird, die davon abhängen.“

Autonomie bedeutet nicht isoliert oder ganz eigenständige.

Stattdessen können Sie eine „Konstellation“ von zwei Dienste haben. Ja, sie sind voneinander abhängig. Nein, A nicht bricht, wenn B bewegt wird oder aufgerüstet. Auch nicht eine Pause, wenn B nicht-Schnittstelle Interna geändert werden.

In ähnlicher - von B-Sicht -. Und Upgrade-Interna A ist nicht durch Änderungen in B-Schnittstelle und Einbauten nicht kräuseln

Die evolve API unabhängig. Die Schema, Nachrichten und Implementierungen sind unabhängig. Sie geschehen einfach miteinander beziehen.

„Service A nicht Kunden dienen, es sei denn Service-B ist und läuft“ - keine Sorge. Service A können die Kunden nicht dienen, wenn es unten ist, entweder. Service nach unten ist ein Problem. Nicht davon los B (auf der A abhängt) oder A. Die Abhängigkeit hat nichts mit A oder B zu tun, zuverlässig oder zur Verfügung steht.

Ja, Dienstleistungen haben gut definierte und unabhängige Schnittstellen. Die Implementierung von A hängt von B, aber die Schnittstelle nicht.


Bearbeiten.

„einig Gurus scheinen zu denken, dass Sie benötigen, um auch diese Daten zu speichern, die Sie intern empfangen Abhängigkeit zu verringern und Ihre Autonomie zu halten ...“

Kann nicht den Punkt sehen. Wenn A hängt von B und B-Algorithmus ändert, A Kopie von B Daten - gut - alt. Hängt-on bedeutet in der Regel ein Leben, arbeiten, up-to-the-Transaktion Beziehung.

Das Problem ist, dass B langsam sein kann, die eine langsame macht, was die Anwendung macht, die eine langsame verwendet. Das ist schade. Aber das ist kein Aufruf, die Autonomie Regeln für das Brechen und A einen geheimen Cache alten Daten von B halten zu müssen.

Andere Tipps

Ihre Autonomie nur verbessert durch eine Sicherungsdienst mit. Was passiert, wenn beide Dienste B und C nach unten gehen? Dann wird Ihr Service geht nach unten. Sie können Ihre Autonomie (und Ihre Leistung) noch weiter durch Caching ergibt sich aus den externen Diensten verbessern. Auf diese Weise, wenn B und C nach unten gehen, können Sie Service einig Ihre Kunden mit zwischengespeicherten Ergebnissen. Solange Sie auf 3rd-Party-Dienste angewiesen sind, obwohl, werden Sie nie zu 100% Autonomie erreichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top