Maison >Java >javaDidacticiel >Enregistrement et découverte de services dans les microservices Spring Cloud

Enregistrement et découverte de services dans les microservices Spring Cloud

WBOY
WBOYoriginal
2023-06-23 09:48:061070parcourir

Avec le développement continu des activités Internet, les applications uniques ne peuvent plus répondre aux besoins des entreprises complexes, et l'architecture des microservices est progressivement devenue un modèle d'architecture d'entreprise populaire. Spring Cloud est l'une des technologies de support importantes du système d'architecture de microservices, et la mise en œuvre de ses fonctions de découverte et d'enregistrement de services est très importante. Cet article expliquera en détail les fonctions d'enregistrement et de découverte de services dans Spring Cloud.

  1. Contexte

Dans l'architecture des microservices, chaque module fonctionnel est un service indépendant, et les services doivent communiquer entre eux, un mécanisme est donc nécessaire pour gérer la communication entre les services. Le mécanisme d'enregistrement et de découverte de services est un mécanisme qui permet aux services de s'enregistrer et de découvrir dynamiquement d'autres services afin qu'ils puissent communiquer et coopérer.

Spring Cloud fournit un mécanisme d'enregistrement et de découverte de services, intégrant différents centres d'enregistrement, tels qu'Eureka et consul. Parmi eux, Eureka est l'un des centres d'enregistrement les plus populaires avec une disponibilité et des performances élevées.

  1. Enregistrement du service

Le but de l'enregistrement du service est d'enregistrer le service auprès du centre d'enregistrement afin que d'autres services puissent l'utiliser. Dans Spring Cloud, les fonctions de découverte et d'enregistrement de services sont activées via l'annotation @EnableDiscoveryClient. Dans le même temps, les informations de configuration pertinentes doivent être ajoutées au fichier application.yml.

server:
  port: 8080
spring:
  application:
    name: service-demo
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8000/eureka/

Dans la configuration ci-dessus, application.name est le nom du service et eureka.client.service-url.defaultZone est l'adresse du centre d'enregistrement.

  1. Découverte de services

Le but de la découverte de services est de trouver les instances de service requises à partir du centre d'enregistrement, puis d'appeler ces instances de service conformément à la politique d'équilibrage de charge. Spring Cloud fournit une variété de solutions pour la découverte de services et l'équilibrage de charge, telles que Ribbon, Feign, etc.

Lorsque vous utilisez Ribbon pour implémenter la découverte de services et l'équilibrage de charge, vous devez ajouter les dépendances pertinentes dans le fichier pom.xml. L'exemple de code est le suivant :

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  <version>2.2.6.RELEASE</version>
</dependency>

Tout d'abord, vous devez ajouter l'annotation @EnableDiscoveryClient à la classe de démarrage pour activer les fonctions d'enregistrement et de découverte du service. Ensuite, vous pouvez utiliser l'annotation @LoadBalanced pour créer une instance RestTemplate avec équilibrage de charge, puis utiliser cette instance pour appeler d'autres services. L'exemple de code est le suivant :

@RestController
public class ServiceController {
    @Autowired
    private RestTemplate restTemplate;
 
    @RequestMapping("/getProduct")
    public String getProduct() {
        String result = restTemplate.getForObject("http://product-service/product", String.class);
        return "get product from " + result;
    }
 
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceDemoApplication.class, args);
    }
}

Dans le code ci-dessus, utilisez restTemplate.getForObject(). méthode pour appeler d'autres services. Vous devez utiliser " Nom de l'application " pour remplacer l'adresse réelle, telle que " http://product-service/product ", où produit-service est le nom du service.

  1. Résumé

Spring Cloud fournit des fonctions d'enregistrement et de découverte de services, qui permettent à chaque instance de service de se découvrir et de s'appeler. Grâce à ce mécanisme, chaque composant de l'architecture du microservice peut être géré et planifié plus facilement, et la disponibilité et l'évolutivité du système global peuvent être améliorées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn