Enterprise Distributed Application Service (EDAS) prend en charge une connexion non intrusive à Microservices Engine (MSE). Vous pouvez mettre en œuvre les fonctionnalités de gouvernance des microservices fournies par MSE sur les applications Spring Cloud et Dubbo dans EDAS. Lors de la création ou du déploiement d'une application, vous pouvez configurer l'enregistrement et la découverte de services, la protection contre les listes vides ainsi que le démarrage sans interruption. Cette rubrique explique comment configurer la gouvernance des microservices.
Informations générales
Enregistrement et découverte de services
Eureka, ZooKeeper et Nacos sont des types de registres de services populaires dans les modèles de microservices Java. Les registres de services permettent de mettre en œuvre l'enregistrement et la découverte de services. Ils découplent les services et vous libèrent de la gestion des dépendances. Ainsi, vous pouvez gérer dynamiquement vos microservices.
Protection contre les listes vides
Cette fonctionnalité s'applique aux scénarios où une exception se produit sur un serveur lors de l'enregistrement du service. Dans ce cas, après qu'un client a demandé la liste des adresses de serveur (liste d'instances) à un registre de services, celui-ci renvoie une liste vide. Si vous activez la protection contre les listes vides, le client ignore cette liste vide et récupère depuis le cache la liste d'instances qui avait été renvoyée correctement la dernière fois. Cela garantit la disponibilité du client même lorsque ses abonnements sont affectés par des événements imprévus. Par exemple, les abonnements peuvent être perturbés lorsqu'un registre de services met à jour ses configurations, effectue une mise à niveau ou rétrograde, ou rencontre une exception telle qu'une déconnexion réseau ou une panne de courant.
Les clients (consommateurs) s'abonnent à la liste d'instances fournie par les serveurs (fournisseurs) via un registre de services. Lorsqu'un registre de services met à jour ses configurations, effectue une mise à niveau ou rétrograde, ou rencontre une exception telle qu'une déconnexion réseau ou une panne de courant, les abonnements des consommateurs peuvent être affectés. Par conséquent, la disponibilité des consommateurs se dégrade. Pour gérer les erreurs d'abonnement causées par ces exceptions, vous pouvez activer la fonctionnalité de protection contre les listes vides pour les consommateurs.

