Hedged Requests
Races one idempotent request across two endpoints and returns the first 2xx, 3xx, or 4xx response
Versions marked “overview” do not contain this page. Selecting one opens that version’s documentation overview.
Category: Practical
Task: Races one idempotent request across two endpoints and returns the first 2xx, 3xx, or 4xx response
Prerequisites: The product runtime and any backend services referenced by this configuration.
This configuration comes from the selected release. The example has not been run here; external services are not bundled.
Download the source file.
# Hedged Requests
#
# Races one idempotent request across two endpoints and returns the first
# 2xx, 3xx, or 4xx response. Requires the `hedged-requests` feature.
#
# Usage:
# # Start one upstream per endpoint before Praxis. See
# # docs/filters/http-filter-tutorial.md for the local-server pattern.
# python3 -m http.server 3001
# python3 -m http.server 3002
# cargo run -p praxis-proxy --features hedged-requests -- -c examples/configs/traffic-management/hedged-requests.yaml
# curl http://localhost:8080/
listeners:
- name: default
address: "127.0.0.1:8080"
filter_chains:
- main
filter_chains:
- name: main
filters:
- filter: router
routes:
- path_prefix: "/"
cluster: backend
hedge_policy:
initial_requests: 1
max_attempts: 2
per_try_timeout_ms: 30
budget_percent: 100
- filter: load_balancer
clusters:
- name: backend
load_balancer_strategy: round_robin
endpoints:
- "127.0.0.1:3001"
- "127.0.0.1:3002"
insecure_options:
allow_private_endpoints: true # example proxies to local backends