Hystrix, Circuit Breaker para Arquitecturas basadas en Microservices

Hystrix, Circuit Breaker para Arquitecturas basadas en Microservices

Hystrix es una librería diseñada y mantenida por Netflix. Ésta fué concebida para aislar puntos de acceso a sistemas remotos, servicios y otras librerías de terceros, deteniendo fallos en cascada y permitiendo mejorar la resiliencia en sistemas complejos distribuidos donde la probabilidad de fallo es casi inevitable.

Los Microservicios tienen muchas bondades pero también algunas debilidades, por ejemplo: podemos tener servicios caídos, demasiadas peticiones concurrentes, lentitud de la plataforma, etc… hay que decir que no son ejemplos muy desconocidos para nosotros ya que, en Arquitecturas no basadas en Microservicios podemos tener los mismos fallos o más graves. Para situaciones donde tenemos muchas comunicaciones (eventos) entre diferentes componentes de éstos Microservicios, podemos establecer lo que se le denomina como: Circuit Breaker. Éste no es más que el sistema de control que va a permitir establecer un mecanismo de control (redundancia) y gestión de los problemas que haya o pueda haber derivados de la comunicación remota, con objetivo claro ayudar a mejorar la resiliencia de estos sistemas.

Tenemos un breve diagrama que nos puede ilustrar lo que sería un Circuit Breaker State:

Circuit Breaker State Diagram

¿Cómo funciona Hystrix?

Hystrix encapsula todas las peticiones a los sistemas “externos” con el objetivo de monitorizar, por ejemplo: los timeouts, las estadísticas de éxito y de fallo, los respectivos semáforos de control, la lógica de gestión de errores o la propagación de errores en cascada, entre muchos otros.

Si se cumple alguno de los casos anteriores, imaginemos una situación de comunicación con un servicio y éste falla N veces en X segundos, Hystrix abrirá el circuito de forma que no se realizarán más peticiones a dicho servicio, lo que impedirá la propagación de los errores en cascada. Podríamos sin duda personalizar un mensaje de error y iniciar todo un protocolo de actuación hacia una Consola de Control y/o Dashboard.

Hystrix Dashboard

Algunos ejemplos de aplicación de Hystrix en Microservicios

A parte del caso comentado anteriormente, podemos ver algunos más, por ejemplo:

  • Hystrix se podría encargar de cancelar aquellas peticiones que exceden de un timeout definido.
  • Gestionar los diferentes semáforos de la Plataforma, por ejemplo en caso de Pipelines podemos especificar semáforos de control del proceso y Hystrix podría así aceptar o denegar las peticiones en caso de indisponibilidades.
  • Puede medir distintas tipologías de estadísticas, por ejemplo de peticiones exitosas, fallidas, timeouts, etc…

Naturalmente nuestra imaginación puede dar para mucho más y podremos usar Hystrix para todo ello. Es una tool muy interesante, con muchas posibilidades y que combinada con otras como por ejemplo Zuul nos abrirá todavía más posibilidades, como por ejemplo enrutar, balancear, securizas todas las peticiones que reciban estos microservicios.

Continuando con la recomendación de lecturas y gracias al libro de Gene Kim, de lectura obligada, podremos ver e identiticar como se afronta la transformación de un Departamento de IT:

Autor: Joakim Vivas

comments powered by Disqus