Heim  >  Artikel  >  Java  >  Serviceerkennung in der Java-Microservices-Architektur

Serviceerkennung in der Java-Microservices-Architektur

WBOY
WBOYOriginal
2024-06-02 12:09:57973Durchsuche

Die Diensterkennung in Java-Microservices ermöglicht es Anwendungen, andere Dienste dynamisch zu erkennen und eine Verbindung zu ihnen herzustellen. Eureka ist ein Client/Server-System, das Dienstregistrierung, Erkennung und Lastausgleich ermöglicht. Spring Cloud Eureka ist die Spring Cloud-Implementierung von Eureka und bietet automatische Registrierung, Lastausgleich und Spring-Integration. zkclient kann auch zur Diensterkennung verwendet werden, sodass Anwendungen Dienstadressen über Zookeeper ermitteln können.

Serviceerkennung in der Java-Microservices-Architektur

Diensterkennung in der Java-Microservices-Architektur

Einführung

In der Microservices-Architektur ist die Diensterkennung von entscheidender Bedeutung, da sie es Anwendungen ermöglicht, andere Dienste dynamisch zu erkennen und sich mit ihnen zu verbinden. In Java gibt es mehrere Service-Discovery-Technologien. In diesem Artikel werden einige davon untersucht und praktische Beispiele bereitgestellt.

Eureka

Eureka ist ein von Netflix entwickeltes Open-Source-Service-Discovery-Framework. Es handelt sich um ein Client/Server-System, bei dem der Eureka-Server eine Dienstregistrierung speichert und der Eureka-Client regelmäßig Dienste beim Server registriert. Eureka bietet die folgenden Funktionen:

  • Dienstregistrierung und -abmeldung
  • Diensterkennung
  • Lastausgleich

Spring Cloud:

Spring Cloud Eureka ist eine Implementierung von Eureka im Spring Cloud-Ökosystem, die einen Eureka-Client bereitstellt das sich nahtlos in Spring-Anwendungen integrieren lässt. Es bietet die folgenden Funktionen:

  • Automatische Dienstregistrierung und -abmeldung
  • Konfigurierbare Lastausgleichsstrategie
  • Integration mit Spring Boot- und Spring Cloud-Konfigurationseigenschaften

Praktischer Fall

Erkennen von Diensten mit Spring Cloud Eureka:

  1. Eureka-Abhängigkeit in Maven pom.xml-Datei hinzufügen:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>3.1.0</version>
</dependency>
  1. Eureka-Serviceklasse erstellen:
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {

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

}
  1. Eureka-Client über die Annotation @EnableEurekaClient aktivieren und @SpringBootApplication verwenden code> markiert die Serviceklasse. <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. Starten Sie die Anwendung auf dem Eureka-Server und prüfen Sie, ob der Dienst registriert ist, indem Sie den folgenden Endpunkt aufrufen:
🎜🎜http://localhost:8761/eureka/apps/[service-name]🎜 🎜 🎜Verwenden Sie zkclient, um Dienste zu entdecken: 🎜🎜🎜🎜Fügen Sie eine zkclient-Abhängigkeit im Maven-POM-Dienst hinzu und rufen Sie deren Adresse ab. 🎜🎜Wenn Sie den Dienst schließen, rufen Sie die Methode close() auf, um Zookeeper-Clientressourcen freizugeben. 🎜🎜

Das obige ist der detaillierte Inhalt vonServiceerkennung in der Java-Microservices-Architektur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn