スケジューラの理解

更新されたスケジューラのアーキテクチャでは、Java Messaging Service (JMS)キュー・テクノロジを使用します。

このアーキテクチャでは、複数の公開サーバーをクラスタに追加し、各サーバーを特定の機能(レポート生成、ドキュメント生成、または特定のデリバリ・チャネル)専用とすることができます。

アーキテクチャ

スケジューラのアーキテクチャでは、JMSキューおよびトピックを使用して、非常にスケーラブルでパフォーマンスが高い、強力なレポート・スケジューリング配信システムを提供します。

次の図は、スケジューラ・アーキテクチャを示しています。

ジョブの発行時にスケジューラによって実行されるタスクは、次のとおりです。

  1. ジョブの発行

    • クォーツ・テーブルにジョブ情報とトリガーを格納します

  2. ジョブ・プロセッサ

    • クォーツ・トリガーが発動したときに、スケジューラ・ジョブ・キューにジョブ情報を配置します

  3. バースティング・エンジン/バッチ・ジョブ・プロセス

    • バースティング・エンジン・リスナー

      • キューからスケジュールされたジョブ情報を取得します

      • データソースからデータを抽出します

      • バースティング分割の定義に従ってデータを分割します

      • 一時フォルダにデータを一時的に格納します

      • レポート・キューにレポート・メタデータを配置します

    • バッチ・ジョブ・プロセス

      • キューからスケジュールされたジョブ情報を取得します

      • データソースからデータを抽出します

      • 一時フォルダにデータを一時的に格納します

      • レポート・キューにレポート・メタデータを配置します

  4. FOレポート・プロセッサ

    • レポートQをリスニングします

    • メタデータに基づいてレポートを生成します

    • 共有された一時ディレクトリにレポートを格納します

    • 配信キューにレポート配信情報を配置します

  5. 配信プロセッサ

    • 配信キューをリスニングします

    • 配信APIを呼び出して異なるチャネルに配信します

  6. Publisherシステム・トピック

    Publisherシステム・トピックでは、スケジューリング・エンジンのランタイム・ステータスおよびヘルスを公開します。このトピックは、すべてのインスタンスのステータス、JMSキュー内のメッセージのスレッド・ステータス、すべてのスケジューラ構成(データベース構成、JMSキューのJNDI構成など)のステータスを公開します。

クラスタリングについて

クラスタリングにより、サーバー・インスタンスをオンデマンドで追加して、処理および配信ロードに対応できます。

次の図は、クラスタリングを示しています。レポート・リポジトリとスケジューラ・データベースが複数のインスタンスで共有されることにに注意してください。また、スケジューリング用のJMSキューと診断情報公開用のJMSトピックは、JMSキューとJMSトピックをJNDIサービス経由で登録することにより、サーバー全体で共有されます。

各管理対象サーバー・インスタンスは、同じレポート・リポジトリをポイントします。管理対象サーバーの各インスタンスで、ジョブ・プロセッサ、レポート・プロセッサ、電子メール・プロセッサ、FTPプロセッサ、FAXプロセッサおよび印刷プロセッサなどのすべてのプロセスが構成されます。このため、同じリポジトリをポイントするサーバー・インスタンスがデプロイされるとただちに、クラスタに追加され、このインスタンス内のすべてのプロセッサの実行準備が整います。

有効にするプロセスを任意のサーバー・インスタンスで選択できるので、リソースを最適に使用することができます。さらに、大量のジョブの処理が要求される場合には、レポート処理用のインスタンスを追加できます。同様に、電子メールの配信が最優先の配信チャネルの場合、インスタンスを追加して、電子メール配信をスケールアップできます。

フェイルオーバーの動作

フェイルオーバーのメカニズムでは、サーバーが使用できないためにレポートが配信に失敗しないようにします。

これを実現するには、クラスタ内の2つ以上のノードを使用してスケジューラの各プロセスのバランスを調整します。これにより、いずれかのノードで障害が発生しても、2つ目のノードでバックアップされるため、データが失われることはありません。たとえば、2つのノードのジョブ・プロセッサを有効にすると、1つのノードが失敗した場合、2番目のノードが保留中のジョブを処理できます。

1つのノードが停止した場合、他のノードがそのキューへのサービス提供を続行します。ただし、レポート・ジョブの処理段階が、データ取得、データの書式設定、レポート配信のいずれかである場合、ジョブは失敗としてマークされ、手動で再送信する必要があります。

ジョブの優先度の設定について

ジョブの処理順序を構成できます。

複数のジョブを同時に実行する場合は、ジョブの優先度を設定し、優先度の高いレポート・ジョブを重要でないジョブの前に実行するようにできます。「レポート・プロパティ」ページの「一般」タブで、ジョブの優先度を「クリティカル」、「標準」または「低」の優先度に設定できます。ジョブがキューに入っている場合、ジョブの処理はジョブのレポートで指定された優先度によって決まります。ジョブの優先度を設定しないと、クリティカルなジョブとクリティカルでないジョブ、およびオンデマンド問合せの間でリソースの競合が発生してクリティカルなジョブに遅延が発生する可能性があります。「レポート・ジョブ履歴」ページで、クリティカルなジョブを識別するとともに各ジョブのステータスを表示できます。