p2c load balancer INCOMING REQUEST ┌──────────────────────────┐ │ SAMPLE 2 BACKENDS │ │ AT RANDOM FROM POOL │ └────────┬────────┬────────┘ │ │ ┌──────▼──┐ ┌──▼──────┐ │BACKEND A│ │BACKEND B│ │score=0.9│ │score=0.5│ └──────┬──┘ └─────────┘ │ (higher score wins) ┌──────────────────────────┐ │ SEND REQUEST │ └────────────┬─────────────┘ ┌──────────────────────────┐ │ UPDATE HEALTH AND │ │ PERFORMANCE STATS │ └──────────────────────────┘ sample two, pick the better one — no global state, no coordination backend pool B1 B2 B3 B4 B5 B6 B7 OVERVIEW p2c load balancer INCOMING REQUEST ┌──────────────────────────┐ │ SAMPLE 2 BACKENDS │ │ AT RANDOM FROM POOL │ └────────┬────────┬────────┘ │ │ ┌──────▼──┐ ┌──▼──────┐ │BACKEND A│ │BACKEND B│ │score=0.9│ │score=0.5│ └──────┬──┘ └─────────┘ │ (higher score wins) ┌──────────────────────────┐ │ SEND REQUEST │ └────────────┬─────────────┘ ┌──────────────────────────┐ │ UPDATE HEALTH AND │ │ PERFORMANCE STATS │ └──────────────────────────┘ a request arrives — every request is also a routing decision backend pool B1 B2 B3 B4 B5 B6 B7 RECEIVE p2c load balancer INCOMING REQUEST ┌──────────────────────────┐ │ SAMPLE 2 BACKENDS │ │ AT RANDOM FROM POOL │ └────────┬────────┬────────┘ │ │ ┌──────▼──┐ ┌──▼──────┐ │BACKEND A│ │BACKEND B│ │score=0.9│ │score=0.5│ └──────┬──┘ └─────────┘ │ (higher score wins) ┌──────────────────────────┐ │ SEND REQUEST │ └────────────┬─────────────┘ ┌──────────────────────────┐ │ UPDATE HEALTH AND │ │ PERFORMANCE STATS │ └──────────────────────────┘ two backends picked at random — no ranking, no coordination backend pool B1 B2 B3 B4 B5 B6 B7 SAMPLE p2c load balancer INCOMING REQUEST ┌──────────────────────────┐ │ SAMPLE 2 BACKENDS │ │ AT RANDOM FROM POOL │ └────────┬────────┬────────┘ │ │ ┌──────▼──┐ ┌──▼──────┐ │BACKEND A│ │BACKEND B│ │score=0.9│ │score=0.5│ └──────┬──┘ └─────────┘ │ (higher score wins) ┌──────────────────────────┐ │ SEND REQUEST │ └────────────┬─────────────┘ ┌──────────────────────────┐ │ UPDATE HEALTH AND │ │ PERFORMANCE STATS │ └──────────────────────────┘ one comparison per request — the better score wins backend pool B1 B2 B3 B4 B5 B6 B7 COMPARE p2c load balancer INCOMING REQUEST ┌──────────────────────────┐ │ SAMPLE 2 BACKENDS │ │ AT RANDOM FROM POOL │ └────────┬────────┬────────┘ │ │ ┌──────▼──┐ ┌──▼──────┐ │BACKEND A│ │BACKEND B│ │score=0.9│ │score=0.5│ └──────┬──┘ └─────────┘ │ (higher score wins) ┌──────────────────────────┐ │ SEND REQUEST │ └────────────┬─────────────┘ ┌──────────────────────────┐ │ UPDATE HEALTH AND │ │ PERFORMANCE STATS │ └──────────────────────────┘ request routed to the higher-scored backend backend pool B1 B2 B3 B4 B5 B6 B7 ROUTE p2c load balancer INCOMING REQUEST ┌──────────────────────────┐ │ SAMPLE 2 BACKENDS │ │ AT RANDOM FROM POOL │ └────────┬────────┬────────┘ │ │ ┌──────▼──┐ ┌──▼──────┐ │BACKEND A│ │BACKEND B│ │score=0.9│ │score=0.5│ └──────┬──┘ └─────────┘ │ (higher score wins) ┌──────────────────────────┐ │ SEND REQUEST │ └────────────┬─────────────┘ ┌──────────────────────────┐ │ UPDATE HEALTH AND │ │ PERFORMANCE STATS │ └──────────────────────────┘ scores stay fresh — recovery is automatic backend pool B1 B2 B3 B4 B5 B6 B7 OBSERVE