Springcloud-eureka サービスの登録と検出

  • モノリシック アーキテクチャ: シンプルで便利、結合度が高く、スケーラビリティが低く、小規模なプロジェクトに適しています。例:学生管理システム

  • 分散アーキテクチャ: 疎結合でスケーラブルですが、複雑で困難です。JD.com や Taobao などの大規模なインターネット プロジェクトに適しています。

  • マイクロサービス: 優れた分散アーキテクチャ ソリューション

    ①利点: 分割の粒度が小さい、サービスの独立性が高い、結合が少ない

    ②短所:構造が非常に複雑で、運用・保守・監視・展開の難易度が高くなる

  • SpringCloud は、さまざまな優れたマイクロサービス機能コンポーネントを統合した、マイクロサービス アーキテクチャのワンストップ ソリューションです。

2.2. サービス分割の例

事前授業資料のマイクロサービス クラウド デモを例にとると、その構造は次のとおりです。

 

cloud-demo: 親プロジェクト、依存関係の管理

  • order-service: 注文関連のビジネスを担当する注文マイクロサービス

  • user-service: ユーザー関連のビジネスを担当するユーザー マイクロサービス

必須:

  • 注文マイクロサービスとユーザー マイクロサービスの両方に、互いに独立した独自のデータベースが必要です。

  • 注文サービスとユーザー サービスの両方が、Restful インターフェイスを外部に公開します

  • 注文サービスがユーザー情報をクエリする必要がある場合、ユーザー サービスの Restful インターフェースのみを呼び出すことができ、ユーザー データベースをクエリすることはできません。

 Eureka サーバーを登録する

まず、誰もがセンター サーバーを登録します: eureka-server は、独立したマイクロサービスでなければなりません。

1) eureka-server サービスを作成する

cloud-demo 親プロジェクトの下に、サブモジュールを作成します。

モジュール情報を入力します。

 次に、サービス情報を入力します。

2) eureka 依存関係を導入する

eureka 用に SpringCloud によって提供されるスターター依存関係を導入します。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

3) 起動クラスを書く

 eureka-server サービスのスタートアップ クラスを作成するには、必ず @EnableEurekaServer アノテーションを追加して、eureka の登録センター機能を有効にします。

package cn.itcast.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

4)設定ファイルを書く

次の内容で application.yml ファイルを作成します。

server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka

5) サービスを開始する

マイクロサービスを開始し、ブラウザーでアクセスします: http://127.0.0.1:10086

次の結果が成功するはずです。

 eurekaのサービス一覧を見る 

 

 

サービス登録

次に、user-service を eureka-server に登録します

1) 依存関係を導入する

user-service の pom ファイルで、次の eureka-client 依存関係を導入します。 

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

2) 設定ファイル

user-service で、application.yml ファイルを変更し、サービス名と eureka アドレスを追加します。

spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

3) 複数のユーザー サービス インスタンスを開始する

サービスに複数のインスタンスがあるシナリオを示すために、SpringBoot スタートアップ構成を追加し、ユーザー サービスを開始します。

最初に、元のユーザー サービスのスタートアップ構成をコピーします。

次に、ポップアップ ウィンドウで情報を入力します。

 1. 2 つの注文サービスをコピーする方法、右クリックして [構成のコピー] を選択し、画像の選択した場所に追加します。

-Dserver.port=8082 (8082 はポート番号を表します)

 これで、2 つのユーザー サービスのスタートアップ構成が SpringBoot ウィンドウに表示されます。

 

ただし、1 つ目はポート 8081 で、2 つ目はポート 8082 です。

2 つのユーザー サービス インスタンスを開始します。

 eureka-server 管理ページを表示します。

1. eurekaの主なサービス

2. ツーオーダーサービス

3. ワンユーザーサービス

 サービス発見

1. eureka-server に移動して、ユーザー サービス サービスのインスタンス リストを取得し、負荷分散を実装します。

ただし、これらのアクションを実行する必要はありません。注釈を追加するだけで済みます。

order-service の OrderApplication で、 @LoadBalanced アノテーションを RestTemplate Bean に追加します。

eureka-server に移動して、ユーザー サービス サービスのインスタンス リストを取得し、負荷分散を実装します。

ただし、これらのアクションを実行する必要はありません。注釈を追加するだけで済みます。

order-service の OrderApplication で、 @LoadBalanced アノテーションを RestTemplate Bean に追加します。  

    /**
     * 创建RestTemplate并注入Spring容器
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

 order-service サービスの cn.itcast.order.service パッケージの下にある OrderService クラスの queryOrderById メソッドを変更します。アクセスする URL パスを変更し、IP とポートの代わりにサービス名を使用します。

   @Autowired
    private RestTemplate restTemplate;

 public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        // 2.利用RestTemplate发起http请求,查询用户
        // 2.1.url路径
        String url = "http://userservice/user/" + order.getUserId();
        // 2.2.发送http请求,实现远程调用
        User user = restTemplate.getForObject(url, User.class);
        // 3.封装user到Order
        order.setUser(user);
        // 4.返回
        return order;
    }

要約する

 

 

おすすめ

転載: blog.csdn.net/zxc472504515/article/details/125715740