インターネットの発展に伴い、アプリケーションの信頼性、拡張性、保守性、その他の機能を向上させるために、マイクロサービス アーキテクチャを採用して分散システムを構築する企業が増えています。マイクロサービス アーキテクチャでは、タスク スケジューリング システムは非常に重要なコンポーネントであり、一部の非同期タスクを定期的に実行したり、他のマイクロサービス インターフェイスを呼び出したりするために使用できます。
Spring Cloud は、Spring Cloud Netflix、Spring Cloud Config、Spring Cloud Stream、Spring Cloud Security などの非常に強力なツールとフレームワークを提供するオープンソースのマイクロサービス フレームワークです。その中でも、Spring Cloud Netflix は非常に人気のあるマイクロサービス フレームワークであり、サービスの登録と検出、クライアントの負荷分散、構成管理、サーキット ブレーカー、API ゲートウェイなど、いくつかのコア コンポーネントと拡張機能を提供します。
この記事では、Spring Cloud を使用してタスク スケジューリング システムを開発する方法を紹介します。主に次の内容が含まれます。
1. タスク スケジューリング システムの要件分析
マイクロサービス アーキテクチャでは、タスク スケジューリング システムは、次の機能をサポートする必要があります。
2. Spring Scheduler を使用してタスク スケジューリングを実装する
Spring Scheduler は Spring フレームワークのモジュールであり、タスク スケジューリングを簡単に実装できる軽量なタスク スケジューリング フレームワークを提供します。
Spring Boot プロジェクトの pom.xml ファイルに Spring Scheduler の依存関係を追加します:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.4.3</version> </dependency>
Runnable インターフェイスから継承したタスク実行クラスを作成して、特定のタスク ロジックを実装します。
@Component public class JobTask implements Runnable { @Override public void run() { System.out.println("running job..."); } }
タスク スケジューリング構成クラスを 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(); } }
Spring Boot アプリケーションを開始すると、コンソール出力が表示され、指定された時間間隔と周期に従ってタスクが実行されます。 。タスクの実行戦略を変更する場合は、構成クラスを変更するだけで済みます。
3. タスク スケジューリング システムを Spring Cloud マイクロサービス アーキテクチャに配置します
タスク スケジューリング内システム アプリケーションでは、Spring Cloud の Eureka や Consul などのサービス登録および検出コンポーネントを使用して、タスク スケジューリング システムをサービス登録センターに登録します。
spring: application: name: task-scheduler eureka: instance: hostname: localhost client: service-url: defaultZone: http://localhost:8761/eureka/
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/**
他のマイクロサービスでは、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 サイトの他の関連記事を参照してください。