syntax = "proto3"; package envoy.extensions.load_balancing_policies.least_request.v3; import "envoy/config/cluster/v3/cluster.proto"; import "envoy/config/core/v3/base.proto"; import "google/protobuf/wrappers.proto"; import "udpa/annotations/status.proto"; import "validate/validate.proto"; option java_package = "io.envoyproxy.envoy.extensions.load_balancing_policies.least_request.v3"; option java_outer_classname = "LeastRequestProto"; option java_multiple_files = true; option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/load_balancing_policies/least_request/v3;least_requestv3"; option (udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: Least Request Load Balancing Policy] // [#not-implemented-hide:] // This configuration allows the built-in LEAST_REQUEST LB policy to be configured via the LB policy // extension point. See the :ref:`load balancing architecture overview // ` for more information. // [#extension: envoy.load_balancing_policies] message LeastRequest { // The number of random healthy hosts from which the host with the fewest active requests will // be chosen. Defaults to 2 so that we perform two-choice selection if the field is not set. google.protobuf.UInt32Value choice_count = 1 [(validate.rules).uint32 = {gte: 2}]; // The following formula is used to calculate the dynamic weights when hosts have different load // balancing weights: // // `weight = load_balancing_weight / (active_requests + 1)^active_request_bias` // // The larger the active request bias is, the more aggressively active requests will lower the // effective weight when all host weights are not equal. // // `active_request_bias` must be greater than or equal to 0.0. // // When `active_request_bias == 0.0` the Least Request Load Balancer doesn't consider the number // of active requests at the time it picks a host and behaves like the Round Robin Load // Balancer. // // When `active_request_bias > 0.0` the Least Request Load Balancer scales the load balancing // weight by the number of active requests at the time it does a pick. // // The value is cached for performance reasons and refreshed whenever one of the Load Balancer's // host sets changes, e.g., whenever there is a host membership update or a host load balancing // weight change. // // .. note:: // This setting only takes effect if all host weights are not equal. config.core.v3.RuntimeDouble active_request_bias = 2; // Configuration for slow start mode. // If this configuration is not set, slow start will not be not enabled. config.cluster.v3.Cluster.SlowStartConfig slow_start_config = 3; }