ARCHIVED from builddistributedsystem.com on 2026-04-28 — URL: https://builddistributedsystem.com/tracks/loadbalancers/tasks/task-14-2-least-connections
TASK

Implementation

Implement least-connections load balancing:

  1. Track active connection count for each server
  2. When a request starts, increment count for chosen server
  3. When a request completes, decrement count
  4. Route new requests to server with fewest connections

This adapts to varying request durations automatically.

Sample Test Cases

Balance by connectionsTimeout: 5000ms
Input
{"src":"c0","dest":"lb","body":{"type":"init","msg_id":1,"node_id":"lb","node_ids":["lb","s1","s2","s3"]}}
{"src":"c1","dest":"lb","body":{"type":"set_connections","msg_id":2,"server":"s1","count":2}}
{"src":"c2","dest":"lb","body":{"type":"set_connections","msg_id":3,"server":"s2","count":5}}
{"src":"c3","dest":"lb","body":{"type":"set_connections","msg_id":4,"server":"s3","count":1}}
{"src":"c4","dest":"lb","body":{"type":"route_request","msg_id":5}}
Expected Output
{"src": "lb", "dest": "c0", "body": {"type": "init_ok", "in_reply_to": 1, "msg_id": 0}}
{"src": "lb", "dest": "c1", "body": {"type": "set_connections_ok", "in_reply_to": 2, "msg_id": 1}}
{"src": "lb", "dest": "c2", "body": {"type": "set_connections_ok", "in_reply_to": 3, "msg_id": 2}}
{"src": "lb", "dest": "c3", "body": {"type": "set_connections_ok", "in_reply_to": 4, "msg_id": 3}}
{"src": "lb", "dest": "c4", "body": {"type": "route_request_ok", "server": "s1", "in_reply_to": 5, "msg_id": 4}}

Hints

Hint 1
Track active connections per server
Hint 2
Increment on request, decrement on complete
Hint 3
Select server with fewest connections
OVERVIEW

Theoretical Hub

Least Connections

Round robin fails when requests have varying durations - slow requests can pile up on one server. Least connections routes to the server with fewest active requests, naturally balancing load.

Weighted Least Connections

Combine weights with connection counts: select server with lowest (connections / weight) ratio. This accounts for both current load and server capacity.

Key Concepts

least connectionsdynamic loadconnection tracking
main.py
python
Implement Least Connections Algorithm - Load Balancers | Build Distributed Systems