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

Azure Spring Apps è il nuovo nome del servizio Azure Spring Cloud. Anche se il servizio ha un nuovo nome, il nome precedente verrà visualizzato in alcune posizioni per un po' mentre si lavora per aggiornare gli asset, ad esempio screenshot, video e diagrammi.

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