ホームページ  >  記事  >  Java  >  Spring Cloud のエレガントなマイクロサービスの実践

Spring Cloud のエレガントなマイクロサービスの実践

PHPz
PHPzオリジナル
2023-06-22 12:31:441194ブラウズ

インターネットの発展に伴い、マイクロサービス アーキテクチャはインターネット企業の間でますます普及しています。 Spring Cloud は、Spring Boot に基づいた完全なマイクロサービス ソリューションを提供します。この記事では、Spring Cloud フレームワークを使用してマイクロサービスを実践する方法を紹介します。

1. マイクロサービス アーキテクチャの概要

いわゆるマイクロサービス アーキテクチャでは、アプリケーションをいくつかの小さな自律的なサービス ユニットに分割し、サービス間で軽量の通信メカニズムを使用します。サービスは個別に構築、展開、テスト、拡張できます。マイクロサービス アーキテクチャの利点は、チームの生産性とシステムの弾力性と拡張性を向上できることです。

2. Spring Cloud マイクロサービス フレームワーク

Spring Cloud は、Spring ファミリーのマイクロサービス ソリューションです。 Spring Boot に基づいた完全かつ豊富なツールキットを提供します。 Spring Cloud は、複数のコンポーネント (Eureka、Zuul、Hystrix など) を使用して、完全なマイクロサービス環境を構築します。 Spring Cloud の主なコンポーネントは次のとおりです:

1. Eureka: サービスの登録と検出を実装し、サービス登録センターを提供します;
2. Feign: サービス間の通信を実装し、RESTful 呼び出しを簡素化します;
3. Hystrix: システムの堅牢性を向上させるサーキット ブレーカーやダウングレードなどの機能を実装する;
4. Zuul: 統合アクセスと負荷分散を実現する API ゲートウェイ サービスを提供する;
5. Config: 構成を実装する管理者は分散構成センターを提供します。

3. Spring Cloud マイクロサービスの実践

次は、Spring Cloud フレームワークを使用してマイクロサービスを構築する方法を示す簡単な例です。この例には、ユーザー サービスと注文サービスの 2 つのサービスが含まれています。ユーザー サービスはユーザー情報の CRUD 操作を提供し、注文サービスはユーザー情報を取得するためにユーザー サービスを呼び出す必要があります。

1. サービス登録センターの作成

まず、サービスを登録して検出するためのサービス登録センターを作成します。 Spring Boot プロジェクトを作成して、Spring Cloud の Eureka コンポーネントを介してサービスの登録と検出を実装します。

依存関係の追加:

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

@EnableEurekaServer アノテーションを起動クラスに追加します。

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

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

application.properties設定ファイルに、Eureka Serverの関連情報を設定します。

2. ユーザー サービスの作成

ユーザー情報の CRUD 操作を提供するユーザー サービスを作成します。 Spring Boot プロジェクトを作成して、Spring Cloud の Feign コンポーネントを介してサービス間の通信を実装します。

依存関係の追加:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

@EnableFeignClients アノテーションをスタートアップ クラスに追加します。

@SpringBootApplication
@EnableFeignClients
public class UserServiceApplication {

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

UserService インターフェイスを作成し、ユーザー情報の CRUD 操作を定義します。 @FeignClient アノテーションを使用して、呼び出すサービスを指定します。このインターフェイスでは、OrderService への呼び出しが定義されています。

@FeignClient(name = "order-service", fallback = OrderServiceFallback.class)
public interface OrderService {
  
  @GetMapping("/user/{userId}")
  UserDTO getUserById(@PathVariable("userId") Long userId);
  
  @PostMapping("/user")
  UserDTO createUser(@RequestBody UserDTO user);
  
  @PutMapping("/user")
  UserDTO updateUser(@RequestBody UserDTO user);
  
  @DeleteMapping("/user/{userId}")
  void deleteUser(@PathVariable("userId") Long userId);
}

application.properties 設定ファイルで、Eureka 関連情報と Feign のタイムアウトを設定します。

3. 注文サービスの作成

注文情報を処理するための注文サービスを作成します。 Spring Boot プロジェクトを作成し、Spring Cloud のリボンおよび Feign コンポーネントを使用してユーザー サービスを呼び出し、サービス間の負荷分散を実現します。

依存関係の追加:


  org.springframework.cloud
  spring-cloud-starter-ribbon


<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

@EnableFeignClients および @EnableDiscoveryClient アノテーションをスタートアップ クラスに追加します。

@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
public class OrderServiceApplication {

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

OrderService インターフェイスを作成し、注文情報の CRUD 操作を定義します。このインターフェイスでは、UserService への呼び出しが定義されています。

public interface OrderService {

  @GetMapping("/order/{orderId}")
  OrderDTO getOrderById(@PathVariable("orderId") Long orderId);

  @PostMapping("/order")
  OrderDTO createOrder(@RequestBody OrderDTO order);

  @PutMapping("/order")
  OrderDTO updateOrder(@RequestBody OrderDTO order);

  @DeleteMapping("/order/{orderId}")
  void deleteOrder(@PathVariable("orderId") Long orderId);
}

実装クラスで、@Autowired を使用して UserService インターフェイスを挿入します。

@Service
public class OrderServiceImpl implements OrderService {

  @Autowired
  private UserService userService;

  // ...
}

application.properties 構成ファイルで、Eureka 関連の情報とリボンの負荷分散方法を構成します。

4. 概要

この記事では、Spring Cloud フレームワークを介してマイクロサービス アーキテクチャに基づいた環境を構築する方法を紹介し、簡単な例を使用してサービスの登録と検出、サービス インタープリケーションを実装する方法を示します。 -通信、負荷分散、その他の機能。もちろん、これは単なる出発点にすぎず、実際のアプリケーションではさらに多くのシナリオと問題を考慮する必要があります。より深い学習と実践を通じてのみ、システムの信頼性と拡張性をより良く改善することができます。

以上がSpring Cloud のエレガントなマイクロサービスの実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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