Modules
Distributed RPC load balancer built on :pg.
Configuration defaults for RpcLoadBalancer.
GenServer responsible for joining the :pg group, monitoring membership
changes, and performing graceful connection draining on shutdown.
Shared atomic counters for slot-based round-robin and per-node connection tracking across all load balancers.
Tracks in-flight RPC calls and provides graceful connection draining.
Shared atomic counter for tracking in-flight calls per load balancer.
ETS-backed cache for the consistent hash ring built by
RpcLoadBalancer.LoadBalancer.SelectionAlgorithm.HashRing.
Assigns unique integer indices to arbitrary keys for a given cache.
Cache for parsed, immutable per-load-balancer options.
Shared ETS cache for CPU metrics, keyed by node.
Wrapper around :pg used by RpcLoadBalancer.LoadBalancer.
Behaviour for load balancer node selection.
Selection algorithm that executes calls directly on the local node.
Consistent hash ring node selection algorithm powered by libring.
Least connections node selection algorithm.
Least CPU node selection algorithm.
GenServer that periodically samples local CPU via :cpu_sup and fetches
remote node CPU via :erpc.multicall/5, storing all results in
NodeCpuCache.
Power of Two Choices node selection algorithm.
Random node selection algorithm.
Round robin node selection algorithm.
Weighted round robin node selection algorithm.
Telemetry.Metrics definitions for RpcLoadBalancer.call/5 and
RpcLoadBalancer.cast/5 spans.
Retry logic for RPC operations that may fail when no nodes are available.