Balanceo de carga en el cliente para un millón de peticiones por segundo en Zalando

Fuentes: Client-Side Load Balancing at a Million Requests Per Second

Zalando explica cómo construyó un balanceador de carga en el cliente (CSLB) para el tráfico interno de fan-out de su API de productos (PRAPI), que sirve millones de peticiones por segundo con latencia de un solo dígito de milisegundo en 25 mercados europeos. Hasta ahora, ese tráfico pasaba por Skipper, el ingress de código abierto del clúster, lo que generaba una exposición 100x en las peticiones por lotes y una dependencia compartida difícil de diagnosticar durante incidentes.

El nuevo componente replica el anillo de hash consistente de Skipper con xxHash64 y 100 nodos virtuales por endpoint, garantizando paridad de hash para no fragmentar las cachés locales de los pods. Se implementó como un módulo JVM sin frameworks, con descubrimiento de pods basado en un informer de Kubernetes con watch + debounce de 2 segundos, en lugar de polling al API. Sobre el anillo se incorporaron N-ring fade-in para incorporaciones suaves, bounded load basado en ocupación y enrutado por zona de disponibilidad con un factor de salud por latencia.

Antes fue necesario arreglar el pipeline de despliegue, que solo permitía unarelease diaria. El endurecimiento de esa ruta redujo costes y aisló al servicio de la infraestructura compartida, sin reemplazar a Skipper, que sigue gestionando el tráfico edge.