Welchen Weg gehen Downstream- und Upstream-Services?

45

Bei einem System, das aus mehreren Diensten besteht, die sich gegenseitig anrufen (z. B. Front-End -> Back-End -> Speicher), habe ich oft Leute gehört, die Terminologie wie "Downstream" - oder "Upstream" -Dienste verwendet haben. Mir ist nicht klar, in welche Richtung das geht. Daten fließen in beide Richtungen. Anfragen fließen von mehr benutzerbezogenen zu mehr Back-End-Diensten, aber Antworten fließen in die entgegengesetzte Richtung, so dass es mir so oder so vorkommt

user69715
quelle
3
Interessanterweise enthält die HTTP-Spezifikation RFC 7230 Definitionen der Begriffe "Upstream" und "Downstream" in Abschnitt 2.3: tools.ietf.org/html/rfc7230#section-2.3
Jack

Antworten:

56

Die Downstream-Dienste sind diejenigen, die den Upstream-Dienst verbrauchen. Insbesondere sind sie auf den vorgelagerten Dienst angewiesen . Das Front-End befindet sich also stromabwärts zum Back-End, da es vom Back-End abhängt. Das Back-End kann ohne das Front-End sinnvoll existieren, aber das Front-End macht ohne das Back-End keinen Sinn.

Die Abhängigkeit muss nicht so stark sein, wie ich es im vorherigen Absatz festgestellt habe. Im Allgemeinen müssen Upstream-Dienste die Existenz von Downstream-Diensten nicht kennen oder berücksichtigen. Downstream-Dienste kümmern sich um die Existenz von Upstream-Diensten, auch wenn sie diese nur optional nutzen.

Derek Elkins
quelle
Ich denke, es sollte "nachgelagerte Dienste" anstelle von "nachgelagerten Diensten" sein .
Nawaz,
8

Leider gibt es Meinungsverschiedenheiten über die Bedeutung von Upstream / Downstream. Wenn ich über Systemarchitektur spreche, definiere ich sie wie folgt:

Bei einem bestimmten System sind Systeme, die den Nachrichten- / Datenaustausch mit dem betreffenden System initiieren, vorgelagerte Systeme, und Systeme, von denen das betreffende System abhängt (dh Systeme, zu denen mein System den Datenaustausch initiiert), sind nachgelagerte Systeme.

Dieser Link von IBM, der die Interaktionen mit einem ihrer Produkte beschreibt, bestätigt diese Ansicht: Integration in vor- und nachgelagerte Systeme https://www.ibm.com/support/knowledgecenter/en/SSWSR9_11.3.0/com.ibm.pim.dev.doc /integration/pim_con_dev_creatingjobsforintegrationcontainer.html

Ein Upstream-System ist jedes System, das Daten an das Collaboration Server-System sendet. Ein Downstream-System ist ein System, das Daten vom Collaboration Server-System empfängt.

Angesichts der Terminologie „stromaufwärts“ und „stromabwärts“ kann es hilfreich sein, eine Analogie mit einem Fluss zu erstellen. Wenn Sie eine Nachricht (Daten) im Fluss ablegen, fließt sie von stromaufwärts (Initiator) nach stromabwärts (Empfänger).

Anekdotisch habe ich festgestellt, dass Architekten und Middleware-Entwickler diese Definition verwenden und Webentwickler das Gegenteil (möglicherweise aufgrund des Hochladens).

Bei Ereigniszeitleisten ist ein Ereignis vorgelagert, wenn es vor einem Punkt auf der Zeitleiste auftritt (dh ein anderes Ereignis auslöst), und nachgelagert, wenn es danach auftritt (dh das Ereignis empfangen hat). Was in einer Sequenz von Ereignissen vor- und nachgelagert ist, hängt daher davon ab, wo Sie sich in der Timeline befinden. Ein Ereignis kann sowohl Downstream als auch Upstream sein, je nachdem, ob Ihr Startpunkt davor oder danach liegt.

