Caché y arquitectura para una API de apuestas deportivas

Trabajo anterior a SIMYL Research de un integrante del equipo; la procedencia está al final de la ficha.

Problema

Una API de apuestas deportivas en tiempo real recibía muchas solicitudes repetidas que recomputaban precios en el origen. Bajo picos de tráfico, el patrón de avalancha (thundering herd) multiplicaba la carga y la latencia.

Intervención

Caché en memoria con protocolo single-flight (un solo cálculo por clave mientras los demás hilos esperan el resultado), enrutamiento por hash a múltiples gateways para que las solicitudes de una misma clave lleguen al mismo nodo, y una segunda capa de caché compartida. El protocolo de concurrencia se diseñó en C++ en 1998; su versión en Go, gateway_cache, se publicó en 2020 y está en producción desde entonces en la plataforma de datos deportivos de Genius Sports, empresa donde trabajó el responsable y que publica el código en geniussportsgroup/gateway_cache. La reimplementación en C++20, cpp-cache, es código abierto; sus mediciones de 2026 están en Benchmarks.

Resultados registrados

En pruebas de 2023 en entornos controlados, con la implementación en Go:

  • Hasta 100.000 solicitudes por segundo con p99 inferior a 500 ms.
  • Más del 95 % de aciertos en la primera capa; alrededor del 0,25 % del tráfico llegó al origen.
  • Latencias aproximadas de 50 µs en la primera capa y 500 µs en la segunda, dependientes del hardware.

Límites

Las cifras proceden de pruebas de carga, no de tráfico real de producción, y no se conserva la descripción completa del hardware y la configuración históricos. No se extrapolan a cpp-cache. El procedimiento con el que medimos hoy está en Cómo medimos. La arquitectura y las lecciones están documentadas en 100K peticiones por segundo y en Cuando una caché hace más que solo caché; el código está en gateway_cache y cpp-cache.

Procedencia

Trabajo previo de Leandro Rabindranath León, integrante de SIMYL Research, realizado en Genius Sports, donde trabajó: diseño del protocolo y de la arquitectura. El protocolo está publicado como código abierto: gateway_cache (Go, 2020) y cpp-cache (C++20). Las cifras corresponden a la implementación en Go y a las pruebas de 2023.

Cuéntanos tu proyecto.