Condividi tramite


Esercitazione: Usare il dashboard dell'interruttore con App Azure Spring

Avviso

Hystrix non è più in fase di sviluppo attivo ed è attualmente in modalità di manutenzione.

Nota

I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.

Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.

Questo articolo si applica a: ✔️ Java ❌ C#

Questo articolo si applica a: ✔️ Basic/Standard ✔️ Enterprise

Questo articolo illustra come usare Netflix Turbine e Netflix Hystrix in Azure Spring Apps. Spring Cloud Netflix Turbine è ampiamente usato per aggregare più flussi di metriche Netflix Hystrix in modo che i flussi possano essere monitorati in un'unica visualizzazione usando il dashboard hystrix .

Nota

Netflix Hystrix è ampiamente usato in molte app Spring esistenti, ma non è più in fase di sviluppo attivo. Se si sta sviluppando un nuovo progetto, è consigliabile usare invece implementazioni di Spring Cloud Circuit Breaker come resilience4j . Diversamente dalla turbina illustrata in questa esercitazione, il nuovo framework Spring Cloud Circuit Breaker unifica tutte le implementazioni della pipeline di dati delle metriche in Micrometer, supportata anche da Azure Spring Apps. Per altre informazioni, vedere Collect Spring Cloud Resilience4J Circuit Breaker Metrics with Micrometer (Preview) (Raccogliere le metriche dell'interruttore Spring Cloud Resilience4J con micrometri (anteprima).

Preparare le applicazioni di esempio

L'esempio è basato su una copia tramite fork da questo repository.

Clonare il repository di esempio nell'ambiente di sviluppo:

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

Compilare le tre applicazioni incluse in questa esercitazione:

  • user-service: un semplice servizio REST con un singolo endpoint di /personalized/{id}
  • recommendation-service: un semplice servizio REST con un singolo endpoint di /recommendations, chiamato dal servizio utente.
  • hystrix-turbine: un servizio dashboard Hystrix per visualizzare i flussi Hystrix e un servizio Turbine che aggrega il flusso delle metriche Hystrix da altri servizi.
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

Effettuare il provisioning dell'istanza di Azure Spring Apps

Seguire la procedura descritta nella sezione Effettuare il provisioning di un'istanza di Azure Spring Apps di Avvio rapido: Distribuire la prima applicazione in Azure Spring Apps.

Distribuire le applicazioni in Azure Spring Apps

Queste app non usano il server di configurazione, quindi non è necessario configurare il server di configurazione per Azure Spring Apps. Creare e distribuire le applicazioni nel modo seguente:

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

Verificare le app

Dopo che tutte le app sono in esecuzione e individuabili, accedere user-service con il percorso https://<Azure-Spring-Apps-instance-name>-user-service.azuremicroservices.io/personalized/1 dal browser. Se user-service è in grado di accedere a recommendation-service, dovrebbe essere visualizzato l'output seguente. Se non funziona, aggiornare la pagina Web alcune volte.

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

Accedere al dashboard di Hystrix e al flusso di metriche

Eseguire la verifica usando endpoint pubblici o endpoint di test privati.

Uso di endpoint pubblici

Accedere a hystrix-turbine con il percorso https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/hystrix dal browser. La figura seguente mostra il dashboard di Hystrix in esecuzione nell'app.

Screenshot del dashboard hystrix che mostra i dettagli ritardo e titolo.

Copiare l'URL https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/turbine.stream?cluster=default del flusso turbine nella casella di testo e selezionare Monitoraggio flusso. Questa azione visualizza il dashboard. Se nel visualizzatore non viene visualizzato nulla, fare clic sugli endpoint di user-service per generare i flussi.

Screenshot della pagina del flusso Hystrix che mostra i dettagli del circuito e dei pool di thread.

Nota

In ambiente di produzione, il dashboard di Hystrix e il flusso di metriche non devono essere esposti a Internet.

Uso di endpoint di test privati

I flussi di metriche Hystrix sono accessibili anche da test-endpoint. Come servizio back-end, non è stato assegnato un endpoint pubblico per recommendation-service, ma è possibile visualizzarne le metriche con test-endpoint all'indirizzo https://primary:<KEY>@<SERVICE-NAME>.test.azuremicroservices.io/recommendation-service/default/actuator/hystrix.stream.

Screenshot della pagina del flusso di test-endpoint hystrix.

Come app Web, il dashboard di Hystrix dovrebbe funzionare su test-endpoint. Se non funziona correttamente, potrebbero esserci due motivi: prima, usando test-endpoint l'URL di base da / a /<APP-NAME>/<DEPLOYMENT-NAME>o, in secondo luogo, l'app Web usa il percorso assoluto per la risorsa statica. Per farlo funzionare su test-endpoint, potrebbe essere necessario modificare manualmente nei <base> file front-end.

Passaggi successivi