2017-01-20 7 views
1

私が正しく理解していれば、Akka Streamsで実装されたHTTPエンドポイントは、クライアントとの通信に使用されたソケットから読み取らずにHTTPクライアントにバックプレッシャを適用します。Spring Functional Web Frameworkを使用したRESTエンドポイントのバックプレッシャ

これはSpringの機能Webフレームワークで実装されたHTTPエンドポイントにも当てはまりますか?

もしそうでなければ、HTTPクライアントはどのように減速するのでしょうか?

答えて

1

はい、スプリング5、Webリアクティブモジュール、implements the reactive streams specReactor。支持背圧もその一部です。

注釈ベースと機能フレーバの両方が同じインフラストラクチャを使用するため、プログラミングモデルのみが異なることに注意してください。

+0

こんにちはブライアン!ご回答いただきありがとうございます。 Spring Functional Web Frameworkを使用してHTTPエンドポイントのバックプレッシャーを実装することに興味があります。私がRS仕様を知っている限り、それはちょうど "プロトコル"についてです。私はReactorの文書でも答えを見つけることができませんでした。明白な何かが恋しい? – nonpolar

+1

HTTPレベルでは、要求の要求に応じてバッファへの読み書きによってバックプレッシャが処理されます。これは、OSバッファがいっぱいになる可能性があることを意味し、リモートホストはソケットに書き込むことができません。しかし実際には、バックプレッシャ情報はワイヤを介して送信されません。 https://github.com/reactive-streams/reactive-streams-ioのようないくつかのプロトコルは、これに対処し、トランスポートプロトコルでバックプレッシャ情報を焼き付けます。 –

+0

要約すると、Akka HTTPと同じ方法で実装されています。下流からの要求がある場合、「Spring」はOSソケットから読み取ります。下流からの要求がない場合(例えば、DBがビジーである場合)、「春」はソケットから読み取られない。さらなる要求が到着すると、ソケットがいっぱいになり、クライアントが満杯になるとタイムアウトが発生します。しかし、これらの要求は、最終的にクラッシュにつながるマシンのメモリをいっぱいにしません。 – nonpolar

関連する問題