すべてのプロダクト
Search
ドキュメントセンター

Microservices Engine:SchedulerX

最終更新日:Feb 06, 2025

このトピックでは、SchedulerX の使用方法について説明します。

実践ガイドライン

SchedulerX ジョブでカナリアリリースを実行する

SchedulerX ジョブは、ラベルベースのルーティングポリシーをサポートしています。 SDK でラベルを構成して、特定のラベルを持つワーカーにジョブを自動的にスケジュールし、ジョブのカナリアリリースを完了することができます。 詳細については、「SchedulerX ジョブのカナリアリリースを実行する方法」をご参照ください。

Simple Log Service を SchedulerX と統合する

Simple Log Service は、システム操作中の重要な情報を記録および分析するのに役立ちます。 これにより、システムエラーのトラブルシューティングと潜在的な問題の特定に役立ちます。 Simple Log Service を SchedulerX 2.0 と統合するには、Log4j または Logback の構成を追加するだけで済みます。 コードの変更は必要ありません。 構成が追加されると、SchedulerX 2.0 コンソールでトリガーされるジョブ (分散ジョブを含む) のログを表示できます。 詳細については、「Simple Log Service を SchedulerX 2.0 と統合する」をご参照ください。

100,000 を超える SchedulerX ジョブをサポートするようにアプリケーションを構成する

デフォルトでは、SchedulerX で作成されたアプリケーションは最大 1,000 ジョブをサポートします。 ただし、特定のシナリオでは、アプリケーションで 1,000 を超えるジョブが必要になる場合があります。 ほとんどのシナリオでは、各ジョブは異なる時点でスケジュールされます。 MapReduce タスクは、これらのシナリオには適していません。 単一のアプリケーションで 100,000 を超えるジョブをサポートできるようにするには、SchedulerX テクニカルサポートエンジニアに連絡して、アプリケーションの自動スケールアウトを有効にします。 また、バージョン 1.2.1 以降のクライアントを使用して SchedulerX に接続し、共有コンテナプール機能を有効にすることもできます。 詳細については、「10 万を超える定期ジョブをサポートするようにアプリケーションを構成する」をご参照ください。

キュー内のジョブの優先順位に基づいてアプリケーションレベルのスロットリングを実行する

トラフィックバーストのシナリオでは、多数のジョブをスケジュールする必要があります。 これにより、システムのワークロードが高くなる可能性があります。 たとえば、多数の daily ジョブが同時にスケジュールされるように構成されています。 システムがこのような状況に対処するための効果的な対策を講じないと、バックエンドサービスが同時ワークロードを処理できなくなる可能性があります。 これにより、システムが停止する可能性があります。 SchedulerX では、アプリケーションのスロットリングを有効にし、キューサイズを設定し、プリエンプティブ優先度キューを構成することにより、アプリケーションレベルのスロットリングを実行できます。 詳細については、「キュー内のジョブの優先順位に基づいてアプリケーションレベルのスロットリングを実行する」をご参照ください。

秒遅延ジョブを作成する

秒遅延ジョブは、継続的にラウンドロビンを実行する必要があるほぼリアルタイムのワークロードなど、適時性に敏感なワークロードに適しています。 メモリグリッドモデルと秒遅延ジョブを使用して、大量のデータを継続的に処理できます。 SchedulerX で作成できる秒遅延ジョブは定期ジョブです。 単純な Java ジョブまたは分散 Java ジョブを実行する場合、または Java スクリプトを実行する場合は、秒遅延ジョブを使用できます。 また、さまざまな方法を使用して秒遅延ジョブを実行できます。 詳細については、「秒遅延ジョブを作成する」をご参照ください。

時系列データを処理する

たとえば、ジョブは毎日 00:30 にトリガーされます。 ジョブを使用して前日の 23:30 に更新されたデータを処理する場合は、ジョブの時間オフセットを 1 時間に設定する必要があります。 時系列を使用して、ジョブのスケジュール時間とは異なる時間にデータを処理できます。 詳細については、「時系列データを処理する」をご参照ください。

ジョブ出力を更新する

ワークロードが更新された場合は、対応するジョブを再度実行して、特定の期間内のデータを再処理できます。 たとえば、データベースに新しいフィールドを追加した場合、または前月の特定の時点で生成されたデータにエラーが含まれている場合は、対応するジョブの出力を更新できます。 詳細については、「ジョブ出力を更新する」をご参照ください。

Managed Service for OpenTelemetry を SchedulerX と統合する

分散マイクロサービスの場合、エンドツーエンドのトレース分析機能を使用すると、各サービスでのリクエストの実行を視覚的にすばやく分析できます。 スケジュールされたジョブの場合、サービス実行ワークフローの期間は、一般的なリアルタイムサービスの期間よりも長くなる場合があります。 Managed Service for OpenTelemetry との統合は、ジョブの実行時間をクエリし、実行例外を分析するのに役立ちます。 詳細については、「トレース分析を統合する」をご参照ください。

タグを指定する

タグは、カナリアリリースとストレステストのシナリオに適しています。 同じアプリケーショングループ内のマシンの場合、一部のマシンはカナリアリリースまたはストレステストに使用される可能性があり、これらのマシンのジョブ実装クラスは他のマシンのジョブ実装クラスとは異なります。 SDK でタグを指定して、不整合の問題を解決できます。 詳細については、「タグを指定する」をご参照ください。

アプリケーションのジョブを正常にシャットダウンする

ジョブは、アプリケーションプロセスで一定の間隔で継続的に実行されます。 リリース中にアプリケーションが再起動されると、アプリケーションプロセスを一時的にシャットダウンする必要があります。 アプリケーションを閉じると、実行中のスケジュール済みジョブが中断されます。 これにより、データが不完全になったり、その他の問題が発生したりする可能性があります。 このような状況を防ぐために、SchedulerX では、スケジュール済みジョブの正常なシャットダウンを実装できます。 実行中のジョブが完了するまで待ってから、アプリケーションを安全に閉じる必要があります。 詳細については、「アプリケーションで実行されているジョブとタスクを正常にシャットダウンする」をご参照ください。