ホームページ  >  記事  >  Java  >  Spring Cloud を使用してマイクロサービス アーキテクチャの下でタスク スケジューリング システムを開発する方法

Spring Cloud を使用してマイクロサービス アーキテクチャの下でタスク スケジューリング システムを開発する方法

WBOY
WBOYオリジナル
2023-06-22 17:54:541226ブラウズ

インターネットの発展に伴い、アプリケーションの信頼性、拡張性、保守性、その他の機能を向上させるために、マイクロサービス アーキテクチャを採用して分散システムを構築する企業が増えています。マイクロサービス アーキテクチャでは、タスク スケジューリング システムは非常に重要なコンポーネントであり、一部の非同期タスクを定期的に実行したり、他のマイクロサービス インターフェイスを呼び出したりするために使用できます。

Spring Cloud は、Spring Cloud Netflix、Spring Cloud Config、Spring Cloud Stream、Spring Cloud Security などの非常に強力なツールとフレームワークを提供するオープンソースのマイクロサービス フレームワークです。その中でも、Spring Cloud Netflix は非常に人気のあるマイクロサービス フレームワークであり、サービスの登録と検出、クライアントの負荷分散、構成管理、サーキット ブレーカー、API ゲートウェイなど、いくつかのコア コンポーネントと拡張機能を提供します。

この記事では、Spring Cloud を使用してタスク スケジューリング システムを開発する方法を紹介します。主に次の内容が含まれます。

  1. タスク スケジューリング システムの要件分析
  2. Spring Scheduler の使用法によるタスク スケジューリングの実装
  3. タスク スケジューリング システムを Spring Cloud マイクロサービス アーキテクチャに入れる

1. タスク スケジューリング システムの要件分析

マイクロサービス アーキテクチャでは、タスク スケジューリング システムは、次の機能をサポートする必要があります。

  1. は、指定された時点または瞬間にタスクの実行をトリガーできます。
  2. 固定時間間隔または定期的な時間間隔でのタスクの実行のトリガーをサポートします。
  3. タスク実行失敗後の再試行をサポートします。
  4. タスクの非同期実行をサポートし、メイン プログラムの実行には影響しません。
  5. タスクの動的な追加と削除をサポートします。

2. Spring Scheduler を使用してタスク スケジューリングを実装する

Spring Scheduler は Spring フレームワークのモジュールであり、タスク スケジューリングを簡単に実装できる軽量なタスク スケジューリング フレームワークを提供します。

  1. Spring Scheduler の依存関係を追加

Spring Boot プロジェクトの pom.xml ファイルに Spring Scheduler の依存関係を追加します:

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
     <version>2.4.3</version>
 </dependency>
  1. タスクの作成実行クラス

Runnable インターフェイスから継承したタスク実行クラスを作成して、特定のタスク ロジックを実装します。

@Component
public class JobTask implements Runnable {
 
     @Override
     public void run() {
         System.out.println("running job...");
     }
 }
  1. タスク スケジューリング構成の追加

タスク スケジューリング構成クラスを Spring Boot プロジェクトに追加して、特定のタスク スケジューリング戦略と実行されるタスクを構成します。

@Configuration
@EnableScheduling
public class ScheduleConfig {
 
     @Autowired
     private JobTask jobTask;
 
     //在每分钟的3秒和6秒执行一次
     @Scheduled(cron = "3-6 * * * * ?")
     public void scheduleJob1() {
         jobTask.run();
     }
 
     //在间隔5秒后执行第一次,之后每隔10秒执行一次
     @Scheduled(initialDelay = 5000, fixedRate = 10000)
     public void scheduleJob2() {
         jobTask.run();
     }
 }
  1. テスト タスク スケジュール機能

Spring Boot アプリケーションを開始すると、コンソール出力が表示され、指定された時間間隔と周期に従ってタスクが実行されます。 。タスクの実行戦略を変更する場合は、構成クラスを変更するだけで済みます。

3. タスク スケジューリング システムを Spring Cloud マイクロサービス アーキテクチャに配置します

  1. タスク スケジューリング システムをサービス登録センターに登録します

タスク スケジューリング内システム アプリケーションでは、Spring Cloud の Eureka や Consul などのサービス登録および検出コンポーネントを使用して、タスク スケジューリング システムをサービス登録センターに登録します。

spring:
     application:
          name: task-scheduler
 
 eureka:
     instance:
          hostname: localhost
     client:
          service-url:
               defaultZone: http://localhost:8761/eureka/
  1. ゲートウェイでルーティング ルールを設定する

Spring Cloud Gateway や Zuul などの API ゲートウェイを使用して、タスク スケジューリング システムを他のマイクロサービスに公開します。

spring:
     application:
          name: api-gateway
          
 server:
     port: 8080
 
 eureka:
     instance:
          hostname: localhost
     client:
          service-url:
               defaultZone: http://localhost:8761/eureka/
 
 gateway:
     routes:
          - id: task-scheduler
               uri: lb://task-scheduler
               predicates:
                    - Path=/schedule/**
  1. マイクロサービスでタスク スケジューリング システムを呼び出す

他のマイクロサービスでは、Feign や RestTemplate などのツールを使用して、タスク スケジューリング システムによって公開されている RESTful API を呼び出します。非同期タスクを実行したり、タスクの実行をトリガーしたりします。

@Service
 public class OrderService {
 
     @Autowired
     private TaskSchedulerClient taskSchedulerClient;
     
     public void createOrder(Order order) {
         //... 创建订单逻辑
         taskSchedulerClient.scheduleJob();
     }
 }

4.概要

この記事では、Spring Cloud を使用してマイクロサービス アーキテクチャの下でタスク スケジューリング システムを開発する方法を紹介します。これには、主に Spring Scheduler を使用したタスク スケジューリングの実装とタスク スケジューリング システムの配置が含まれます。 Spring Cloud のマイクロサービス アーキテクチャに移行します。マイクロサービス アーキテクチャを導入する開発者が、より簡単に信頼性と拡張性の高い分散システムを構築できるようになる一助になれば幸いです。

以上がSpring Cloud を使用してマイクロサービス アーキテクチャの下でタスク スケジューリング システムを開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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