spring-cloud / spring-cloud/spring-cloud-gateway
Add load balancing mechanism Peak EWMA for Spring-cloud-gateway for Kubernetes
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 4.9k
- Forks
- 3.5k
- Avg merge
- 20h 57m
- Merged PRs (30d)
- 8
Description
Describe the solution you'd like
It would be great if Spring-cloud-gateway for Kubernetes supported the Peak EWMA (peak exponentially-weighted moving average) load balancing mechanism.
You can read about what Peak EWMA is here:
- Beyond Round Robin: Load Balancing for Latency
- Kubernetes on a High Traffic Environment: 3 Key Takeaways
It would be great if spring-cloud-gateway for Kubernetes could track the response time of endpoints in Kubernetes services and could balance based on EWMA. This is very useful when the application is under high load.
Describe alternatives you've considered
- As an alternative, we can use Peak EWMA balancing on the Kubernetes Ingress Controller, but then we need to pass all internal traffic in Kubernetes through it. This heavily loads the network bandwidth. And actually it's not a very good practice. Since ingress controller is used to balance internal Kubernetes traffic, not external.
load balance Ewma on Kubernetes Ingress Controller
-
Another alternative is to use the service mesh for example Linkerd.
But the mesh service always adds resource overhead and complicates the management between service networking. From the functionality of the service mesh, we only need the EWMA balancing mechanism. -
Use different API Gateway for example [Apache APISIX]https://apisix.apache.org/docs/ingress-controller/concepts/apisix_upstream/l)
Additional context
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files, tests, or entry points are named in the issue. Start by locating the Kubernetes service endpoint load-balancing path and its existing balancing mechanisms, then use the linked Peak EWMA references to define the design. Done means response-time tracking and Peak EWMA balancing for Kubernetes service endpoints, covered by tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, kubernetes
- Domain
- api, backend, cloud, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100