Démarrage sans interruption
Pour les applications en ligne, des opérations telles que les versions, la mise à l'échelle horizontale (scale-out), la réduction de capacité (scale-in) et les redémarrages sont inévitables. EDAS intègre la solution de démarrage sans interruption de MSE pour protéger les applications pendant les phases de démarrage. Cette solution propose des fonctionnalités telles que le préchargement de services, l'enregistrement différé de services et le déploiement progressif sans interruption.
Préchargement de services : permet de spécifier la durée de préchargement et la courbe de préchargement. Cela réduit la probabilité qu'un service nouvellement lancé échoue à supporter une pointe de trafic sur une courte période.
-
Enregistrement différé de services : force l'enregistrement d'une application uniquement après l'écoulement d'une période prolongée spécifiée. Cela garantit que l'application n'est pas enregistrée tant qu'elle n'est pas initialisée. Ainsi, l'application dispose de suffisamment de temps pour traiter les requêtes asynchrones et préparer les ressources de calcul, ce qui prévient les erreurs dues à des échecs d'initialisation.
Si le processus d'initialisation d'une application est complexe, l'enregistrement et l'initialisation de l'application peuvent être mis en œuvre simultanément. L'application peut avoir été enregistrée auprès d'un registre avant d'être complètement initialisée. Dans ce cas, si l'application est appelée par un consommateur, une erreur peut être renvoyée. Pour résoudre ce problème, vous pouvez utiliser la fonctionnalité d'enregistrement différé de services afin qu'une application ne s'enregistre auprès d'un registre qu'après son initialisation complète.
-
Déploiement progressif sans interruption : fournit une interface de vérification de l'état de santé permettant aux consommateurs, qu'ils soient internes ou externes au système de microservices, de vérifier si une application est prête. Cela garantit que tous les consommateurs peuvent vérifier l'état de l'application. Cette fonctionnalité prend en charge les vérifications de l'état d'enregistrement du service et de l'état de préchargement du service.
Le déploiement progressif sans interruption dans Kubernetes divise un processus de version complet en plusieurs lots. Un lot est publié à chaque fois. Une fois tous les lots publiés, le déploiement progressif sans interruption est terminé. EDAS orchestre le cycle de vie des microservices et le cycle de vie des services Kubernetes pour les applications Kubernetes. EDAS fournit des capacités de démarrage sans interruption afin que les applications soient enregistrées auprès d'un registre et préchargées avant la vérification de readiness. Cela garantit que les instances disponibles d'une application sont opérationnelles pendant un déploiement progressif sans interruption.
Enregistrement avant la vérification de readiness : EDAS propose une fonctionnalité qui aligne le cycle de vie des microservices avec les vérifications de readiness de Kubernetes. Si vous activez cette fonctionnalité, vous pouvez utiliser EDAS Agent pour fournir un port permettant de détecter si une application est enregistrée auprès d'un registre. EDAS n'intrude pas dans l'application. Si EDAS détecte que l'application est enregistrée, le code d'état 200 est renvoyé. Si EDAS détecte que l'application n'est pas enregistrée, le code d'état 500 est renvoyé.
Préchargement avant la vérification de readiness : EDAS vous permet d'associer la fonctionnalité de préchargement de services aux vérifications de readiness de Kubernetes. Ainsi, une application est considérée comme prête uniquement après le préchargement des services activés pour celle-ci.
Limites
-
Vous pouvez activer les fonctionnalités de protection contre les listes vides et de démarrage sans interruption de manière non intrusive uniquement pour les applications Spring Cloud et Dubbo. Le tableau suivant décrit les versions Spring Cloud et Dubbo prises en charge.
Élément
Protection contre les listes vides
Démarrage sans interruption
Spring Cloud
Spring Cloud Edgware et versions ultérieures
Spring Cloud Edgware et versions ultérieures
Dubbo
Dubbo 2.5.3 à 2.7.8
RemarqueSi vous souhaitez utiliser les fonctionnalités dans Dubbo 3.0 et versions ultérieures, rejoignez le groupe DingTalk (ID : 31723701) pour obtenir une assistance technique.
Dubbo 2.7.3 à 2.7.8
RemarqueSi vous souhaitez utiliser les fonctionnalités dans Dubbo 2.6 ou Dubbo 3.0 et versions ultérieures, rejoignez le groupe DingTalk (ID : 31723701) pour obtenir une assistance technique.
Les registres de services Nacos, Eureka et Zookeeper sont pris en charge.
Dans la plupart des cas, les applications de passerelle ne sont pas appelées via des registres, mais par exposition d'API. Par conséquent, la fonctionnalité de préchargement à faible trafic fournie par MSE est inefficace pour les applications de passerelle. De plus, les applications de passerelle ne subissent pas de modifications majeures ni ne possèdent de logique métier complexe. Ainsi, la fonctionnalité de préchargement de services n'est pas obligatoire pour les applications de passerelle.
Pour les applications publiées en mode canari, vous ne pouvez pas activer la fonctionnalité de préchargement de services pour le premier lot.
Configurer la gouvernance des microservices lors de la création d'une application
Connectez-vous à la console EDASconsole EDAS. Dans le volet de navigation de gauche, choisissez . La page Applications s'affiche. Dans la barre de navigation supérieure, sélectionnez une région. Dans la partie supérieure de la page, sélectionnez un namespace. Dans le coin supérieur gauche, cliquez sur Create Application.
-
À l'étape Basic Information, définissez les paramètres Cluster Type et Application Runtime Environment, puis cliquez sur Next. Le tableau suivant décrit les paramètres.
Paramètre
Description
Cluster Type
Le type de cluster dans lequel vous souhaitez déployer l'application. Sélectionnez Kubernetes Clusters.
Application Runtime Environment
L'environnement d'exécution de l'application. Sélectionnez un environnement d'exécution en fonction du type d'application hébergée.
Java
Custom : sélectionnez cette option si vous souhaitez utiliser une image personnalisée pour déployer l'application dans un cluster Container Service for Kubernetes (ACK).
Java : sélectionnez cette option si vous souhaitez utiliser un package JAR universel pour déployer l'application en tant qu'application Dubbo ou Spring Boot. Vous pouvez définir le paramètre Java Environment après avoir sélectionné cette option.
Tomcat : sélectionnez cette option si vous souhaitez utiliser un package WAR universel pour déployer l'application en tant qu'application Dubbo ou Spring. Vous pouvez définir les paramètres Java Environment et Container Version après avoir sélectionné cette option.
EDAS-Container (HSF) : sélectionnez cette option si vous souhaitez utiliser un package WAR ou FatJar pour déployer l'application en tant qu'application High-speed Service Framework (HSF). Vous pouvez définir les paramètres Java Environment, Pandora Version et Ali-Tomcat Version après avoir sélectionné cette option.
PHP : sélectionnez cette option si l'application est une application PHP exécutée sur Apache HTTP Server.
Node.js, C++, Go, and Other Languages : sélectionnez cette option si vous souhaitez utiliser une image personnalisée pour déployer l'application dans un cluster Kubernetes. Le processus de configuration pour les applications multilingues n'est pas décrit dans cette rubrique.
RemarqueSi vous sélectionnez EDAS-Container (HSF) dans la section Select Application, vous ne pouvez activer que la fonctionnalité d'enregistrement et de découverte de services pour l'application.
Si vous sélectionnez PHP ou Node.js, C++, Go, and Other Languages dans la section Hosted Applications, vous ne pouvez pas configurer la gouvernance des microservices pour l'application.
À l'étape Configurations, configurez les informations d'environnement, les informations de base et la méthode de déploiement de l'application, définissez les paramètres de ressources associés, puis cliquez sur Next.
-
À l'étape Advanced Settings, cliquez sur Microservices Governance. Ensuite, vous pouvez configurer les fonctionnalités d'enregistrement et de découverte de services, de protection contre les listes vides et de démarrage sans interruption en fonction de vos besoins métier.
Paramètre
Description
Service Registration and Discovery
La méthode d'exploitation et de maintenance (O&M) de votre registre de services. Vous pouvez sélectionner le registre de services partagé d'EDAS ou le registre de services configuré pour l'application. Pour plus d'informations, consultez Choisir un registre de services.
Empty List Protection
Indique s'il faut activer la fonctionnalité de protection contre les listes vides.
Si vous activez la protection contre les listes vides, les abonnements aux listes d'instances vides par les consommateurs sont ignorés. Cela garantit une haute disponibilité du service.
Si vous désactivez la protection contre les listes vides, votre activité est interrompue et une erreur est renvoyée lorsqu'un consommateur s'abonne à une liste d'instances vide.
Graceful Release
Indique s'il faut activer la fonctionnalité de démarrage sans interruption. Pour activer cette fonctionnalité, définissez les paramètres suivants :
Prefetching Duration (Seconds) : la durée requise pour le préchargement de services au prochain démarrage d'une instance d'application. La valeur par défaut est 120. Valeurs valides : 0 à 86400. La valeur 86400 équivaut à 24 heures.
Number of Prefetching Curves : pendant la durée de préchargement configurée, le poids du trafic pour l'application préchargée augmente de façon exponentielle avec la valeur de la courbe. Pour une durée de préchargement spécifiée, si la valeur de la courbe est élevée, le poids du trafic pour l'application préchargée est faible lors de l'initialisation de l'application. Cela garantit que les applications complexes disposent de suffisamment de temps pour le préchargement.
La valeur par défaut est 2, ce qui convient aux scénarios de préchargement courants. Cette valeur indique que le trafic reçu par le fournisseur pendant le préchargement suit une courbe quadratique. Valeurs valides : 0 à 20. Pour une même durée de préchargement, une valeur plus élevée de ce paramètre signifie que le fournisseur de services reçoit moins de trafic au début du préchargement et que la quantité de trafic reçue augmente progressivement jusqu'à la fin du préchargement.
Registration Delay (Seconds) : définissez ce paramètre sur une valeur comprise entre 0 et 86400. La valeur 86400 équivaut à 24 heures.
Graceful Rolling Release : indiquez s'il faut activer la fonctionnalité de déploiement progressif sans interruption.
Complete Service Registration before Readiness Probing : fournit le port 55199 à l'application pour vérifier si les services sont enregistrés. Si oui, le code d'état 200 est renvoyé. Sinon, le code d'état 500 est renvoyé.
Complete Service Prefetching before Readiness Probing : fournit le port 55199 à l'application pour vérifier si les services sont préchargés. Si oui, le code d'état 200 est renvoyé. Sinon, le code d'état 500 est renvoyé.
RemarqueSi vous activez à la fois Complete Service Registration before Readiness Probing et Complete Service Prefetching before Readiness Probing, le port 55199 est fourni pour vérifier si les services sont préchargés.
-
À l'étape Advanced Settings, cliquez sur Application Life Cycle Management. Définissez les options du paramètre Readiness et activez l'interrupteur pour que la configuration de la sonde de readiness prenne effet.

