Each request that arrives from the mobile-client pool must be assigned to one
of several backend server instances by a load balancer. A server's
instantaneous service rate degrades as its queue builds up (contention for CPU,
memory bandwidth, DB connections):
rate(q) = capacity / (1 + k·q)
wait time ≈ q / rate(q) (queueing-theory style, like M/M/1)
- Round Robin — cycles through servers in fixed order, ignoring current load or capacity.
- Least Connections — always sends the next request to whichever server currently has the shortest queue.
- Weighted (smooth WRR) — like nginx's weighted round-robin: servers with more capacity receive a proportionally larger share, smoothed to avoid bursts.
- Arrival rate — requests/sec generated by mobile clients (Poisson process).
- Server instances — how many backend replicas share the load.
- Heterogeneous capacity — toggles unequal instance sizes (e.g. t2.micro vs t2.large), which exposes how badly plain Round Robin performs versus capacity-aware algorithms.
Real use: AWS ELB, nginx upstream and Kubernetes Service routing all pick between these same three families of algorithm.