Partilhar via


Definir definições para o componente Eureka Server for Spring nas Aplicações de Contentor do Azure (pré-visualização)

O Eureka Server for Spring é um mecanismo de descoberta centralizada de serviços para microsserviços. Use as orientações a seguir para aprender a configurar e gerenciar seu componente Eureka Server for Spring.

Mostrar

Você pode exibir os detalhes de um componente individual pelo nome usando o show comando.

Antes de executar o comando a seguir, substitua os espaços reservados cercados por <> seus valores.

az containerapp env java-component eureka-server-for-spring show \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --name <JAVA_COMPONENT_NAME>

Listagem

Você pode listar todos os componentes Java registrados usando o list comando.

Antes de executar o comando a seguir, substitua os espaços reservados cercados por <> seus valores.

az containerapp env java-component list \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP>

Desvincular

Para remover uma associação de um aplicativo contêiner, use a --unbind opção.

Antes de executar o comando a seguir, substitua os espaços reservados cercados por <> seus valores.

az containerapp update \
  --name <APP_NAME> \
  --unbind <JAVA_COMPONENT_NAME> \
  --resource-group <RESOURCE_GROUP>

Lista de configuração permitida para o seu Eureka Server for Spring

A lista a seguir detalha as configurações suportadas. Você pode encontrar mais detalhes no Spring Cloud Eureka Server.

Nota

Envie tíquetes de suporte para novas solicitações de recursos.

Opções de configuração

O az containerapp update comando usa o --configuration parâmetro para controlar como o Eureka Server for Spring está configurado. Você pode usar vários parâmetros ao mesmo tempo, desde que estejam separados por um espaço. Você pode encontrar mais detalhes nos documentos do Spring Cloud Eureka Server .

As seguintes definições de configuração estão disponíveis na eureka.server propriedade configuration.

Nome Descrição Default value
eureka.server.enable-self-preservation Quando ativado, o servidor controla o número de renovações que deve receber do servidor. A qualquer momento, o número de renovações cai abaixo da porcentagem de limite, conforme definido por eureka.server.renewal-percent-threshold. O valor padrão é definido como true no servidor Eureka original, mas no componente Java do Eureka Server, o valor padrão é definido como false. Consulte Limitações do componente Java do Eureka Server for Spring false
eureka.server.renewal-percent-threshold A porcentagem mínima de renovações esperada dos clientes no período especificado por eureka.server.renewal-threshold-update-interval-ms. Se as renovações caírem abaixo do limite, as expirações serão desativadas se o eureka.server.enable-self-preservation estiver habilitado. 0.85
eureka.server.renewal-threshold-update-interval-ms O intervalo com o qual o limite, conforme especificado em eureka.server.renewal-percent-threshold, precisa ser atualizado. 0
eureka.server.expected-client-renewal-interval-seconds O intervalo com o qual se espera que os clientes enviem os seus batimentos cardíacos. O padrão é de 30 segundos. Se os clientes enviarem batimentos cardíacos com frequência diferente, digamos, a cada 15 segundos, esse parâmetro deve ser ajustado de acordo, caso contrário, a autopreservação não funcionará como esperado. 30
eureka.server.response-cache-auto-expiration-in-seconds Obtém o tempo durante o qual a carga útil do Registro deve ser mantida no cache se não for invalidada por eventos de alteração. 180
eureka.server.response-cache-update-interval-ms Obtém o intervalo de tempo com o qual o cache de carga do cliente deve ser atualizado. 0
eureka.server.use-read-only-response-cache O com.netflix.eureka.registry.ResponseCache atualmente usa uma estratégia de cache de dois níveis para respostas. Um cache readWrite com uma política de expiração e um cache somente leitura que armazena em cache sem expirar. verdadeiro
eureka.server.disable-delta Verifica se as informações do delta podem ser fornecidas ao cliente ou não. false
eureka.server.retention-time-in-m-s-in-delta-queue Obtenha o tempo durante o qual as informações delta devem ser armazenadas em cache para que os clientes recuperem o valor sem perdê-lo. 0
eureka.server.delta-retention-timer-interval-in-ms Obtenha o intervalo de tempo com o qual a tarefa de limpeza deve ser ativada e verifique se há informações delta expiradas. 0
eureka.server.eviction-interval-timer-in-ms Obtenha o intervalo de tempo com o qual a tarefa que expira as instâncias deve ser ativada e executada. 60000
eureka.server.sync-when-timestamp-differs Verifica se as instâncias devem ser sincronizadas quando o carimbo de data/hora é diferente. verdadeiro
eureka.server.rate-limiter-enabled Indica se o limitador de taxa deve ser ativado ou desativado. false
eureka.server.rate-limiter-burst-size Limitador de taxa, propriedade do algoritmo do bucket de token. 10
eureka.server.rate-limiter-registry-fetch-average-rate Limitador de taxa, propriedade do algoritmo do bucket de token. Especifica a taxa média de solicitação imposta. 500
eureka.server.rate-limiter-privileged-clients Uma lista de clientes certificados. Isto é em adição aos clientes Java eureka padrão. N/A
eureka.server.rate-limiter-throttle-standard-clients Indique se a taxa limita os clientes padrão. Se definido como false, apenas clientes não padrão terão taxa limitada. false
eureka.server.rate-limiter-full-fetch-average-rate Limitador de taxa, propriedade do algoritmo do bucket de token. Especifica a taxa média de solicitação imposta. 100