Si vous ne configurez pas de sonde de readiness pour l'application, après avoir activé la fonctionnalité de déploiement progressif sans interruption, l'option de mode de déploiement progressif sans interruption est disponible pour le paramètre Select a mode. Si vous sélectionnez le mode de déploiement progressif sans interruption, le système utilise le chemin /health comme chemin par défaut pour l'application et fournit le port 55199 pour la vérification de readiness. Vous pouvez utiliser le mode de déploiement progressif sans interruption pour orchestrer le cycle de vie des microservices et le cycle de vie des services Kubernetes pour les applications Kubernetes. Vous pouvez également utiliser d'autres modes conjointement avec l'interface de vérification de l'état de santé pour vérifier la readiness en fonction de vos besoins métier.
Cliquez sur Create Application.
-
Sur la page Creation Completed, vérifiez les informations dans les sections Basic Information, Configurations et Advanced Settings. Ensuite, cliquez sur Create Application.
Dans la partie supérieure de la page Application Overview, cliquez sur View Details. Sur la page Change List, affichez le processus de modification de l'application. Attendez quelques minutes jusqu'à ce que l'application soit déployée. Une fois le processus de modification de l'application terminé, consultez l'état de l'instance dans la section Basic Information de la page Application Overview. Si l'état indique qu'un pod est en cours d'exécution, l'application est déployée.
Configurer la gouvernance des microservices lors de la mise à jour d'une application
Si vous n'avez pas activé les fonctionnalités d'enregistrement et de découverte de services, de protection contre les listes vides et de démarrage sans interruption lors de la création d'une application, vous pouvez les activer lors du déploiement de l'application.
Connectez-vous à la console EDAS console EDAS.
Dans le volet de navigation de gauche, cliquez sur . Dans la barre de navigation supérieure, sélectionnez une région. Dans la partie supérieure de la page, sélectionnez un namespace. Sélectionnez Container Service or Serverless Kubernetes Cluster dans la liste déroulante Cluster Type. Ensuite, recherchez l'application que vous souhaitez déployer et cliquez sur son nom.
Sur la page Overview ou Basic information, choisissez dans le coin supérieur droit.
Sur la page Select Deployment Mode, sélectionnez un mode de déploiement et cliquez sur Start Deployment dans le coin supérieur droit de la section du mode de déploiement spécifié.
-
Définissez l'environnement d'exécution et le package de déploiement pour l'application, puis cliquez sur Configuration Management. Une fois la configuration terminée, cliquez sur OK.
-
Développez Microservices Governance et configurez les fonctionnalités d'enregistrement et de découverte de services, de protection contre les listes vides et de démarrage sans interruption en fonction de vos besoins métier.
Paramètre
Description
Service Registration and Discovery
La méthode d'exploitation et de maintenance (O&M) de votre registre de services. Vous pouvez sélectionner le registre de services partagé d'EDAS ou le registre de services configuré pour l'application. Pour plus d'informations, consultez Choisir un registre de services.
Empty List Protection
Indique s'il faut activer la fonctionnalité de protection contre les listes vides.
Si vous activez la protection contre les listes vides, les abonnements aux listes d'instances vides par les consommateurs sont ignorés. Cela garantit une haute disponibilité du service.
Si vous désactivez la protection contre les listes vides, votre activité est interrompue et une erreur est renvoyée lorsqu'un consommateur s'abonne à une liste d'instances vide.
Graceful Release
Indique s'il faut activer la fonctionnalité de démarrage sans interruption. Pour activer cette fonctionnalité, définissez les paramètres suivants :
Prefetching Duration (Seconds) : la durée requise pour le préchargement de services au prochain démarrage d'une instance d'application. La valeur par défaut est 120. Valeurs valides : 0 à 86400. La valeur 86400 équivaut à 24 heures.
Number of Prefetching Curves : pendant la durée de préchargement configurée, le poids du trafic pour l'application préchargée augmente de façon exponentielle avec la valeur de la courbe. Pour une durée de préchargement spécifiée, si la valeur de la courbe est élevée, le poids du trafic pour l'application préchargée est faible lors de l'initialisation de l'application. Cela garantit que les applications complexes disposent de suffisamment de temps pour le préchargement.
La valeur par défaut est 2, ce qui convient aux scénarios de préchargement courants. Cette valeur indique que le trafic reçu par le fournisseur pendant le préchargement suit une courbe quadratique. Valeurs valides : 0 à 20. Pour une même durée de préchargement, une valeur plus élevée de ce paramètre signifie que le fournisseur de services reçoit moins de trafic au début du préchargement et que la quantité de trafic reçue augmente progressivement jusqu'à la fin du préchargement.
Registration Delay (Seconds) : définissez ce paramètre sur une valeur comprise entre 0 et 86400. La valeur 86400 équivaut à 24 heures.
Graceful Rolling Release : indiquez s'il faut activer la fonctionnalité de déploiement progressif sans interruption.
Complete Service Registration before Readiness Probing : fournit le port 55199 à l'application pour vérifier si les services sont enregistrés. Si oui, le code d'état 200 est renvoyé. Sinon, le code d'état 500 est renvoyé.
Complete Service Prefetching before Readiness Probing : fournit le port 55199 à l'application pour vérifier si les services sont préchargés. Si oui, le code d'état 200 est renvoyé. Sinon, le code d'état 500 est renvoyé.
RemarqueSi vous activez à la fois Complete Service Registration before Readiness Probing et Complete Service Prefetching before Readiness Probing, le port 55199 est fourni pour vérifier si les services sont préchargés.
Développez Throttling and Degradation Configuration et activez Access AHAS.
ImportantL'application redémarre après que vous avez cliqué sur OK. Nous vous recommandons de configurer ces fonctionnalités pendant les heures creuses.
-
Vérifier le résultat
Dans le volet de navigation de gauche de la page des détails de l'application, cliquez sur Change List pour afficher les détails des modifications de l'application. Si l'exécution de la modification actuelle réussit, l'application est déployée et les configurations sont effectives.
Après le déploiement de l'application avec démarrage sans interruption, vous pouvez consulter les effets du préchargement.
Dans le volet de navigation de gauche, sélectionnez 机器监控.
-
Sur la page 机器监控, consultez les effets de préchargement de l'application.
-
Préchargement de services
Lors du déploiement de l'application, choisissez une publication par lots et configurez l'activation du préchargement de services lors du déploiement, tout en intégrant l'application à AHAS. Voici un exemple des effets de préchargement de l'application :

