Partager via


Configurer les paramètres du composant Eureka Server pour Spring dans Azure Container Apps

Eureka Server for Spring est un mécanisme de découverte centralisée des services pour les microservices. Utilisez l’aide qui suit pour savoir comment configurer et gérer votre composant Eureka Server pour Spring.

Afficher

Vous pouvez afficher les détails d’un composant individuel par nom à l’aide de la commande show.

Avant d’exécuter la commande suivante, remplacez les espaces réservés entourés de <> par vos valeurs.

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

List

Vous pouvez répertorier tous les composants Java inscrits à l’aide de la commande list.

Avant d’exécuter la commande suivante, remplacez les espaces réservés entourés de <> par vos valeurs.

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

Annuler la liaison

Pour supprimer une liaison d’une application conteneur, utilisez l’option --unbind.

Avant d’exécuter la commande suivante, remplacez les espaces réservés entourés de <> par vos valeurs.

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

Liste de configurations autorisées pour votre composant Eureka Server pour Spring

La liste suivante détaille les configurations prises en charge. Vous trouverez plus de détails dans Spring Cloud Eureka Server.

Remarque

Veuillez envoyer des tickets de support pour demander des nouvelles fonctionnalités.

Options de configuration

La commande az containerapp update utilise le paramètre --configuration pour contrôler la configuration du Eureka Server pour Spring. Vous pouvez utiliser plusieurs paramètres à la fois tant qu’ils sont séparés par un espace. Vous trouverez plus de détails dans la documentation Spring Cloud Eureka Server.

Les paramètres de configuration suivants sont disponibles sur la propriété de configuration eureka.server.

Nom Description Valeur par défaut
eureka.server.enable-self-preservation Lorsqu’il est activé, le serveur effectue le suivi du nombre de renouvellements qu’il doit recevoir du serveur. Chaque fois que le nombre de renouvellements passe sous le pourcentage de seuil défini par eureka.server.renewal-percent-threshold. La valeur par défaut est définie sur true sur le serveur Eureka d’origine, mais dans le composant Java Eureka Server, la valeur par défaut est définie sur false. Consultez Limitation du composant Java Eureka Server pour Spring. false
eureka.server.renewal-percent-threshold Le pourcentage minimal de renouvellements attendus des clients au cours de la période spécifiée par eureka.server.renewal-threshold-update-interval-ms. Si les renouvellements passent en dessous du seuil, les expirations sont désactivées si l’option eureka.server.enable-self-preservation est activée. 0.85
eureka.server.renewal-threshold-update-interval-ms L’intervalle selon lequel le seuil spécifié dans eureka.server.renewal-percent-threshold doit être mis à jour. 0
eureka.server.expected-client-renewal-interval-seconds L’intervalle selon lequel les clients doivent envoyer leurs pulsations. La valeur par défaut est de 30 secondes. Si les clients envoient des pulsations à des fréquences différentes, par exemple toutes les 15 secondes, ce paramètre doit être ajusté en conséquence, sinon l’auto-préservation ne fonctionnera pas comme attendu. 30
eureka.server.response-cache-auto-expiration-in-seconds Obtient la durée pendant laquelle la charge utile du Registre doit être conservée dans le cache si elle n’est pas invalidée par des événements de modification. 180
eureka.server.response-cache-update-interval-ms Obtient l’intervalle de temps selon lequel le cache de la charge utile du client doit être mis à jour. 0
eureka.server.use-read-only-response-cache com.netflix.eureka.registry.ResponseCache utilise actuellement une stratégie de mise en cache à deux niveaux pour les réponses. Un cache en lecture-écriture avec une stratégie d’expiration et un cache en lecture seule qui met en cache sans expiration. true
eureka.server.disable-delta Vérifie si les informations delta peuvent ou non être fournies au client. false
eureka.server.retention-time-in-m-s-in-delta-queue Obtenir la durée pendant laquelle les informations delta doivent être mises en cache pour que les clients puissent récupérer la valeur sans la manquer. 0
eureka.server.delta-retention-timer-interval-in-ms Obtenir l’intervalle de temps selon lequel la tâche de nettoyage doit sortir de veille et rechercher les informations delta expirées. 0
eureka.server.eviction-interval-timer-in-ms Obtenir l’intervalle de temps selon lequel la tâche qui détermine l’expiration des instances doit sortir de veille et s’exécuter. 60000
eureka.server.sync-when-timestamp-differs Vérifie s’il faut synchroniser des instances lorsque l’horodatage diffère. true
eureka.server.rate-limiter-enabled Indique si le limiteur de débit doit être activé ou désactivé. false
eureka.server.rate-limiter-burst-size Limiteur de débit, propriété d’algorithme de compartiment de jetons. 10
eureka.server.rate-limiter-registry-fetch-average-rate Limiteur de débit, propriété d’algorithme de compartiment de jetons. Spécifie le taux de requête appliqué moyen. 500
eureka.server.rate-limiter-privileged-clients Une liste de clients certifiés. Ceci s’ajoute aux clients Java eureka standard. S/O
eureka.server.rate-limiter-throttle-standard-clients Indiquer si la limite de débit concerne les clients standard. Si cette valeur est false, seuls les clients non standard seront soumis à une limitation du débit. false
eureka.server.rate-limiter-full-fetch-average-rate Limiteur de débit, propriété d’algorithme de compartiment de jetons. Spécifie le taux de requête appliqué moyen. 100

