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

Azure Spring Apps es el nuevo nombre del servicio Azure Spring Cloud. Aunque el servicio tiene un nuevo nombre, verá el nombre antiguo en algunos lugares durante un tiempo mientras trabajamos para actualizar recursos, como capturas de pantalla, vídeos y diagramas.

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.

Captura de pantalla del panel de Hystrix que muestra los detalles retraso y título.

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.

Captura de pantalla de la página de flujo Hystrix que muestra los detalles del circuito y los grupos de subprocesos.

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

Captura de pantalla de la página test-endpoint de secuencias de Hystrix.

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.

Pasos siguientes