Sous un trafic métier stable, vous pouvez observer que la proportion de trafic reçue par l'application nouvellement publiée augmente lentement selon la courbe de préchargement.
La fonctionnalité de démarrage sans interruption contrôle le pourcentage de trafic des applications nouvellement publiées en configurant la durée de préchargement et la courbe de préchargement. Les utilisateurs peuvent configurer la durée de préchargement selon leurs besoins métier et ajuster le poids du trafic attribué au démarrage de l'application en contrôlant la courbe de préchargement en fonction de la complexité du programme. La courbe de la fonction d'effet de préchargement est la suivante :

Voici des exemples illustrant les différents effets obtenus avec diverses courbes de préchargement configurées lors du déploiement de l'application :
Durée de préchargement de 120 secondes, courbe de préchargement de 2.

Durée de préchargement de 120 secondes, courbe de préchargement de 5.

-
Publication progressive sans interruption
L'activation de la publication progressive sans interruption permet d'aligner le cycle de vie des microservices avec celui de Kubernetes. Lors d'une publication par lots, si vous choisissez de configurer le préchargement de services et d'activer la publication progressive sans interruption, vous pouvez observer les effets suivants pendant le processus de publication :
Le trafic reçu par l'application nouvellement publiée augmente lentement selon la courbe de préchargement.

