freno: el servicio de limitación de escritura de GitHub para clústeres MySQL

Fuentes: freno: GitHub's cooperative throttler service for MySQL clusters

freno es un servicio cooperativo y de alta disponibilidad desarrollado por GitHub Engineering para regular las escrituras en recursos compartidos. Su función principal es impedir que las aplicaciones saturen clústeres de MySQL cuando la latencia de replicación supera un umbral definido, evitando así efectos no deseados en la base de datos y en las aplicaciones que la consumen.

A diferencia de un proxy, freno no se interpone entre el cliente y el almacén de datos: observa el estado del clúster y responde con un veredicto ("puedes escribir" o "debes detenerte"). Los clientes lo consultan mediante peticiones HTTP HEAD del tipo /check/..., recibiendo códigos 200 (OK), 417 (Forbidden), 429 (Too Many Requests) o 500 (Error). El servicio está pensado para soportar cientos de consultas por segundo con un consumo ligero de recursos.

Una de sus utilidades clave es la fragmentación de operaciones masivas —cargas de datos, migraciones de esquema o actualizaciones a gran escala— en lotes pequeños (por ejemplo, de 100 filas) que consultan a freno antes de aplicarse. También permite inferir la validez de réplicas para mitigar los problemas de escritura seguida de lectura en el maestro. Cada aplicación cliente se identifica de forma cooperativa, y los administradores pueden forzar la limitación de una app concreta para dar prioridad a otras.

Freno admite listas estáticas de servidores o listas dinámicas mediante haproxy, y logra alta disponibilidad con el protocolo de consenso Raft: solo el nodo líder recopila métricas y atiende a los clientes. Se distribuye bajo licencia MIT, incluye un cliente oficial en Ruby (freno-client) y permanece en desarrollo activo con la posibilidad de recibir contribuciones externas.