Maison  >  Article  >  Java  >  Découverte de services dans l'architecture de microservices Java

Découverte de services dans l'architecture de microservices Java

WBOY
WBOYoriginal
2024-06-02 12:09:57973parcourir

La découverte de services dans les microservices Java permet aux applications de découvrir et de se connecter dynamiquement à d'autres services. Eureka est un système client/serveur qui assure l'enregistrement, la découverte et l'équilibrage de charge des services. Spring Cloud Eureka est l'implémentation Spring Cloud d'Eureka, offrant un enregistrement automatique, un équilibrage de charge et une intégration Spring. zkclient peut également être utilisé pour la découverte de services, permettant aux applications de découvrir des adresses de service via Zookeeper.

Découverte de services dans larchitecture de microservices Java

Découverte de services dans l'architecture de microservices Java

Introduction

Dans l'architecture de microservices, la découverte de services est cruciale car elle permet aux applications de découvrir et de se connecter dynamiquement à d'autres services. Il existe plusieurs technologies de découverte de services en Java, et cet article en explorera certaines et fournira des exemples pratiques.

Eureka

Eureka est un framework de découverte de services open source développé par Netflix. Il s'agit d'un système client/serveur dans lequel le serveur Eureka stocke un registre de services et le client Eureka enregistre périodiquement les services auprès du serveur. Eureka fournit les fonctions suivantes :

  • Inscription et désinscription du service
  • Découverte du service
  • Équilibrage de charge

Spring Cloud :

Spring Cloud Eureka est une implémentation d'Eureka dans l'écosystème Spring Cloud, qui fournit un client Eureka. qui s'intègre parfaitement aux applications Spring. Il offre les fonctionnalités suivantes :

  • Enregistrement et désenregistrement automatiques des services
  • Stratégie d'équilibrage de charge configurable
  • Intégration avec les propriétés de configuration Spring Boot et Spring Cloud

Cas pratique

Découverte de services à l'aide de Spring Cloud Eureka :

  1. Ajoutez une dépendance Eureka dans le fichier pom.xml Maven :
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>3.1.0</version>
</dependency>
  1. Créez une classe de service Eureka :
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }

}
  1. Activez le client Eureka via l'annotation @EnableEurekaClient et utilisez @SpringBootApplication code> marque la classe de service. <code>@EnableEurekaClient 注解启用 Eureka 客户端,并使用 @SpringBootApplication 标记服务类。
  2. 在 Eureka 服务器上启动应用程序,然后通过调用以下端点检查服务是否已注册:

http://localhost:8761/eureka/apps/[service-name]

使用 zkclient 发现服务:

  1. 在 Maven pom.xml 文件中添加 zkclient 依赖:
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.11</version>
</dependency>
  1. 创建 Zookeeper 服务发现类:
import org.I0Itec.zkclient.ZkClient;
import org.I0Itec.zkclient.serialize.SerializableSerializer;

import java.util.*;

public class ZkServiceDiscovery {

    private static final String ZOOKEEPER_ADDRESS = "localhost:2181";
    private static final int SESSION_TIMEOUT = 3000;
    private static final int CONNECTION_TIMEOUT = 3000;

    private ZkClient zkClient;

    public ZkServiceDiscovery() {
        zkClient = new ZkClient(ZOOKEEPER_ADDRESS, SESSION_TIMEOUT, CONNECTION_TIMEOUT, new SerializableSerializer());
    }

    public List<String> discoverServices(String serviceName) {
        List<String> servicePaths = zkClient.getChildren("/services/" + serviceName + "/instances");
        List<String> services = new ArrayList<>();

        for (String servicePath : servicePaths) {
            services.add(zkClient.readData("/services/" + serviceName + "/instances/" + servicePath));
        }

        return services;
    }

    public void close() {
        zkClient.close();
    }

}
  1. 使用 discoverServices() 方法发现服务并获取其地址。
  2. 在关闭服务时,调用 close()
  3. Démarrez l'application sur le serveur Eureka et vérifiez si le service est enregistré en appelant le point de terminaison suivant :
🎜🎜http://localhost:8761/eureka/apps/[service-name]🎜 🎜 🎜Utilisez zkclient pour découvrir les services : 🎜🎜🎜🎜Ajoutez la dépendance zkclient dans le service pom Maven et obtenez son adresse. 🎜🎜Lors de la fermeture du service, appelez la méthode close() pour libérer les ressources du client Zookeeper. 🎜🎜

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