(57)【要約】【課題】分散ノードの分散情報の更新タイミングを適切なタイミングにすることにより、分散情報の更新中の影響を最小限に抑える分散ノード管理装置を提供することを目的とする。【解決手段】複数の分散ノードを管理する分散ノード管理装置であって、分散ノードは、分散情報に基づいて入力されたデータを分散させる分散イベントを実行し、分散ノード管理装置は、複数の分散ノードで実行された分散イベントに関する情報である分散イベント実行情報を保持し、分散イベント実行情報に基づいて、複数の分散ノードで分散イベントが実行されない時間を示す分散イベント実行無し時間を予測し、予測した分散イベント実行無し時間に基づいて、分散情報の更新を開始する開始タイミングを決定し、更新後の分散情報の内容を含む更新指示を複数の分散ノードに送信し、分散ノードが、決定された開始タイミングで分散情報の更新を開始することを特徴とする。【選択図】図５
2017033487.tif 000002
【特許請求の範囲】
【請求項１】
複数の分散ノードを管理する分散ノード管理装置であって、
前記分散ノードは、入力されたデータの分散先が登録された分散情報に基づいて、前記入力されたデータを分散先に転送して、前記入力されたデータを分散させる分散イベントを実行し、
前記分散ノード管理装置は、
前記複数の分散ノードで実行された分散イベントに関する情報である分散イベント実行情報を保持し、
前記分散イベント実行情報に基づいて、前記複数の分散ノードで分散イベントが実行されない時間を示す分散イベント実行無し時間を予測し、
前記予測した分散イベント実行無し時間に基づいて、前記分散情報の更新を開始する開始タイミングを決定し、
更新後の分散情報の内容を含む更新指示を前記複数の分散ノードに送信し、
前記分散ノードが、前記更新指示に基づいて、前記決定された開始タイミングで前記分散情報の更新を開始することを特徴とする分散ノード管理装置。
【請求項２】
請求項１に記載の分散ノード管理装置であって、
前記複数の分散ノードから前記分散イベントの開始タイミング及び終了タイミングを特定可能な情報を収集し、
前記収集した情報を前記分散イベント実行情報として保持することを特徴とする分散ノード管理装置。
【請求項３】
請求項２に記載の分散ノード管理装置であって、
前記分散イベント実行情報に基づいて、前記複数の分散ノードで次に実行される分散イベントの開始タイミングを示す次回分散イベント開始タイミング、及び、前記複数の分散ノードで次に実行される分散イベントの実行にかかる時間を示す次回分散イベント実行時間を予測し、
前記予測した次回分散イベント開始タイミング、及び前記次回分散イベント実行時間に基づいて、前記分散イベント実行無し時間を予測することを特徴とする分散ノード管理装置。
【請求項４】
請求項１に記載の分散ノード管理装置であって、
前記予測した分散イベント実行無し時間の中から、最大の分散イベント実行無し時間を選択し、
前記選択した最大の分散イベント実行無し時間の開始タイミングを、前記分散情報の更新を開始する開始タイミングに決定することを特徴とする分散ノード管理装置。
【請求項５】
請求項１に記載の分散ノード管理装置であって、
前記分散ノード管理装置は、
前記複数の分散ノードから前記分散イベントの開始タイミング及び終了タイミングを特定可能な情報を収集し、
前記収集した情報を前記分散イベント実行情報として保持し、
前記分散イベント実行情報に基づいて、前記複数の分散ノードで次に実行される分散イベントの開始タイミングを示す次回分散イベント開始タイミング、及び、前記複数の分散ノードで次に実行される分散イベントの実行にかかる時間を示す次回分散イベント実行時間を予測し、
前記予測した次回分散イベント開始タイミング、及び前記次回分散イベント実行時間に基づいて、前記分散イベント実行無し時間を予測し、
前記複数の分散ノードにおける分散情報の更新の開始タイミング及び終了タイミングを管理する更新管理情報を保持し、
前記更新管理情報に基づいて、前記複数の分散ノードにおける次回の分散情報の更新にかかる時間を示す次回分散情報更新時間を予測し、
前記予測した次回分散情報更新時間以上となる前記予測した分散イベント実行無し時間が存在しない場合、次回の分散イベントが実行中となる重複時間が最小となる前記次回分散情報更新時間の開始タイミングを、前記分散情報の更新を開始する開始タイミングに決定することを特徴とする分散ノード管理装置。
【請求項６】
請求項１に記載の分散ノード管理装置であって、
前記分散情報の更新を開始する開始タイミングになると、前記更新指示を前記複数の分散ノードに送信することを特徴とする分散ノード管理装置。
【請求項７】
請求項１に記載の分散ノード管理装置であって、
前記分散情報の更新を開始する開始タイミングが決定されると、前記決定された分散情報の開始タイミング及び前記更新後の分散情報の内容を含む更新指示を前記複数の分散ノードに送信し、
前記分散ノードは、前記更新指示に含まれる開始タイミングになると、前記分散情報の更新を開始することを特徴とする分散ノード管理装置。
【請求項８】
請求項２に記載の分散ノード管理装置であって、
前記分散情報の更新の要求が入力された場合、前記収集した分散イベント実行情報に基づいて、前記分散イベント実行無し時間を予測することを特徴とする分散ノード管理装置。
【請求項９】
請求項２に記載の分散ノード管理装置であって、
前記分散イベント実行情報を収集した場合、前記収集した分散イベント実行情報に基づいて、前記分散イベント実行無し時間を予測し、
前記分散情報の更新の要求が入力された場合、前記予測した分散イベント実行無し時間に基づいて、前記分散情報の更新を開始する開始タイミングを決定することを特徴とする分散ノード管理装置。
【請求項１０】
請求項１に記載の分散ノード管理装置であって、
前記分散ノード管理装置は、前記分散イベントを実行する前記分散ノードに実装されることを特徴とする分散ノード管理装置。
【請求項１１】
請求項１に記載の分散ノード管理装置であって、
前記分散ノードには、ネットワークの通信に関するデータを取得する通信情報取得装置から当該通信に関するデータが周期的に入力されることを特徴とする分散ノード管理装置。
【請求項１２】
複数の分散ノードと、前記複数の分散ノードを管理する分散ノード管理装置とを備える分散システムであって、
前記分散ノードは、入力されたデータの分散先が登録された分散情報に基づいて、前記入力されたデータを分散先に転送して、前記入力されたデータを分散させる分散イベントを実行し、
前記分散ノード管理装置は、
前記複数の分散ノードで実行された分散イベントに関する情報である分散イベント実行情報を保持し、
前記分散イベント実行情報に基づいて、前記複数の分散ノードで分散イベントが実行されない時間を示す分散イベント実行無し時間を予測し、
前記予測した分散イベント実行無し時間に基づいて、前記分散情報の更新を開始する開始タイミングを決定し、
更新後の分散情報の内容を含む更新指示を前記複数の分散ノードに送信し、
前記分散ノードが、前記更新指示に基づいて、前記決定された開始タイミングで前記分散情報の更新を開始することを特徴とする分散システム。
【請求項１３】
請求項１２に記載の分散システムであって、
前記分散ノードは、
前記分散情報の更新中にデータが入力された場合、当該入力されたデータを一次的に記憶し、
前記分散情報の更新後に、前記更新された分散情報に基づいて、前記一次的に記憶されたデータを分散先に送信することを特徴とする分散システム。
【請求項１４】
請求項１２に記載の分散システムであって、
前記分散ノードは、
前記分散情報の更新中にデータが入力された場合、前記分散情報の更新中にデータが入力された旨を示す更新中入力通知を、他の装置に送信し、当該入力されたデータを分散先に送信することを特徴とする分散システム。
【請求項１５】
複数の分散ノードを管理する計算機における前記複数の分散ノードが保持する分散情報を更新する分散情報更新方法であって、
前記分散ノードは、入力されたデータの分散先が登録された分散情報に基づいて、前記入力されたデータを分散先に転送して、前記入力されたデータを分散させる分散イベントを実行し、
前記計算機は、プロセッサと記憶領域とを有し、
前記記憶領域は、前記複数の分散ノードで実行された分散イベントに関する情報である分散イベント実行情報を保持し、
前記分散情報更新方法は、
前記プロセッサが、前記記憶領域の前記分散イベント実行情報に基づいて、前記複数の分散ノードで分散イベントが実行されない時間を示す分散イベント実行無し時間を予測し、
前記プロセッサが、前記予測した分散イベント実行無し時間に基づいて、前記分散情報の更新を開始する開始タイミングを決定し、
前記プロセッサが、更新後の分散情報の内容を含む更新指示を前記複数の分散ノードに送信し、
前記分散ノードが、前記更新指示に基づいて、前記決定された開始タイミングで前記分散情報の更新を開始することを特徴とする分散情報更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されたデータを分散先に分散させる分散ノードを管理する分散ノード管理装置に関する。
【背景技術】
【０００２】
インターネットのトラフィック容量、特にモバイルインターネットのトラフィック容量は急速な増加が予測され、これによって、アクセスネットワークに多くのトラフィックが留まり、ひいてはネットワークの輻輳が発生し、ユーザのＱｏＥ（Ｑｕａｌｉｔｙ  ｏｆ  Ｅｘｐｅｒｉｅｎｃｅ）が低下する。
【０００３】
特にモバイルネットワークにおける装置及び接続の数及び多様性は増加することが予想され、トラフィックパターン及びネットワークの使用が変化する。同様に、モバイルネットワークへの加入者数も増加しており、モバイルネットワーク事業者のネットワークインフラに対する需要を増大させると同時に、一ユーザあたりの平均収益を縮小させ、ネットワーク事業者の収益を減少させる。
【０００４】
ネットワークインフラのアップグレードするとコストが高くなるので、ネットワーク事業者は、ネットワークの利用を分析し、ネットワークの利用を最適化し、新たな収入源となるビジネスを広め、多様化しなければならない。新たな収入源となるビジネスとは、例えば、仮想ネットワークとしてのインフラの一部へのアクセスをモバイル仮想ネットワーク事業者に販売する等のビジネス等である。
【０００５】
ネットワーク分析のためのプラットフォームは、ネットワーク事業者がネットワークの利用を分析することを可能にし、最適化されたネットワーク及び新たな収入源を見つけることに役立つ。
【０００６】
ネットワークの利用の最適化を可能にするために、また、新たな収入源の広めるために、ネットワークの利用をリアルタイムに監視し、分析し、制御しなければならない。大規模なネットワークにおけるこのようなネットワークの分析は、高性能かつ柔軟性が必要となるが、複数の分析装置に分析処理を分散させる分散分析システムは、このような要求を満たすことができる。
【０００７】
分散分析システムは、分散ノードがデータソースからの入力データを分析ノードとなるデータシンクに分散させるシステムである。分散ノードは、分散情報に基づいて入力データの分散先となる分析ノードを決定し、入力データを分散先として決定された分析ノードに送信する。これによって、分析ノードは、分析に用いるデータを収集する。例えば、分析ノードが、あるユーザが使用する全ての装置のトラフィックの使用量をリアルタイムで分析できるようにするためには、当該ユーザが使用する装置のトラフィック使用量が異なるデータシンクから分散ノードに入力される場合であっても、当該ユーザが使用する全ての装置のトラフィック使用量は同じ分析ノードに送信される必要がある。
【０００８】
トラフィック容量の増加及び分析性能の要求の多様化に従って、ネットワーク事業者は、分析ノードの数を調整する必要がある。このような調整を可能にするために、分散ノードにおける分散情報が更新されなければならない。しかし、分散システムにおいては、分散情報を更新すると、更新後の分散テーブルを使用する分散ノードと更新前の分散テーブルを使用する分散ノードとが混在する事態を引き起こす。このような事態は、分析ノードの分析結果のエラーの原因となる。
【０００９】
中央のコーディネーターノードが分散ノードで分散情報の更新を同期させる方法を利用できる。このような方法として、Single and Multi-Site Recovery（非特許文献１）の２フェーズコミットが知られている。２フェーズコミットは、「ｖｏｔｉｎｇフェーズ」及び「コミットフェーズ」を含む。「ｖｏｔｉｎｇフェーズ」では、全てのノードが一連の所定の処理の準備をし、一連の所定の処理に同意し、通常の動作をブロックする。「コミットフェーズ」では、全てのノードは、一連の所定の処理を実行し、コーディネーターに応答を返す。
【００１０】
また、分散情報を同期して更新する技術として、米国特許出願公開第２０１１／０２３８７９２号明細書（特許文献１）の公報には、「本出願は、マルチコアシステムにおける複数のコア又はパケットエンジンのコンフィギュレーションの一貫性を監視し、維持するためのシステム及び方法である。マネージャは、複数のコア又はパケットエンジンのコンフィギュレーションコマンドを通信する。第１パケットエンジンがコマンドの実行に成功し、第２パケットエンジンがコマンドの実行に失敗した場合、マネージャは、ｕｎｄｏコマンドを第１パケットエンジンに通信する。ｕｎｄｏコマンドの実行が成功すると、一貫性のあるコンフィギュレーションにパケットエンジンを復元できる。」と記載されている（要約参照）。
【００１１】
分散情報を同期して更新するためには、分散ノードにおけるデータを分散させる分散イベントのタイミングを予測する必要がある。将来実行される何らかのイベントのタイミングを予測する技術として、米国特許出願公開第２００４／０１８１４７６号明細書（特許文献２）及び米国特許出願公開第２００５／００９１００５号明細書（特許文献３）がある。
【００１２】
特許文献２の公報には、「ＩＴポリシーに従ったネットワークサーバ、プロセッサ、及びストレージリソース、ＩＴインフラのユーザの要求を満たすサービスレベル目標及び／又は契約の提供に用いられるソフトウェアベースのクライアント/サーバ・アーキテクチャ」が記載されている（要約参照）。
【００１３】
特許文献３の公報には、「本発明は、アプリケーションパフォーマンス監視（ＡＰＭ）サービスにおけるイベントスケジューラ及びプロセッサとして実装される。予想イベントスケジューラ及びプロセッサは、ホストシステムの性能を予測する場合、スケジュールされたイベントを考慮する。学習パラメータは、内部の測定結果及び外部の測定結果に基づくものである。内部の測定結果は、ホスト・コンピュータ・システム内の監視エージェントが測定したデータであり、外部の測定結果は、コンピュータのバックアップの実行等の要素に関連するものである。イベントは時間的重複する場合もあり、イベントスケジューラ及びプロセッサは、成功したタイムトライアルで学習パラメータを更新することによって、同時に実行されるイベントのための重み付け要素を学習する。」と記載されている（要約参照）。
【００１４】
また、Forecasting Trends and Seasonal by Exponentially Weighted Averages（非特許文献２）には、予測に用られる指数平滑法が記載される。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】米国特許出願公開第２０１１／０２３８７９２号明細書
【特許文献２】米国特許出願公開第２００４／０１８１４７６号明細書
【特許文献３】米国特許出願公開第２００５／００９１００５号明細書
【非特許文献】
【００１６】
【非特許文献１】Lindsay, B.G., “Single and Multi-Site Recovery Facilities”, in Distributed Data Bases, Cambridge University Press, Cambridge, U.K, 1980
【非特許文献２】Holt, Charles C., “Forecasting Trends and Seasonal by Exponentially Weighted Averages”, Office of Naval Research Memorandum 52, 1957
【発明の概要】
【発明が解決しようとする課題】
【００１７】
分散情報の更新タイミングを保証するために、分散ノードは、分散情報が更新されるまでの間、分散情報の更新に影響を与える分散イベントをブロックする必要がある。分散ノードは、分散イベントのブロック中に入力されたバッファしなければならないため、分散の遅延、及び分析の遅延を引き起こす。大規模なネットワークシステムでは、バッファされるデータの容量も大きくなり、データがバッファされる記憶領域は大容量な記憶領域であることが要求される。また、分散イベントがブロックされることによって、分析装置による分析のリアルタイム性も失われる。このため、分散イベントのブロックにより、装置コストが増大し、分析の質も低下する。したがって、分散イベントが実行される可能性が低い時間帯で分散情報が更新される必要がある。
【００１８】
非特許文献１及び特許文献１では、一連の処理（分散情報の更新）の実行タイミングについて考慮されない。また、特許文献２及び特許文献３は、何らかのイベントの実行タイミングを予測することは記載されているが、分散情報を更新するために分散イベントが実行される可能性が低い時間帯を予測することについては記載されていない。
【００１９】
本発明は、分散ノードの分散情報の更新タイミングを適切なタイミングにすることにより、分散情報の更新中の影響を最小限に抑える分散ノード管理装置を提供することを目的とする。
【課題を解決するための手段】
【００２０】
上記課題を解決するために、複数の分散ノードを管理する分散ノード管理装置であって、前記分散ノードは、入力されたデータの分散先が登録された分散情報に基づいて、前記入力されたデータを分散先に転送して、前記入力されたデータを分散させる分散イベントを実行し、前記分散ノード管理装置は、前記複数の分散ノードで実行された分散イベントに関する情報である分散イベント実行情報を保持し、前記分散イベント実行情報に基づいて、前記複数の分散ノードで分散イベントが実行されない時間を示す分散イベント実行無し時間を予測し、前記予測した分散イベント実行無し時間に基づいて、前記分散情報の更新を開始する開始タイミングを決定し、更新後の分散情報の内容を含む更新指示を前記複数の分散ノードに送信し、前記分散ノードが、前記更新指示に基づいて、前記決定された開始タイミングで前記分散情報の更新を開始することを特徴とする。
【発明の効果】
【００２１】
本発明によれば、分散ノードの分散情報の更新タイミングを適切なタイミングにすることにより、分散情報の更新中の影響を最小限に抑える分散ノード管理装置を提供できる。
【００２２】
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００２３】
【図１】実施例１の通信システムの概略の説明図である。
【図２】実施例１の分散モジュールの分散イベントの説明図である。
【図３】実施例１の分散テーブルの更新指示の送信タイミングの説明図である。
【図４】実施例１のコーディネーターのハードウェア構成図である。
【図５】実施例１の分散テーブル更新処理のシーケンス図である。
【図６】実施例１の分散モジュールの処理の説明図である。
【図７】実施例１のコーディネーターの処理のフローチャートである。
【図８】実施例１の更新管理テーブルの説明図である。
【図９】実施例１の分散イベント管理テーブルの説明図である。
【図１０】実施例１のタイミング予測処理のフローチャートである。
【図１１】実施例１の更新指示送信タイミング決定処理のフローチャートである。
【図１２】実施例２の更新送信タイミング決定処理のフローチャートである。
【図１３】実施例２の更新指示送信タイミング決定処理の説明図である。
【図１４】実施例３のコーディネーターから送信される更新指示の説明図である。
【図１５】実施例３の分散テーブル更新処理のシーケンス図である。
【図１６】実施例４の分散モジュールの処理の説明図である。
【図１７】実施例５のコーディネーターの処理のフローチャートである。
【発明を実施するための形態】
【実施例１】
【００２４】
実施例１について図１〜図１１を用いて説明する。
【００２５】
図１は、実施例１の通信システムの概略の説明図である。
【００２６】
本実施例の通信システムは、インターネット１１４０に接続されるモバイルキャリアネットワーク１１００、ＤＰＩ（Ｄｅｅｐ  Ｐａｃｋｅｔ  Ｉｎｓｐｅｃｔｉｏｎ）１１２１Ａ〜１１２１Ｃ、及びトラフィック管理システム１２００を有する。なお、ＤＰＩ１１２１Ａ〜１１２１Ｃを総称する場合、ＤＰＩ１１２１と記載する。
【００２７】
モバイルキャリアネットワーク１１００は、ＲＡＮ（Ｒａｄｉｏ  Ａｃｃｅｓｓ  Ｎｅｔｗｏｒｋ）１１１０、ＥＰＣ（Ｅｖｏｌｖｅｄ  Ｐａｃｋｅｔ  Ｃｏｒｅ）１１２０、及びＰＤＮ（Ｐａｃｋｅｔ  Ｄａｔａ  Ｎｅｔｗｏｒｋ）１１３０を含む。
【００２８】
ＲＡＮ１１１０は複数の基地局１１１１Ａ及び１１１１Ｂを含む。基地局１１１１Ａ及び基地局１１１１Ｂを総称する場合、基地局１１１１と記載する。基地局１１１１は、ユーザが使用する端末１１０１〜１１０３に無線で接続され、ＥＰＣ１１２０に有線で接続される。ＥＰＣ１１２０は、図示しないルータによって構築されており、ＰＤＮ１１３０に接続される。ＰＤＮ１１３０は、インターネット１１４０に接続される。
【００２９】
本実施例は、モバイルキャリアネットワーク１１００を例に説明するが、モバイルキャリアネットワーク１１００以外の他のネットワークにも適用することができる。なお、モバイルキャリアネットワーク１１００に含まれる相互に接続されるネットワークの数、及び態様は図１に限定されない。
【００３０】
ＤＰＩ１１２１は、ＥＰＣ１１２０のルータに接続され、所定時間ごとにルータから通信に関するデータ（プローブデータ）１１２５を取得し、取得した通信に関するデータをデータ１１２６として各ロードバランサ１２１０に送信する。図１では、ＤＰＩ１１２１Ａはロードバランサ１２１０Ａに接続され、ＤＰＩ１１２１Ｂはロードバランサ１２１０Ｂに接続され、ＤＰＩ１１２１Ｃはロードバランサ１２１０Ｃに接続される。
【００３１】
データ１１２５は、例えば、ルータが所定時間の間に転送したパケット量又はルータに接続する基地局が収容するユーザの数である。なお、ＤＰＩ１１２１の数及び配置は、図１に限定されない。
【００３２】
トラフィック管理システム１２００は、ロードバランサ１２１０Ａ〜１２１０Ｃ、コーディネーター１２４０、及び分析装置１２５１Ａ〜１２５１Ｃを有する。ロードバランサ１２１０Ａ〜１２１０Ｃを総称する場合、ロードバランサ１２１０と記載する。分析装置１２５１Ａ〜１２５１Ｃを総称する場合、分析装置１２５１と記載する。
【００３３】
ロードバランサ１２１０は、図２に示す分散テーブル２３００に基づいて、分析装置１２５１Ａ及び１２５１Ｂの中から、ＤＰＩ１１２１から受信したデータ１１２６の分散先となる一つの分析装置１２５１を決定し、当該データ１１２６をデータ１２０７として分散先の分析装置１２５１に送信する。ロードバランサ１２１０は、複数の分析装置１２５１Ａ及び１２５１Ｂから分散先の分析装置１２５１Ａを決定するので、分析装置１２５１の負荷を分散できる。例えば、ロードバランサ１２１０は、受信したデータ１２０６のレイヤ７の情報に基づいて分散先となる分析装置１２５１を決定するが、他のレイヤの情報に基づいて分散先となる分析装置１２５１を決定してもよい。
【００３４】
ロードバランサ１２１０は、サマライザモジュール１２１１及び分散モジュール１２１２を有する。サマライザモジュール１２１１は、受信したデータ１１２６に基づいて、所定時間単位における各ルータの通信に関する統計情報を作成する。なお、ＤＰＩ１１２１がサマライザモジュール１２１１の機能を有する場合、ロードバランサ１２１０はサマライザモジュール１２１１を有さなくてもよい。また、ロードバランサ１２１０の数、及び構成は図１に限定されない。
【００３５】
分散モジュール１２１２は、図２に示す分散テーブル２３００を有し、分散テーブル２３００に基づいて受信したデータの分散先となる分析装置１２５１を決定し、受信したデータを分散先となる分析装置１２５１に送信する。
【００３６】
なお、図１では、説明を簡単にするために、ロードバランサ１２１０Ａの分散モジュール１２１２のみが分析装置１２５１Ａ又は１２５１Ｂにデータ１２０７を送信していているが、ロードバランサ１２１０Ｂの分散モジュール１２１２、及びロードバランサ１２１０Ｃの分散モジュール１２１２も、分析装置１２５１Ａ又は１２５１Ｂにデータ１２０７を送信する。
【００３７】
分散モジュール１２１２は、ＤＰＩ１１２１からデータ１１２６を受信すると、データを分析装置１２５１に分散させる分散イベントを実行する。分散モジュール１２１２は、当該データを分析装置１２５１に送信し、当該分散イベントを終了した場合、当該分散イベントの開始タイミング及び終了タイミングを特定可能な情報を含むイベント通知１２０５をコーディネーター１２４０に送信する。なお、イベント通知１２０５は、分散イベントの開始時刻及び分散イベントにかかった時間を含む場合、終了時刻を含まなくてもよい。
【００３８】
分析装置１２５１Ａ〜１２５１Ｃは、受信したデータ１２０７に対して所定の分析処理を実行して、分析結果（１２５５）を出力する。なお、分析装置１２５１Ｃはトラフィック管理システム１２００に新たに追加される。
【００３９】
コーディネーター１２４０は、各分散モジュール１２１２の分散テーブル２３００の更新指示（１２０６）を各分散モジュール１２１２に送信する。
【００４０】
分散モジュール１２１２の分散テーブル２３００に分散先の候補として分析装置１２５１Ａ及び１２５１Ｂが登録されており、新たな分析装置１２５１Ｃがトラフィック管理システム１２００に追加された場合、分散先の候補として分析装置１２５１Ｃを追加するように、各ロードバランサ１２１０Ａ〜１２１０Ｃの分散モジュール１２１２の分散テーブル２３００を更新する必要がある。分散テーブル２３００の更新中は、分散モジュール１２１２は、ＤＰＩ１１２１からデータを受信しても、分散テーブル２３００を参照できず、受信したデータをアナライザに分散できない。このため、コーディネーター１２４０は、各分散モジュール１２１２が分散イベントを実施していないタイミングで更新指示を送信しなければならない。
【００４１】
各分散モジュール１２１２の分散テーブル２３００が更新されると、新たに追加された分析装置１２５１Ｃも、分析装置１２５１Ａ及び１２５１Ｂと同様に、データ１２０７を受信することになる。
【００４２】
図２は、実施例１の分散モジュール１２１２の分散イベントの説明図である。
【００４３】
同一のユーザによって使用される複数の端末１１０１Ｄ及び１１０１Ｅがあり、端末１１０１Ｄは、ネットワークパーティション２１００Ａに接続され、端末１１０１Ｅは、ネットワークパーティション２１００Ｂに接続される。ＤＰＩ１１２１Ａは、ネットワークパーティション２１００Ａのルータから通信に関するデータを収集し、ＤＰＩ１１２１Ｂは、ネットワークパーティション２１００Ｂのルータから通信に関するデータを収集する。ロードバランサ１２１０Ａは、ＤＰＩ１１２１Ａから通信に関するデータを取得し、ロードバランサ１２１０Ｂは、ＤＰＩ１１２１Ｂから通信に関するデータを取得する。なお、通信に関するデータは、端末１１０１の識別子と当該端末１１０１の通信に関する情報を含む。
【００４４】
ロードバランサ１２１０Ａのサマライザモジュール１２１１は、ＤＰＩ１１２１Ａから取得した通信に関するデータに統計処理を実行し、端末１１０１毎の通信統計情報を生成する。ロードバランサ１２１０Ａの分散モジュール１２１２は、自身が保持する分散テーブル２３００に基づいて、通信統計情報を分析装置１２５１Ａに転送する。なお、ロードバランサ１２１０Ｂも同じ処理を実行する。
【００４５】
ここで、ロードバランサ１２１０Ａ及び１２１０Ｂの分散モジュール１２１２は、図２に示す分散テーブル２３００を保持する。
【００４６】
分散テーブル２３００には、エントリがテーブルの行となるレコードとして記憶されており、各レコードは、テーブルの列として以下のフィールドを有する。具体的には、分散テーブル２３００は、フィールドとして、ＩＤ２３０１、比較値２３０２、及び分散先分析装置ＩＤ２３０３を含む。
【００４７】
ＩＤ２３０１には、分散テーブル２３００のエントリの識別子が登録される。比較値２３０２には、分散先の分析装置１２５１Ａを決定するための情報が登録される。例えば、図２では、端末１１０１の識別子が登録される。分散先分析装置ＩＤ２３０３には、分散先となる分析装置１２５１の識別子が登録される。図２では、分散テーブル２３００のＩＤ２３０１に「１」が登録されたエントリでは、比較値２３０２に登録された端末１１０１の識別子（「ＵＥ  ＃１」）が登録され、分散先分析装置ＩＤ２３０３には分散先となる分析装置１２５１Ａの識別子（Ａｎａｌｙｚｅｒ  ＃１）が登録される。なお、図２に示す分散テーブル２３００は一例であり、本発明はこれに限定されない。
【００４８】
ロードバランサ１２１０Ａの分散モジュール１２１２は、サマライザモジュール１２１１から入力された端末１１０１Ｄの通信統計情報を分析装置１２５１Ａに転送する。また、ロードバランサ１２１０Ｂの分散モジュール１２１２は、サマライザモジュール１２１１から入力された端末１１０１Ｅの通信統計情報を分析装置１２５１Ａに転送する。
【００４９】
したがって、同一のユーザに使用されるが、異なるネットワークパーティションに接続される複数の端末１１０１の通信統計情報は、同一の分析装置１２５１Ａに転送され、同一のユーザの通信統計情報は、同一の分析装置１２５１Ａで分析される。
【００５０】
図３は、実施例１の分散テーブル２３００の更新指示の送信タイミングの説明図である。
【００５１】
コーディネーター１２４０は、各分散モジュール１２１２からイベント通知を取得しており、取得したイベント通知に基づいて、各分散モジュール１２１２で分散イベントが実行されない時間である分散イベント実行無し時間を予測して、予測した分散イベント実行無し時間帯に分散テーブル２３００の更新指示を各分散モジュール１２１２に送信する。
【００５２】
図３では、過去に実行された分散イベント３５１０とこれから実行される分散イベント３５２０とをタイムライン３００１に示す。
【００５３】
コーディネーター１２４０は、過去の分散イベント３５１０の実行タイミングに基づいて、将来の分散イベント３５２０の実行タイミングを予測する。
【００５４】
タイムライン３００１では、第１の分散モジュール１２１２がＤＰＩ＃１からデータを取得したタイミングを開始タイミング３１０１とする最初の分散イベント実行期間３１００が示される。また、タイムライン３００１では、第１の分散モジュール１２１２での最初の分散イベント実行期間３１００の後に、第２の分散モジュール１２１２がＤＰＩ＃２からデータを取得したタイミングを開始タイミング３２０１とする最初の分散イベント実行期間３２００が示される。
【００５５】
タイムライン３００１では、第１の分散モジュール１２１２において、ＤＰＩ＃１からデータを取得したタイミングを開始タイミング３１１１とする二番目の分散イベント実行期間３１１０が示される。また、タイムライン３００１では、第２の分散モジュール１２１２において、ＤＰＩ＃２からデータを取得したタイミングを開始タイミング３１２１とする二番目の分散イベント実行期間３２１０が示される。 
【００５６】
コーディネーター１２４０は、これらの過去に実行された分散イベント３５１０に基づいて、第１の分散モジュール１２１２で実行される次の分散イベント実行期間３１２０の開始タイミング３１２１、及び第２の分散モジュール１２１２で実行される次の分散イベント３２２０の開始タイミング３２２１を予測する。
【００５７】
そして、コーディネーター１２４０は、いずれの分散モジュール１２１２においても分散イベントが実行されない期間を、分散モジュール１２１２で分散テーブル２３００の更新が可能な期間３６００として選択する。そして、コーディネーター１２４０は、当該期間３６００の開始タイミングで分散テーブル２３００の更新が開始するように更新指示を送信する。
【００５８】
期間３６００では、いずれの分散モジュール１２１２においても分散イベントが実行されないので、分散モジュール１２１２の分散テーブル２３００を更新しても、分散イベントに影響を与えない。これによって、分散モジュール１２１２で分散テーブル２３００の更新中に、ＤＰＩ１１２１からデータが分散モジュール１２１２に入力される可能性を低減できるので、分析装置１２５１に転送されるデータを分散モジュール１２１２にバッファする必要がなくなり、分析装置１２５１への転送の遅延も防止できる。
【００５９】
なお、図３に示すＤＰＩ１１２１の数、及び分散イベントの実行回数は、本発明を限定するものではない。また、過去に実行された分散イベント以外の情報を用いて、期間３６００を算出してもよい。
【００６０】
図４は、実施例１のコーディネーター１２４０のハードウェア構成図である。
【００６１】
コーディネーター１２４０は、プロセッサ４２００、メモリ４３００、二次記憶装置４４００、及びネットワークインタフェース（ＩＦ）４５００を有する。これらは、バス４１００を介して互いに接続される。
【００６２】
プロセッサ４２００は、各種演算処理を実行する。二次記憶装置４４００は非揮発性の非一時的な記憶媒体であり、各種プログラム及び各種データが記憶される。メモリ４３００は揮発性の一時的な記憶媒体であり、メモリ４３００には、二次記憶装置４４００に記憶された各種プログラム及び各種データがロードされ、プロセッサ４２００がメモリ４３００にロードされた各種プログラムを実行し、メモリ４３００にロードされた各種データを読み書きする。
【００６３】
ネットワークＩＦ４５００は、コーディネーター１２４０を各分散モジュール１２１２に接続するためのインタフェースである。
【００６４】
なお、図４は、コーディネーター１２４０の必要最低限のハードウェア構成を示したものであり、コーディネーター１２４０は、さらに、キーボード及びマウス等の入力デバイス、並びにディスプレイ等の出力デバイスを有してもよいし、さらなるネットワークインタフェースを有してもよい。
【００６５】
また、ロードバランサ１２１０も、図４と同じハードウェア構成を採用するものとする。この場合、ロードバランサ１２１０の二次記憶装置４４００には、サマライザモジュール１２１１及び分散モジュール１２１２それぞれに対応するプログラムが記憶される。プロセッサ４２００がメモリ４３００にロードされたサマライザモジュール１２１１及び分散モジュール１２１２それぞれに対応するプログラムを実行することによって、サマライザモジュール１２１１及び分散モジュール１２１２が実装される。
【００６６】
また、分散モジュール１２１２は独立した装置であってもよく、この場合、分散モジュール１２１２となる装置は、図４と同じハードウェア構成を採用する。なお、分散モジュール１２１２が独立した装置である場合、及びロードバランサ１２１０に実装されている場合も含む概念を示す場合には、分散ノードと記載する。また、コーディネーター１２４０は、分散ノードを管理するので、分散ノード管理装置と記載する。なお、コーディネーター１２４０は、分散イベントを実行する分散ノードであってもよい。
【００６７】
図５は、実施例１の分散テーブル更新処理のシーケンス図である。
【００６８】
まず、ＤＰＩ１１２１はルータから取得した通信に関するデータを分散モジュール１２１２に送信し（５００１）、分散モジュール１２１２は、通信に関するデータを受信して、分散イベントを実行する（５００２）。分散イベントの実行が終了すると、分散モジュール１２１２は、分散イベントの開始時刻及び終了時刻を特定可能な情報含むイベント通知をコーディネーター１２４０に送信する（５００３）。コーディネーター１２４０は、イベント通知を受信した場合、受信したイベント通知に基づいて、図９に示す分散イベント管理テーブル９０００を更新する（５００４）。分散イベント管理テーブル９０００は、各分散モジュール１２１２で実行された分散イベントに関する情報を管理するテーブルであり、詳細は図９で説明する。なお、各分散モジュール１２１２で実行された分散イベントに関する情報は、例えば、分散イベントの開始タイミング及び終了タイミングを特定可能な情報を含み、分散イベントの終了タイミングを特定可能情報は、分散イベントの終了タイミング自体であってもよいし、分散イベントの実行にかかった時間であってもよい。
【００６９】
コーディネーター１２４０に、分散テーブル２３００の更新リクエストが入力される（５０１１）。更新リクエストは、管理者がコーディネーター１２４０に入力してもよいし、他のシステムから自動的に入力されてもよい。
【００７０】
コーディネーター１２４０は、分散テーブル２３００の更新リクエストが入力された場合、次に分散イベントが実行されるタイミング等を予測し（５０１２）、全ての分散モジュール１２１２で分散イベントが実行されない分散イベント実行無し時間を予測して、分散イベント実行無し時間から更新指示を送信するタイミング（更新指示送信タイミング）を選択する（５０１３）。例えば、更新指示送信タイミングは、分散テーブル２３００の更新にかかる時間、及び更新指示が分散モジュール１２１２に到着するまでの遅延時間が考慮されて決定されてもよい。
【００７１】
そして、コーディネーター１２４０は、ステップ５０１３の処理で決定された更新指示送信タイミングまで処理を待機して（５０１４）、更新指示送信タイミングになると分散テーブル２３００の更新指示を分散モジュール１２１２に送信する（５０３１）。コーディネーター１２４０は、更新指示の送信後は分散モジュールからの応答の受信を待つ（５０３０）。
【００７２】
なお、図５では、コーディネーター１２４０が処理を待機している間に、ＤＰＩ１１２１は、プローブデータを分散モジュール１２１２に送信し（５０２１）、分散モジュール１２１２は分散イベントを実行している（５０２２）。
【００７３】
分散モジュール１２１２は、更新指示を受信した場合、分散テーブル２３００の更新が完了するまでの間、ＤＰＩ１１２１からの通信に関するデータの入力をブロックし（５０４０）、分散テーブル２３００の更新の準備をする（５０３２）。分散モジュール１２１２は、分散テーブル２３００の更新の準備が成功すると、更新同意応答をコーディネーター１２４０に送信する（５０３３）。他の分散モジュール１２１２も、同じく更新同意応答をコーディネーター１２４０に送信する。そして、コーディネーター１２４０は、全ての分散モジュール１２１２から更新同意応答を受信する（５０３９）。ステップ５０３１の処理でコーディネーター１２４０が更新指示を送信してから、ステップ５０３９の処理で全ての分散モジュール１２１２から更新同意応答を受信するまでの時間を、２フェーズコミットの「Ｖｏｔｉｎｇフェーズ」（５３００）という。
【００７４】
コーディネーター１２４０は、ステップ５０３９の処理で最後の分散モジュール１２１２から更新同意応答を受信した場合、更新実行指示を分散モジュール１２１２に送信する（５０４１）。分散モジュール１２１２は、更新実行指示を受信した場合、更新実行指示に基づいて分散テーブル２３００を更新する（５０４２）。そして、分散モジュール１２１２は、分散テーブル２３００の更新が完了すると、ＤＰＩ１１２１から入力されたデータの分散を再開する（５０５０）。図５では、コーディネーター１２４０は、ＤＰＩ１１２１からのデータ入力のブロック中（５０２０）に、ＤＰＩ１１２１から通信に関するデータを受信していないので、ステップ５０５０の処理では実際のデータは分散されない。
【００７５】
また、分散モジュール１２１２は、分散テーブル２３００の更新が完了すると、更新完了応答をコーディネーター１２４０に送信する（５０４３）。他の分散モジュール１２１２も、同じく更新完了応答をコーディネーター１２４０に送信する。コーディネーター１２４０は、全ての分散モジュール１２１２から更新完了応答を受信する（５０４９）。分散テーブル１２３０の更新後、ＤＰＩ１１２１は、ルータから取得した通信に関するデータをロードバランサ１２１０に送信し（５０５１）、分散モジュール１２１２は更新後の分散テーブル２３００に基づいて分散イベントを実行する（５０５２）。
【００７６】
ステップ５０４１の処理でコーディネーター１２４０が更新実行指示を送信してから、ステップ５０４９の処理で全ての分散モジュール１２１２から更新完了応答を受信するまでの時間を、２フェーズコミットの「コミットフェーズ」（５４００）という。
【００７７】
なお、図５では、分散モジュール１２１２の分散テーブル２３００が２フェーズコミットを用いて更新される例を説明したが、これに限定されない。
【００７８】
図６は、実施例１の分散モジュール１２１２の処理の説明図である。
【００７９】
まず、分散モジュール１２１２に何らかのイベントを発生させるデータが入力される（６００１）。ここで、イベントを発生させるデータは、コーディネーター１２４０から送信される分散テーブル２３００の更新イベントを発生させるデータ（更新指示及び更新実行指示）、並びに、ＤＰＩ１１２１から送信される分散イベントを発生させるデータである。
【００８０】
次に、分散モジュール１２１２は、入力されたデータによって発生するイベントの種類を特定し、特定したイベントの種類によって処理を分岐する（６００２）。
【００８１】
ステップ６００２の処理で、発生するイベントが分散テーブル２３００の更新イベントであると特定された場合、分散モジュール１２１２は、例えば２フェーズコミットを用いて、分散テーブル２３００を更新する（６００３）。次に、分散モジュール１２１２は、分散テーブル２３００の更新が完了し、かつ分散テーブル２３００の更新中にバッファされたデータがあるか否かを判定する（６００４）。分散モジュール１２１２は、分散テーブル２３００の更新中に分散イベントを実行できないので、分散テーブル２３００の更新後にＤＰＩ１１２１から入力されたデータを送信するため、ＤＰＩ１１２１から入力されたデータをバッファする。
【００８２】
ステップ６００４の処理で、分散テーブル２３００の更新が完了し、かつ分散テーブル２３００の更新中にバッファされたデータがあると判定された場合（６００４：ＹＥＳ）、分散モジュール１２１２は、更新された分散テーブル２３００に基づいて、バッファされたデータがなくなるまで当該データを分析装置１２５１に分散させ（６００５）、処理を終了する。
【００８３】
一方、ステップ６００４の処理で、分散テーブル２３００の更新が完了していないと判定された場合（６００４：ＮＯ）、分散モジュール１２１２は処理を終了する。また、ステップ６００４の処理で、分散テーブル２３００の更新が完了したが、バッファされたデータがないと判定された場合（６００４：ＮＯ）、分散モジュール１２１２は、更新完了応答を送信し、処理を終了する。
【００８４】
ステップ６００２の処理で、発生するイベントが分散イベントの開始であると特定された場合、すなわち、ＤＰＩ１１２１からデータの入力が開始された場合、分散モジュール１２１２は、分散テーブル２３００の更新中であるか否かを判定する（６００６）。
【００８５】
ステップ６００６の処理で、分散テーブル２３００の更新中でないと判定された場合（６００６：ＮＯ）、分散モジュール１２１２は、分散テーブル２３００に基づいてＤＰＩ１１２１から入力されたデータを分析装置１２５１に分散させ（６００７）、処理を終了する。
【００８６】
一方、ステップ６００６の処理で、分散テーブル２３００の更新中であると判定された場合（６００６：ＹＥＳ）、分散モジュール１２１２は、ＤＰＩ１１２１から入力されたデータをバッファして（６００８）、処理を終了する。入力されたデータのバッファには、例えばメモリ４３００が用いられる。
【００８７】
ステップ６００２の処理で、発生するイベントが分散イベントの終了であると特定された場合、すなわち、ＤＰＩ１１２１からデータの入力が終了した場合、分散モジュール１２１２は、分散イベントの開始時刻及び終了時刻をイベント通知をコーディネーター１２４０に送信し（６００９）、処理を終了する。例えば、イベント通知は、データの送信元のＤＰＩ１１２１の識別子、開始時刻及び終了時刻を特定可能な情報を含むが、これに限定されない。例えば、イベント通知は、ＤＰＩの識別子として「ＤＰＩ＃１」を含み、分散イベントの開始時刻として「2016-01-21T07:10:00.721Z」を含み、分散イベントの終了時刻として「2016-01-21T07:15:23.510Z」を含む。
【００８８】
図７は、実施例１のコーディネーター１２４０の処理のフローチャートである。
【００８９】
まず、コーディネーター１２４０はメッセージを受信する（７００１）。コーディネーター１２４０は、受信したメッセージの種類を特定し、特定したメッセージの種類に応じて処理を分岐する（７００２）。ここで、コーディネーター１２４０が受信するメッセージの種類には、例えば管理者から入力される分散テーブル２３００の更新リクエスト、分散モジュール１２１２から送信される分散イベント通知、及び分散モジュール１２１２から送信される分散テーブル２３００の更新に関する応答がある。
【００９０】
ステップ７００２の処理で、受信したメッセージが分散テーブル２３００の更新リクエストであると特定された場合、コーディネーター１２４０は、各分散モジュール１２１２で次に分散イベントが実行されるタイミング等を予測するタイミング予測処理を実行する（７００３）。タイミング予測処理の詳細は、図１０で説明する。
【００９１】
次に、コーディネーター１２４０は、ステップ７００３の処理結果に基づいて、分散イベント実行無し時間を算出して、分散イベント実行無し時間から更新指示送信タイミングを決定する更新指示送信タイミング決定処理を実行する（７００４）。更新指示送信タイミング決定処理の詳細は、図１１で説明する。
【００９２】
次に、コーディネーター１２４０は、ステップ７００４の処理で決定された更新指示送信タイミングになると、更新指示を分散モジュール１２１２に送信し、分散テーブル２３００の更新を開始する（７００５）。
【００９３】
次に、コーディネーター１２４０は、分散テーブル２３００の更新状況を管理する更新管理テーブル（更新管理情報）８０００を更新し（７００６）、処理を終了する。
【００９４】
ここで、更新管理テーブル８０００について図８を用いて説明する。図８は、実施例１の更新管理テーブル８０００の説明図である。
【００９５】
更新管理テーブル８０００にはエントリがテーブルの行となるレコードとして記憶されており、各レコードは、テーブルの列として以下のフィールドを有する。具体的には、更新管理テーブル８０００は、フィールドとして、ＩＤ８００１、タイムスタンプ８００２、更新ＩＤ８００３、ノードＩＤ８００４、及びステータス８００５を含む。
【００９６】
ＩＤ８００１には、各エントリの識別子が登録される。タイムスタンプ８００２には、各エントリが追加された日時が登録される。更新ＩＤ８００３には、同一の分散テーブル２３００の更新に関するエントリを識別するための識別子が登録される。
【００９７】
ノードＩＤ８００４には、各エントリに関連するノードの識別子が登録される。具体的には、ノードＩＤ８００４には、分散テーブル２３００を更新する分散モジュール１２１２の識別子又はコーディネーター１２４０の識別子が登録されてもよいが、これに限定されない。
【００９８】
ステータス８００５には、各エントリのステータスが登録される。具体的には、ステータス８００５には、分散テーブル２３００の更新に用いられるメッセージが登録されるが、これに限定されない。例えば、ステータス８００５には、「update request query」、「update agreement response」、「update abort response」、「update commit query」、「update rollback query」、「commit acknowledgement response」、又は「rollback acknowledgement response」が登録される。「update request query」は、コーディネーター１２４０から更新指示が送信されたことを示し、「update agreement response」は、分散モジュール１２１２が分散テーブル２３００の更新の準備に成功した場合に送信する更新同意応答をコーディネーター１２４０が受信したことを示す。「update abort response」は、分散モジュール１２１２が分散テーブル２３００の更新に失敗した場合に送信する更新中断応答をコーディネーター１２４０が受信したことを示す。「update commit query」は、コーディネーター１２４０が更新実行指示を送信したことを示す。「update rollback query」は、コーディネーター１２４０が分散テーブル２３００を更新前の内容に戻す更新ロールバック指示を送信したことを示す。「commit acknowledgement response」は、分散モジュール１２１２が更新実行指示に対応して分散テーブル２３００を更新した場合に送信する更新完了応答をコーディネーター１２４０が受信したことを示す。「rollback acknowledgement response」は、分散モジュール１２１２が更新ロールバック指示に対応して分散テーブル２３００を更新した場合に送信する更新ロールバック完了応答をコーディネーター１２４０が受信したことを示す。
【００９９】
なお、上記したメッセージは一例であり、本発明はこれに限定されない。また、上記した更新管理テーブル８０００の構造は一例であり、最小限の構成を示したものである。
【０１００】
タイムスタンプ８００２には、エントリに関連したイベントが発生した日時又は当該イベントの処理の開始日時が登録されてもよい。具体的には、タイムスタンプ８００２には、コーディネーター１２４０が分散テーブル２３００の更新を開始した日時、又は分散モジュール１２１２から分散テーブル２３００の更新に関連するステータスメッセージを受信した日時が登録されてもよい。
【０１０１】
更新管理テーブル８０００は、コーディネーター１２４０の二次記憶装置４４００に記憶されてもよいし、メモリ４３００に記憶されてもよい。また、更新管理テーブル８０００は、リレーショナルデータベースマネージメントシステムを用いて実装されてもよい。
【０１０２】
図７に戻り、ステップ７００６の処理の詳細について説明する。ステップ７００６の処理では、コーディネーター１２４０は、更新管理テーブル８０００に新たなエントリを追加し、例えば、追加したエントリのＩＤ８００１に一意な識別子（「１」）を登録し、タイムスタンプ８００２にエントリを追加した日時（「2017-03-21T11:10:31.120Z」）を登録し、更新ＩＤ８００３には一意な識別子（「Update #15」）を登録し、ノードＩＤ８００４に更新指示を送信した自身の識別子（「Coordinator #1」）を登録し、ステータス８００５には、「update request query」を登録する。
【０１０３】
ステップ７００２の処理で、受信したメッセージが分散モジュール１２１２から送信された分散イベント通知であると特定された場合、コーディネーター１２４０は、受信した分散イベント通知に基づいて、分散イベント管理テーブル９０００を更新し（７００７）、処理を終了する。
【０１０４】
ここで、分散イベント管理テーブル９０００について図９を用いて説明する。図９は、実施例１の分散イベント管理テーブル９０００の説明図である。
【０１０５】
分散イベント管理テーブル９０００には、エントリがテーブルの行となるレコードとして記憶されており、各レコードは、テーブルの列として以下のフィールドを有する。具体的には、管理テーブル９０００は、フィールドとして、ＩＤ９００１、ＤＰＩ  ＩＤ９００２、開始日時９００３、及び終了日時９００４を含む。
【０１０６】
ＩＤ９００１には、各エントリの識別子が登録される。ＤＰＩ  ＩＤ９００２には、分散モジュール１２１２で分散イベントを開始する契機となったＤＰＩ１１２１の識別子が登録される。開始日時９００３には、分散モジュール１２１２において分散イベントが開始された日時が登録される。終了日時９００４には、分散モジュール１２１２において分散イベントが終了した日時が登録される。
【０１０７】
上記した分散イベント管理テーブル９０００の構造は一例であり、最小限の構成を示したものである。
【０１０８】
分散イベント管理テーブル９０００は、コーディネーター１２４０の二次記憶装置４４００に記憶されてもよいし、メモリ４３００に記憶されてもよい。また、分散イベント管理テーブル９０００は、リレーショナルデータベースマネージメントシステムを用いて実装されてもよい。
【０１０９】
図７に戻り、ステップ７００７の処理の詳細について説明する。例えば、分散イベント通知は、分散モジュール１２１２が分散イベントを実行する契機となった通信に関するデータを送信したＤＰＩの識別子（「ＤＰＩ  ＃１１」）、並びに、分散イベントを分散モジュール１２１２で実行された分散イベントの開始日時（「2016-01-21T07:10:00.721Z」）及び終了日時（「2016-01-21T07:15:23.510Z」）を含む。コーディネーター１２４０は、分散イベント通知を受信した場合、分散イベント管理テーブル９０００に新たなエントリを追加する。そして、コーディネーター１２４０は、分散イベント管理テーブル９０００の追加したエントリのＩＤ９００１に一意な識別子（「ＩＤ１」）を登録し、ＤＰＩ  ＩＤ９００２に、受信した分散イベント通知に含まれるＤＰＩの識別子（「ＤＰＩ  ＃１１」）を登録し、開始日時９００３に、受信した分散イベント通知に含まれる開始日時（「2016-01-21T07:10:00.721Z」）を登録し、終了日時９００４に、受信した分散イベント通知に含まれる終了日時（「2016-01-21T07:15:23.510Z」）を登録する。
【０１１０】
ステップ７００２の処理で、受信したメッセージが分散テーブル２３００の更新に関する応答であると特定された場合、コーディネーター１２４０は、受信した分散テーブル２３００の更新に関する応答に基づいて、更新管理テーブル８０００を更新する（７００８）。例えば、分散テーブル２３００の更新に関する応答は、更新同意応答、更新中断応答、更新完了応答、又は更新ロールバック完了応答である。これらの応答は一例であり、本発明はこれらに限定されない。
【０１１１】
ステップ７００８の処理では、コーディネーター１２４０は、更新管理テーブル８０００に新たなエントリを追加し、追加したエントリのＩＤ８００１に一意な識別子を登録し、タイムスタンプ８００２にエントリを追加した日時を登録し、更新ＩＤ８００３に一意な識別子を登録し、ノードＩＤ８００４に分散テーブル２３００の更新に関する応答を送信した分散モジュール１２１２の識別子を登録し、ステータス８００５に分散テーブル２３００の更新に関する応答の種別に対応する情報を登録する。例えば、コーディネーター１２４０が更新同意応答を分散モジュール１２１２（「Distributor #17」）から受信した場合、追加したエントリのＩＤ８００１に一意な識別子（「２」）を登録し、タイムスタンプ８００２にエントリを追加した日時（「2017-03-21T11:13:45.000Z」）を登録し、更新ＩＤ８００３には一意な識別子（「Update #15」）を登録し、ノードＩＤ８００４に分散モジュール１２１２の識別子（「Distributor #17」）を登録し、ステータス８００５には、「update agreement response」を登録する。
【０１１２】
コーディネーター１２４０は、更新同意応答を受信した場合、分散テーブル２３００の更新が完了したことを示す応答を受信するまで更新を継続し（７００９）、処理を終了する。具体的には、更新中断応答を受信した場合、分散テーブル２３００の更新が失敗したので、処理を終了する。また、更新完了応答又は更新ロールバック完了応答を受信した場合、分散テーブル２３００の更新が完了したので、処理を終了する。
【０１１３】
図１０は、実施例１のタイミング予測処理のフローチャートである。
【０１１４】
タイミング予測処理では、コーディネーター１２４０は、分散モジュール１２１２が次回の分散イベントの実行にかかる時間（次回分散イベント実行時間）、次回の分散イベントの開始タイミング（次回分散イベント開始タイミング）、及び分散モジュール１２１２が次回の分散テーブル２３００の更新にかかる時間（次回分散テーブル更新時間）を予測する。なお、次回分散テーブル更新時間は実施例２で用いられるので、本実施例では予測されなくてもよい。
【０１１５】
まず、コーディネーター１２４０は、ステップ１０００２〜１００１１の処理と、ステップ１００１２〜１００１６の処理とを並列して実行する（１０００１）。
【０１１６】
ステップ１０００２〜１００１１の処理について説明する。まず、コーディネーター１２４０は、分散イベント管理テーブル９０００に登録されたＤＰＩ１１２１の識別子から処理対象となるＤＰＩ１１２１の識別子を選択し、分散イベント管理テーブル９０００に登録された全てのＤＰＩ１１２１の識別子が選択されるまで、ステップ１０００２〜１００１１の処理を繰り返し実行する（１０００２）。
【０１１７】
コーディネーター１２４０は、ステップ１０００２の処理で選択されたＤＰＩ１１２１の識別子に対して、次回分散イベント実行時間予測処理（ステップ１０００４〜１０００６）と、次回分散イベント開始タイミング予測処理（ステップ１０００７〜１０００９）と、を並列して実行する（１０００３）。
【０１１８】
まず、次回分散イベント実行時間予測処理について説明する。まず、コーディネーター１２４０は、ステップ１０００２の処理で選択されたＤＰＩ１１２１の識別子によって識別されるＤＰＩ１１２１（処理対象のＤＰＩ１１２１）から送信されたデータによって開始される分散イベントの実行にかかる時間を計算する（１０００４）。具体的には、コーディネーター１２４０は、分散イベント管理テーブル９０００のＤＰＩ  ＩＤ９００２にステップ１０００２の処理で選択されたＤＰＩ１１２１の識別子が登録されたエントリの終了日時９００４に登録された日時から開始日時９００３に登録された日時を減算した値を、分散イベント実行時間として計算する。
【０１１９】
次に、コーディネーター１２４０は、ステップ１０００４の処理で計算された分散イベント時間に基づいて、指数平滑法を用いた次回分散イベント実行時間の予測処理を実行する（１０００５）。ステップ１０００５の処理では、処理対象のＤＰＩ１１２１からのデータによって次に開始する分散イベントの実行にかかる時間を示す次回分散イベント実行時間が予測される。なお、ステップ１０００５の処理で指数平滑法を用いることは一例であり、本発明はこれに限定されない。
【０１２０】
次に、コーディネーター１２４０は、ステップ１０００５の処理での予測処理結果を次回分散イベント実行時間変数１００２１として一時的に記憶する（１０００６）。
【０１２１】
次に、次回分散イベント開始タイミング予測処理について説明する。まず、コーディネーター１２４０は、二つの連続した分散イベントの開始タイミングの間の時間を計算する（１０００７）。
【０１２２】
具体的には、コーディネーター１２４０は、分散イベント管理テーブル９０００のＤＰＩ  ＩＤ９００２にステップ１０００２の処理で選択されたＤＰＩ１１２１の識別子が登録された全てのエントリを取得する。そして、コーディネーター１２４０は、取得したエントリから一つのエントリを選択し、選択したエントリの開始日時９００３に登録された開始日時と最も近いエントリを、当該選択したエントリに連続した分散イベントのエントリとして選択する。なお、この処理は、ステップ１０００２の処理で選択されたＤＰＩ１１２１の識別子が登録された全てのエントリに対して連続した分散イベントが選択されるまで繰り返し実行される。そして、コーディネーター１２４０は、各二つの連続したエントリの開始日時９００３に登録された開始日時の差を、二つの連続した分散イベントの開始タイミングの間の時間として計算する。
【０１２３】
次に、コーディネーター１２４０は、ステップ１０００７の処理で計算された時間に基づいて、指数平滑法を用いて二つの連続した分散イベントの開始タイミングの間の時間の予測処理を実行する（１０００８）。
【０１２４】
次に、コーディネーター１２４０は、処理対象のＤＰＩ１１２１が最後に送信したデータによって開始する分散イベントの開始タイミングにステップ１０００５の処理の予測処理結果を加算した値を、次回分散イベント開始タイミングとして計算し、当該値を次回分散イベント開始タイミング変数１００２２として一次的に記憶する（１０００９）。
【０１２５】
ステップ１０００６又は１０００９の処理の実行後、コーディネーター１２４０は、他方の処理の実行の完了を待って（１００１０）、分散イベント管理テーブル９０００に登録された全てのＤＰＩ１１２１の識別子が選択済みでなければ、ステップ１０００２の処理に戻り、処理対象の新たなＤＰＩ１１２１の識別子を選択する（１００１１）。なお、他方の処理とは、ステップ１０００６の処理の実行後は、次回分散イベント開始タイミング予測処理（ステップ１０００７〜１０００９の処理）を示し、ステップ１０００９の処理の実行後は、次回分散イベント実行時間予測処理（ステップ１０００４〜１０００６の処理）である。
【０１２６】
また、分散イベント管理テーブル９０００に登録された全てのＤＰＩ１１２１の識別子が選択済みであれば、コーディネーター１２４０は、ステップ１００１２〜１００１６の処理の完了を待って（１００１７）、処理を終了する。
【０１２７】
次に、ステップ１００１２〜１００１６の処理について説明する。ステップ１００１２〜１００１６の処理では、分散モジュール１２１２における次回の分散テーブル２３００の更新にかかる時間（次回分散テーブル更新時間）を予測する。本実施例では、次回分散テーブル更新時間を用いないため、ステップ１００１２〜１００１６の処理は実行されなくてもよい。次回分散テーブル更新時間は実施例２で用いられる。
【０１２８】
まず、コーディネーター１２４０は、更新管理テーブル８０００のノードＩＤ８００４に登録された分散モジュール１２１２の識別子から処理対象となる分散モジュール１２１２の識別子を選択し、更新管理テーブル８０００のノードＩＤ８００４に登録された全ての分散モジュール１２１２の識別子が選択されるまで、ステップ１００１３〜１００１５の処理を繰り返し実行する（１００１２）。
【０１２９】
次に、コーディネーター１２４０は、更新管理テーブル８０００を参照して、ステップ１００１２の処理で選択した分散モジュール１２１２の識別子によって識別される分散モジュール１２１２（処理対象の分散モジュール１２１２）で分散テーブル２３００の更新にかかる時間を計算する（１００１３）。
【０１３０】
具体的には、コーディネーター１２４０は、自身が更新指示を分散モジュール１２１２に送信した日時（更新指示送信日時）と、処理対象の分散モジュール１２１２から更新完了応答又は更新ロールバック完了応答を受信した日時（完了応答受信日時）との差を、処理対象の分散モジュール１２１２の分散テーブル更新時間として計算する。
【０１３１】
ステップ１００１３の処理をさらに詳細に説明する。コーディネーター１２４０は、更新管理テーブル８０００のノードＩＤ８００４にステップ１００１２の処理で選択した分散モジュール１２１２の識別子が登録された全てのエントリの更新ＩＤ８００３に登録された識別子（更新ＩＤ）から処理対象となる一つの更新ＩＤを選択する。そして、コーディネーター１２４０は、更新管理テーブル８０００の更新ＩＤ８００３に選択した更新ＩＤが登録されたエントリから、ノードＩＤ８００４にコーディネーター１２４０の識別子が登録され、かつ、ステータス８００５に「update request query」が登録されたエントリのタイムスタンプ８００２に登録された日時を更新指示送信日時として取得する。また、コーディネーター１２４０は、更新管理テーブル８０００の更新ＩＤ８００３に選択した更新ＩＤが登録されたエントリから、ノードＩＤ８００４に処理対象の分散モジュール１２１２の識別子が登録され、かつ、ステータス８００５に「commit acknowledgement response」又は「rollback acknowledgement response」が登録されたエントリのタイムスタンプ８００２に登録された日時を完了応答受信日時として取得する。そして、コーディネーター１２４０は、取得した更新指示送信日時と取得した完了応答受信日時との差を分散テーブル更新時間として計算する。なお、分散テーブル更新時間は、更新管理テーブル８０００のノードＩＤ８００４にステップ１００１２の処理で選択した分散モジュール１２１２が登録された全てのエントリの更新ＩＤ８００３に登録された更新ＩＤに対して計算される。
【０１３２】
次に、コーディネーター１２４０は、ステップ１００１３の処理で計算された分散テーブル更新時間に基づいて、指数平滑法を用いて処理対象の分散モジュール１２１２における次回の分散テーブル２３００の更新にかかる時間（次回分散テーブル更新時間）を予測する（１００１４）。なお、ステップ１００１４の処理で指数平滑法を用いることは一例であり、本発明はこれに限定されない。
【０１３３】
次に、コーディネーター１２４０は、ステップ１００１４の処理での予測処理結果を次回分散テーブル更新時間変数１００２３として一次的に記憶する（１００１５）。
【０１３４】
そして、コーディネーター１２４０は、更新管理テーブル８０００に登録された全ての分散モジュール１２１２の識別子が選択済みでなければ、ステップ１００１２の処理に戻り、処理対象の新たな分散モジュール１２１２の識別子を選択する（１００１６）。
【０１３５】
また、更新管理テーブル８０００に登録された全ての分散モジュール１２１２の識別子が選択済みであれば、コーディネーター１２４０は、ステップ１０００２〜１００１１の処理の完了を待って（１００１７）、処理を終了する。
【０１３６】
図１１は、実施例１の更新指示送信タイミング決定処理のフローチャートである。
【０１３７】
まず、コーディネーター１２４０は、図１０に示すステップ１０００６の処理で一次的に記憶された各ＤＰＩ１１２１の次回分散イベント実行時間変数１００２１である次回分散イベント開始実行時間、及び図１０に示すステップ１０００９の処理で一次的に記憶された各ＤＰＩ１１２１の次回分散イベント開始タイミング変数１００２２である次回分散イベント開始タイミングを統合したタイムラインを作成する（１１００１）。ステップ１１００１の処理では、各ＤＰＩ１１２１の次回分散イベント開始タイミングをタイムラインにプロットして、タイムラインにプロットされた各ＤＰＩの次回分散イベント開始タイミングから当該次回分散イベント開始タイミングに対応する次回分散イベント実行時間の間分散イベントの実行中であるとする。
【０１３８】
次に、コーディネーター１２４０は、ステップ１１００１の処理で作成されたタイムスタンプから、分散イベントが実行されない時間を分散イベント実行無し時間として選択する（１１００２）。
【０１３９】
次に、コーディネーター１２４０は、選択した分散イベント実行無し時間から、時間が最大となる分散イベント実行無し時間の開始タイミングを、更新指示を送信するタイミングである更新指示送信タイミングとして選択し（１１００３）、処理を終了する。
【０１４０】
本実施例によれば、コーディネーター１２４０によって分散イベント実行無し時間に基づいて決定された分散イベントの更新を開始するタイミングで、前記分散ノードで分散テーブル２３００の更新が開始される。このため、分散テーブル２３００の更新が分散イベントに干渉しない時間に分散テーブル２３００を更新することができ、分散させるデータが分散先に到着しない事態等を防止できる。
【０１４１】
また、本実施例によれば、コーディネーター１２４０は、分散モジュールから実際に実行された分散イベントの開始タイミング及び終了タイミングを特定可能な情報を収集し、収集した情報を分散イベント管理テーブル９０００に登録する。そして、コーディネーター１２４０は、分散イベント管理テーブル９０００に基づいて、分散イベント実行無し時間を予測する。これによって、実際に実行された分散イベントの開始タイミング及び終了タイミングを特定可能な情報に基づいて分散イベント実行無し時間が予測されるので、分散イベント実行無し時間を正確に予測できる。
【０１４２】
また、本実施例によれば、コーディネーター１２４０は、分散イベント管理テーブル９０００に基づいて、次回分散イベント開始タイミング及び次回分散イベント実行時間を予測し、これらに基づいて分散イベント実行無し時間を予測する。これによって、分散イベント実行無し時間を正確に予測できる。
【０１４３】
また、本実施例によれば、コーディネーター１２４０は、最大の分散イベント実行無し時間の開始タイミングを分散テーブル２３００の更新を開始するタイミングに決定する。このため、分散イベントに干渉しない可能性が最も高い時間に分散テーブル２３００を更新させることができる。また、最大の分散イベント実行無し時間を選択するだけなので、コーディネーター１２４０の処理負荷も軽減できる。
【０１４４】
また、本実施例によれば、コーディネーター１２４０は、分散テーブル２３００の更新を開始するタイミングになると、更新指示を送信するので、分散モジュール１２１２間で時刻を同期させる必要がなく、分散モジュール１２１２のコストを低減できる。
【０１４５】
また、本実施例によれば、コーディネーター１２４０は、分散テーブル２３００の更新の要求があった場合、分散イベント実行無し時間を予測する。すなわち、分散イベント実行無し時間の予測が必要なときにだけ分散イベント実行無し時間が予測されるので、コーディネーター１２４０の処理負荷を軽減できる。
【０１４６】
また、本実施例によれば、分散モジュール１２１２は、分散テーブル２３００の更新中に入力されたデータをバッファし、分散テーブル２３００の更新後に、更新された分散テーブル２３００に基づいて、バッファされたデータを分散させる。これによって、分散テーブル２３００の更新中にデータの廃棄等を防止でき、さらに、更新後の分散先に当該データを分散させることができる。
【実施例２】
【０１４７】
実施例２について図１２及び図１３を用いて説明する。
【０１４８】
本実施例は、更新指示送信タイミング決定処理が実施例１と異なる。本実施例の更新指示送信タイミング決定処理では、次回分散イベント更新時間より大きい分散イベント実行なし時間の開始タイミングが更新指示送信開始タイミングとして選択される。
【０１４９】
図１２は、実施例２の更新送信タイミング決定処理のフローチャートである。なお、図１２では、図１１に示す処理と同じ処理は同じ符号を付与し、説明を省略する。
【０１５０】
ステップ１１００２の処理の実行後、コーディネーター１２４０は、次回分散テーブル更新時間変数１００２３として一次的に記憶された各分散モジュール１２１２の次回分散テーブル更新時間から時間が最大の次回分散テーブル更新時間を最大次回分散テーブル更新時間として選択する（１２００１）。
【０１５１】
次に、コーディネーター１２４０は、ステップ１１００２の処理で選択された分散イベント実行無し時間のうちステップ１２００１の処理で選択した最大次回分散テーブル更新時間以上である分散イベント実行無し時間があるか否かを判定する（１２００２）。
【０１５２】
ステップ１２００２の処理で、最大次回分散テーブル更新時間以上である分散イベント実行無し時間があると判定された場合（１２００２：ＹＥＳ）、コーディネーター１２４０は、最大次回分散テーブル更新時間以上であるいずれかの分散イベント実行無し時間を更新指示送信タイミングとして選択し（１２００３）、処理を終了する。
【０１５３】
ステップ１２００２の処理で、最大次回分散テーブル更新時間以上である分散イベント実行無し時間がないと判定された場合、コーディネーター１２４０は、次回に実行される分散イベントから処理対象となる分散イベントを選択し（１２００４）、ステップ１２００５〜１２００７をの処理を実行する。
【０１５４】
コーディネーター１２４０は、ステップ１２００４の処理で選択した分散イベントの開始タイミングに最大分散イベント更新時間を配置し、当該分散イベントの終了タイミングに最大分散イベント時間更新時間を配置する（１２００５）。なお、最大分散イベント時間更新時間が配置されたタイミングをｔとする。
【０１５５】
次に、コーディネーター１２４０は、配置された最大分散イベント更新時間において分散イベントの実行時間と重複する時間（重複時間）を計算する（１２００６）。
【０１５６】
そして、コーディネーター１２４０は、次回に実行される全ての分散イベントがステップ１２００４の処理で選択されていなければ、ステップ１２００４の処理に戻り（１２００７）、処理対処となる分散イベントを選択する。
【０１５７】
また、コーディネーター１２４０は、次回に実行される全ての分散イベントがステップ１２００４の処理で選択されていれば、分散イベントの実行時間の重複時間が最小となる最大分散イベント更新時間の配置タイミングｔを更新指示送信タイミングとして選択し（１２００８）、処理を終了する。
【０１５８】
図１３は、実施例２の更新指示送信タイミング決定処理の説明図である。
【０１５９】
タイムライン１３００１は、全てのＤＰＩ１１２１からのデータによって実行される分散イベントの次回分散イベント実行時間及び次回分散イベント開始タイミングが統合されたタイムラインであり、図１２に示すステップ１１００１の処理で作成される。例えば、タイムライン１３００１は、ＤＰＩ  ＃１からのデータ入力による１回目の分散イベント１３１００、ＤＰＩ  ＃２からのデータ入力による１回目の分散イベント１３２００、ＤＰＩ  ＃３からのデータ入力による１回目の分散イベント１３３００、ＤＰＩ  ＃１からのデータ入力による２回目の分散イベント１３１１０、ＤＰＩ  ＃２からのデータ入力による２回目の分散イベント１３２１０、及び、ＤＰＩ  ＃３からのデータ入力による２回目の分散イベント１３３１０を含む。
【０１６０】
図１３に示す例では、最大の分散イベント実行無し時間であっても最大分散テーブル更新時間より小さく、最大分散テーブル更新時間以上である分散イベント実行無し時間は存在しない。このため、ステップ１２００５の処理で、最大分散テーブル更新時間が、各分散イベントの開始タイミング及び終了タイミングに配置される。図１３において、タイムライン１３００１の下方には、最大分散テーブル更新時間の異なる配置例が示される。
【０１６１】
１３５１０は分散イベント１３１００の開始タイミング１３１０１に配置された最大分散テーブル更新時間を示し、１３５２０は分散イベント１３１００の終了タイミングに配置された最大分散テーブル更新時間を示し、１３５３０は分散イベント１３２００の開始タイミング１３２０１に配置された最大分散テーブル更新時間を示し、１３５４０は分散イベント１３２００の終了タイミングに配置された最大分散テーブル更新時間を示す。
【０１６２】
図１３では、最大分散テーブル更新時間の分散イベントと重複しない時間を１３５４１のように白塗りで示し、分散イベントと重複する重複時間を１３５４２のように黒塗りで示す。
【０１６３】
図１３において、最大分散テーブル更新時間の重複時間が最小となる配置は１３５４０であるので、分散イベント１３２００の終了タイミングが更新指示送信タイミングとして選択される。
【０１６４】
これによって、最大分散テーブル更新時間以上となる分散イベント実行無し時間が存在しない場合であっても、分散モジュール１２１２での分散テーブル２３００の更新中に分散イベントが最も発生しないタイミングでコーディネーター１２４０から更新指示が送信されるので、分散テーブル２３００の更新の分散イベントへの影響を最小限に抑えることができる。
【実施例３】
【０１６５】
実施例３について図１４及び図１５を用いて説明する。本実施例では、コーディネーター１２４０は、更新指示送信タイミングを決定すると即座に更新指示送信タイミングを含む更新指示を送信し、分散モジュール１２１２は、更新指示送信タイミングまで分散テーブル２３００の更新を待機し、更新指示送信タイミングになると、分散テーブル２３００の更新を開始する。実施例１及び実施例２においても更新指示は更新後の分散テーブル２３００を含むが、本実施例では、更新指示に含まれる分散テーブル２３００は、更新タイミングを示すタイムスタンプを含む。なお、本実施例の分散モジュール１２１２の時刻と、コーディネーター１２４０の時刻とが高精度に同期される必要がある。
【０１６６】
本実施例によれば、更新指示の各分散モジュール１２１２への到着する遅延が原因となり、各分散モジュール１２１２で分散テーブル２３００の更新の開始タイミングがずれることを防止できる。
【０１６７】
図１４は、実施例３のコーディネーター１２４０から送信される更新指示の説明図である。
【０１６８】
コーディネーター１２４０から送信される更新指示は、分散テーブル２３００の更新を開始する更新タイミングを示すタイムスタンプ１４００１、及び更新後の分散テーブル２３００を含む。
【０１６９】
図１５は、実施例３の分散テーブル更新処理のシーケンス図である。図１５では、図５に示す処理と同じ処理は同じ符号を付与し、説明を省略する。
【０１７０】
本実施例では、ステップ５０１３の処理で更新指示送信タイミングが決定されると、コーディネーター１２４０は、更新指示送信タイミングまで更新指示の送信を待機せずに、即座に更新指示を送信する（１５００１）。更新指示は、図１４に示すタイムスタンプ１４００１及び分散テーブル２３００を含む。タイムスタンプ１４００１には、分散テーブル２３００の更新を開始するタイミングとしてステップ５０１３の処理で決定された更新指示送信タイミングが登録される。
【０１７１】
分散モジュール１２１２は、受信した更新指示に含まれるタイムスタンプ１４００１に登録された分散テーブル２３００の更新を開始するタイミングまで、分散テーブル２３００の更新を待機し（１５００２）、分散テーブル２３００の更新を開始するタイミングになると、ステップ５０３２の処理で分散テーブル２３００の更新の準備を開始する。分散テーブル２３００の更新の待機中は、分散モジュール１２１２は、ＤＰＩ１１２１からプローブデータを受信すると、通常通り分散イベントを実行する（５０２２）。
【０１７２】
本実施例によれば、コーディネーター１２４０は、分散テーブル２３００の更新を開始するタイミングを決定すると、当該タイミングを含む更新指示を分散モジュール１２１２に送信し、分散モジュール１２１２は、当該タイミングになると分散テーブル２３００の更新を開始する。コーディネーター１２４０によって送信された更新指示が各分散モジュール１２１２に到着するまでの遅延時間によって、各分散モジュール１２１２の分散テーブル２３００の更新を開始するタイミングがずれることはなく、各分散モジュール１２１２で同じタイミングで分散テーブル２３００の更新を開始することができる。これによって、分散モジュール１２１２での分散テーブル２３００の更新の開始が遅延したことによって、当該分散モジュール１２１２が分散すべきデータが入力される事態を防止できる。
【実施例４】
【０１７３】
実施例４について図１６を用いて説明する。本実施例では、分散テーブル２３００の更新中にＤＰＩ１１２１からデータの入力が開始された場合、分散モジュール１２１２は、実施例１のようにＤＰＩ１１２１から入力されたデータをバッファせずに、分散テーブル２３００の更新中にＤＰＩ１１２１からデータの入力が開始された旨の更新中入力通知を、関係する装置に送信する。例えば、この更新入力通知によって、分析装置１２５１による分析結果は、分散テーブル２３００の更新中にＤＰＩ１１２１からデータの入力が開始されたことによってＤＰＩ１１２１から送信された全てのデータに基づいて算出されていないことを示すことができる。
【０１７４】
図１６は、実施例４の分散モジュール１２１２の処理の説明図である。図１６では、図６に示す処理と同じ処理は同じ符号を付与し，説明を省略する。
【０１７５】
ステップ６００６の処理で、分散テーブル２３００の更新中と判定された場合（６００６：ＹＥＳ）、分散モジュール１２１２は、更新入力通知を関係する装置に送信し（１６００１）、ステップ６００７の処理に進み、ＤＰＩ１１２１から入力されたデータを分散させ、処理を終了する。関係する装置は、コーディネーター１２４０、分析装置１２５１、他の分散モジュール１２１２、及び他のシステム等を含んでもよい。なお、関係する装置としての分析装置１２５１は、分散テーブル２３００の更新中にＤＰＩ１１２１からの入力が開始されたデータの分散先となる分析装置１２５１であってもよいし、当該ＤＰＩ１１２１からデータが入力された分散モジュール１２１２の分散先の候補となる分析装置１２５１であってもよいし、システムに存在する全ての分析装置１２５１であってもよい。また、他のシステムは、例えば、ディスプレイ装置を有するシステム、又はログシステム等である。
【０１７６】
分散テーブル２３００の更新中にＤＰＩ１１２１から入力が開始されたデータの入力が終了した場合、又は分散テーブル２３００の更新が終了した場合、分散モジュール１２１２は、ステップ１６００１の処理と同じ方式を用いて、分散テーブル２３００の更新中にＤＰＩ１１２１から入力が開始されたデータの入力が終了した旨を関係する装置に通知する。
【０１７７】
本実施例によれば、分散モジュール１２１２は、分散テーブル２３００の更新中にデータが入力された場合、その旨を関係する装置に通知し、入力されたデータを分散させる。これによって、分散テーブル２３００の更新中に入力されたデータがバッファしきれずに廃棄してしまう等の事態を防止でき、更新前の分散テーブル２３００に基づいてデータが分散されても、関係する装置にその旨を通知するため、あとからデータを整合させることができる。
【実施例５】
【０１７８】
実施例５について図１７を用いて説明する。実施例１では、コーディネーター１２４０は、タイミング予測処理及び更新指示送信タイミング決定処理を実行するが、本実施例では、コーディネーター１２４０は、分散モジュール１２１２から分散イベント通知を受信した場合、タイミング予測処理及び更新指示送信タイミング決定処理を実行する。
【０１７９】
図１７は、実施例５のコーディネーター１２４０の処理のフローチャートである。図１７では、図７に示す処理と同じ処理は同じ符号を付与し、説明を省略する。
【０１８０】
ステップ７００２の処理で、受信したメッセージが分散テーブル２３００の更新リクエストであると特定された場合、コーディネーター１２４０は、タイミング予測処理及び更新指示送信タイミング決定処理を実行せず、ステップ７００５の処理に進み、更新指示を分散モジュール１２１２に送信し、分散テーブル２３００の更新を開始し、ステップ７００６の処理に進み、更新管理テーブル８０００を更新し、処理を終了する。
【０１８１】
なお、ステップ７００５の処理では、コーディネーター１２４０は、直近に受信した分散イベント通知によって実行されるステップ７００４の処理の更新指示送信タイミング決定処理で決定された更新送信タイミングまで処理を待機して、更新指示を分散モジュール１２１２に送信してもよい。また、コーディネーター１２４０は、分散テーブル２３００の更新リクエストを受信すると、直近に受信した分散イベント通知によって実行されるステップ７００４の処理の更新指示送信タイミング決定処理で決定された更新送信タイミングを含む更新指示を即座に分散モジュール１２１２に送信してもよい。
【０１８２】
ステップ７００２の処理で、受信したメッセージが分散モジュール１２１２から送信された分散イベント通知であると特定された場合、コーディネーター１２４０は、ステップ７００７の処理で、受信した分散イベント通知に基づいて、分散イベント管理テーブル９０００を更新する。次に、コーディネーター１２４０は、ステップ７００３の処理に進み、更新管理テーブル８０００及びステップ７００７の処理で更新された分散イベント管理テーブル９０００を参照して、タイミング予測処理を実行する。そして、コーディネーター１２４０は、ステップ７００４の処理に進み、更新指示送信タイミング決定処理を実行し、処理を終了する。
【０１８３】
ステップ７００２の処理で、受信したメッセージが分散テーブル２３００の更新に関する応答である場合の処理は、実施例１と同じであるので、説明を省略する。
【０１８４】
タイミング予測処理及び更新指示送信タイミング決定処理の実行タイミングが異なる実施例１及び実施例５を比較すると、実施例１は、分散テーブル２３００の更新リクエストが入力された場合にのみタイミング予測処理及び更新指示送信タイミング処理が実行されるので、タイミング予測処理及び更新指示送信タイミング処理の処理結果に関する反応性が高い。コーディネーター１２４０で計算に用いるリソースが少ない場合、分散テーブル２３００の更新リクエストが入力された場合に遅延が生じる可能性がある。
【０１８５】
一方、実施例５は、新たな分散イベント通知が分散モジュール１２１２から入力されるたびにタイミング予測処理及び更新指示送信タイミング処理が実行される。このため、コーディネーター１２４０は、分散テーブル２３００の更新リクエストが入力されると即座に分散テーブル２３００の更新処理を開始することができる。しかし、ＤＰＩ１１２１から分散モジュール１２１２へのデータ入力の周期が頻繁である場合、コーディネーター１２４０に分散イベント通知の頻繁に入力されるので、コーディネーター１２４０の処理負荷が高くなってしまうという問題点もある。
【０１８６】
本実施例によれば、コーディネーター１２４０は、分散モジュールから分散イベントの開始タイミング及び終了タイミングを特定可能な情報を収集するたびに、分散イベント実行無し時間を予測する。このため、分散テーブル２３００の更新のリクエストを入力を受け付けた場合、分散イベント実行無し時間を予測する必要がなく、分散イベント実行無し時間を予測することによる遅延を防止することができる。
【０１８７】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、及び置換をすることが可能である。
【０１８８】
また、各実施例の構成の一部について、他の構成の追加、削除、及び置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。
【０１８９】
また、前記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
【０１９０】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣ（Integrated Circuit）カード、ＳＤカード、ＤＶＤ（Digital Versatile Disc）等の記録媒体に置くことができる。
【０１９１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１９２】
１１００    モバイルキャリアネットワーク
１１０１    端末
１１１０    ＲＡＮ（Ｒａｄｉｏ  Ａｃｃｅｓｓ  Ｎｅｔｗｏｒｋ）
１１１１    基地局
１１２０    ＥＰＣ（Ｅｖｏｌｖｅｄ  Ｐａｃｋｅｔ  Ｃｏｒｅ）
１１２１    ＤＰＩ
１１３０    ＰＤＮ（Ｐａｃｋｅｔ  Ｄａｔａ  Ｎｅｔｗｏｒｋ）
１１４０    インターネット
１２００    トラフィック管理システム
１２１０    ロードバランサ
１２１１    サマライザモジュール
１２１２    分散モジュール
１２４０    コーディネーター
１２５１    分析装置
２３００    分散テーブル
８０００    更新管理テーブル
９０００    分散イベント管理テーブル
【図１】
2017033487.tif 000003
【図２】
2017033487.tif 000004
【図３】
2017033487.tif 000005
【図４】
2017033487.tif 000006
【図５】
2017033487.tif 000007
【図６】
2017033487.tif 000008
【図７】
2017033487.tif 000009
【図８】
2017033487.tif 000010
【図９】
2017033487.tif 000011
【図１０】
2017033487.tif 000012
【図１１】
2017033487.tif 000013
【図１２】
2017033487.tif 000014
【図１３】
2017033487.tif 000015
【図１４】
2017033487.tif 000016
【図１５】
2017033487.tif 000017
【図１６】
2017033487.tif 000018
【図１７】
2017033487.tif 000019