La gouvernance des services peut être considérée comme le module le plus central et le plus de base de l'architecture de microservice. Il est principalement utilisé pour réaliser l'enregistrement automatisé et la découverte de diverses instances de microservice.
Spring Cloud Eureka fait partie de la Spring Cloud Netflix Microservices Suite, qui est principalement responsable de l'exécution des fonctions de gouvernance des services dans l'architecture microservice.
Cet article utilise de petits exemples simples pour partager comment gérer le service via Eureka:
============== Je suis la magnifique ligne de division =============================.
1. Construisez un centre d'enregistrement de service
Énumérez d'abord la structure du répertoire complet:
Le processus de construction est le suivant:
1. Créer un projet Maven: Eureka (implémentation spécifique omise)
2. Modifiez le fichier POM et introduisez des dépendances
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <ModelVersion> 4.0.0 </ ModelVersion> <proupId> com.sam </prouverid> <Artifactive> eureka </ artifactid> <version> 0.0.1-snapshot </DERNIFROITE> <parent> <GroupId> org.springframework.boot </proupId> <Artifactid> printemps-boot-starter-parent </refactive> <version> 1.5.1.release </-version> </parent> <preperties> <javavaversion> 1.8 </ javavaversion> </properties> <! - Utiliser la dépendance à la gestion de la version -> <dépendance> <poderties> <! <ProupId> org.springframework.cloud </proupId> <Ertifactid> Spring-Cloud-Dependces </ ArtifactId> <Dersion> Camden.sr6 </preffency> <pype> POM </ TYPE> <COPE> IMPORT </COPE> </ Dependency> </Dependency> </Dependance> <Dependcents> <! - Introducing EurekaDa <GroupId> org.springFramework.cloud </prouprid> <ArtefactId> Spring-Cloud-starter-eureka-server </retifactid> </dEpendency> </Dependency> </Dependance> </randing>
3. Créez une classe de démarrage
/ ** * * @enableeurekaserver * Le centre d'enregistrement de service utilisé pour spécifier que le projet est eureka * / @ @ enableeUrekaserver @ SpringbootApplicationPublic class eurekaapp {public static void Main (String [] args) {SpringApplication.run (eurekaapp.class, args); }} 4. Configurer le fichier application.properties
#Set the Tomcat Service Port Number Server.port = 1111 # Définissez le nom du service Spring.Application.Name = Eureka-ServiceEureka.instance.Hostname = LocalHost # Le centre de registre n'a pas besoin de s'inscrire eureka.client. Leureka.client.serviceUrl.defaultZone = http: // $ {eureka.instance.hostname}: $ {server.port} / eureka 5. Commencez le service et accédez-y, et nous verrons une image comme celle-ci:
2. Enregistrer un fournisseur de services
Énumérez d'abord la structure du répertoire complet:
Le processus de construction est le suivant:
1. Créer un projet Maven: Hello-Service (implémentation spécifique omise)
2. Modifiez le fichier POM et introduisez des dépendances
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <ModelVersion> 4.0.0 </ ModelVersion> <proupId> com.sam </prouverid> <ArtifActid> Hello-Service </ ArtifActive> <version> 0.0.1-Snapshot </DERNIFRICATION> </ Parent> <GroupId> org.springframework.boot </proupId> <Ertifactid> printemps-boot-starter-parent </retifactid> <version> 1.5.1.release </ version> </parent> <preperties> <javavaversion> 1.8 </ javavaversion> </properties> <dependancemanagement> <dependcs> <pedency> <ProupId> org.springframework.cloud </proupId> <ArtifactId> Spring-Cloud-Dependces </ ArtifactId> <Dersion> Camden.sr6 </preffency> <type> POM </pote> <ccope> Importation </cope> </peedendency> </peedendency> </Dependance> <Dependcents> <! - Introducing eurekka-> <Dependence> <! -! - Introduction eurekkafreences - <! <GroupId> org.springframework.cloud </prôdId> <ArtefactId> Spring-Cloud-starter-eureka </refactive> </dependency> </dependency> </dependces> </rands>
3. Créez une classe de démarrage
/ *** * * @enablediscoveryClient * Laissez le service utiliser Eureka Server * pour implémenter l'enregistrement et la découverte du service * * / @ eablediscoveryClient @ SpringbootApplicationPublic class helloApp {public static void main (String [] args) {springApplication.run (helloapp.class, args); }}4. Créer un contrôleur
@RestControllerPublic classe HelloController {Logger Logger = LoggerFactory.getLogger (HelloController.Class); @Autowired DiscoveryClient DiscoveryClient; @RequestMapping ("/ Hello") public String hello () {ServiceInstance instance = DiscoveryClient.getLocalServiceInstance (); // Imprimer le service ID logger.info ("*********" + instance.getServiceId ()); Retour "Bonjour, c'est Hello-Service"; }} 5. Configurer le fichier application.properties
server.port = 9090 # Définissez le nom du service Spring.Application.Name = Hello-Service # Définissez l'URL du centre d'enregistrement de service. Ce service doit s'inscrire au centre d'enregistrement des services eureka.client.serviceUrl.defaultZone = http: // localhost: 1111 / eureka
6. Démarrer et tester
1.) Après avoir commencé, la console Hello-Service aura ce mot (XXX représente le nom de votre PC)
Copiez le code comme suit: Instance enregistrée Hello-Service / xxx: Hello-Service: 9090 avec Status Up (réplication = false)
Les mots suivants seront imprimés sur la console Eureka (XXX représente le nom de votre PC)
Copiez le code comme suit: Instance enregistrée Hello-Service / xxx: Hello-Service: 9090 avec Status Up (réplication = false)
2.) Visitez à nouveau LocalHost: 1111 et vous constaterez qu'il y a des services enregistrés dans le centre d'inscription
3. Découverte et consommation de services
La structure du répertoire complet est la suivante:
Processus de construction:
1. Créer un projet Maven (implémentation spécifique omise)
2. Modifiez le fichier POM et introduisez des dépendances
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <ModelVersion> 4.0.0 </ ModelVersion> <ProupId> com.sam </prouverid> <ArtifActid> Hello-Consumer </ Artifactid> <version> 0.0.1-Snapshot </DERNIFROITION> <MAPTAL> <GroupId> org.springframework.boot </proupId> <Ertifactid> printemps-boot-starter-parent </retifactid> <version> 1.5.1.release </ version> </parent> <preperties> <javavaversion> 1.8 </ javavaversion> </properties> <dependancemanagement> <dependcs> <pedency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Camden.SR6</version> <type>pom</type> <scope>import</scope> </dependency> </dependency> </dependencyManagement> <dependencies> <!-- Introduce eureka client dependencies--> <dependency> <GroupId> org.springframework.cloud </prôdId> <Artefactive> Spring-Cloud-starter-eureka </refactId> </Dependency> <! - Introduire la dépendance du ruban est utilisée pour atteindre l'équilibrage de la charge. Nous l'utilisons simplement ici, donc nous ne le présenterons pas ailleurs -> <dependency> <proupId> org.springframework.cloud </proupId> <ArtefactId> Spring-Cloud-Starter-Ribbon </ Artifactid> </Dedency> </Dependances> </randing>
Il y a plus de dépendances en ruban que les fournisseurs de services de service Hello-Service ici
3. Créez une classe de démarrage
@VeablediscoveryClient @ SpringbootApplicationPublic Class ConsumerApp {// @ bean est appliqué sur la méthode et utilisé pour définir la valeur de retour de la méthode pour être bean @bean @loadBalanced // @ loadBalanced pour réaliser un équilibre de charge repostTemplate RestTemplate () {return new restTeemplate (); } public static void main (String [] args) {springApplication.run (consumerApp.class, args); }}@EnablediscoveryClient devrait également être utilisé ici pour permettre au service d'utiliser le serveur Eureka pour réaliser l'enregistrement et la découverte du service
4. Créer un contrôleur
@RestControllerPublic Class ConsumerController {// Le RestTemplate injecté ici est une instance configurée via @Bean dans com.sam.consumerApp @autowired Reststallate RestTemplate; @RequestMapping ("/ Hello-Consumer") public String HelloConSumer () {// Appelant le service Hello-Service, notez que le nom du service est utilisé ici, et non le port IP + spécifique RestTemplate.getForObject ("http: // hello-service / hello", string.class); Retour "Hello Consumer Finish !!!"; }}5. Configurer le fichier application.properties
server.port = 9999spring.application.name = hello-consumereureka.client.serviceurl.defaultZone = http: // localhost: 1111 / eureka # Le projet de configuration ici est le même que le fournisseur de service Hello-Service-Service
6. Démarrer, test 1.) Démarrer Eureka. Afin de montrer l'effet d'être responsable de l'équilibre, notre bonjour de service commence deux services. Les étapes spécifiques pour démarrer deux services sont les suivantes
Ce qui précède est l'étape de démarrage de Hello-Service1, avec le numéro de port 9090; La même méthode est définie sur Hello-Service2, avec le numéro de port 9091 (l'implémentation spécifique est omise).
2.) Démarrez Hello-Consumer
3.) Visitez http: // localhost: 1111 / encore et vous constaterez qu'il existe 2 services de service Hello-Service (les numéros de port sont 9090 et 9091) et 1 service Hello-Consume
4.) Après avoir visité Http: // LocalHost: 9999 / Hello-Consumer plusieurs fois, vous constaterez que Hello-Service1 et Hello-Service2 seront appelés à leur tour (Responsable de l'équilibre a été atteint), et vous pouvez confirmer le contenu via la console des deux (rappelez-vous que nous avons un loggerLogger.info ("*******" + instance. Oui, c'est l'impression)
4. Résumé
Les exemples ci-dessus réalisent la gouvernance des services de base:
PS: Permettez-moi d'expliquer ici que l'IDE que j'utilise est Spring Tool Suite, qui est la version personnalisée de Spring Eclipse, qui est pratique pour nous à utiliser Spring pour le développement. Les amis intéressés peuvent en savoir plus sur Baidu.
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.