2017-02-18 11 views
3

TL; DRマルチスレッドJava GRPC(1.1.2)クライアントのManagedChannelインスタンスをプールする必要はありますか?

はgrpc-JavaのManagedChannelは、暗黙的な接続プールを持っていますかManagedChannelインスタンスのプーリングは使用者の責任ですか?


したがって、私はprotoc 3.2.0でjava grpc 1.1.2を使用しています。 grpcがクライアントに提供する接続プーリングのための暗黙のサポートは今のところありません。しかしながら、grpcにおける接続の抽象化、すなわちManagedChannelオブジェクトは、実際には複数のTCP接続で動作するように思われる。あれは正しいですか?その場合、ManagedChannelには接続プーリングが付属していますか?その場合、チャネルがスレッドセーフで、クライアント全体で単一のManagedChannelインスタンスを使用するだけで、接続プーリングについて心配する必要はありません。しかし、必要に応じて、これらのチャンネルオブジェクトをプールしてスループットを向上させる必要があります。 grpc自体のためにこれを行うそのような実装(チャンネルのプール)はありますか?

答えて

2

スループットを向上させるためにプールしたかったので、チャンネルの1つのアドレスに対して複数の接続を作成してプールしたいとします。チャネルインプラントはアドレスごとに1つの接続を作成するために使用されたため、サポートされていませんでした。間もなく古いバージョンに近づくLBv2では、カスタムのLoadBalancerが可能になりました。create多くの場合、あなたは接続のためにSubchannelを好きなように使用できます。

独自のLoadBalancerの書き方については、pick-firstround-robin LoadBalancersを参照できます。

1

はい、ManagedChannelは接続プーリングを行い、必要なのは1つだけです。必要に応じて自動的に接続を作成し、破棄します。

関連する問題