Tutorial: Verwenden des Trennschalterdashboards mit Azure Spring Apps
Warnung
Hystrix wird nicht mehr aktiv entwickelt und befindet sich derzeit im Wartungsmodus.
Hinweis
Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei (3) Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.
Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren des Plans „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.
Dieser Artikel gilt für: ✔️ Java ❌ C#
Dieser Artikel gilt für: ✔️ Basic/Standard ✔️ Enterprise
In diesem Artikel erfahren Sie, wie Sie Netflix Turbine und Netflix Hystrix in Azure Spring Apps verwenden. Spring Cloud Netflix Turbine wird häufig verwendet, um mehrere Netflix Hystrix-Metrikdatenströme zu aggregieren, sodass die Datenströme über das Hystrix-Dashboard in einer einzelnen Ansicht überwacht werden können.
Hinweis
Netflix Hystrix wird in vielen bestehenden Spring Apps-Apps verwendet, befindet sich aber nicht mehr in aktiver Entwicklung. Wenn Sie ein neues Projekt entwickeln, sollten Sie stattdessen Spring Cloud-Leistungsschutzschalter-Implementierungen wie resilience4j verwenden. Anders als die in diesem Tutorial gezeigte Turbine vereinigt das neue Spring Cloud-Trennschalterframework alle Implementierungen seiner Metrikdatenpipeline in Micrometer. Dies wird auch von Azure Spring Apps unterstützt. Weitere Informationen finden Sie unter Erfassen von Metriken zum Spring Cloud Resilience4J-Leistungsschutzschalter mit Micrometer (Vorschau).
Vorbereiten der Beispielanwendungen
Das Beispiel wird aus diesem Repository geforkt.
Klonen Sie das Beispielrepository in Ihre Entwicklungsumgebung:
git clone https://github.com/Azure-Samples/azure-spring-apps-samples.git
cd azure-spring-apps-samples/hystrix-turbine-sample
Erstellen Sie die drei Anwendungen, die sich in diesem Tutorial befinden:
- user-service: Ein einfacher REST-Dienst mit einem einzelnen Endpunkt von „/personalized/{id}“
- recommendation-service: Ein einfacher REST-Dienst mit einem einzelnen Endpunkt von „/recommendations“, der von „user-service“ aufgerufen wird.
- hystrix-turbine: Ein Hystrix-Dashboarddienst zur Anzeige von Hystrix-Datenströmen und ein Turbine-Dienst, der Hystrix-Metrikdatenströme aus anderen Diensten zusammenfasst.
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
Bereitstellen Ihrer Azure Spring Apps-Instanz
Befolgen Sie die Schritte im Abschnitt Bereitstellen einer Instanz in Azure Spring Apps von Schnellstart: Bereitstellen Ihrer ersten Anwendung in Azure Spring Apps.
Bereitstellen von Anwendungen in Azure Spring Apps
Diese Apps verwenden keinen Config Server, weshalb es nicht notwendig ist, Config Server für Azure Spring Apps einzurichten. Führen Sie die Erstellung und Bereitstellung wie folgt durch:
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
Überprüfen Sie Ihre Apps.
Nachdem alle Apps ausgeführt werden und auffindbar sind, greifen Sie auf user-service
mit dem Pfad https://<Azure-Spring-Apps-instance-name>-user-service.azuremicroservices.io/personalized/1
von Ihrem Browser aus zu. Wenn der Benutzerdienst auf recommendation-service
zugreifen kann, sollten Sie die folgende Ausgabe erhalten. Aktualisieren Sie die Webseite mehrmals, wenn sie nicht funktioniert.
[{"name":"Product1","description":"Description1","detailsLink":"link1"},{"name":"Product2","description":"Description2","detailsLink":"link3"},{"name":"Product3","description":"Description3","detailsLink":"link3"}]
Zugreifen auf Ihr Hystrix-Dashboard und den Metrikdatenstrom
Führen Sie die Überprüfung mit öffentlichen Endpunkten oder privaten Testendpunkten durch.
Verwenden öffentlicher Endpunkte
Greifen Sie mit Ihrem Browser über den Pfad https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/hystrix
auf „hystrix-turbine“ zu. In der folgenden Abbildung ist das Hystrix-Dashboard in dieser App dargestellt.
Kopieren Sie die URL des Turbine-Datenstroms https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/turbine.stream?cluster=default
in das Textfeld, und wählen Sie Datenstrom überwachen aus. Durch diese Aktion wird das Dashboard angezeigt. Wenn im Viewer nichts angezeigt wird, erfassen Sie die user-service
-Endpunkte, um Datenströme zu generieren.
Hinweis
In der Produktionsumgebung sollten das Hystrix-Dashboard und der Metrikdatenstrom nicht über das Internet zugänglich sein.
Verwenden privater Testendpunkte
Hystrix-Metrikdatenströme sind auch von test-endpoint
aus zugänglich. Als Back-End-Dienst haben wir keinen öffentlichen Endpunkt für recommendation-service
zugewiesen, aber wir können seine Metriken mit einem Testendpunkt bei https://primary:<KEY>@<SERVICE-NAME>.test.azuremicroservices.io/recommendation-service/default/actuator/hystrix.stream
anzeigen.
Als Web-App sollte das Hystrix-Dashboard mit test-endpoint
arbeiten. Wenn es nicht ordnungsgemäß funktioniert, kann dies zwei Gründe haben: Die Verwendung von test-endpoint
hat die Basis-URL von /
in /<APP-NAME>/<DEPLOYMENT-NAME>
geändert oder die Web-App verwendet absolute Pfade für statische Ressourcen. Damit es mit test-endpoint
funktioniert, müssen Sie möglicherweise die <base>
in den Front-End-Dateien manuell bearbeiten.