ホームページ >Java >&#&チュートリアル >Java マイクロサービス アーキテクチャでのサービス検出

Java マイクロサービス アーキテクチャでのサービス検出

WBOY
WBOYオリジナル
2024-06-02 12:09:571050ブラウズ

Java マイクロサービスのサービス検出により、アプリケーションが他のサービスを動的に検出して接続できるようになります。 Eureka は、サービスの登録、検出、負荷分散を提供するクライアント/サーバー システムです。 Spring Cloud Eureka は Eureka の Spring Cloud 実装であり、自動登録、負荷分散、Spring 統合を提供します。 zkclient はサービス検出にも使用でき、アプリケーションが Zookeeper を通じてサービス アドレスを検出できるようになります。

Java マイクロサービス アーキテクチャでのサービス検出

Java マイクロサービス アーキテクチャにおけるサービス ディスカバリ

はじめに

マイクロサービス アーキテクチャでは、アプリケーションが他のサービスを動的に検出して接続できるようにするため、サービス ディスカバリは非常に重要です。 Java にはいくつかのサービス検出テクノロジがあり、この記事ではそれらのいくつかを検討し、実践的な例を示します。

Eureka

Eureka は、Netflix によって開発されたオープンソースのサービス検出フレームワークです。これは、Eureka サーバーがサービス レジストリを保存し、Eureka クライアントが定期的にサービスをサーバーに登録するクライアント/サーバー システムです。 Eureka は次の機能を提供します:

  • サービスの登録と登録解除
  • サービス検出
  • 負荷分散

Spring Cloud:

Spring Cloud Eureka は Spring Cloud エコシステムにおける Eureka の実装であり、Eureka クライアントを提供します。 Spring アプリケーションとシームレスに統合されます。以下の機能を提供します:

  • サービスの自動登録と登録解除
  • 構成可能な負荷分散戦略
  • Spring Boot および Spring Cloud 構成プロパティとの統合

実用的なケース

Spring Cloud Eureka を使用したサービスの検出 :

  1. Maven pom.xml ファイルに Eureka の依存関係を追加します:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>3.1.0</version>
</dependency>
  1. Eureka サービス クラスを作成します:
@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication {

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

}
  1. @EnableEurekaClient アノテーションを介して Eureka クライアントを有効にし、@SpringBootApplication を使用します。 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. Eureka サーバー上でアプリケーションを起動し、次のエンドポイントを呼び出してサービスが登録されているかどうかを確認します:
🎜🎜http://localhost:8761/eureka/apps/[service-name]🎜 🎜 🎜 zkclient を使用してサービスを検出します。 🎜🎜🎜🎜 Maven pom サービスに zkclient 依存関係を追加し、そのアドレスを取得します。 🎜🎜サービスを閉じるときは、close() メソッドを呼び出して Zookeeper クライアント リソースを解放します。 🎜🎜

以上がJava マイクロサービス アーキテクチャでのサービス検出の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。