Documentation
¶
Overview ¶
Package outlierdetection provides an implementation of the outlier detection LB policy, as defined in https://github.com/grpc/proposal/blob/master/A50-xds-outlier-detection.md.
Index ¶
Constants ¶
const Name = "outlier_detection_experimental"
Name is the name of the outlier detection balancer.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FailurePercentageEjection ¶
type FailurePercentageEjection struct {
// Threshold is the failure percentage to use when determining failure
// percentage-based outlier detection. If the failure percentage of a given
// host is greater than or equal to this value, it will be ejected. Defaults
// to 85.
Threshold uint32 `json:"threshold,omitempty"`
// EnforcementPercentage is the % chance that a host will be actually
// ejected when an outlier status is detected through failure percentage
// statistics. This setting can be used to disable ejection or to ramp it up
// slowly. Defaults to 0.
EnforcementPercentage uint32 `json:"enforcementPercentage,omitempty"`
// MinimumHosts is the minimum number of hosts in a cluster in order to
// perform failure percentage-based ejection. If the total number of hosts
// in the cluster is less than this value, failure percentage-based ejection
// will not be performed. Defaults to 5.
MinimumHosts uint32 `json:"minimumHosts,omitempty"`
// RequestVolume is the minimum number of total requests that must be
// collected in one interval (as defined by the interval duration above) to
// perform failure percentage-based ejection for this host. If the volume is
// lower than this setting, failure percentage-based ejection will not be
// performed for this host. Defaults to 50.
RequestVolume uint32 `json:"requestVolume,omitempty"`
}
FailurePercentageEjection is parameters for the failure percentage algorithm. This algorithm ejects individual endpoints whose failure rate is greater than some threshold, independently of any other endpoint.
func (*FailurePercentageEjection) Equal ¶
func (fpe *FailurePercentageEjection) Equal(fpe2 *FailurePercentageEjection) bool
Equal returns whether the FailurePercentageEjection is the same with the parameter.
type LBConfig ¶
type LBConfig struct {
serviceconfig.LoadBalancingConfig `json:"-"`
// Interval is the time interval between ejection analysis sweeps. This can
// result in both new ejections as well as addresses being returned to
// service. Defaults to 10s.
Interval time.Duration `json:"interval,omitempty"`
// BaseEjectionTime is the base time that a host is ejected for. The real
// time is equal to the base time multiplied by the number of times the host
// has been ejected and is capped by MaxEjectionTime. Defaults to 30s.
BaseEjectionTime time.Duration `json:"baseEjectionTime,omitempty"`
// MaxEjectionTime is the maximum time that an address is ejected for. If
// not specified, the default value (300s) or the BaseEjectionTime value is
// applied, whichever is larger.
MaxEjectionTime time.Duration `json:"maxEjectionTime,omitempty"`
// MaxEjectionPercent is the maximum % of an upstream cluster that can be
// ejected due to outlier detection. Defaults to 10% but will eject at least
// one host regardless of the value.
MaxEjectionPercent uint32 `json:"maxEjectionPercent,omitempty"`
// SuccessRateEjection is the parameters for the success rate ejection
// algorithm. If set, success rate ejections will be performed.
SuccessRateEjection *SuccessRateEjection `json:"successRateEjection,omitempty"`
// FailurePercentageEjection is the parameters for the failure percentage
// algorithm. If set, failure rate ejections will be performed.
FailurePercentageEjection *FailurePercentageEjection `json:"failurePercentageEjection,omitempty"`
// ChildPolicy is the config for the child policy.
ChildPolicy *internalserviceconfig.BalancerConfig `json:"childPolicy,omitempty"`
}
LBConfig is the config for the outlier detection balancer.
func (*LBConfig) EqualIgnoringChildPolicy ¶
EqualIgnoringChildPolicy returns whether the LBConfig is same with the parameter outside of the child policy, only comparing the Outlier Detection specific configuration.
type SuccessRateEjection ¶
type SuccessRateEjection struct {
// StddevFactor is used to determine the ejection threshold for
// success rate outlier ejection. The ejection threshold is the difference
// between the mean success rate, and the product of this factor and the
// standard deviation of the mean success rate: mean - (stdev *
// success_rate_stdev_factor). This factor is divided by a thousand to get a
// double. That is, if the desired factor is 1.9, the runtime value should
// be 1900. Defaults to 1900.
StdevFactor uint32 `json:"stdevFactor,omitempty"`
// EnforcementPercentage is the % chance that a host will be actually ejected
// when an outlier status is detected through success rate statistics. This
// setting can be used to disable ejection or to ramp it up slowly. Defaults
// to 100.
EnforcementPercentage uint32 `json:"enforcementPercentage,omitempty"`
// MinimumHosts is the number of hosts in a cluster that must have enough
// request volume to detect success rate outliers. If the number of hosts is
// less than this setting, outlier detection via success rate statistics is
// not performed for any host in the cluster. Defaults to 5.
MinimumHosts uint32 `json:"minimumHosts,omitempty"`
// RequestVolume is the minimum number of total requests that must be
// collected in one interval (as defined by the interval duration above) to
// include this host in success rate based outlier detection. If the volume
// is lower than this setting, outlier detection via success rate statistics
// is not performed for that host. Defaults to 100.
RequestVolume uint32 `json:"requestVolume,omitempty"`
}
SuccessRateEjection is parameters for the success rate ejection algorithm. This algorithm monitors the request success rate for all endpoints and ejects individual endpoints whose success rates are statistical outliers.
func (*SuccessRateEjection) Equal ¶
func (sre *SuccessRateEjection) Equal(sre2 *SuccessRateEjection) bool
Equal returns whether the SuccessRateEjection is the same with the parameter.