Cette fois, nous partageons du contenu sur l'enregistrement et la découverte des services SpringCloud, qui seront expliqués par les centres de services de construction, l'enregistrement des services et la découverte de services respectivement. Maintenant, de nombreuses startups de Pékin ont commencé à compter sur Springcloud. Cela peut être dû aux riches documents et composants. Après tout, c'est actuellement une architecture de microservice relativement complète. J'espère que ce partage peut apporter une bonne aide à tout le monde;
Centre de service Eureka
Pour autant que je sache et que je utilise de nombreux centres d'enregistrement, citons Zookeeper et Eureka. Mon article précédent a partagé Dubbo + Zookeeper pour créer des services, donc cette fois j'utilise Eureka. Le cadre SpringCloud le recommande également comme centre d'enregistrement. Bien sûr, il peut être intégré à d'autres centres d'enregistrement de service. Après tout, SpringCloud s'appuie sur Springboot pour construire des projets, il est donc très rapide d'intégrer d'autres composants. Tout d'abord, créez le projet du centre d'enregistrement Eureka_Server et introduisez les dépendances à travers les suivantes:
<dependency> <proupId> org.springframework.cloud </rombasid> <ArtefactId> Spring-Cloud-starter-eureka-server </refacactid> </dependency>
Puis ajoutez des éléments de configuration dans le fichier application.yml:
Server: Port: 2001Spring: Application: Nom: Eureka-SeserveureUreka: Client: registre-with-eureka: false #forbibid vous inscrivez-vous en tant que service Fetch-Registry: false #mask d'information d'enregistrement: instance: préférée IP-address: true-instance-id: $ {printemps.application.name}: $ {server}Une fois la configuration terminée, vous devez démarrer la classe et ajouter l'annotation @enableeurekaserver. Les paramètres sont essentiellement terminés et exécutés. Visitez http: // localhost: 2001 / Pour obtenir l'interface suivante:
Service d'enregistrement des fournisseurs
Avec le centre d'inscription des services, nous devons également fournir des services et enregistrer ces services auprès du centre de service. Afin de faciliter cela, nous créons d'abord un projet de module d'interface Eureka_API qui est utilisé par les fournisseurs de services et les consommateurs, et créons l'interface et demandez la classe d'entité de paramètre de retour suivant:
Interface publique UserInterface {@postMapping ("/ Users") Morp <list <Mouser>> GetUsers (Morq RQ); @Getmapping ("/ msg") String getmsg ();}Entité Mouser:
classe publique Mouser {ID long privé; Nom d'utilisateur de chaîne privée; chaîne privée userpwd; public long getID () {return id; } public void setid (long id) {this.id = id; } public String getUserName () {return username; } public void setUsername (String username) {this.userName = username; } public String getUserPwd () {return userpwd; } public void SetUserPwd (String userpwd) {this.userpwd = userpwd; }}Créez ensuite le module eureka_provider du côté du fournisseur de services, et introduisez également les dépendances Eureka, mais il y a une petite différence entre elle et le côté serveur:
<dependency> <proupId> org.springframework.cloud </proupId> <ArtefactId> Spring-Cloud-starter-eureka </retifactid> </pedigency>
Créez ensuite le service UserController à fournir par le fournisseur de services et implémentez l'interface UserInterface dans notre module Eureka_API. Le code est le suivant:
@RestControllerPublic classe UserController implémente userInterface {@autowired private httpServLetRequest request; @Override public Morp <list <mouser>> getUsers (Morq rq) {Morp <list <mouser>> rp = new Morp <> (); List <Mouser> list = new ArrayList <> (); pour (int i = 0; i <5; i ++) {Mouser Mouser = new Mouser (); Mouser.setid (i); Mouser.SetUsername ("Shenniu" + i); list.add (Mouser); } rp.sett (list); rp.setStatus (list.size ()> = 1? 1: 0); rp.setMessage (list.size ()> = 1? "": "Pas encore de données"); retour RP; } @Override public String getmsg () {return "Voici un fournisseur, port:" + request.getServerport (); }}Il convient de noter ici qu'il n'y a pas d'ajout de postmappage ou de GetMapping aux deux interfaces de service du contrôleur, car cela est déclaré par l'interface implémentée; Après avoir défini les utilisateurs et les services MSG, nous devons également être en mesure de les injecter dans le centre d'enregistrement des services, de sorte que la configuration suivante de l'application.yml est requise:
Spring: Application: Nom: Eureka-Provider #Service Nom Eureka: Client: Service-Url: DefaultZone: http: // localhost: 2001 / eureka / #Service Center Address Instance: préférée-ip-address: True Instance-ID: Port: 2004
Nous devons également ajouter la balise suivante @enableeurekaclient à la classe de démarrage, ce qui signifie démarrer le client Eureka, car le fournisseur de services appartient au client par rapport au centre de service; Lors de l'exécution du projet Eureka_Provider, nous pouvons voir les informations suivantes dans le centre d'inscription:
Afin de s'assurer que l'interface du fournisseur de services est bien, nous pouvons cliquer directement sur Eureka-Provider: 2004, puis augmenter le chemin d'accès à l'interface à utiliser. Voici: http://192.168.153.148:2004/msg, et nous pouvons obtenir les informations suivantes renvoyées par l'interface d'accès normal:
Service de découverte des consommateurs
Avec les services d'interface, nous devons également consommer des services, nous créons donc le projet de module eureka_consumer, car la méthode Fegin pseudo-client est utilisée pour accéder à notre fournisseur de services, et nous devons également introduire les dépendances d'Eureka:
<dependency> <proupId> org.springframework.cloud </proupId> <ArtifActid> Spring-Cloud-Starter-eureka </retifactId> </Dependency> <Dedency> <ProupId> org.SpringFramework.cloud </prouprid> <ptetifactid> Spring-Cloud-Starter-Feign </ArtifActid> </ Dependance>
Définissez ensuite le service UserService sur la couche de service et implémentez l'interface dans le module d'interface publique Eureka_API, le code est le suivant:
@FeignClient (value = "eureka-provider") Interface publique UserService étend UserInterface {}Via feignClient, spécifiez le nom de l'application du serveur Eureka-provider. Ce nom correspond au répertoire des applications enregistré dans le centre de service. Créez une sortie de sortie de réponse UserController sur la couche de contrôleur et fournissez deux interfaces affichées, des codes tels que:
@RestControllerPublic Class UserController {@Autowired Private UserService UserService; @GetMapping ("/ Users") public morp <list <mouser>> getUsers (Morq rq) {return userservice.getUser (rq); } @Getmapping ("/ msg") String public getmsg () {return userservice.getmsg (); }}De même, le côté consommateur doit également configurer certaines informations dans Application.yml:
Spring: Application: Nom: Eureka-ConsumereureKa: Client: Service-URL: DefaultZone: http: // localhost: 2001 / eureka / #geter adresse centrale Instance: préférée-ip-address: true instance-id: $ {Spring.Application.name}: $ {server.port} Server: Port: 2005La configuration est similaire à celle du fournisseur. Enfin, vous devez déclarer les annotations suivantes dans la classe de démarrage:
@ SpringbootApplication @ ENablediscoveryClient // Consumer Client @ ENABERFEIGNCIENTS // Feign Client classe publique EurekaconsumerApplication {public static void main (String [] args) {SpringApplication.Run (eurekaconmerApplication.class, args); }}Après avoir commencé le projet Eureka_Consumer, nous pouvons voir les informations qu'il a enregistrées dans le centre d'inscription:
Ensuite, en accédant à l'interface de consommation Eureka_Consumer, testez les données d'interface du fournisseur de services Eureka_Provider pour voir s'il peut répondre normalement. L'adresse d'interface est http: // 192.168.153.148:2005/msg:
Le résultat du fournisseur est obtenu en accédant au consommateur, qui est le processus de test de base pour l'enregistrement et la découverte des services; Quant à la façon dont le consommateur demande l'interface du fournisseur, nous pouvons le résoudre dans le diagramme manuel suivant:
Centre de service Eureka hautement disponible
À en juger par le dessin manuel ci-dessus, le centre de service joue un rôle très important. Habituellement, ce type de centre de service en construit non seulement un, il est donc nécessaire de créer un ensemble de centres de service hautement disponibles; En fait, il est très simple que la configuration du fournisseur et du consommateur n'a pas besoin d'être effectuée. Nous avons seulement besoin de le configurer dans l'application.yml du projet Eureka-Server sur le premier nœud et de démarrer plusieurs services avec différents ports (le même serveur a plusieurs ports, et différents ports de serveur peuvent être les mêmes):
Serveur: Port: 2001Spring: Application: Nom: Eureka-Seserveureureka: Client: Registre-with-eureka: true # Lorsque vous configurez la haute disponibilité, vous devez vous ouvrir et vous inscrire Fetch-Registry: True Service-Url: DefaultZone: http: // localhost: 2002 / eureka / #register in eureka sur le port 2002 # defaultZone: Instance: préférée-ip-address: true instance-id: $ {printemps.application.name}: $ {server.port} serveur: explication-interval-timer-in-ms: 2000 #Exclude intervalles de service échouéLes points suivants doivent être prêts attention aux configurations hautement disponibles:
Ici, j'ai créé deux adresses de registre: http: // localhost: 2001 / et http: // localhost: 2002 /; Étant donné que les adresses de registre configurées par le fournisseur et le consommateur sont toutes deux du port 2001, afin de vérifier la haute disponibilité, nous devons accéder au centre d'enregistrement de port de 2002, les effets sont les suivants:
Vous pouvez voir que le port de 2002 a les mêmes informations d'enregistrement que le port de 2001. Lorsque je ferme l'application du port 2001, je peux toujours trouver les informations du fournisseur et du consommateur en 2002. Pour une configuration plus détaillée, veuillez vous référer à la description officielle du site Web.
Adresse git: https://github.com/shenniubuxing3
Package de sortie NuGet: https://www.nuget.org/profiles/shenniubuxing3
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.