Académique Documents
Professionnel Documents
Culture Documents
▪ Comment garder la trace des URL des différentes instances disponibles, ainsi que
leurs états ? → Eureka Server de Netflix remplit cette fonction.
▪ Le Discovery Services est l'un des principes clés d'une architecture basée sur les
microservices.
SERVICE DISCOVERY : EUREKA
▪ Une fois en place, les instances des microservices viennent s'enregistrer (Service
il suffira de piocher dans cette liste d'instances qu'Eureka expose via une API REST.
▪ Le serveur peut être configuré et déployé pour être hautement disponible (cluster
mode), chaque serveur répliquant l'état des services enregistrés sur les autres.
EDGE MICROSERVICES EUREKA
microservice donné.
toujours disponible, afin de mettre à jour son registre en éliminant celles qui n'existent
plus.
SERVICE DISCOVERY : EUREKA
▪ Remarquez que :
▪ La possibilité d’avoir un
« Cluster mode » du
Serveur Eureka
Externaliser sa
configuration Configuration
EUREKA SERVER
▪ Utiliser le starter Spring cloud Discovery
EUREKA SERVER
▪ Externalisez le fichier de configuration en créant un fichier eureka-server.properties dans config-server-repo.
server.port= 9102
spring.application.name=eureka-server
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
▪ eureka.client.serviceUrl.defaultZone : quand on utilise le client Eureka pour accéder au registre d'Eureka, on doit
▪ registerWithEureka : pourquoi renseigner l'URL d'Eureka si ce microservice est déjà enregistré dans Eureka ?
→ Eureka offre la possibilité de se répliquer en plusieurs instances ; on peut pointer vers d'autres instances
d'Eureka.
→ Ce mode s'appelle "cluster mode". Comme nous n'allons utiliser qu'un seul serveur Eureka, nous allons
pointer vers sa propre URL.
▪ eureka.client.registerWithEureka et eureka.client.fetchRegistry sont tous les 2 à false, étant donné que nous
▪ Lors du démarrage, les microservices déclenchent un appel REST avec le serveur Eureka pour s'auto-enregistrer dans le
registre d'instance du serveur. Lorsqu'un arrêt progressif se produit après utilisation, les microservices déclenchent un
autre appel REST afin que le serveur puisse effacer toutes les données liées à l'appelant.
▪ Pour gérer les arrêts clients inattendus, Eureka server attend des Heartbeats du client à des intervalles spécifiques.
C’est ce qu’on appelle le « Renewal ». Si Eureka server cesse de recevoir le signal de présence pendant une durée
▪ Le mécanisme qui arrête l'expulsion des instances lorsque les Heartbeats sont inférieurs au seuil attendu est appelé
« self-preservation ». Cela peut se produire dans le cas d'une mauvaise partition réseau, où les instances sont toujours
actives, mais ne sont tout simplement pas accessibles pendant un moment ou dans le cas d'un arrêt brutal du client.
▪ Lorsque le serveur active le mode « self-preservation », il suspend l'expulsion de l'instance jusqu'à ce que le taux de
renouvellement repasse au-dessus du seuil attendu. Dans ce mode, le serveur Eureka cesse d'expirer les instances si
lequel le serveur Eureka attend depuis qu'il a reçu le dernier Heartbeat d'un client avant de pouvoir
une tâche à cette fréquence pour expulser les clients expirés – la valeur par défaut est de 60
secondes.
EUREKA SERVER : GESTION DU REGISTRE DES INSTANCES DES MICROSERVICES.
Heartbeats attendus par minute de tous les clients enregistrés – la valeur par défaut est 0,85
Eureka d'exécuter une tâche à cette fréquence pour calculer les battements de cœur attendus
de tous les clients enregistrés à cette minute – la valeur par défaut est de 15 minutes.
moment donné, les renouvellements tombent en dessous du pourcentage configuré pour cette
valeur (inférieur à 85 % en 15 minutes), le serveur arrête les instances qui expirent pour
Heartbeats attendus par minute de tous les clients enregistrés – la valeur par défaut est 0,85
EUREKA SERVER
▪ Vérifier que Eureka Server a été bien enregistré dans notre Spring Cloud Config Server
http://localhost:9101/eureka-server/master
EUREKA SERVER
▪ Config-server doit être lancé, puis lancer Eureka Server.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
▪ Le microservice est enregistré avec un statut "UP" indiquant qu'il est en fonction.
registre !
EUREKA CLIENT
▪ Le service micorservice produit s’est bien enregistré
PROJET CONSUL DE HASHICORP
constitué d’un ensemble de composants qui fournissent des fonctionnalités de découverte et de configuration de
▪ HashiCorp est une société de logiciels fondée en 2012 avec un modèle commercial Freemium basée à San
Francisco, en Californie.
▪ HashiCorp fournit des outils et des produits qui permettent aux développeurs, opérateurs et professionnels de la
sécurité de provisionner, sécuriser, exécuter et connecter une infrastructure de cloud. HashiCorp propose des
1. Service Discovery:
2. Health Check:
Les Clients Consul publient des Healh Checks associés aussi bien à des
applications, du plus simple (Etat de la base de données, Réponse valide
du Web Service) au plus complexe (Nombre d’utilisateurs/sessions
actives, temps de réponse moyen des requêtes), mais aussi à des états
des machines (Consommation Mémoire, utilisation CPU).
3.Key/Value Store
▪ Le shéma suivant décrit l'architecture d'un déploiement HCP Consul qui contient à la fois un cluster géré par HashiCorp et
un cluster autogéré :
FONCTIONNEMENT DE CONSUL
▪ Consul est construit autour d’un exécutable, l’Agent, qui est utilisable au travers deux configurations, les « Serveurs » et les « Clients »:
▪ L’Agent
L’agent est un daemon qui s’exécute sur tous les membres du cluster Consul. Un agent peut s’exécuter en mode ‘Client’ ou ‘Serveur’.
Tous les agents exposent les interfaces DNS et REST. Ils sont aussi responsables de l’exécution des HealhChecks et maintiennent la
synchronisation des services.
▪ Clients
Les Clients sont des agents dont les seuls rôles sont de faire suivre les requêtes aux Serveurs et de participer au ‘LAN GOSSIP’. Ils ne
consomment donc que peu de ressources locales et réseaux.
▪ Serveur
Au nombre minimum de trois par Datacenter, les Serveurs ont la charge de participer à la gestion du consensus au travers de l’algorithme
RAFT (RAFT quorum) pour la gestion de la tolérance aux pannes et au performance du système, monitorer l’état du cluster, faire suivre les
requêtes aux leaders et aux autres datacenters, répondre aux requêtes et participer aux échanges du ‘WAN GOSSIP’.
EUREKA CLIENT SPRING CLOUD CONSUL
▪ Le projet Spring Cloud Consul fournit des intégrations Consul pour les applications Spring Boot via la
configuration automatique.
▪ Avec quelques annotations, on peut rapidement activer et configurer les modèles courants au sein de
l’application et créer de grands systèmes distribués avec des composants basés sur Consul.
▪ Registry/Discovery and Config Services: les instances peuvent être enregistrées auprès de l'agent Consul et les
clients peuvent découvrir les instances à l'aide de beans gérés par Spring : spring-cloud-starter-consul-discovery et spring-
cloud-starter-consul-config .
▪ Prend en charge Spring Cloud LoadBalancer : un équilibreur de charge côté client fourni par Spring Cloud
(équivalent à Ribbon)
▪ Prend en charge API Gateway, un routeur dynamique et un filtre via Spring Cloud Gateway (équivalent à Zuul)
▪ Lorsque un microservice s'exécute, il se connecte à l'agent Consul exécuté sur le port local 8500 par défaut.
▪ Lorsqu'un microservice s'inscrit auprès de Consul, il fournit des métadonnées le concernant telles que l'hôte et
le port, l'identifiant. Un Check HTTP est créée par défaut et Consul atteint ce Endpoint via /actuator/health
toutes les 10 secondes. Si la vérification de l'état échoue, l'instance de service est marquée comme critique
de Consul:
Service Registry
1 2
Spring cloud