Le trafic de l'ancienne application diminue progressivement.

Pendant le processus de publication de l'application, vous pouvez voir des événements d'alerte Unhealthy dans les événements de l'application. Comme la sonde de readiness de l'application n'a pas réussi la vérification, les anciennes et nouvelles instances coexistent à ce moment-là, et les anciennes instances reçoivent du trafic supplémentaire pendant le préchargement. Une fois le préchargement terminé, la requête de la sonde de readiness renvoie le code 200, et les anciennes instances sont supprimées pour réaliser le préchargement de services et aligner le cycle de vie avec Kubernetes.

-
Enregistrement différé
La configuration de l'enregistrement différé permet à l'application d'attendre la durée de délai spécifiée après son démarrage avant de s'enregistrer auprès du registre de services pour fournir des services. Cela laisse à l'application un temps de démarrage suffisant pour éviter les pertes de trafic dues à un chargement incomplet.
Par exemple, lors du déploiement d'une application par lots uniques, si vous configurez un enregistrement différé de 300 secondes et un préchargement de services de 120 secondes, tout en activant la publication progressive sans interruption, l'effet est le suivant :

Consultez l'historique des modifications de l'application sur la page 变更记录 de l'application.

Vous pouvez constater que l'application a subi une modification à 11:17:59. Aucun trafic n'a été reçu par les pods créés avant 11:24:44, et le préchargement du trafic a commencé après ce timestamp. En observant les événements de modification de l'application, vous pouvez trouver l'événement d'alerte Unhealthy . Compte tenu du fait que le processus de démarrage de l'application inclut des événements tels que la planification des pods, le téléchargement des images et le démarrage du programme, la durée entre le moment de la publication de l'application et la fin du processus de modification correspond approximativement au temps nécessaire pour l'enregistrement différé et le préchargement de services lors du démarrage de l'application.
-