Class OutlierDetectionLoadBalancer
LoadBalancer while monitoring for outlier backends and removing them from
the use of the child LB.
This implements the outlier detection gRFC: https://github.com/grpc/proposal/blob/master/A50-xds-outlier-detection.md
The implementation maintains two maps. Each endpoint status is tracked using an EndpointTracker. E.g. for two endpoints with these address list and their tracker: Endpoint e1 : [a1, a2] is tracked with EndpointTracker t1 Endpoint e2 : [a3] is tracked with EndpointTracker t2 The two maps are: First, addressMap maps from socket address -> endpoint tracker : [a1 -> t1, a2 -> t1, a3 -> t2] EndpointTracker has reference to all the subchannels of the corresponding endpoint. Second, trackerMap maps from unordered address set -> endpoint tracker. Updated upon address updates.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classThe configuration forOutlierDetectionLoadBalancer.Nested classes/interfaces inherited from class 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
-
Constructor Summary
ConstructorsConstructorDescriptionOutlierDetectionLoadBalancer(LoadBalancer.Helper helper, TimeProvider timeProvider) Creates a new instance ofOutlierDetectionLoadBalancer. -
Method Summary
Modifier and TypeMethodDescriptionacceptResolvedAddresses(LoadBalancer.ResolvedAddresses resolvedAddresses) Accepts newly resolved addresses from the name resolution system.voidhandleNameResolutionError(Status error) Handles an error from the name resolution system.voidshutdown()The channel asks the load-balancer to shutdown.Methods inherited from class LoadBalancer
canHandleEmptyAddressListFromNameResolution, handleResolvedAddresses, handleSubchannelState, requestConnection
-
Constructor Details
-
OutlierDetectionLoadBalancer
Creates a new instance ofOutlierDetectionLoadBalancer.
-
-
Method Details
-
acceptResolvedAddresses
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.
-
handleNameResolutionError
Description copied from class:LoadBalancerHandles an error from the name resolution system.- Specified by:
handleNameResolutionErrorin classLoadBalancer- Parameters:
error- a non-OK status
-
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
-