Wie @ Jack bemerkt, hat RFC7230 tools.ietf.org/html/rfc7230#section-2.3 dies:

Die Begriffe "Upstream" und "Downstream" werden verwendet, um
Richtungsanforderungen in Bezug auf den Nachrichtenfluss zu beschreiben : Alle
Nachrichten fließen von Upstream nach Downstream

Es würde mich interessieren, welche Stimmen am häufigsten verwendet werden!

roj
quelle
1
Dies ist nur verwirrend, weil Sie sich in dieser Angelegenheit selbst verwirrt sind. Es gibt keine Diskrepanzen, nur einen Unterschied in der Sichtweise.
Martin Maat
@MartinMaat Ich bin mit deinem ersten Satz nicht einverstanden und stimme deinem zweiten zu.
17.
3

Der beste Weg, darüber nachzudenken, ist, an einen Fluss zu denken.

Der stromabwärtige Teil des Flusses kann kein Wasser bekommen, es sei denn, er kommt von stromaufwärts, dh stromabwärts ist für sein Wasser von stromaufwärts abhängig.

Wenn jemand den stromabwärtigen Teil des Flusses zerstören würde, hätte dies keine Auswirkungen auf den stromaufwärtigen Teil. Wenn jemand den stromaufwärtigen Teil des Flusses zerstören würde, würde dies stromabwärtige Auswirkungen haben, dh es würde kein Wasser bekommen.

Downstream-Dienste sind also von Upstream-Diensten abhängig. Wenn die Upstream-Dienste entfernt werden, funktionieren die Downstream-Dienste nicht ordnungsgemäß.

Gaz_Edge
quelle
Und für das gewisse Extra an Klarheit; In einer Standard-CRUD-Client-Server-Beziehung sind beide Enden vor- und nachgeschaltet. Der Client kann keine Daten oder Aktualisierungen abrufen, wenn der Server ausfällt, und der Server verfügt über keine auszuführenden Anweisungen, wenn kein Client vorhanden ist.
Delioth
1
@Delioth nicht einverstanden. Das Backend kann viele Clients haben, ist jedoch nicht von einem einzelnen abhängig. Wenn Sie einen Client entfernen, funktioniert das Backend weiterhin. Der Client kann viele Backends haben, die er verwenden könnte. Wenn ein Backend entfernt wird, ohne dass der Client dies weiß, kann der Client nicht ordnungsgemäß funktionieren. Kunde ist nachgelagert. Backend ist Upstream.
Gaz_Edge
1

Dies ist möglicherweise eher ein sprachliches und geografisches als ein technisches Problem.

  • Das Auskunftsersuchen geht vorgelagert. Es kommt aus einem nachgeschalteten System.

  • Die Antwort auf die Informationsanfrage (die angeforderte Information) geht stromabwärts und wird von einem stromaufwärts gelegenen System gesendet.

Es gibt keinen Unterschied zwischen der klassischen IBM-Ansicht und der Verwendung der Begriffe durch die heutige Web-Community.

  • Ein Dienstanbieter (Server) befindet sich im Vergleich zu einem Dienstverbraucher stromaufwärts und sendet Informationen stromabwärts an den Verbraucher.

  • Ein Dienstverbraucher (Client) befindet sich im Vergleich zum Dienstanbieter stromabwärts und sendet Anforderungen stromaufwärts an den Anbieter.

Theoretisch könnten sich die Rollen physikalischer Systeme sofort ändern, ebenso die Richtung des Stroms zwischen diesen Systemen. In einem Peer-to-Peer-Netzwerk kann dies der Fall sein.

Die Begriffe Upload und Download sind kundenorientierte Begriffe. Aus Sicht des Kunden wird eine Anfrage hochgeladen und eine Antwort heruntergeladen, die mit der Stream-Metapher übereinstimmt.

Martin Maat
quelle