What problem are you trying to solve?
We want to support concurrency limit on requests and that too in a dynamic way similar to how the rate limit policy works. Currently the concurrency can be primarily controlled at the application layer using back-pressure but we would like to have this as policy at the mesh layer.
How should the problem be solved?
I was thinking we'll need the following steps:
- add a new HTTPLocalConcurrencyLimitPolicy crd
- add http_local_concurrency_limit parallel to http_local_rate_limit in linkerd2-proxy-api/proto/inbound.proto
- add the flow in control plane to watch for k8s crd and serving it in its api
- add the flow in proxy to add a concurrency limiter based on the limit provided by the control plane
Any alternatives you've considered?
Currently we're relying on the global concurrency limit (default 10_000)
How would users interact with this feature?
No response
Would you like to work on this feature?
yes