ダウンストリームサービスとアップストリームサービスはどちらですか?


45

相互に呼び出す複数のサービス(フロントエンド->バックエンド->ストレージなど)で構成されるシステムの場合、「ダウンストリーム」または「アップストリーム」サービスなどの用語を使用している人がよくいました。これらがどの方向を意味するのかは明確ではありません。データは両方向に流れます。リクエストはより多くのユーザー向けからより多くのバックエンドサービスに流れますが、レスポンスは反対方向に流れるため、どちらかの方法で議論できるように思えます


3
興味深いことに、HTTP仕様RFC 7230には、セクション2.3に「上流」および「下流」という用語の定義が含まれています。tools.ietf.org
Jack

回答:


56

ダウンストリームサービスは、アップストリームサービスを消費するサービスです。特に、それらはアップストリームサービスに依存しています。したがって、フロントエンドはバックエンドに依存しているため、フロントエンドはバックエンドの下流にあります。バックエンドはフロントエンドなしで意味のある存在にできますが、フロントエンドはバックエンドなしでは意味がありません。

依存関係は、前の段落で述べたほど強力である必要はありません。より一般的には、アップストリームサービスは、ダウンストリームサービスの存在を認識したり、気にする必要はありません。ダウンストリームサービスは、必要に応じてそれらを消費するだけでも、アップストリームサービスの存在を考慮します。


私はそれがあるべきだと思う「下流サービス」の代わりに「下流サービス」
ナワズ

8

残念ながら、アップストリーム/ダウンストリームの意味について意見の相違があります。システムアーキテクチャについて話すときは、次のように定義します。

関心のあるシステムを考えると、関心のあるシステムへのメッセージ/データ交換を開始するシステムはアップストリームシステムであり、関心のあるシステムが依存するシステム(つまり、システムがデータ交換を開始するシステム)はダウンストリームシステムです。

IBMは、それらの製品のいずれかとの相互作用を記述から、このリンクは、この見解を裏付け: 上流と下流のシステムとの統合https://www.ibm.com/support/knowledgecenter/en/SSWSR9_11.3.0/com.ibm.pim.dev.doc /integration/pim_con_dev_creatingjobsforintegrationcontainer.html

アップストリームシステムは、Collaboration Serverシステムにデータを送信するシステムです。ダウンストリームシステムは、Collaboration Serverシステムからデータを受信するシステムです。

「上流」と「下流」という用語を考えると、川との類推が役立つかもしれません。川にメッセージ(データ)をドロップすると、上流(開始者)から下流(受信者)に流れます。

逸話的に、私はアーキテクトとミドルウェア開発者がこの定義を使用し、Web開発者がその逆を使用していることを発見しました(「アップロード」による可能性があります)。

イベントタイムラインでは、イベントは、タイムライン上のポイントの前に発生する(つまり、別のイベントをトリガーする)場合はアップストリームになり、その後に発生する(つまり、イベントを受信する)場合はダウンストリームになります。したがって、一連のイベントの上流と下流は、タイムラインのどこにいるかによって異なります。イベントは、開始点が前か後かによって、ダウンストリームとアップストリームの両方になります。

@Jackが指摘したようRFC7230のtools.ietf.org/html/rfc7230#section-2.3は、これを持っています:

「アップストリーム」および「ダウンストリーム」という用語
は、メッセージフローに関する方向の要件を説明するために使用されます。すべての
メッセージはアップストリームからダウンストリームに流れます

最も一般的な使用方法である投票で興味があります!


1
あなたは問題であなた自身を混同しているので、これはただ紛らわしいです。矛盾はなく、視点の違いだけです。
マーティンマート

@MartinMaat私はあなたの最初の文に同意せず、あなたの2番目の文にも同意します。
roj

3

これについて考える最良の方法は、川について考えることです。

川の下流部分は、上流から来ない限り水を得ることができません。すなわち、下流は上流の水に依存しています。

誰かが川の下流部分を破壊した場合、これは上流に影響を与えません。誰かが川の上流部分を破壊した場合、これは下流に影響を及ぼします。つまり、水を得ることができません。

したがって、ダウンストリームサービスはアップストリームサービスに依存します。アップストリームサービスが削除された場合、ダウンストリームサービスは正常に動作しません。


さらに明確にするために、標準のCRUDクライアントとサーバーの関係では、両端は互いにアップストリームとダウンストリームの両方です。サーバーがダウンしている場合、クライアントはデータや更新を取得できません。また、クライアントが存在しない場合、サーバーには実行する命令がありません。
デリオス

1
@Deliothは同意しません。バックエンドは多くのクライアントを持つことができますが、それらのどれにも依存しません。クライアントを削除しても、バックエンドは機能します。クライアントは、使用できる多くのバックエンドを持つことができます。クライアントが知らないうちに1つのバックエンドが削除されると、クライアントは正常に動作できません。クライアントはダウンストリームです。バックエンドはアップストリームです。
Gaz_Edge

1

これは、技術的な問題よりも言語的および地理的な問題である可能性があります。

  • 情報の要求は上流に行きます。それは下流のシステムから来ています。

  • 情報の要求(要求された情報)への応答はダウンストリームに送られ、アップストリームシステムによって送信されます。

古典的なIBMの見解と今日のWebコミュニティーでの用語の使用に違いはありません。

  • サービスプロバイダー(サーバー)は、サービスコンシューマーと比較してアップストリームに配置され、ダウンストリームにコンシューマーに情報を送信します。

  • サービスコンシューマ(クライアント)は、サービスプロバイダーと比較して下流に配置され、プロバイダーに要求を上流に送信します。

物理システムの理論上の役割は即座に変化する可能性があり、それらのシステム間のストリームの方向も変化します。ピアツーピアネットワークでは、これが該当する場合があります。

アップロードとダウンロードの用語は、クライアント中心の用語です。クライアントの観点からは、要求がアップロードされ、応答がダウンロードされます。これは、ストリームのメタファーと一致しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.