Qu'est-ce que Spring Cloud Eureka
Spring Cloud Eureka est un composant de Spring Cloud. Il est encapsulé secondaire basé sur Netflix Eureka, qui est principalement responsable de la fin des fonctions de gouvernance des services dans le cadre de microservice. Spring Cloud ajoute la configuration d'automatisation de style démarrage Spring à Eureka. Nous n'avons besoin que de dépendances et d'annotations de référence simples pour permettre à Spring Boot d'intégrer facilement les applications de microservice avec le système de gouvernance des services Eureka.
Gouvernance des services
La gouvernance des services est le module le plus central et le plus basique du cadre de microservice. Il est principalement utilisé pour réaliser l'enregistrement automatisé et la découverte de diverses instances de microservice.
Au début, il n'y avait pas beaucoup de services de système de microservice qui pourraient être construits, et nous pouvons compléter l'appel du service via une configuration statique. Par exemple, il existe deux services A et B. Lorsque le service A doit appeler le service B pour effectuer une opération commerciale, afin d'atteindre une haute disponibilité du service B, que nous adoptions un équilibre complexe sur le serveur ou l'équilibrage de charge sur le client, nous devons maintenir manuellement une liste d'instances B. Cependant, avec le développement de l'entreprise, les fonctions du système deviennent de plus en plus complexes et les microservices correspondants deviennent de plus en plus difficiles.
Pour résoudre ce problème, un grand nombre de cadres de gouvernance de services et de produits ont été générés. Ces cadres tournent en fait autour des mécanismes d'enregistrement des services et de découverte de services pour compléter la gestion automatisée des instances d'application de microservice.
Inscription des services
Dans le cadre de gouvernance des services, un centre d'enregistrement des services est généralement construit. Chaque unité d'instance de service enregistre son propre service avec le centre d'enregistrement et indique au centre d'enregistrement une série d'informations supplémentaires telles que l'emplacement de l'hôte d'instance, le numéro de port, le numéro de version, le protocole de communication, etc., et le centre d'enregistrement organise la liste des services en fonction du nom du service.
Découverte de service
Depuis opération dans le cadre du cadre de gouvernance des services, la communication et les appels entre les services ne sont plus implémentés en spécifiant des adresses d'instance spécifiques, mais en lançant des appels de demande au nom du service. Par conséquent, lorsque l'appelant de service appelle l'interface du fournisseur de services, il ne connaît pas l'emplacement d'instance de service spécifique. Par conséquent, il est nécessaire d'initier d'abord une demande de requête au registre et d'obtenir une liste d'instances pour obtenir l'accès à des instances de service spécifiques.
Construire le service du centre d'enregistrement Eureka
Construisez un seul centre eureka
Tous nos développements ultérieurs seront basés sur la version ci-dessus. Il convient de noter que Sring Cloud utilise la version instantanée, vous devez donc spécifier l'adresse du référentiel dans le fichier POM.
Tout d'abord, nous créons un nouveau projet Spring Boot, nommé: Spring-Cloud-Eureka, et ajoutant les dépendances nécessaires au POM. Le fichier POM spécifique est le suivant:
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: ScheMalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modeversion> 4.0.0 </ Modelversion> <ProupId> com.sagesOrce </prouverId> <ArtefactId> Spring-Cloud-eureka </ artifactId> <DERSE> 0.0.1-Snapshot </DERNIFRATION> <PACKAGE> JAR </ Packaging> <name> Spring-Cloud-eureka </name> <parent> <proupId> org.springframework.boot </proupId> <ArtifActid> Spring-Boot-starter-Parent </prounid> <version> 2.0.2.Release </ Version> <RelativePath /> <! - Recherche Parent de Repository -> </parent> <Properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outpuleding> utf-8 </project.reporting.outpulencoding> <Java.version> 1.8 </java.version> <printemps-Cloud.version> finchley.build-snapshot </spring-cloud.version> </properties> <dependces> <dependency> <proupId> org.springframework.boot </proupid> <erifactive> spring-boot-starte <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </Dependency> </ Dependency> </Dependency> <DependencyManagement> <Dependces> <Dependency> <ProupID> org.springFramework.cloud </proncId> <ArtifActid> Spring-Cloud-Dependces </ptefactId> <Dersion> $ {Spring-Cloud.Version} </Sease> <type> pom </pype> <scope> </Dependency> </ Dependency> </DependencyManagement> <Duild> <Glugins> <GroupId> org.springFramework.boot </prouptid> </ Plugin> </ Plugins> </duild> <days * Springs </ Repository> <id> Spring-Snapshots </ Id> <dme> </ Repository> </ id> Spring-Snapshots </ Id> <nom Sunshots> </ Id> Spring-Snapshots </ Id> <nom Sunshots> </ Id> Spring-Snapshots </ Id> <nom Springs> </ Répositoire> <url> https://repo.spring.io/snapshot </url> <napshots> <veabled> true </abled> </napshots> </ Repository> <pawepostory> <id> printemps-milestones </ id> <name> Spring Milestones </name> <url> https://repo.spring.io/mileston </ url> https://repo.spring.io/mileston <Snapshots> <veabled> false </ableable> </napshots> </popository> </pèvreDémarrez un registre de services pour fournir des conversations à d'autres applications via l'annotation @enableeurekaserver. Cette étape est très simple. Vous pouvez activer cette fonction en ajoutant cette annotation à une application de démarrage à ressort normale:
@ SpringbootApplication @ activyEurekaserverPublic class ApplicationEurekaserver {public static void main (String [] args) {springApplication.run (applicationeurekaserver.class, args); }}Selon la configuration par défaut, le serveur du centre d'enregistrement s'inscrira également en tant que client. Généralement, nous devons désactiver cette fonction, et l'application modifiée.yml est la suivante:
# Spring ConfigsPring: Application: Nom: Spring-Boot-eureka # Server Configserver: Port: 9871 # Eureka ConfigureUreka: Instance: Hostname: LocalHost Client: Register-with-eureka: FALSE # Ne vous inscrivez pas auprès du centre d'enregistrement Fetch-Registry: False # Ne rétrayez pas le service Service-Url: Defaultzone: http: // $ {eureka.instance.hostname}: $ {server.port} / eureka / Puisque nous fonctionnons tous localement, pour une distinction de service ultérieure, nous définissons le port du registre des services via server.port pour exécuter le port comme: 9871
Après avoir terminé la configuration ci-dessus, démarrez l'application et visitez http: // localhost: 9871. Vous pouvez voir la page suivante où la liste des instances actuellement enregistrée auprès d'Eureka est vide, indiquant qu'aucun service n'a été enregistré auprès du centre d'enregistrement.
Je pense que tout le monde a remarqué les deux lignes de mots rouges accrocheurs ci-dessus:
URGENCE! Eureka peut prétendre à tort que des cas sont en place lorsqu'ils ne le sont pas. Les renouvellements sont moins que le seuil et les instances ne sont donc pas expirées pour être en sécurité.
Cause: Mécanisme d'auto-protection. Pendant le fonctionnement du serveur Eureka, il comptera si la proportion de défaillance cardiaque est inférieure à 85% en 15 minutes. Si cela se produit (il est facile de satisfaire pendant le débogage autonome, mais en fait, il est généralement causé par l'instabilité du réseau dans l'environnement de production), le serveur Eureka protégera les informations d'enregistrement d'instance actuelles et invite cet avertissement.
Étant donné que ce problème est susceptible de se produire dans des situations autonomes, après avoir désactivé l'auto-protection en fonction de la configuration en ligne, Eureka appellera toujours une alarme, ce qui invite que le mode sûr est désactivé et que l'exactitude de l'instance ne peut pas être garantie. Par conséquent, nous ignorons ce problème pour le moment et pouvons être résolus lorsque le déploiement des cluster est ultérieur.
Enregistrer un fournisseur de services
Après avoir terminé la création du service du centre d'enregistrement, nous pouvons essayer d'ajouter une application de démarrage de printemps existante au système de gouvernance des services d'Eureka.
Nous prenons toujours le Spring-Cloud-Server précédent. Nous devons seulement modifier la configuration suivante de Application.yml:
# Nom de l'application Spring: Application: Nom: Spring-Cloud-Server # Eureka Centre d'enregistrement Emplacement Eureka: Client: Service-URL: DefaultZone: http: // localhost: 9871 / eureka /
Une fois la modification terminée, le service peut être démarré. Pour le moment, nous actualisons la page de gestion d'Eureka et voyons les informations sur la liste d'instance actuellement enregistrées auprès d'Eureka comme suit:
Cela montre que notre service a été enregistré avec succès dans le centre d'inscription.
Exemple connexe Code: https://github.com/sagesource/spring-cloud-set
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.