ホームページ > Java > &#&チュートリアル > Java API 開発におけるサービス検出に Nacos を使用する

Java API 開発におけるサービス検出に Nacos を使用する

PHPz
リリース: 2023-06-18 08:27:03
オリジナル
1952 人が閲覧しました

クラウドネイティブ アプリケーションの台頭により、開発者の間ではマイクロサービス アーキテクチャがますます好まれています。サービス ディスカバリはマイクロサービス アーキテクチャの重要な部分であり、サービスが自身を登録し、他のサービスと通信できるようにします。 Java 開発では、Nacos はオープン ソース サービスの検出および構成センターとして人気があり、使いやすい API および UI インターフェイスを提供し、開発者がサービスをより適切に管理および調整できるようにします。この記事では、Java API 開発におけるサービス検出に Nacos を使用する方法を紹介します。

  1. Nacos のインストール

まず、Nacos をダウンロードしてインストールする必要があります。 Nacos では、ソース コードからコンパイルする方法とバイナリ パッケージを使用してインストールする方法の 2 つのインストール方法が提供されます。ここでは、バイナリ パッケージ経由でインストールすることを選択します。

ダウンロードアドレス: https://github.com/alibaba/nacos/releases

ダウンロード完了後、解凍してNacosサービスを起動します。 Nacos コンソールで名前空間とサービスを作成し、サービスの統合管理を容易にします。

  1. 依存関係の紹介

Gradle または Maven プロジェクトで、Nacos クライアントの依存関係を追加します:

Gradle:

implementation 'com.alibaba.nacos:nacos-client:2.0.1'
ログイン後にコピー

Maven :

<dependency>
  <groupId>com.alibaba.nacos</groupId>
  <artifactId>nacos-client</artifactId>
  <version>2.0.1</version>
</dependency>
ログイン後にコピー
  1. サービス コンシューマの作成

サービス コンシューマを作成するときは、Nacos が提供する DiscoveryClient オブジェクトを使用して、利用可能なすべてのサービス インスタンスを取得し、将来のために提供する必要があります。インスタンスを選択します。

import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.discovery.NacosDiscoveryClient;
import com.alibaba.nacos.api.exception.NacosException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class ServiceConsumer {
    @Autowired
    private NacosDiscoveryProperties discoveryProperties;

    public String getServiceUrl(String serviceName) throws NacosException {
        NacosDiscoveryClient nacosDiscoveryClient = new NacosDiscoveryClient(discoveryProperties);
        List<Instance> instances = nacosDiscoveryClient.getInstances(serviceName);
        if (CollectionUtils.isEmpty(instances)) {
            throw new RuntimeException("No available instance for service");
        }
        Instance instance = LoadBalancer.chooseInstance(instances);
        return instance.getUri().toString();
    }
}
ログイン後にコピー

上記のコードでは、DiscoveryClient を通じてサービス インスタンスのリストを取得し、LoadBalancer を使用してサービス インスタンスを選択します。ニーズに合わせて LoadBalancer をカスタマイズできます。

  1. サービス プロバイダーの作成

サービス プロバイダーを作成するときは、サービスを Nacos に登録し、サービスの特定のビジネス ロジックを実装する必要があります。

import com.alibaba.cloud.nacos.registry.NacosRegistration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ServiceProvider {
    @Autowired
    private NacosRegistration registration;

    @Value("${server.port}")
    private int port;

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

    @GetMapping("/")
    public String index() {
        return "Hello, world!";
    }

    @GetMapping("/register")
    public String register() {
        registration.register();
        return "服务注册成功";
    }
}
ログイン後にコピー

上記のコードでは、NacosRegistration を使用してサービスを Nacos に登録し、コントローラーでサービスを提供します。

  1. サービスの実行

これで、サービス プロバイダーとサービス コンシューマを起動し、サービス コンシューマを通じてサービス プロバイダが提供するサービスにアクセスできるようになります。

http://localhost:8080/register にアクセスして、サービスを Nacos に登録します。

http://localhost:8080/ にアクセスすると、サービス プロバイダーから返されたコンテンツを確認できます。

  1. 概要

この記事では、Java API 開発におけるサービス検出に Nacos を使用する方法を紹介します。 Nacos を使用すると、サービスの登録と検出が簡単に行え、サービスの高可用性を実現するために追加のコーディングは必要ありません。この記事が Java 開発者にとって役立つことを願っています。

以上がJava API 開発におけるサービス検出に Nacos を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート