2017-05-24 8 views
0

私はモノリスであるアプリケーションに取り組んでいます。ロードマップには、マイクロサービスアーキテクチャに適していると思われる機能がいくつかあります。安らかなWebサービスへの接続を維持する方法はありますか?

私の問題:アプリケーションはピーク時に1秒あたり〜150リクエストを処理します。これらの要求は、常時生き続ける生のTCP/IP接続に入ります。私たちは非常に厳しい待ち時間要件を持っています(要求の大部分は25〜50ミリ秒以内に応答します)。各要求は、1〜複数のマイクロサービスを消費する必要があります。私の懸念は、複数の安らかなWebサービス(特にTLSハンドシェイクと同様にサービスが消費されるたびに接続の作成/破棄)を消費すると、これらの要求を処理するにはあまりにも多くの遅延が発生することです。

私の質問:複数のスレッドがそのWebサービスを使用している間、安らかなWebサービスへの接続の状態を維持することは可能ですか? Webサービスを使用する各リクエストは自己完結型ですが、物理的な接続を維持するだけです。

+0

HTTPをトランスポートプロトコルとして使用すると仮定すると、クライアントとサーバーの両方がHTTP 2をサポートしている場合、必要なものを得ることができます。 –

答えて

1

JVMは、HttpURLConnectionhttp://docs.oracle.com/javase/8/docs/technotes/guides/net/http-keepalive.html経由)のHTTP接続を自然にプールします。だから、JAX-WSとJAX-RSがすぐに使えるはずです。通常、他のnon-HttpURLConnectionベースのフレームワーク(nettyのような)はHTTP接続プールもサポートしています。したがって、あなた自身がコードでこれを心配する必要はありません。プールする必要のあるコネクションの数を計算する必要がありますが、それは設定のようなものです。

tcpdumpまたはWiresharkでトラフィックをスニッフィングしてHTTP応答を取得した後、TCP接続が閉じられていないことを確認し、結果を取得した後にTCP FINが発生していないかどうかを確認できます。

関連する問題