Class ChannelPoolSettings
- java.lang.Object
-
- com.google.api.gax.grpc.ChannelPoolSettings
-
@BetaApi("surface for channel pool sizing is not yet stable") public abstract class ChannelPoolSettings extends ObjectSettings to controlChannelPoolbehavior.To facilitate low latency/high throughout applications, gax provides a
ChannelPool. The pool is meant to facilitate high throughput/low latency clients. By splitting load across multiple gRPC channels the client can spread load across multiple frontends and overcome gRPC's limit of 100 concurrent RPCs per channel. However oversizing theChannelPoolcan lead to underutilized channels which will lead to high tail latency due to GFEs disconnecting idle channels.The
ChannelPoolis designed to adapt to varying traffic patterns by tracking outstanding RPCs and resizing the pool size. This class configures the behavior. In general clients should aim to have less than 50 concurrent RPCs per channel and at least 1 outstanding per channel per minute.The settings in this class will be applied every minute.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classChannelPoolSettings.Builder
-
Constructor Summary
Constructors Constructor Description ChannelPoolSettings()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static ChannelPoolSettings.Builderbuilder()abstract intgetInitialChannelCount()The initial size of the channel pool.abstract intgetMaxChannelCount()The absolute maximum size of the channel pool.abstract intgetMaxRpcsPerChannel()Threshold to start scaling up the channel pool.abstract intgetMinChannelCount()The absolute minimum size of the channel pool.abstract intgetMinRpcsPerChannel()Threshold to start scaling down the channel pool.abstract booleanisPreemptiveRefreshEnabled()If all of the channels should be replaced on an hourly basis.static ChannelPoolSettingsstaticallySized(int size)abstract ChannelPoolSettings.BuildertoBuilder()
-
-
-
Method Detail
-
getMinRpcsPerChannel
public abstract int getMinRpcsPerChannel()
Threshold to start scaling down the channel pool.When the average of the maximum number of outstanding RPCs in a single minute drop below this threshold, channels will be removed from the pool.
-
getMaxRpcsPerChannel
public abstract int getMaxRpcsPerChannel()
Threshold to start scaling up the channel pool.When the average of the maximum number of outstanding RPCs in a single minute surpass this threshold, channels will be added to the pool. For google services, gRPC channels will start locally queuing RPC when there are 100 concurrent RPCs.
-
getMinChannelCount
public abstract int getMinChannelCount()
The absolute minimum size of the channel pool.Regardless of the current throughput, the number of channels will not drop below this limit
-
getMaxChannelCount
public abstract int getMaxChannelCount()
The absolute maximum size of the channel pool.Regardless of the current throughput, the number of channels will not exceed this limit
-
getInitialChannelCount
public abstract int getInitialChannelCount()
The initial size of the channel pool.During client construction the client open this many connections. This will be scaled up or down in the next period.
-
isPreemptiveRefreshEnabled
public abstract boolean isPreemptiveRefreshEnabled()
If all of the channels should be replaced on an hourly basis.The GFE will forcibly disconnect active channels after an hour. To minimize the cost of reconnects, this will create a new channel asynchronuously, prime it and then swap it with an old channel.
-
toBuilder
public abstract ChannelPoolSettings.Builder toBuilder()
-
staticallySized
public static ChannelPoolSettings staticallySized(int size)
-
builder
public static ChannelPoolSettings.Builder builder()
-
-