Skip to content

Smallest-mailbox cluster router strategy #69

Description

@pathosDev

`ClusterRouter` (#50) ships with round-robin / random / consistent-hashing / broadcast. The v1 commit explicitly noted smallest-mailbox as out-of-scope because it requires pull-based mailbox-size queries per routee per message.

Why it's useful: uneven workloads. Some routees are slow (slow downstream, GC pause) — round-robin keeps piling messages on them. Smallest-mailbox queries every routee's queue depth and picks the shortest.

Implementation idea:

  • Each routee actor exposes `MailboxDepthRequest` system message → replies with its current size.
  • Router caches per-routee mailbox-depth with a TTL (e.g. 100ms).
  • For a route decision: serve from cache if fresh; else send concurrent depth queries with a short timeout (50ms), pick the smallest.
  • Cross-node depth queries ride the cluster transport — accept some overhead in exchange for better load balance.

Trade-off: added latency per route decision when cache is cold. Document that round-robin is still the right default for evenly-balanced workloads.

Estimate: 2-3 days.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority: lowNice-to-have / niche / demand-driven

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions