Utiliser Eureka pour réaliser la gouvernance des services
Fonction: Réalisez la gouvernance des services (enregistrement des services et découverte)
Introduction: Spring Cloud Eureka est un module de gouvernance de service dans le cadre du projet Spring Cloud Netflix. Le projet Spring Cloud Netflix est l'un des sous-projets de Spring Cloud. Son contenu principal est d'emballer une série de produits open source de Netflix. Il fournit une intégration Netflix OSS en figement en fige pour les applications de démarrage Spring. Avec quelques annotations simples, les développeurs peuvent rapidement configurer des modules couramment utilisés dans leurs applications et créer un énorme système distribué. Ses principaux modules comprennent: Discovery de service (Eureka), disjoncteur (hystrix), routage intelligent (Zuul), équilibrage de la charge du client (ruban), etc.
Pratique pratique du projet:
Centre d'enregistrement des services: Eureka-Server
Fonction: Centre d'enregistrement des services fournit une fonction d'enregistrement des services
Fournisseur de services: Eureka-Client
Fonction: Enregistrez un service au centre d'enregistrement des services
Centre d'enregistrement des services: Eureka-Server
Créez un nouveau projet Springboot: Eureka-Server, et sa configuration pom.xml est la suivante:
<properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> <GroupId> org.springframework.cloud </proupId> <ArtifactId> Spring-Cloud-starter-eureka-server </retifactid> </pedimency> </dependces> <dedentencymanagement> <peedentences> <petendency> <proupId> org.springframework.cloud </prounid> <artifactive> <version> dalston.sr1 </pride> <ype> pom </pype> <ccope> import </ccope> </dependency> </dpendance> </dedentencymanagement>
Il est très simple de mettre en œuvre la fonction d'un centre d'enregistrement de services. Il vous suffit d'utiliser l'annotation @enableeurekaserver sur la classe de démarrage du projet EurekaserverApplication.
@Enableeurekaserver @springbootapplication public class eurekaserverApplication {public static void main (string [] args) {new SpringApplicationBuilder (eurekaserverApplication.class) .web (true) .run (args); }}Par défaut, le centre d'enregistrement des services essaiera également de s'inscrire en tant que client, nous devons donc désactiver son comportement d'enregistrement client et ajouter simplement les informations suivantes au fichier de configuration de l'application.Properties:
Spring.Application.name = eureka-serverserver.port = 1001eureka.instance.hostname = localhosteureka.client.register-with-eureka = falseureka.client.fetch-registry = false
Démarrez EurekaserverApplication, visitez http: // localhost: 9001 / pour voir la page d'Eureka. À partir de l'emplacement de la boîte rouge, vous pouvez voir qu'il n'y a pas d'instance de service de tâche enregistrée au centre d'enregistrement de service actuel.
Fournisseur de services: Eureka-Client
Une fois chaque instance enregistrée, un battement de cœur est nécessaire pour envoyer un battement de cœur au centre d'inscription. Lorsque le client s'inscrit avec le serveur, il fournira des métadonnées, telles que l'hôte et le port, l'URL, la page d'accueil, etc. Eureka Server reçoit des messages de battements de chaque instance client. Si le rythme cardiaque est sorti, l'instance est généralement supprimée du serveur enregistré.
Créer un nouveau projet Springboot: Eureka-Client, et sa configuration pom.xml est la suivante:
<properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependency> </dependency> </dependency> <Dependencymanagement> <Dedency> <Dedency> <ProupId> org.springframework.cloud </proupId> <Artifactid> Spring-Cloud-Dependces </ Artifactid> <De version> Dalston.sr1 </Dectionncy> </ Depentences> </ Type> <ccope> Import </cope> </Dedency> </Detencys> </ Dependencymangation>
Il est également très simple de mettre en œuvre un fournisseur de services. Utilisez simplement l'annotation @enableeurekaclient sur la classe de démarrage du projet EurekaclientApplication.
@Enableeurekaclient @springbootapplication public class eurekaclientApplication {public static void main (string [] args) {new SpringApplicationBuilder (eurekaclientApplication.class) .web (true) .run (args); }}Configurer ce qui suit dans Application.properties
Spring.Application.Name = Eureka-ClientientServer.port = 9002Eureka.Client.ServiceUrl.DefaultZone = http: // localhost: 9001 / eureka /
Via la propriété Spring.Application.name, nous pouvons spécifier le nom du microservice lors de l'appel, afin que le service puisse être accessible.
La propriété eureka.client.serviceUrl.defaultZone correspond au contenu de configuration du centre d'enregistrement de service et spécifie l'emplacement du centre d'enregistrement de service.
Utilisez la propriété server.port pour définir différents ports.
Démarrez la classe EurekaclientApplication
Rafraîchissement http: // localhost: 9001 /, et vous pouvez voir que notre fournisseur de services s'est inscrit auprès du centre d'inscription des services
Créer un nouveau DiscoveryController
Utilisez DiscoveryClient.getServices () pour obtenir le nom du service enregistré et utilisez @Value pour attribuer les informations dans le fichier de configuration à l'IP
@RestControllerPublic Class DiscoveryController {@Autowired Private DiscoveryClient DiscoveryClient; @Value ("$ {server.port}") String privé IP; @Getmapping ("/ client") public String client () {String Services = "Services:" + DiscoveryClient.getServices () + "IP:" + ip; System.out.println (services); services de retour; }}Visitez: http: // localhost: 9002 / client
Enfin, permettez-moi d'expliquer les deux annotations @enableeurekaclient et @enablediscoveryclient
Tout d'abord, les deux annotations peuvent réaliser la fonction de la découverte de services. Il existe de nombreuses implémentations de Discovery Service dans Spring Cloud (Eureka, Consul, Zookeeper, etc.)
@Enableeurekaclient est basé sur Spring-Cloud-Netflix. Le service utilise Eureka comme centre d'enregistrement et les scénarios d'utilisation sont relativement uniques.
@EnablediscoveryClient est basé sur les communs de Spring-Cloud. Le service adopte d'autres centres d'enregistrement.
Github: https://github.com/mingyuhub/springcloud
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.