Configurations courantes

  • configurations relatives à la journalisation
    • logging.level.*
    • logging.group.*
    • Toutes les autres configurations sous l’espace de noms logging.* doivent être interdites. Par exemple, l’écriture de fichiers journaux avec logging.file doit être interdite.

Appel entre applications

Cet exemple montre comment écrire du code Java pour appeler entre les applications inscrites auprès du composant Eureka Server pour Spring. Lorsque les applications conteneur sont liées à Eureka, elles communiquent entre elles via le serveur Eureka.

L’exemple crée deux applications, un appelant et un appelé. Les deux applications communiquent entre elles à l’aide du composant Eureka Server pour Spring. L’application appelée expose un point de terminaison appelé par l’application appelante.

  1. Créez l’application appelée. Activez le client Eureka dans votre application Spring Boot en ajoutant l’annotation @EnableDiscoveryClient à votre classe principale.

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CalleeApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CalleeApplication.class, args);
    	}
    }
    
  2. Créez un point de terminaison dans l’application appelée par l’application appelante.

    @RestController
    public class CalleeController {
    
        @GetMapping("/call")
        public String calledByCaller() {
            return "Hello from Application callee!";
        }
    }
    
  3. Définissez le nom de l’application appelée dans le fichier de configuration de l’application. Par exemple, application.yml.

    spring.application.name=callee
    
  4. Créez l’application appelante.

    Ajoutez l’annotation @EnableDiscoveryClient pour activer la fonctionnalité du client Eureka. Créez également un bean WebClient.Builder avec l’annotation @LoadBalanced pour effectuer des appels à charge équilibrée vers d’autres services.

    @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. Créez un contrôleur dans l’application appelante qui utilise WebClient.Builder pour appeler l’application appelée à l’aide de son nom d’application, appelée.

    @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);
        }
    }
    

Vous disposez maintenant d’une application appelante et d’une application appelée qui communiquent entre elles à l’aide de composants Java Eureka Server pour Spring. Assurez-vous que les deux applications s’exécutent et sont liées au serveur Eureka avant de tester le point de terminaison /call-callee dans l’application appelante.

Limites

  • Le composant Java Eureka Server est fourni avec une configuration par défaut, eureka.server.enable-self-preservation, définie sur false. Cette configuration par défaut permet d’éviter les moments où les instances ne sont pas supprimées une fois que l’auto-conservation est activée. Si des instances sont supprimées trop tôt, certaines requêtes peuvent être dirigées vers des instances inexistantes. Si vous souhaitez redéfinir ce paramètre sur true, vous pouvez le remplacer en définissant vos propres configurations dans le composant Java.

  • Le serveur Eureka n’a qu’un seul réplica et ne prend pas en charge la mise à l’échelle, ce qui rend la fonctionnalité de serveur Eureka homologue indisponible.

  • Le tableau de bord Eureka n’est pas disponible.

Étapes suivantes