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
architecture
terminology
user69715
quelle
quelle
Antworten:
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.
quelle
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
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:
Es würde mich interessieren, welche Stimmen am häufigsten verwendet werden!
quelle
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äß.
quelle
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.
quelle