デフォルトでは、SchedulerX で作成されたジョブは最大 1,000 ジョブをサポートします。特定のシナリオでは、アプリケーションで 1,000 を超えるジョブが必要になる場合があります。さらに、本番環境では、異なる定期ジョブが異なる時間にスケジュールされる場合があります。このトピックでは、1万以上または10万以上の定期ジョブをサポートするようにアプリケーションを構成し、これらのジョブを異なる時間にスケジュールする方法について説明します。
シナリオ
各定期ジョブを異なる時間にスケジュールする場合、MapReduce 分散ジョブを使用することはできません。これは、MapReduce 分散ジョブのタスクが同時にスケジュールされるためです。
IoT スイッチの構成
IoT デバイスを定期的にオンまたはオフにするように、モノのインターネット (IoT) スイッチを構成できます。各 IoT スイッチは異なる時間にオンまたはオフになります。このシナリオでは、各 IoT スイッチに対して定期的なスタンドアロンジョブを作成できます。ただし、これには 1万または 10万のスタンドアロンジョブを作成する必要があります。
ビジネス監視の構成
ビジネス監視を構成するには、アラートルールを作成する必要があります。通常、システムは 1 分間隔で監視データをアラートルールと照合します。データがアラートルールと一致する場合、アラートが生成されます。ほとんどの場合、MapReduce 分散ジョブを作成してこの問題を解決できます。ただし、アラートルールは単純または複雑な場合があり、システムが複雑なアラートルールを処理するにはより多くの時間が必要です。その結果、システムがジョブを再度トリガーする前に、特定のタスクの完了を待つ必要がある場合があります。この問題を回避するには、各アラートルールに対して定期的なスタンドアロンジョブを作成する必要があります。大規模ビジネスを監視する場合、1万または 10万ものスタンドアロンジョブを作成する必要がある場合があります。
SchedulerX をベースとして使用する
企業向けに SchedulerX に基づいてジョブスケジューリングプラットフォームを開発し、ジョブの作成に使用される PoP API を提供します。このシナリオでは、企業の従業員は 1万または 10万ものジョブを作成する可能性があります。
手順
10万を超える定期ジョブをサポートするようにアプリケーションを構成するには、次の手順を実行します。
アプリケーションの自動スケーリングを有効にするには、SchedulerX テクニカルサポートに連絡してください。
アプリケーションに対して自動スケーリングが有効になっている場合、アプリケーションのジョブ数が上限の 1,000 に達すると、システムは自動スケーリングをトリガーし、サブアプリケーションを作成します。
エージェントバージョン 1.2.1 以降を使用して SchedulerX に接続し、共有コンテナプール機能を有効にします。
このトピックでは、Spring Boot アプリケーションを例として使用します。Spring Boot アプリケーションを SchedulerX に接続する方法の詳細については、「Spring Boot アプリケーションを SchedulerX に接続する」をご参照ください。他のタイプのアプリケーションを SchedulerX に接続する方法の詳細については、 の関連トピックをご参照ください。
アプリケーションの pom.xml ファイルにエージェントの依存関係を追加します。エージェントのバージョンは 1.2.1 以降である必要があります。
1.2.1 より前のエージェントバージョンは、共有コンテナプール機能をサポートしていません。エージェントのバージョンが 1.2.1 以降であることを確認するか、エージェントを 1.2.1 以降に更新してください。
アプリケーションの構成ファイルに共有コンテナプールの構成を追加します。
spring.schedulerx2.shareContainerPool=true #すべてのジョブがコンテナプールを共有できるようにします。 spring.schedulerx2.sharePoolSize=128 #コンテナプールのサイズを指定します。
説明共有コンテナプール機能が無効になっている場合、システムはジョブをトリガーするたびにコンテナプールを作成します。その結果、エージェントが過負荷になり、正常に動作しなくなる可能性があります。