123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- syntax = "proto3";
- package envoy.api.v2.cluster;
- import "envoy/api/v2/core/base.proto";
- import "envoy/type/percent.proto";
- import "google/protobuf/wrappers.proto";
- import "udpa/annotations/migrate.proto";
- import "udpa/annotations/status.proto";
- import "validate/validate.proto";
- option java_package = "io.envoyproxy.envoy.api.v2.cluster";
- option java_outer_classname = "CircuitBreakerProto";
- option java_multiple_files = true;
- option go_package = "github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster";
- option csharp_namespace = "Envoy.Api.V2.ClusterNS";
- option ruby_package = "Envoy.Api.V2.ClusterNS";
- option (udpa.annotations.file_migrate).move_to_package = "envoy.config.cluster.v3";
- option (udpa.annotations.file_status).package_version_status = FROZEN;
- // [#protodoc-title: Circuit breakers]
- // :ref:`Circuit breaking<arch_overview_circuit_break>` settings can be
- // specified individually for each defined priority.
- message CircuitBreakers {
- // A Thresholds defines CircuitBreaker settings for a
- // :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`.
- // [#next-free-field: 9]
- message Thresholds {
- message RetryBudget {
- // Specifies the limit on concurrent retries as a percentage of the sum of active requests and
- // active pending requests. For example, if there are 100 active requests and the
- // budget_percent is set to 25, there may be 25 active retries.
- //
- // This parameter is optional. Defaults to 20%.
- type.Percent budget_percent = 1;
- // Specifies the minimum retry concurrency allowed for the retry budget. The limit on the
- // number of active retries may never go below this number.
- //
- // This parameter is optional. Defaults to 3.
- google.protobuf.UInt32Value min_retry_concurrency = 2;
- }
- // The :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`
- // the specified CircuitBreaker settings apply to.
- core.RoutingPriority priority = 1 [(validate.rules).enum = {defined_only: true}];
- // The maximum number of connections that Envoy will make to the upstream
- // cluster. If not specified, the default is 1024.
- google.protobuf.UInt32Value max_connections = 2;
- // The maximum number of pending requests that Envoy will allow to the
- // upstream cluster. If not specified, the default is 1024.
- google.protobuf.UInt32Value max_pending_requests = 3;
- // The maximum number of parallel requests that Envoy will make to the
- // upstream cluster. If not specified, the default is 1024.
- google.protobuf.UInt32Value max_requests = 4;
- // The maximum number of parallel retries that Envoy will allow to the
- // upstream cluster. If not specified, the default is 3.
- google.protobuf.UInt32Value max_retries = 5;
- // Specifies a limit on concurrent retries in relation to the number of active requests. This
- // parameter is optional.
- //
- // .. note::
- //
- // If this field is set, the retry budget will override any configured retry circuit
- // breaker.
- RetryBudget retry_budget = 8;
- // If track_remaining is true, then stats will be published that expose
- // the number of resources remaining until the circuit breakers open. If
- // not specified, the default is false.
- //
- // .. note::
- //
- // If a retry budget is used in lieu of the max_retries circuit breaker,
- // the remaining retry resources remaining will not be tracked.
- bool track_remaining = 6;
- // The maximum number of connection pools per cluster that Envoy will concurrently support at
- // once. If not specified, the default is unlimited. Set this for clusters which create a
- // large number of connection pools. See
- // :ref:`Circuit Breaking <arch_overview_circuit_break_cluster_maximum_connection_pools>` for
- // more details.
- google.protobuf.UInt32Value max_connection_pools = 7;
- }
- // If multiple :ref:`Thresholds<envoy_api_msg_cluster.CircuitBreakers.Thresholds>`
- // are defined with the same :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`,
- // the first one in the list is used. If no Thresholds is defined for a given
- // :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`, the default values
- // are used.
- repeated Thresholds thresholds = 1;
- }
|