Microservices avec Spring Boot. Partie 4. Utilisation du ruban pour l'équilibrage de charge

Il s'agit de la partie 4 de la série d'architecture de microservices, dans laquelle nous nous concentrerons sur l'utilisation du ruban pour l'équilibrage de charge.

Cet article fait partie de la série Spring Boot Microservices:


Dans cette série d'articles, vous vous familiariserez avec le concept des microservices et apprendrez à créer des microservices à l'aide de Spring Boot et Spring Cloud.

Ce guide vous aidera à apprendre les bases des architectures de microservices. Nous allons également commencer à examiner l'implémentation de base des microservices avec Spring Boot.

Nous allons créer une paire de microservices et les faire communiquer entre eux à l'aide des serveurs de noms Eureka (Eureka Naming Server) et Ribbon pour équilibrer la charge côté client.

Dans ce didacticiel, nous allons continuer l'histoire de l'utilisation du ruban comme équilibreur de charge dans un projet de microservice Spring Boot.

Vous apprendrez:


  • De quoi a-t-on besoin pour l'équilibrage de charge?
  • Qu'est-ce que le ruban?
  • Comment ajouter un ruban à un projet Spring Boot?
  • Comment activer et configurer le ruban pour l'équilibrage de charge?

Présentation du microservice


Dans les deux parties précédentes, nous avons créé des microservices et établi une connexion entre eux.

GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000 

 { id: 10002, from: "EUR", to: "INR", conversionMultiple: 75, quantity: 10000, totalCalculatedAmount: 750000, port: 8000, } 

Lorsque nous lancerons le service ci-dessus, vous verrez que la demande est également envoyée au service Forex. C'est génial!

Nous avons créé deux microservices et établi une connexion entre eux.



Cependant, nous avons codé en dur l'URL pour FS dans le composant CCS, CurrencyExchangeServiceProxy.

 @FeignClient(name="forex-service" url="localhost:8000") public interface CurrencyExchangeServiceProxy { @GetMapping("/currency-exchange/from/{from}/to/{to}") public CurrencyConversionBean retrieveExchangeValue (@PathVariable("from") String from, @PathVariable("to") String to); } 

Cela signifie que lors du démarrage de nouvelles instances du service Forex, nous n'avons aucun moyen de répartir la charge sur celles-ci.

Dans cette partie, activons maintenant l'équilibrage de charge côté client à l'aide du ruban.

Vous aurez besoin de:


  • Maven 3.0+ - votre outil de construction
  • Votre IDE préféré. Nous utilisons Eclipse.
  • JDK 1.8+

Projet Ready Maven avec des échantillons de code


Le référentiel Github contient tous les exemples de code.

Activer le ruban


Ajoutez une dépendance de ruban dans pom.xml:

  <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> 

Activez RibbonClient dans CurrencyExchangeServiceProxy:

 @FeignClient(name="forex-service") @RibbonClient(name="forex-service") public interface CurrencyExchangeServiceProxy { 

Configurez les instances dans application.properties:

 forex-service.ribbon.listOfServers=localhost:8000,localhost:8001 

Lancer le service Forex sur 8001


À l'étape précédente, nous avons configuré le ruban pour répartir la charge entre les instances. Cependant, nous n'avons pas une seule instance de service Forex en cours d'exécution sur 8001.

Nous pouvons le lancer en configurant la configuration de lancement, comme indiqué dans la figure ci-dessous:



Ruban en action


Nous avons actuellement les services suivants:

  • Convertisseur de devises de microservice (CCS) sur 8100
  • Deux instances de microservice Forex sur 8000 et 8001

Vous verrez maintenant que les demandes à CCS seront réparties entre deux instances du microservice Forex via Ribbon.

Demande 1


 GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000 

Demande 2


 GET to http://localhost:8100/currency-converter-feign/from/EUR/to/INR/quantity/10000 

Vous remarquerez peut-être que les numéros de port dans les deux réponses sont différents.

Résumé


Nous avons créé deux microservices et établi une connexion entre eux.



Nous utilisons Ribbon pour répartir la charge entre deux instances du service Forex.

Cependant, nous codons en dur l'URL des deux instances FS dans CCS. Cela signifie que chaque fois qu'une nouvelle instance de FS apparaît, nous devrons changer la configuration CCS. Ce n'est pas cool.

Dans la partie suivante, nous utiliserons le serveur de nommage Eureka pour résoudre ce problème.

Source: https://habr.com/ru/post/fr485608/


All Articles