Tutorial: Usar o painel do disjuntor com o Azure Spring Apps

Aviso

O Hystrix não está mais em desenvolvimento ativo e está atualmente em modo de manutenção.

Nota

Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.

O plano de consumo padrão e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.

Este artigo aplica-se a: ✔️ Java ❌ C#

Este artigo aplica-se a: ✔️ Basic/Standard ✔️ Enterprise

Este artigo mostra como usar o Netflix Turbine e o Netflix Hystrix no Azure Spring Apps. O Spring Cloud Netflix Turbine é amplamente utilizado para agregar vários streams de métricas do Netflix Hystrix para que os streams possam ser monitorados em uma única visualização usando o painel do Hystrix.

Nota

O Netflix Hystrix é amplamente utilizado em muitos aplicativos Spring existentes, mas não está mais em desenvolvimento ativo. Se você estiver desenvolvendo um novo projeto, use implementações do Spring Cloud Circuit Breaker, como resilience4j . Diferente da turbina mostrada neste tutorial, a nova estrutura do Spring Cloud Circuit Breaker unifica todas as implementações de seu pipeline de dados de métricas no Micrometer, que também é suportado pelo Azure Spring Apps. Para obter mais informações, consulte Coletar métricas de disjuntor do Spring Cloud Resilience4J com micrômetro (visualização).

Prepare seus aplicativos de exemplo

A amostra é bifurcada a partir deste repositório.

Clone o repositório de exemplo em seu ambiente de desenvolvimento:

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

Crie os três aplicativos que estão neste tutorial:

  • user-service: um serviço REST simples que tem um único ponto de extremidade de /personalized/{id}
  • serviço de recomendação: um serviço REST simples que tem um único ponto de extremidade de /recommendations, que é chamado por user-service.
  • Hystrix-turbine: Um serviço de painel Hystrix para exibir fluxos Hystrix e um serviço Turbine agregando o fluxo de métricas Hystrix de outros serviços.
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

Provisionar sua instância do Azure Spring Apps

Siga as etapas na seção Provisionar uma instância do Azure Spring Apps do Guia de início rápido: implantar seu primeiro aplicativo no Azure Spring Apps.

Implantar seus aplicativos no Azure Spring Apps

Esses aplicativos não usam o Config Server, portanto, não há necessidade de configurar o Config Server para Azure Spring Apps. Crie e implante da seguinte maneira:

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

Verificar as suas aplicações

Depois que todos os aplicativos estiverem em execução e detetáveis, acesse user-service com o caminho https://<Azure-Spring-Apps-instance-name>-user-service.azuremicroservices.io/personalized/1 do seu navegador. Se o user-service puder acessar recommendation-serviceo , você deverá obter a seguinte saída. Atualize a página da Web algumas vezes se ela não funcionar.

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

Acesse seu painel Hystrix e fluxo de métricas

Verifique usando pontos de extremidade públicos ou pontos de extremidade de teste privados.

Usando pontos de extremidade públicos

Acesse a turbina hystrix com o caminho https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/hystrix do seu navegador. A figura a seguir mostra o painel do Hystrix em execução neste aplicativo.

Captura de tela do painel do Hystrix que mostra os detalhes de atraso e título.

Copie o URL https://<SERVICE-NAME>-hystrix-turbine.azuremicroservices.io/turbine.stream?cluster=default do fluxo da turbina para a caixa de texto e selecione Monitorar fluxo. Esta ação exibe o painel. Se nada aparecer no visualizador, pressione os pontos finais user-service para gerar fluxos.

Captura de tela da página de fluxo do Hystrix que mostra os detalhes dos pools de circuitos e threads.

Nota

Na produção, o painel Hystrix e o fluxo de métricas não devem ser expostos à Internet.

Usando pontos de extremidade de teste privados

Os fluxos de métricas do Hystrix também podem ser acessados a partir de test-endpoint. Como um serviço de back-end, não atribuímos um ponto de extremidade público para recommendation-serviceo , mas podemos mostrar suas métricas com test-endpoint em https://primary:<KEY>@<SERVICE-NAME>.test.azuremicroservices.io/recommendation-service/default/actuator/hystrix.stream

Captura de tela da página de fluxo de ponto de extremidade de teste do Hystrix.

Como um aplicativo Web, o painel do Hystrix deve estar funcionando no test-endpoint. Se ele não estiver funcionando corretamente, pode haver dois motivos: primeiro, usando test-endpoint a URL base alterada de / para /<APP-NAME>/<DEPLOYMENT-NAME>, ou, segundo, o aplicativo Web está usando caminho absoluto para recurso estático. Para fazê-lo funcionar no test-endpoint, talvez seja necessário editar manualmente os <base> arquivos front-end.

Próximos passos