Hystrix es una librería open-source para el control de la latencia y errores de los microservicios que Netflix liberó en 2012 (de la que ya hablábamos en 2012) y que se había convertido en un MUST si estabas desarrollando microservicios.

A finales de 2018 Netflix anunció en su página de GitHub que ya no se están desarrollando nuevas funcionalidades y se recomienda que se usen otros proyectos de código abierto que aún estén activos:

“According to Hystrix’s official GitHub, "Hystrix 1.5.18 (the current latest version) is stable enough to meet Netflix’ needs for existing applications. Meanwhile, our focus has shifted to adaptive implementations that react to real-time application performance, rather than to pre-configured settings (for example, through adaptive concurrency limits). We continue to use Hystrix internally for applications that already use Hystrix, and for new projects, we use other open source projects that are still active, such as Resilience4j. We also advise other developers to do the same.

"Netflix Hystrix is currently in maintenance mode, where Netflix no longer actively processes issues, merges requests and releases new versions. The last version we released is Hystrix 1.5.18 (Release Note: issue 1891 s), which is aligned with the internal stable version (1.5.11) used by Netfilx. If members of the community are interested in taking ownership of Hystrix and moving it back into active mode, please contact hystrixoss@googlegroups.com.

"Hystrix has served Netflix and the community well over the years, and the transition to maintenance mode is in no way an indication that Hystrix is no longer valuable. On the contrary, Hystrix has inspired many great ideas and projects. We thank everyone at Netflix and in the greater community, for all the contributions made to Hystrix over the years."

Entiendo que esta estrategia coincide con la migración de muchos servicios de Netflix al ecosistema Spring Cloud.

Por suerte existen 2 librerías que cubren la misma funcionalidad y que además son compatibles con el ecosistema Spring Cloud, son Resilience4j y Sentinel (a este último le dedicaremos un post en el futuro cercano).

Resilience4j es una biblioteca open-source muy ligera (no tiene dependencias) diseñada para programación funcional, incluye módulos para reintento automático y rate-limiting además de otros añadidos:

Sentinel por su parte es un proyecto open-source (desde mediados de 2018) de Alibaba Cloud. Respecto a Hystrix ofrece más funcionalidades de control. Sentinel soporta definición de reglas dinámicas y como Hystrix ofrece un dashboard para la visualización y la configuración de las reglas.

Por supuesto se integra con el ecosistema Spring Cloud, un ejemplo: https://github.com/spring-cloud-incubator/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme.md

Sabiendo esto, ¿Qué solución adoptaríais si tuvierais que comenzar una MSA ahora mismo?