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.
Remarque
Les plans Essentiel, Standard et Entreprise seront déconseillés à compter de la mi-mars 2025, avec une période de mise hors service de 3 ans. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez l’annonce de mise hors service d’Azure Spring Apps.
Le plan de consommation standard et dédiée sera déconseillé à compter du 30 septembre 2024, avec un arrêt complet après six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation standard et dédiée Azure Spring Apps vers Azure Container Apps.
Cet article s’applique à :✅ Java ❎ C#
Cet article s’applique à :✅ Essentiel/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.
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.
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
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.