Configurações comuns

  • Registro em log de configurações relacionadas
    • logging.level.*
    • logging.group.*
    • Quaisquer outras configurações em logging.* namespace devem ser proibidas, por exemplo, escrever arquivos de log usando logging.file deve ser proibido.

Chamada entre aplicativos

Este exemplo mostra como escrever código Java para chamar entre aplicativos registrados no componente Eureka Server for Spring. Quando as aplicações de contentor estão ligadas ao Eureka, comunicam entre si através do servidor Eureka.

O exemplo cria dois aplicativos, um chamador e um destinatário. Ambos os aplicativos se comunicam entre si usando o componente Eureka Server for Spring. O aplicativo callee expõe um ponto de extremidade que é chamado pelo aplicativo chamador.

  1. Crie o aplicativo de destinatário. Habilite o cliente Eureka em seu aplicativo Spring Boot adicionando a @EnableDiscoveryClient anotação à sua classe principal.

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CalleeApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CalleeApplication.class, args);
    	}
    }
    
  2. Crie um ponto de extremidade no aplicativo do destinatário que é chamado pelo aplicativo chamador.

    @RestController
    public class CalleeController {
    
        @GetMapping("/call")
        public String calledByCaller() {
            return "Hello from Application callee!";
        }
    }
    
  3. Defina o nome do aplicativo destinatário no arquivo de configuração do aplicativo. Por exemplo, application.yml.

    spring.application.name=callee
    
  4. Crie o aplicativo chamador.

    Adicione a anotação para ativar a @EnableDiscoveryClient funcionalidade do cliente Eureka. Além disso, crie um WebClient.Builder bean com a @LoadBalanced anotação para executar chamadas com balanceamento de carga para outros serviços.

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CallerApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CallerApplication.class, args);
    	}
    
    	@Bean
    	@LoadBalanced
    	public WebClient.Builder loadBalancedWebClientBuilder() {
    		return WebClient.builder();
    	}
    }
    
  5. Crie um controlador no aplicativo chamador que usa o WebClient.Builder para chamar o aplicativo destinatário usando seu nome de aplicativo, callee.

    @RestController
    public class CallerController { 
        @Autowired
        private WebClient.Builder webClientBuilder;
    
        @GetMapping("/call-callee")
        public Mono<String> callCallee() {
            return webClientBuilder.build()
                .get()
                .uri("http://callee/call")
                .retrieve()
                .bodyToMono(String.class);
        }
    }
    

Agora você tem um aplicativo chamador e callee que se comunicam entre si usando componentes Java do Eureka Server for Spring. Certifique-se de que ambas as aplicações estão em execução e se ligam ao servidor Eureka antes de testar o /call-callee ponto de extremidade na aplicação chamadora.

Limitações

  • O componente Java do Eureka Server vem com uma configuração padrão, eureka.server.enable-self-preservation, definida como false. Essa configuração padrão ajuda a evitar momentos em que as instâncias não são excluídas depois que a autopreservação é ativada. Se as instâncias forem excluídas muito cedo, algumas solicitações poderão ser direcionadas para instâncias inexistentes. Se você quiser alterar essa configuração para true, você pode substituí-la definindo suas próprias configurações no componente Java.

  • O servidor Eureka tem apenas uma única réplica e não suporta dimensionamento, tornando o recurso de servidor Eureka par indisponível.

  • O painel Eureka não está disponível.

Próximos passos