Nous avons terminé les deux composantes de base du centre d'enregistrement et du fournisseur de services. Cet article présente le service d'appel à l'aide du ruban Spring Cloud pour charger l'équilibrage du côté client.
L'équilibrage de la charge (LB: équilibrage de charge) est le premier problème à résoudre. Avant les microservices, la solution LB était principalement une solution d'équilibrage de charge centralisée et un autre LB indépendant entre les consommateurs de services et les fournisseurs de services. Le LB est généralement du matériel dédié, tel que F5, ou basé sur un logiciel, tel que VS, Haproxy, etc. Il existe une table de mappage d'adresse pour tous les services sur le LB. Lorsque le consommateur de services appelle un service cible, il initie d'abord une demande au LB. Le LB utilise une certaine politique (telle que la ronde-robin) pour charger l'équilibrage de la demande au service cible.
L'émergence de microservices fournit une autre idée de la mise en œuvre de LB: intégrer les fonctions de LB dans le processus de service des consommateurs sous forme de bibliothèques, plutôt que fournis par un appareil ou un serveur centralisé. Cette solution est appelée équilibrage de la charge douce ou équilibrage de la charge du client. Dans Spring Cloud, en conjonction avec la fonction d'enregistrement de service d'Eureka, le sous-projet du ruban implémente l'équilibrage de la charge pour le client REST.
Servir les consommateurs avec un ruban de nuage de printemps
Créer un nouveau projet de consommation d'échantillon de printemps
Créez un nouveau sous-projection de consommation de toit-échantillon de printemps dans le cadre de l'échantillon de printemps-échantillon
Ajouter les dépendances du ruban et de l'Eureka
<Dependances> <Dependance> <GroupId> org.springframework.cloud </proupId> <Artifactid> Spring-Cloud-starter-eureka </lefactive> </dependency> <dependency> <proupId> org.springframework.cloud </proupActid> <e dépendance> Spring-Cloud-starter-ribbon </tifactid> </ dépendance> Spring-Cloud-starter-Ribbon </ Artifactid> <GroupId> org.springFramework.boot </prôdId> <ArtefactId> printemps-boot-starter-web </ artifactid> </dependency> </dpendances>
Configurer ApplicationIn.Properties, Adresse du centre de registre
Spring.Application.name = Consumerserver.port = 30001eureka.client.service-url.defaultZone = http: // localhost: 10001 / eureka /, http: // localhost: 10002 / eureka /
Écrivez UserController, ajoutez @loadBalanced Annotation, activez l'équilibrage de la charge du ruban
@ Contrôleur @ requestmapping ("user") public class userController {@bean @loadBalanced restTemplate initrestTemplate () {return new restTemplate (); } @Autowired private restLEmplate restTemplate; @RequestMapping ("add") @ResponseBody public String Add (String Username, String Age) {return restTEmplate.getForEntity ("http: // producer / user / add", string.class, username, age) .getBody (); }}Écrire ConsumerApplication, ajouter @enableeurekaclient, activer l'enregistrement des services
@ Activeryeurekaclient @ SpringbootApplicationPublic class ConsumerApplication {public static void main (String [] args) {SpringApplication.Run (ConsumerApplication.class, args); }}Producteur de déploiement en grappe
Afin de simuler le producteur du cluster, de nouveaux applications-profile1.properties et application-Profile2.properties sont créées dans le projet de producteur.
Application-Profile1.properties
Spring.Application.name = produrserver.port = 20001eureka.client.service-url.defaultZone = http: // localhost: 10001 / eureka /, http: // localhost: 10002 / eureka /
Application-Profile2.properties
Spring.Application.name = produrserver.port = 20002eureka.client.service-url.defaultZone = http: // localhost: 10001 / eureka /, http: // localhost: 10002 / eureka /
Afin de tester l'effet de charge, nous avons tapé le port du service appelé
@ Contrôleur @ requestmapping ("user") public class userController {private logger logger = loggerfactory.getLogger (getClass ()); @Autowired Private DiscoveryClient Client; @RequestMapping ("add") @ResponseBody public String addUser (String Username, String Age) {return "Succès de" + client.getLocalServiceInstance (). Gethost () + ":" + client.getLocalServiceInstance (). Getport (); }}Commencer le test
Démarrer le centre d'inscription
Configurez respectivement les profils actifs vers Profile1 et Profile2, démarrez deux fois et complétez le start-up de service du cluster de registre.
Démarrer un fournisseur de services
Démarrez le fournisseur de services de la même manière que ci-dessus.
Commencer à servir les consommateurs
Le fournisseur de services peut être effectué sur une base autonome et le renforcement des consommateurs peut être démarré normalement.
vérifier
Entrez http: // localhost: 30001 / user / add du navigateur
Visitez à nouveau:
On peut voir que notre service d'appel d'équilibrage de charge a été réussi, et la valeur par défaut est l'équilibrage de charge en fonction de la formation en rotation.
Résumer
Cet article introduit et termine l'appel pour utiliser le ruban Spring Cloud pour l'équilibrage de la charge du client.
Ensuite, nous continuerons à présenter comment utiliser Spring Cloud pour la surveillance des services.
Téléchargement du code source
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.