クラウドネイティブ アプリケーションの台頭により、開発者の間ではマイクロサービス アーキテクチャがますます好まれています。サービス ディスカバリはマイクロサービス アーキテクチャの重要な部分であり、サービスが自身を登録し、他のサービスと通信できるようにします。 Java 開発では、Nacos はオープン ソース サービスの検出および構成センターとして人気があり、使いやすい API および UI インターフェイスを提供し、開発者がサービスをより適切に管理および調整できるようにします。この記事では、Java API 開発におけるサービス検出に Nacos を使用する方法を紹介します。
まず、Nacos をダウンロードしてインストールする必要があります。 Nacos では、ソース コードからコンパイルする方法とバイナリ パッケージを使用してインストールする方法の 2 つのインストール方法が提供されます。ここでは、バイナリ パッケージ経由でインストールすることを選択します。
ダウンロードアドレス: https://github.com/alibaba/nacos/releases
ダウンロード完了後、解凍してNacosサービスを起動します。 Nacos コンソールで名前空間とサービスを作成し、サービスの統合管理を容易にします。
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>
サービス コンシューマを作成するときは、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 をカスタマイズできます。
サービス プロバイダーを作成するときは、サービスを 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 に登録し、コントローラーでサービスを提供します。
これで、サービス プロバイダーとサービス コンシューマを起動し、サービス コンシューマを通じてサービス プロバイダが提供するサービスにアクセスできるようになります。
http://localhost:8080/register にアクセスして、サービスを Nacos に登録します。
http://localhost:8080/ にアクセスすると、サービス プロバイダーから返されたコンテンツを確認できます。
この記事では、Java API 開発におけるサービス検出に Nacos を使用する方法を紹介します。 Nacos を使用すると、サービスの登録と検出が簡単に行え、サービスの高可用性を実現するために追加のコーディングは必要ありません。この記事が Java 開発者にとって役立つことを願っています。
以上がJava API 開発におけるサービス検出に Nacos を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。