ホームページ  >  記事  >  Java  >  Spring Cloud マイクロサービスでのサービスの登録と検出

Spring Cloud マイクロサービスでのサービスの登録と検出

WBOY
WBOYオリジナル
2023-06-23 09:48:06991ブラウズ

インターネット ビジネスの継続的な発展に伴い、単一のアプリケーションでは複雑なビジネス ニーズを満たすことができなくなり、マイクロサービス アーキテクチャが徐々に一般的なビジネス アーキテクチャ モデルになってきました。 Spring Cloudはマイクロサービスアーキテクチャ体系における重要な支援技術の一つであり、そのサービス発見・登録機能の実装は非常に重要である。この記事では、Spring Cloud のサービス登録と検出機能について詳しく説明します。

  1. 背景

マイクロサービス アーキテクチャでは、各機能モジュールは独立したサービスであり、サービス間で通信する必要があるため、サービスを管理するメカニズムが必要です。サービス間。サービス登録および発見メカニズムは、サービスが他のサービスを動的に登録および発見し、通信および連携できるようにするメカニズムです。

Spring Cloud は、Eureka や consul などのさまざまな登録センターを統合するサービス登録および検出メカニズムを提供します。その中でも、Eureka は高い可用性とパフォーマンスを備えた最も人気のある登録センターの 1 つです。

  1. サービス登録

サービス登録の目的は、他のサービスがそのサービスを使用できるように、登録センターにサービスを登録することです。 Spring Cloud では、@EnableDiscoveryClient アノテーションを使用してサービスの検出および登録機能を有効にすると同時に、関連する構成情報を application.yml ファイルに追加する必要があります。

server:
  port: 8080
spring:
  application:
    name: service-demo
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8000/eureka/

上記の構成では、application.name はサービスの名前、eureka.client.service-url.defaultZone は登録センターのアドレスです。

  1. サービス ディスカバリ

サービス ディスカバリの目的は、登録センターから必要なサービス インスタンスを見つけて、負荷分散ポリシーに従ってこれらのサービス インスタンスを呼び出すことです。 Spring Cloud は、Ribbon、Feign など、サービス検出と負荷分散のためのさまざまなソリューションを提供します。

リボンを使用してサービス検出と負荷分散を実装する場合は、関連する依存関係を pom.xml ファイルに追加する必要があります。サンプル コードは次のとおりです。

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  <version>2.2.6.RELEASE</version>
</dependency>

まず、@EnableDiscoveryClient アノテーションをスタートアップ クラスに追加して、サービスの登録および検出機能を有効にする必要があります。次に、@LoadBalanced アノテーションを使用して負荷分散された RestTemplate インスタンスを作成し、このインスタンスを使用して他のサービスを呼び出すことができます。サンプル コードは次のとおりです:

@RestController
public class ServiceController {
    @Autowired
    private RestTemplate restTemplate;
 
    @RequestMapping("/getProduct")
    public String getProduct() {
        String result = restTemplate.getForObject("http://product-service/product", String.class);
        return "get product from " + result;
    }
 
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceDemoApplication.class, args);
    }
}

上記のコードでは、restTemplate を使用します。 .getForObject() メソッドを使用して他のサービスを呼び出す場合は、「http://product-service/product」など、実際のアドレスの代わりに「アプリケーション名」を使用する必要があります。ここで、product-service はサービス名です。

  1. 概要

Spring Cloud は、サービス登録および検出機能を提供し、各サービス インスタンスが相互に検出して呼び出しできるようにします。このメカニズムにより、マイクロサービス アーキテクチャの各コンポーネントの管理とスケジュールがより便利になり、システム全体の可用性と拡張性が向上します。

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

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