- Microservicio tipo sidecar diseñado para detectar en tiempo real el estado de un clúster de PostgreSQL
- Permite verificar al instante si un host está activo, distinguir entre máster y réplica, y conocer la latencia de la réplica
- Arquitectura ligera y de alto rendimiento: uso de memoria de unos 9 MiB y baja carga de CPU por solicitud, con capacidad de procesar hasta 9000 solicitudes por segundo
- Todos los datos se entregan mediante respuestas basadas en memoria, minimizando la latencia de las solicitudes
- Sondea periódicamente en segundo plano el estado de los hosts PostgreSQL y expone el resultado a través de una API HTTP (respuestas Plain/JSON)
- Endpoints principales de la API
/master: devuelve el host máster actual
/replica: devuelve una réplica seleccionada mediante algoritmo round-robin
/sync_by_time, /sync_by_bytes: devuelve una réplica según el estado de sincronización por tiempo o por bytes
/hosts: lista el estado de todos los hosts (JSON)
/status: consulta el estado detallado de un host específico
- Configuración basada en variables de entorno: permite un control detallado de aspectos como timeout de conexión, límite de retraso permitido y intervalo de sondeo
- Diseño lock-free con una sola escritura y múltiples lectores para ofrecer respuestas de lectura rápidas y mantener los datos actualizados
- Optimiza la velocidad de respuesta aceptando la posibilidad de inconsistencias temporales en los datos
- Registra en stdout/stderr los eventos de inicio y cierre del servicio, así como los cambios de estado, y muestra en tiempo real el failover, la recuperación y los cambios en el estado de sincronización
- Permite simular escenarios de conmutación entre máster y réplica basados en proxy
Aún no hay comentarios.