Package io.grpc.grpclb
Class GrpclbLoadBalancer
- java.lang.Object
-
- io.grpc.LoadBalancer
-
- io.grpc.grpclb.GrpclbLoadBalancer
-
class GrpclbLoadBalancer extends LoadBalancer
ALoadBalancerthat uses the GRPCLB protocol.Optionally, when requested by the naming system, will delegate the work to a local pick-first or round-robin balancer.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class io.grpc.LoadBalancer
LoadBalancer.CreateSubchannelArgs, LoadBalancer.ErrorPicker, LoadBalancer.Factory, LoadBalancer.FixedResultPicker, LoadBalancer.Helper, LoadBalancer.PickDetailsConsumer, LoadBalancer.PickResult, LoadBalancer.PickSubchannelArgs, LoadBalancer.ResolvedAddresses, LoadBalancer.Subchannel, LoadBalancer.SubchannelPicker, LoadBalancer.SubchannelStateListener
-
-
Field Summary
Fields Modifier and Type Field Description private BackoffPolicy.ProviderbackoffPolicyProviderprivate GrpclbConfigconfigprivate Contextcontextprivate static GrpclbConfigDEFAULT_CONFIGprivate GrpclbStategrpclbStateprivate LoadBalancer.Helperhelperprivate com.google.common.base.Stopwatchstopwatchprivate SubchannelPoolsubchannelPoolprivate TimeProvidertime-
Fields inherited from class io.grpc.LoadBalancer
ATTR_HEALTH_CHECKING_CONFIG, DISABLE_SUBCHANNEL_RECONNECT_KEY, EMPTY_PICKER, HAS_HEALTH_PRODUCER_LISTENER_KEY, HEALTH_CONSUMER_LISTENER_ARG_KEY, IS_PETIOLE_POLICY
-
-
Constructor Summary
Constructors Constructor Description GrpclbLoadBalancer(LoadBalancer.Helper helper, Context context, SubchannelPool subchannelPool, TimeProvider time, com.google.common.base.Stopwatch stopwatch, BackoffPolicy.Provider backoffPolicyProvider)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StatusacceptResolvedAddresses(LoadBalancer.ResolvedAddresses resolvedAddresses)Accepts newly resolved addresses from the name resolution system.booleancanHandleEmptyAddressListFromNameResolution()Whether this LoadBalancer can handle empty address group list to be passed toLoadBalancer.handleResolvedAddresses(ResolvedAddresses).(package private) GrpclbStategetGrpclbState()voidhandleNameResolutionError(Status error)Handles an error from the name resolution system.private voidrecreateStates()voidrequestConnection()The channel asks the LoadBalancer to establish connections now (if applicable) so that the upcoming RPC may then just pick a ready connection without waiting for connections.private voidresetStates()voidshutdown()The channel asks the load-balancer to shutdown.-
Methods inherited from class io.grpc.LoadBalancer
handleResolvedAddresses, handleSubchannelState
-
-
-
-
Field Detail
-
DEFAULT_CONFIG
private static final GrpclbConfig DEFAULT_CONFIG
-
helper
private final LoadBalancer.Helper helper
-
context
private final Context context
-
time
private final TimeProvider time
-
stopwatch
private final com.google.common.base.Stopwatch stopwatch
-
subchannelPool
private final SubchannelPool subchannelPool
-
backoffPolicyProvider
private final BackoffPolicy.Provider backoffPolicyProvider
-
config
private GrpclbConfig config
-
grpclbState
@Nullable private GrpclbState grpclbState
-
-
Constructor Detail
-
GrpclbLoadBalancer
GrpclbLoadBalancer(LoadBalancer.Helper helper, Context context, SubchannelPool subchannelPool, TimeProvider time, com.google.common.base.Stopwatch stopwatch, BackoffPolicy.Provider backoffPolicyProvider)
-
-
Method Detail
-
acceptResolvedAddresses
public Status acceptResolvedAddresses(LoadBalancer.ResolvedAddresses resolvedAddresses)
Description copied from class:LoadBalancerAccepts newly resolved addresses from the name resolution system. TheEquivalentAddressGroupaddresses should be considered equivalent but may be flattened into a single list if needed.Implementations can choose to reject the given addresses by returning
false.Implementations should not modify the given
addresses.- Overrides:
acceptResolvedAddressesin classLoadBalancer- Parameters:
resolvedAddresses- the resolved server addresses, attributes, and config.- Returns:
trueif the resolved addresses were accepted.falseif rejected.
-
requestConnection
public void requestConnection()
Description copied from class:LoadBalancerThe channel asks the LoadBalancer to establish connections now (if applicable) so that the upcoming RPC may then just pick a ready connection without waiting for connections. This is triggered byManagedChannel.getState(true).If LoadBalancer doesn't override it, this is no-op. If it infeasible to create connections given the current state, e.g. no Subchannel has been created yet, LoadBalancer can ignore this request.
- Overrides:
requestConnectionin classLoadBalancer
-
resetStates
private void resetStates()
-
recreateStates
private void recreateStates()
-
shutdown
public void shutdown()
Description copied from class:LoadBalancerThe channel asks the load-balancer to shutdown. No more methods on this class will be called after this method. The implementation should shutdown all Subchannels and OOB channels, and do any other cleanup as necessary.- Specified by:
shutdownin classLoadBalancer
-
handleNameResolutionError
public void handleNameResolutionError(Status error)
Description copied from class:LoadBalancerHandles an error from the name resolution system.- Specified by:
handleNameResolutionErrorin classLoadBalancer- Parameters:
error- a non-OK status
-
canHandleEmptyAddressListFromNameResolution
public boolean canHandleEmptyAddressListFromNameResolution()
Description copied from class:LoadBalancerWhether this LoadBalancer can handle empty address group list to be passed toLoadBalancer.handleResolvedAddresses(ResolvedAddresses). The default implementation returnsfalse, meaning that if the NameResolver returns an empty list, the Channel will turn that into an error and callLoadBalancer.handleNameResolutionError(io.grpc.Status). LoadBalancers that want to accept empty lists should override this method and returntrue.This method should always return a constant value. It's not specified when this will be called.
- Overrides:
canHandleEmptyAddressListFromNameResolutionin classLoadBalancer
-
getGrpclbState
@Nullable GrpclbState getGrpclbState()
-
-