Tutorial: Uso del panel de Circuit Breaker con Azure Spring Apps
Advertencia
Hystrix ya no está en desarrollo activo y actualmente está en modo de mantenimiento.
Nota:
Los planes Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retirada de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.
El plan Estándar por consumo y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte Migrar el plan Estándar por consumo y dedicado de Azure Spring Apps a Azure Container Apps.
Este artículo se aplica a: ✔️ Java ❌ C#
Este artículo se aplica a: ✔️ Nivel Básico o Estándar ✔️ Enterprise
En este artículo se muestra cómo usar Netflix Turbine y Netflix Hystrix en Azure Spring Apps. Spring Cloud Netflix Turbine se usa con frecuencia para agregar varias secuencias de métricas de Netflix Hystrix, de modo que se puedan supervisar en una sola vista mediante el panel de Hystrix.
Nota
Netflix Hystrix se usa con frecuencia en muchas aplicaciones de Spring ya existentes, pero ya no se encuentra en desarrollo activo. Si está desarrollando un proyecto nuevo, utilice en su lugar implementaciones de Spring Cloud Circuit Breaker como resilience4j. A diferencia de Turbine, que se muestra en este tutorial, el nuevo marco de Spring Cloud Circuit Breaker unifica todas las implementaciones de su canalización de datos de métricas en Micrometer, que también se admite en Azure Spring Apps. Para más información, vea Recopilación de métricas de Spring Cloud Resilience4J Circuit Breaker con Micrometer (versión preliminar).
Preparación de las aplicaciones de ejemplo
El ejemplo se bifurca desde este repositorio.
Clone el repositorio de ejemplo en el entorno de desarrollo:
git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
cd azure-spring-apps-samples/hystrix-turbine-sample
Compile las tres aplicaciones que se encuentran en este tutorial:
- user-service: Un servicio REST sencillo que tiene un único punto de conexión de /personalized/{id}
- recommendation-service: un servicio REST sencillo que tiene un único punto de conexión de /recommendations, al que user-service llamará.
- hystrix-turbine: Un servicio de panel de Hystrix para mostrar secuencias de Hystrix y un servicio de Turbine que agrega una secuencia de métricas de Hystrix de otros servicios.
mvn clean package -D skipTests -f user-service/pom.xml
mvn clean package -D skipTests -f recommendation-service/pom.xml
mvn clean package -D skipTests -f hystrix-turbine/pom.xml
Aprovisionamiento de la instancia de Azure Spring Apps
Siga los pasos descritos en la sección Aprovisionamiento de una instancia de Azure Spring Apps del Inicio rápido: Implementación de una aplicación por primera vez en Azure Spring Apps.
Implementación de las aplicaciones en Azure Spring Apps
Estas aplicaciones no usan Config Server, por lo que no es necesario configurar Config Server para Azure Spring Apps. Cree e implemente de la manera siguiente:
az configure --defaults \
group=<resource-group-name> \
spring=<Azure-Spring-Apps-instance-name>
az spring app create --name user-service --assign-endpoint
az spring app create --name recommendation-service
az spring app create --name hystrix-turbine --assign-endpoint
az spring app deploy \
--name user-service \
--artifact-path user-service/target/user-service.jar
az spring app deploy \
--name recommendation-service \
--artifact-path recommendation-service/target/recommendation-service.jar
az spring app deploy \
--name hystrix-turbine \
--artifact-path hystrix-turbine/target/hystrix-turbine.jar
Comprobación de las aplicaciones
Una vez que todas las aplicaciones se estén ejecutando y sean reconocibles, acceda a user-service
con la ruta de acceso https://<Azure-Spring-Apps-instance-name>-user-service.azuremicroservices.io/personalized/1
desde el explorador. Si user-service puede acceder a recommendation-service
, debería obtener la siguiente salida. Actualice la página web varias veces si no funciona.
[{"name":"Product1","description":"Description1","detailsLink":"link1"},{"name":"Product2","description":"Description2","detailsLink":"link3"},{"name":"Product3","description":"Description3","detailsLink":"link3"}]
Acceso al panel de Hystrix y a la secuencia de métricas
Compruebe el uso de puntos de conexión públicos o puntos de conexión de prueba privados.
Uso de puntos de conexión públicos
Acceda a Hystrix-Turbine con la ruta de acceso https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/hystrix
desde el explorador. En la siguiente ilustración se muestra el panel de Hystrix que se ejecuta en esta aplicación.
Copie la dirección URL de la secuencia de Turbine https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/turbine.stream?cluster=default
en el cuadro de texto y seleccione Monitor Stream (Supervisar secuencia). Esta acción muestra el panel. Si no se muestra nada en el visor, ejecute los puntos de conexión user-service
para generar secuencias.
Nota:
En un entorno de producción, el panel de Hystrix y la secuencia de métricas no se deben exponer a Internet.
Uso de puntos de conexión privados
Las secuencias de métricas de Hystrix también son accesibles desde test-endpoint
. Como servicio back-end, no asignamos un punto de conexión público para recommendation-service
, pero podemos mostrar sus métricas con test-endpoint en https://primary:<KEY>@<SERVICE-NAME>.test.azuremicroservices.io/recommendation-service/default/actuator/hystrix.stream
Como aplicación web, el panel de Hystrix debe estar funcionando en test-endpoint
. Si no funciona correctamente, puede haber dos motivos: en primer lugar, el uso de test-endpoint
ha cambiado la dirección URL base de /
a /<APP-NAME>/<DEPLOYMENT-NAME>
, o bien, en segundo lugar, la aplicación web usa la ruta de acceso absoluta para el recurso estático. Para que funcione en test-endpoint
, es posible que tenga que editar manualmente <base>
en los archivos de front-end.