Sobes.tech
Junior — Middle

¿Qué métodos se pueden usar para determinar qué microservicio se ha detenido o no responde?

sobes.tech AI

Respuesta de la IA

Para determinar qué microservicio se ha detenido o no responde, se utilizan varios enfoques:

  1. Health Checks (Verificación de estado) — los microservicios proporcionan endpoints HTTP especiales, por ejemplo /health o /status, que devuelven el estado del servicio. La monitorización consulta periódicamente estos endpoints.

  2. Heartbeat (Señal de vida) — los servicios envían periódicamente señales (heartbeat) al sistema de monitorización o al broker de mensajes. La ausencia de señal durante un tiempo determinado indica que el servicio no responde.

  3. Monitorización y alertas — mediante sistemas de monitorización (Prometheus, Grafana, Zabbix) se rastrean métricas y la disponibilidad de los servicios. Si un servicio deja de responder, se genera una alerta.

  4. Service Discovery con comprobación de disponibilidad — en sistemas con descubrimiento dinámico de servicios (Consul, Eureka) existen mecanismos integrados para verificar la salud de los servicios.

  5. Logs y trazabilidad — analizar logs y trazabilidad distribuida ayuda a identificar fallos.

Ejemplo de una simple health check en Go:

func healthHandler(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    w.Write([]byte("OK"))
}

http.HandleFunc("/health", healthHandler)
http.ListenAndServe(":8080", nil)

La monitorización consultará /health y considerará que el servicio está vivo si la respuesta es 200 OK.