Tutoriel : Utiliser le tableau de bord Circuit Breaker avec Azure Spring Apps

Avertissement

Hystrix n’est plus en cours de développement. Il est actuellement en mode maintenance.

Notes

Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.

Cet article s’applique à : ✔️ Java ❌ C#

Cet article s’applique à : ✔️ De base/Standard ✔️ Entreprise

Cet article vous montre comment utiliser Netflix Turbine et Netflix Hystrix sur Azure Spring Apps. Spring Cloud Netflix Turbine est couramment utilisé pour regrouper plusieurs flux de métriques Netflix Hystrix, en vue de leur supervision dans une vue unique à l’aide du tableau de bord Hystrix.

Notes

Netflix Hystrix est couramment utilisé dans de nombreuses applications Spring, mais il ne fait plus l’objet d’un développement actif. Si vous développez un nouveau projet, utilisez à la place des implémentations Spring Cloud Circuit Breaker comme resilience4j. À la différence de Turbine présenté dans ce tutoriel, le nouveau framework Spring Cloud Circuit Breaker unifie toutes les implémentations de son pipeline de données de métriques dans Micrometer, qui est également pris en charge par Azure Spring Apps. Pour obtenir plus d’informations, consultez Collecter les métriques du disjoncteur Spring Cloud Resilience4J à l’aide de Micrometer (préversion).

Préparer vos exemples d’applications

L’exemple est dupliqué (fork) à partir de ce dépôt.

Clonez l’exemple de dépôt dans votre environnement de développement :

git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
cd azure-spring-apps-samples/hystrix-turbine-sample

Générez les trois applications de ce tutoriel :

  • user-service : service REST simple qui a un seul point de terminaison de /personalized/{id}
  • recommendation-service : service REST simple qui a un seul point de terminaison de/recommandations, qui est appelé par le service utilisateur.
  • hystrix-turbine : service de tableau de bord Hystrix permettant d’afficher les flux Hystrix et service Turbine regroupant les flux de métriques Hystrix provenant d’autres services.
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

Provisionner votre instance Azure Spring Apps

Suivez les étapes décrites dans la section Configurer une instance de Azure Spring Apps du Guide de démarrage rapide : Déployer votre première application sur Azure Spring Apps.

Déployer vos applications sur Azure Spring Apps

Ces applications n’utilisant pas de serveur de configuration, il n’est pas nécessaire de configurer de serveur de configuration pour Azure Spring Apps. Procédez à la création et au déploiement comme suit :

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

Vérifier vos applications

Une fois que toutes les applications sont en cours d’exécution et détectables, accédez à user-service en suivant le chemin https://<Azure-Spring-Apps-instance-name>-user-service.azuremicroservices.io/personalized/1 à partir de votre navigateur. Si le service user-service peut accéder à recommendation-service, vous devez recevoir la sortie suivante. Actualisez la page web plusieurs fois si nécessaire.

[{"name":"Product1","description":"Description1","detailsLink":"link1"},{"name":"Product2","description":"Description2","detailsLink":"link3"},{"name":"Product3","description":"Description3","detailsLink":"link3"}]

Accéder à votre tableau de bord Hystrix et au flux de métriques

Effectuez une vérification à l’aide de points de terminaison publics ou de points de terminaison de test privés.

Utilisation de points de terminaison publics

Accédez à hystrix-turbine en suivant le chemin https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/hystrix à partir de votre navigateur. L’illustration suivante montre le tableau de bord Hystrix en cours d’exécution dans cette application.

Capture d’écran du tableau de bord Hystrix montrant les détails du retard et du titre.

Copiez l’URL du flux Turbine https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/turbine.stream?cluster=default dans la zone de texte, puis cliquez sur Superviser le flux. Cette action affiche le tableau de bord. Si rien ne s’affiche dans la visionneuse, appuyez sur les points de terminaison user-service pour générer des flux.

Capture d’écran de la page de flux Hystrix montrant les détails du circuit et des pools de threads.

Remarque

En production, le tableau de bord Hystrix et le flux de métriques ne doivent pas être exposés à Internet.

Utilisation de points de terminaison de test privés

Les flux de métriques Hystrix sont également accessibles à partir de test-endpoint. S’agissant d’un service back-end, nous n’avons pas affecté de point de terminaison public pour recommendation-service, mais nous pouvons afficher ses métriques avec test-endpoint à l’adresse https://primary:<KEY>@<SERVICE-NAME>.test.azuremicroservices.io/recommendation-service/default/actuator/hystrix.stream

Capture d’écran de la page de stream du point de terminaison de test Hystrix.

En tant qu’application web, le tableau de bord Hystrix doit fonctionner sur test-endpoint. Deux raisons peuvent expliquer son dysfonctionnement éventuel : l’utilisation de test-endpoint a remplacé l’URL de base / par /<APP-NAME>/<DEPLOYMENT-NAME> ou l’application web utilise le chemin d’accès absolu de la ressource statique. Pour qu’il fonctionne sur test-endpoint, vous devrez peut-être modifier manuellement <base> dans les fichiers front-end.

Étapes suivantes