illustrer:
Le ruban est un rôle dans Spring-Cloud en tant que consommateur de services, par lequel le client peut consommer les services du fournisseur de services.
Par exemple, dans cet exemple, le fournisseur de services enregistre dans le centre d'inscription. Le fournisseur de services fournit une interface de service, renvoyant une chaîne Hello. Nous appelons cette interface via Ribbon, puis obtenons le service du fournisseur de services sans exposer l'adresse du véritable fournisseur de services.
prémisse:
Suivez les tutoriels précédents pour construire un centre d'enregistrement et un fournisseur de services. Vous pouvez utiliser un centre d'enregistrement franc ici ou vous ne pouvez pas l'utiliser. Ceci est temporairement défini comme un centre d'enregistrement fragné qui a été mis en place avant de l'utiliser, et le fournisseur de services ne peut en fournir qu'un.
Préparation:
1. Démarrez le centre d'inscription
Selon le tutoriel précédent, utilisez Peer1 et Peer2 pour démarrer le centre d'enregistrement de deux éclats. S'il s'agit d'un seul nœud, vous pouvez démarrer directement le projet.
Après le démarrage, vous pouvez consulter LocalHost: 1111 ou localhost: 1112, comme indiqué sur la figure
2. Démarrez le fournisseur de services
Afin de voir la situation d'équilibrage de la charge, deux fournisseurs de services doivent être démarrés
Selon le didacticiel précédent, deux terminaux sont autorisés à démarrer les ports spécifiés (deux services identiques peuvent également configurer différents ports dans leurs fichiers de configuration respectifs). Les deux instructions terminales sont les suivantes:
CD TargetJava -Jar SpringCloudDemo-0.0.1-Snapshot.jar --server.port = 8080
CD TargetJava -Jar SpringCloudDemo-0.0.1-Snapshot.jar --server.port = 8081
Résultats du démarrage:
À ce stade, les préparatifs ont été achevés
texte:
1. Construction du service du ruban
Créez un nouveau projet Maven sans utiliser le modèle. Le projet est appelé Robbin-Customer, et les dépendances d'importation sont référencées comme suit:
<? 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> comelxz </prouverId> <version> 1.0-snapshot </-version> <parent> <proupId> org.springframework.boot </proupId> <Artifactive> printemps-boot-starter-Parent </ artifactid> <version> 1.5.9.9.release </ version> <relativePath /> </pareprence> <fendency> <proupId> Org.springframework <ArtefactId> printemps-boot-starter-web </ artifactid> </dependency> <dependency> <proupId> org.springframework.cloud </proncId> <Artifactid> Spring-Cloud-starter-eureka </ artifactid> <version> Release </-version> </Dedency> <Dedency> <proupId> Org.springworkworkwork. <ArtefactId> Spring-Cloud-Starter-Ribbon </ ArtifactId> <Dersion> Release </ Version> </Dependency> </Dependency> </Dependency> <DependencyManagement> <Dependces> <Dependency> <ProupId> org.springFramework.cloud </proupId> <Artifactive> Spring-Cloud-Dependendents </RitifActid> <ccope> Import </ccope> <ype> pom </pype> </dependency> </dependces> </dpendances> </DependencyManagement> </ project>
Créez une nouvelle classe de démarrage Springboot et remettez le repos-stage au conteneur à ressort pour la gestion
package com.cnblogs.hellxz; import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.cloud.client.discootapplication; importcoveryclient; org.springframework.cloud.client.loadbalancer.loadbalanced; import org.springframework.context.annotation.bean; import org.springframework.web.client.restTemplate; / ** * @Author: Hellxz * @description: Consumer Application * @date: 2018/4/16 15:45 * / @ @VeablediscoveryClient @ SpringbootApplicationPublic Class CustomerApplication {@Bean // Prise en charge de ce bean dans le conteneur de printemps @loadBalanced // Activer l'équilibrage de charge via cette annotation RestTemplate RestTemplate () {return new RESTTEMPEL (); } public static void main (String [] args) {springApplication.run (clientApplication.class, args); }}Créez une application.yml dans le répertoire SRC / Ressources pour les informations d'enregistrement de configuration. Cet article utilise un centre d'enregistrement franc. Veuillez configurer un Defaltzone pour un seul nœud.
Serveur: Port: 9000 #Specify Le port de service pour le ruban-client Spring: Application: Nom: Ribbon-Customer #Specify the Application Name #Specify the Eureka Inscription Center Adresse Eureka: Client: ServiceUrl: DefaultZone: // peer2: 1112 / eureka / eureka /, http: // peer2: 1112 / eureka / eureka /, http: // peer2: 1112 / eureka /
Créer un CustomArController dans le répertoire de classe de démarrage, injectez RestTemplate pour appeler l'interface de service
Package com.cnblogs.hellxz; import org.springframework.beans.factory.annotation.autowired; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestmethod; org.springframework.web.bind.annotation.restController; import org.springframework.web.client.resttremplate; / ** * @author: hellxz * @description: Consumer Application * @Date: 2018/4/16 15:54 * / @ reposTrolleterPublic Class CustomAnToller {@aUtow RESTTEMPLAT PRIVATE RESTTEMPLAT RESTTEMPLAT; @RequestMapping (value = "/ ruban-customer", méthode = requestMethod.get) public string hellocostomer () {// commenté ici parce que je l'ai retiré de l'interface du fournisseur de service d'accès droit avant, donc le résultat ne sera pas renvoyé, et une erreur sera signalée // Return restteemplate.getForEntity ("HTTP: // localhost: 8080 / Hello", string). // Utilisez RestTemplate pour appeler l'interface MicroService return restTEmplate.getForEntity ("http: // hello-service / hello", string.class) .getBody (); }}Remarque: la ligne 24 du code ci-dessus donne une démonstration d'erreur. Si une erreur se produit lors de l'accès à l'interface du ruban et qu'une page d'erreur blanche apparaît, veuillez vérifier ici
À ce stade, l'application de consommation de ruban est construite et le test est démarré
test:
Visitez http: // localhost: 1111 / Nous avons constaté que cette application de consommation de ruban a été enregistrée dans le centre d'enregistrement
Visitez http: // localhost: 9000 / ruban-client
N'oubliez pas que s'il y a un accès dans le projet de prestataires de services, les informations seront imprimées, car deux fournisseurs de services ont été démarrés, ici vous pouvez tester l'équilibrage de charge du ruban.
Afficher la production du fournisseur de services
Le deuxième terminal ne le fait pas, et il est toujours affiché dans les points de terminaison Eureka Résolution via la ligne de configuration
Actualisez la page pour afficher le terminal. Étant donné que la mise en œuvre de l'équilibrage de la charge par défaut du ruban est le sondage, il peut se produire pour accéder au même service plusieurs fois. Actualisez la page plusieurs fois, et il sera certainement affiché dans un autre terme!
Conclusion:
En tant que consommateur de services, le ruban ne peut pas exposer l'adresse d'interface à l'utilisateur tout en obtenant les services fournis par le fournisseur de services. On peut voir que lors de l'appel de l'interface de service ici, le nom de service du fournisseur de services est utilisé à la place du nom d'hôte. Cette fonctionnalité est très importante dans le cadre de gouvernance des services.
Depuis que j'ai d'abord appris le générateur Jhipster, je voudrais le prédire à l'avance, puis il y aura une technologie appelée Feign qui peut remplacer le ruban. Cette série de blogs est toutes les notes d'étude. En fonctionnement réel, il peut y avoir une situation où une demande est à la fois un fournisseur de services et un consommateur de services.
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.