Change the load balancer to reduce invoker activation queueing
- Dominant language
- Scala
- Stars
- 6.8k
- Forks
- 1.2k
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 2
Description
## Problem statement:
The current workflow of queueing activations to per-invoker topics has some limitations like:
early routing: invokers are all treated the same, and once an invoker is selected to process an activation, it is queued for that invoker, even though a different invoker may end up having more capacity to process it earlier.
## Suggested solution:
Provide a unified overflow topic and route an overflowed activation (all invokers reach execution capacity) to an invoker ONLY after an invoker has become available to process the activation.
This provides benefits like: queuing behavior is predictable ("waiting for execution", instead of "waiting for capacity" + "waiting for execution") since invokers won't be subjected to loads they cannot handle, and scheduling activations to a specific invoker will be more fair.
Contributor guide
Research direction
Start by tracing the current workflow that queues activations to per-invoker topics and how the load balancer selects invokers. Then examine where a unified overflow topic could be integrated. Done means overflowed activations wait for an invoker to become available rather than being queued for an unavailable invoker, with fairer and more predictable scheduling.
Written by the indexing model from the issue text.
Assessment
- Domain
- backend, cloud, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100