(57)【特許請求の範囲】
【請求項１】
少なくとも１つ以上のキューに不規則な間隔でレコードが入力される分散コンピューティング環境において、少なくとも１つ以上のレコード取得主体が存在し、各レコード取得主体が他のレコード取得主体とキュー及びレコードに関する情報の共有または交換をすることなく、独立かつ並行に１つ以上のキューに順番に接続し、各キューからレコードを取得する分散資源取得スケジューリングシステムであって、
前記少なくとも１つ以上のレコード取得主体は、
キュー接続先リスト、残レコード数カウンタ、連続空振りカウンタ、スルーカウンタ、ウェイト開始時刻、レコード取得抑止時間を格納する記憶手段と、
レコード取得先のキューの一覧を記録したキュー接続先リストを受信し、前記記憶手段に格納するキュー接続先リスト受信手段と、
前記キューに接続して指定された件数のレコードを先入れ先出し（ＦＩＦＯ）でキューから取得するレコード取得手段と、
前記レコード取得手段により同一キューに対して前回のレコード取得時に取得したキューの前記記憶手段内の前記残レコード数カウンタの数と今回のレコード取得時に取得したキューの残レコード数から当該キューのレコード増加率あるいは増加数を計算するレコード増加率計算手段と、
同一キューに対するレコード取得時の前記記憶手段内の前記連続空振りカウンタの回数に応じて当該キューからレコードを取得する処理を抑止するレコード取得抑止手段と、
を有することを特徴とする分散資源取得スケジューリングシステム。
【請求項２】
前記レコード取得手段は、
前記記憶手段の前記キュー接続先リストに記載されているキューの中から１番目に接続するキューをランダムに決定する手段と、
２番目以降に接続するキューについて１番目に接続したキューを基点として、前記キュー接続先リストに記載されたキューの中からラウンドロビン方式に従って順番に接続し、当該キューからレコードを取得する手段と、
を含む請求項１記載の分散資源取得スケジューリングシステム。
【請求項３】
接続先のキューに取得すべきレコードが存在しない場合（＝残レコード数が０件の場合）には、前記記憶手段の当該キューの連続空振りカウンタを１加算し、一方、当該キューに取得すべきレコードが存在する（レコードの取得ができた）場合には、当該キューの該連続空振りカウンタを０にセットする手段と、
当該キューの前記連続空振りカウンタが第１の関数の計算結果Ｎに達した場合は、前記記憶手段内の当該キューの前記スルーカウンタを予め規定した回数Ｘにセットし、次回以降、当該キューからレコードを取得する代わりに当該キューの該スルーカウンタを１減算し、当該キューの該スルーカウンタが０になった時点で、前記レコード取得手段による通常のレコード取得処理に戻る手段と、
を有するレコード取得抑止手段を有する
請求項２記載の分散資源取得スケジューリングシステム。
【請求項４】
接続先のキューに取得すべきレコードが存在しない場合（＝残レコード数が０件の場合）には、前記記憶手段の当該キューの連続空振りカウンタを１加算し、一方、当該キューに取得すべきレコードが存在する（レコードの取得ができた）場合には、当該キューの該連続空振りカウンタに０をセットする手段と、
当該キューの前記連続空振りカウンタが第１の関数の計算結果Ｎに達した場合は、前記記憶手段内の当該キューの前記ウェイト開始時刻に現在時刻を設定し、次回以降、当該キューからレコードを取得する代わりに当該キューの該ウェイト開始時刻とその時点での時刻を比較し、その差が予め規定した時間Ｙミリ秒を超えた時点で、前記レコード取得手段による通常のレコード取得処理を行う手段と、
を有するレコード取得抑止手段を有する
請求項２記載の分散資源取得スケジューリングシステム。
【請求項５】
前記レコード取得抑止手段は、
所定の回数だけ当該キューからのレコード取得を抑止する間に、
前記レコード増加率計算手段により計算された当該キューのレコード増加率あるいは増加数αに応じて決まる正数を返す第２の関数の計算結果を、前記記憶手段内の当該キューの前記スルーカウンタの新たな値として設定する手段を含む
請求項３記載の分散資源取得スケジューリングシステム。
【請求項６】
前記レコード取得抑止手段は、
所定の時間だけ当該キューからのレコード取得を抑止する間に、
前記レコード増加率計算手段により計算された当該キューのレコード増加率あるいは増加数αに応じて決まる正数を返す第３の関数の計算結果を、前記記憶手段内の当該キューの前記レコード取得抑止時間の新たな値として設定する手段を含む
請求項４記載の分散資源取得スケジューリングシステム。
【請求項７】
請求項１乃至６のいずれか１項に記載の分散資源取得スケジューリングシステムにおけるレコード取得主体を構成する各手段としてコンピュータを機能させるレコード取得プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散資源取得スケジューリングシステム及びレコード取得プログラムに係り、特に、少なくとも１つ以上のキューに不規則な間隔でレコードが入力される分散コンピューティング環境において、少なくとも１つ以上のレコード取得主体が存在し、各レコード取得主体が１つ以上のキューから順番にレコードを取得することで、各キューの処理待ちレコード数（残レコード数）の合計を最小にするための分散資源取得スケジューリングシステム及びレコード取得プログラムに関する。
【背景技術】
【０００２】
１つ以上のキューと１つ以上のレコード取得主体が分散配置されている分散コンピューティング環境において、負荷分散やスケールアウト、可用性の向上を目的とした分散資源取得スケジューリング方式として、図６に示すように、キューを追記部（Ｑ１〜Ｑ４），レコード取得主体をフィルタ部（Ｆ１〜Ｆ６）とし、それぞれを分散するプロセス構成で実現し、系内のプロセス構成を管理する情報部（アクト）１が系内のプロセス構成を記録したプロセスリストをマルチキャストで系内の全プロセスに配信することでプロセスの生存状況や新規プロセスの追加状況を確認し、最新のプロセス構成に更新したプロセスリストを配信することを定期的に行い、追記部（Ｑ１〜Ｑ４）ではクライアントから入力されたレコードに対して時刻印を付与した後でキューとしてレコードを管理し、フィルタ部（Ｆ１〜Ｆ６）では情報部（アクト）１からのマルチキャストで受信したプロセスリストの中から追記部（キュー）の一覧を取得し、ラウンドロビンアルゴリズムによって先頭のキューから順番にレコードを取得し、次のレコード取得を繰り返し、各キューの処理待ちレコードを取得する（例えば、非特許文献１参照）。
【非特許文献１】「追記・参照型データ管理プラットフォームアーキテクチャの提案」、赤間他、２．３節の自律分散データ取得アルゴリズム、第１４回マルチメディア通信と分散処理ワークショップ、2005年11月、pp.199-204.
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記の方式には以下のような問題点がある。
【０００４】
（１）全てのレコード取得主体が、初期接続するキューが同じで、その後、順番に接続するキューも同じため、一定の周期で特定のキューにレコード取得主体からのアクセスが集中し、レコードが溜まり続けるキューとレコード取得が空振りし続けるキューの二極化が発生する。
【０００５】
（２）キューからのレコード取得時に全てのキューに順番に接続してレコードを取得しようとするため、特定のキューで空振りが連続している場合には、レコードが存在しないキューに対するレコード取得処理がバックプレッシャーとなり（一般にレコード取得処理では複数のレコード取得主体が同じレコードを同時に取得できないように排他的なロック処理を行う必要があり、キューに対する頻繁なロック処理がバックプレッシャーの原因となる）、当該キューへの新たなレコードの入力を妨げる。
【０００６】
本発明は、上記の点に鑑みなされたもので、１つ以上のキューと１つ以上のレコード取得主体が分散配置されている分散コンピューティング環境において、
（１）一定の周期で特定のキューにレコード取得主体からのアクセスが集中することを防ぎ、
（２）連続で空振りが発生しているキューに対するレコード取得を抑止することにより、各キューのレコード入力スループットを低減させず、各キューの処理待ちレコード数（残レコード数）の合計を最小する分散資源スケジューリング方式を実現することが可能な分散資源取得スケジューリングシステム及びレコード取得プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
図１は、本発明の原理構成図である。
【０００８】
本発明（請求項１）は、少なくとも１つ以上のキューに不規則な間隔でレコードが入力される分散コンピューティング環境において、少なくとも１つ以上のレコード取得主体が存在し、各レコード取得主体が他のレコード取得主体とキュー及びレコードに関する情報の共有または交換をすることなく、独立かつ並行に１つ以上のキューに順番に接続し、各キューからレコードを取得する分散資源取得スケジューリングシステムであって、
少なくとも１つ以上のレコード取得主体は、
キュー接続先リスト、残レコード数カウンタ、連続空振りカウンタ、スルーカウンタ、ウェイト開始時刻、レコード取得抑止時間を格納する記憶手段１５０と、
レコード取得先のキューの一覧を記録したキュー接続先リストを受信し、記憶手段に格納するキュー接続先リスト受信手段１１０と、
キューに接続して指定された件数のレコードを先入れ先出し（ＦＩＦＯ）でキューから取得するレコード取得手段１２０と、
レコード取得手段１２０により同一キューに対して前回のレコード取得時に取得したキューの記憶手段１５０内の残レコード数カウンタの数と今回のレコード取得時に取得したキューの残レコード数から当該キューのレコード増加率あるいは増加数を計算するレコード増加率計算手段１３０と、
同一キューに対するレコード取得時の記憶手段１５０内の連続空振りカウンタの回数に応じて当該キューからレコードを取得する処理を抑止するレコード取得抑止手段１４０と、
を有する。
【０００９】
また、本発明（請求項２）は、レコード取得手段１２０において、
記憶手段１５０のキュー接続先リストに記載されているキューの中から１番目に接続するキューをランダムに決定する手段と、
２番目以降に接続するキューについて１番目に接続したキューを基点として、キュー接続先リストに記載されたキューの中からラウンドロビン方式に従って順番に接続し、当該キューからレコードを取得する手段と、を含む。
【００１０】
また、本発明（請求項３）は、接続先のキューに取得すべきレコードが存在しない場合（＝残レコード数が０件の場合）には、記憶手段１５０の当該キューの連続空振りカウンタを１加算し、一方、当該キューに取得すべきレコードが存在する（レコードの取得ができた）場合には、当該キューの該連続空振りカウンタを０にセットする手段と、
当該キューの連続空振りカウンタが第１の関数の計算結果Ｎに達した場合は、記憶手段内の当該キューのスルーカウンタを予め規定した回数Ｘにセットし、次回以降、当該キューからレコードを取得する代わりに当該キューの該スルーカウンタを１減算し、当該キューの該スルーカウンタが０になった時点で、レコード取得手段による通常のレコード取得処理に戻る手段と、を有するレコード取得抑止手段１４０を有する。
【００１１】
また、本発明（請求項４）は、接続先のキューに取得すべきレコードが存在しない場合（＝残レコード数が０件の場合）には、記憶手段１５０の当該キューの連続空振りカウンタを１加算し、一方、当該キューに取得すべきレコードが存在する（レコードの取得ができた）場合には、当該キューの該連続空振りカウンタに０をセットする手段と、
当該キューの連続空振りカウンタが第１の関数の計算結果Ｎに達した場合は、記憶手段１５０内の当該キューのウェイト開始時刻に現在時刻を設定し、次回以降、当該キューからレコードを取得する代わりに当該キューの該ウェイト開始時刻とその時点での時刻を比較し、その差が予め規定した時間Ｙミリ秒を超えた時点で、レコード取得手段１２０による通常のレコード取得処理を行う手段と、を有するレコード取得抑止手段１４０を有する。
【００１２】
また、本発明（請求項５）は、レコード取得抑止手段１４０において、
所定の回数だけ当該キューからのレコード取得を抑止する間に、
レコード増加率計算手段１３０により計算された当該キューのレコード増加率あるいは増加数αに応じて決まる正数を返す第２の関数の計算結果を、記憶手段１５０内の当該キューのスルーカウンタの新たな値として設定する手段を含む。
【００１３】
また、本発明（請求項６）は、レコード取得抑止手段１４０において、
所定の時間だけ当該キューからのレコード取得を抑止する間に、
レコード増加率計算手段１３０により計算された当該キューのレコード増加率あるいは増加数αに応じて決まる正数を返す第３の関数の計算結果を、記憶手段１５０内の当該キューのレコード取得抑止時間の新たな値として設定する手段を含む。
【００１４】
本発明（請求項７）は、請求項１乃至６のいずれか１項に記載の分散資源取得スケジューリングシステムにおけるレコード取得主体を構成する各手段としてコンピュータを機能させるレコード取得プログラムである。
【発明の効果】
【００１５】
上記のように本発明によれば、少なくとも１つ以上のキューと少なくとも１つ以上のレコード取得主体とを分散コンピューティング環境上に配置し、レコード取得先のキューの一覧を記録したキュー接続先リストを受信し、キュー接続先リストに記載されたキューに順番に接続して指定された件数のレコードを先入れ先出し（ＦＩＦＯ）でキューから取得し、同一キューに対して前回のレコード取得時に取得したキューの残レコード数と今回のレコード取得時に取得したキューの残レコード数から当該キューのレコード増加率あるいは増加数を計算し、同一キューに対するレコード取得時の連続空振り回数に応じて、当該キューからレコードを取得する処理を抑止することで、各キューのレコード入力スループットを低減させず、各キューの処理待ちレコード数（残レコード数）の合計を最小にする。
【００１６】
さらに、キュー接続先リストに記載されているキューの中から１番目に接続するキューをランダムに決定し、２番目以降に接続するキューは１番目に接続したキューを基点として、キュー接続先リストに記載されたキューの中からラウンドロビン方式に従って順番に接続し、当該キューからレコードを取得する。
【００１７】
加えて、接続先のキューに取得すべきレコードが存在しない場合（残レコード数が０件の場合）には、当該キューの連続空振りカウンタを１ずつ加算し、一方、当該キューに取得すべきレコードが存在する（レコードの取得ができた）場合には、当該キューの連続空振りカウンタを０にリセットし、当該キューの連続空振りカウンタが第１の関数の計算結果に達した場合は、当該キューのスルーカウンタを予め規定した回数Ｘにセットし、次回以降、当該キューからレコードを取得する代わりに、当該キューのスルーカウンタを１ずつ減算し、当該キューのスルーカウンタが０になった時点で通常のレコード取得処理に戻ることで、当該キューからのレコード取得を一定回数抑止する。
【００１８】
また、接続先のキューに取得すべきレコードが存在しない場合（残レコード数が０件の場合）には当該キューの連続空振りカウンタを１ずつ加算し、一方、当該キューに取得すべきレコードが存在する（レコードの取得ができた）場合には当該キューの連続空振りカウンタを０にリセットし、当該キューの連続空振りカウンタが第１の関数の計算結果Ｎに達した場合は、当該キューのウェイト開始時刻に現在時刻を設定し、次回以降、当該キューからレコードを取得する代わりに当該キューのウェイト開始時刻とその時点での時刻を比較し、その差が予め規定した時間Ｙミリ秒を超えた時点で通常のレコード取得処理に戻ることで当該キューからのレコード取得を一定時間抑止する。
【００１９】
更に、レコード取得を一定回数抑止する間に、計算した当該キューのレコード増加率あるいは増加数αに応じて決まる正数を返す第２の関数の計算結果を当該キューのスルーカウンタの新たな値として設定する。
【００２０】
また、レコード取得を一定時間抑止する間に、計算した当該キューのレコード増加率あるいは増加数αに応じて決まる正数を返す第３の関数の計算結果を当該キューのレコード取得抑止時間の新たな値として設定することで、
（１）レコード取得主体からのアクセスが集中することを防ぐことができ、
（２）連続で空振りが発生しているキューに対するレコード取得を一定回数または一定時間抑止することができ、更に、レコード取得処理を抑止中でも当該キューに一定以上のレコード入力があった場合にはレコード取得を抑止する残り回数または残り時間を減らすことにより、各キューのレコード入力スループットを低減させず、各キューの処理待ちレコード数（残レコード数）の合計を最小にする分散資源スケジューリングシステムを実現することが可能である。
【発明を実施するための最良の形態】
【００２１】
以下、図面と共に本発明の実施の形態を説明する。
【００２２】
図２は、本発明の一実施の形態における分散資源取得スケジューリングシステムの構成を示す。
【００２３】
同図に示す分散資源取得スケジューリングシステムは、不規則な間隔でレコードが入力される１つ以上のキュー２００と１つ以上のレコード取得主体１００１，１００２，１００３、…から構成され、分散コンピューティング環境上に配置される。
【００２４】
レコード取得主体１００は、キュー接続先リスト受信部１１０、レコード取得部１２０、レコード増加率計算部１３０、レコード取得抑止部１４０及び、キュー接続先リスト、残レコード数カウンタ、連続空振りカウンタ、スルーカウンタ、ウェイト開始時刻、レコード取得抑止時間を格納するメモリ１５０から構成される。
【００２５】
キュー接続先リスト受信部１１０は、レコード取得先のキューの一覧を記録したキュー接続先リストを受信する。
【００２６】
レコード取得部１２０は、キュー接続先リストに記載されたキューに順番に接続して指定された件数のレコードを先入れ先出し（ＦＩＦＯ）でキュー２００から取得する。
【００２７】
レコード増加率計算部１３０は、同一キューに対して前回のレコード取得時に取得したキューの残レコード数と今回のレコード取得時に取得したキューの残レコード数から当該キューのレコード増加率あるいは増加数を計算する。
【００２８】
レコード取得抑止部１４０は、同一キューに対するレコード取得時の連続空振り回数に応じて当該キューからレコードを取得する処理を抑止する。
【００２９】
上記のように、本実施の形態の分散資源スケジューリングシステムは、不規則な間隔でレコードが入力される１つ以上のキュー２００と１つ以上のレコード取得主体１００から構成され、キュー２００は、入力されたレコードに時刻印を付与し、先入れ先出し（ＦＩＦＯ）でレコードを管理する。
【００３０】
メモリ１５０内に格納される接続先リストには、接続すべきキューの一覧が記録され、また、残レコード数カウンタ、連続空振りカウンタ、スルーカウンタ、ウェイト開始時刻、レコード取得抑止時間の各エントリは、キュー接続先リスト中の該当するキューと関連付けられている。
【００３１】
図３は、本発明の一実施の形態におけるレコード取得主体が各キューからレコードを取得する動作のフローチャートである。
【００３２】
ステップ１０１）  レコード取得主体１００は、キュー接続先リスト受信部１１０において、レコード取得先のキューの一覧を記録したキュー接続先リストを受信し、メモリ１５０に格納する。
【００３３】
ステップ１０２）  レコード取得部１２０は、メモリ１５０に格納されたキュー接続先リストの中から１番目に接続するキューをランダムに決定する。
【００３４】
ステップ１０３）  レコード取得部１２０は、キューに接続して指定された件数のレコードを先入れ先出し（ＦＩＦＯ）で取得する。特に指定がなければ最も古いレコードを１件取得する。
【００３５】
ステップ１０４）  レコード取得部１２０は、キュー接続先リストの順次アクセスポインタを１つ進め、次に接続するキューをラウンドロビン方式により決定する。上記のステップ１０３，１０４を繰り返し、キュー接続先リストのキュー２００に接続し、レコードを取得する。
【００３６】
なお、上記では、各レコード取得主体１００がラウンドロビン方式に従ってキュー接続先リストの中のキューに順番に接続しているが、例えば、各キューの残レコード数やレコード増加率あるいは増加数、サーバ負荷などの情報から各キューの重みを計算し、ラウンドロビン方式の代わりに重み点きラウンドロビン方式に従って次に接続するキューを決定することも可能である。
【００３７】
次に、上記のステップ１０３の処理についてキュー２００からレコードを取得する動作を説明する。レコードを取得する動作は、図４と図５に示す２つの方法が考えられる。
【００３８】
まず、最初に図４において、キュー２００からのレコード取得の空振りを抑えるための方法を説明する。
【００３９】
図４は、本発明の一実施の形態におけるレコード取得動作のフローチャート（その１）である。
【００４０】
ステップ２０１）  レコード取得部１２０は、キュー２００に接続する。
【００４１】
ステップ２０２）  レコード取得部１２０は、接続したキューから当該キューの第１の残レコード数を取得する（残レコード数の取得処理はキューのその瞬間の残レコード数を参照するだけなので、排他的なロック処理は必要なく、複数のレコード取得主体が同時に残レコード数を取得することも可能であり、排他的なロック処理を伴うレコード取得処理に比べると非常に軽い処理である）。
【００４２】
ステップ２０３）  レコード取得抑止部１４０は、メモリ１５０内の当該キューのスルーカウンタが０であれば、次のステップ２０４の処理を行い、当該キューのスルーカウンタが０でなければ（レコード取得抑止中であれば）、ステップ２１０の処理を行う。
【００４３】
ステップ２０４）  上記の第１の残レコード数が１件以上存在すれば、ステップ２０５に移行し、残レコード数が０であればステップ２０７に移行する。
【００４４】
ステップ２０５）  レコード取得部１２０は、当該キュー２００からレコードを取得する。
【００４５】
ステップ２０６）  メモリ１５０内の当該キューの連続空振りカウンタを０にし、ステップ２１２に移行する。
【００４６】
ステップ２０７）  ステップ２０４において、残レコード数が０の場合は、メモリ１５０内の当該キューの連続空振りカウンタに１加算する。
【００４７】
ステップ２０８）  メモリ１５０内の連続空振りカウンタが第１の関数の計算結果Ｎ以上の場合は、ステップ２０９に移行し、そうでない場合は、ステップ２１２に移行する。
【００４８】
ステップ２０８）  ステップ２０８において、連続空振りカウンタがＮ以上である場合は、ステップ２０９に移行し、そうでない場合は、ステップ２１２に移行する。
【００４９】
ステップ２０９）  レコード取得抑止部１４０は、メモリ１５０の当該キューのスルーカウンタに規定回数Ｘを設定する（上記の第１の関数は当該キューの単位時間あたりの入力レコード数やレコード取得主体１００のサーバ負荷などの情報からＮの値を計算する関数であり、当該キューの単位時間あたりの入力レコード数の増加に反してＮを小さくし、レコード取得主体１００のサーバ負荷の増加に応じてＮを大きくする関数が考えられる。例えば、
（レコード取得主体のサーバ負荷）／（当該キューの単位時間当たりの入力レコード数）などが考えられるが、第１の関数がＮを定数として返すことも可能である）。ステップ２１２に移行する。
【００５０】
ステップ２１０）  ステップ２０３において、スルーカウンタが０でない場合は、レコード増加率計算部１３０において、上記の第１の残レコード数と当該キューの残レコード数カウンタに記録された第２の残レコード数からレコード増加率あるいは増加数αを計算する。
【００５１】
ステップ２１１）  レコード増加率計算部１３０は、メモリ１５０内の当該キューのスルーカウンタに第２の関数の計算結果をセットする。ここで、第２の関数はレコード増加率あるいは増加数αに応じて決まる正数を返す関数で、αが大きいほど当該キューのスルーカウンタの値の減少幅を大きくする関数である。例えば、当該キューの現在のスルーカウンタの値をＡとすると、Ａ−ｂα（ｂは係数、計算結果が負数の場合は０を返す）などの関数が考えられる。また、αの値が閾値Ｍを超えたかどうかで関数を変えることも可能である。
【００５２】
ステップ２１２）  上記の第１の残レコード数を当該キューの残レコードカウンタにセットする。
【００５３】
上記のように、図４に示す方法は、レコード取得の空振りを抑えるための処理であり、メモリ１５０のスルーカウンタが正値の場合は、キュー２００からレコードを取得しないで、増加率によってスルーカウンタ値を減少させていく。スルーカウンタの値が０になると、レコード取得を試みるが、空振りがＮ回連続するとスルーカウンタの値を正値に設定して次回はレコード取得をしないようにするものである。
【００５４】
次に、もう一つのレコード取得方法について説明する。この方法は、上記の図４で用いたスルーカウンタの代わりにウェイト開始時刻を管理して、レコード取得を抑える方法を説明する。
【００５５】
図５は、本発明の一実施の形態におけるレコード取得動作のフローチャート（その２）である。
【００５６】
ステップ３０１）  レコード取得部１２０は、キュー２００に接続する。
【００５７】
ステップ３０２）  レコード取得部１２０は、接続したキューから当該キューの第１の残レコード数を取得する（残レコード数の取得処理はキューのその瞬間の残レコード数を参照するだけなので、排他的なロック処理は必要なく、複数のレコード取得主体が同時に残レコード数を取得することも可能であり、排他的なロック処理を伴うレコード取得処理に比べると非常に軽い処理である）。
【００５８】
ステップ３０３）  レコード取得抑止部１４０は、現在時刻とメモリ１５０のウェイト開始時刻を参照して、現在時刻と当該キューのウェイト開始時刻の差が当該キューのレコード取得抑止時間（ミリ秒）を超えていれば、次のステップ３０４の処理を行い、現在時刻と当該キューのウェイト開始時刻の差が当該キューのレコード取得抑止時間（ミリ秒）を超えていなければステップ３１１に移行する。
【００５９】
ステップ３０４）  上記の第１の残レコード数が１件以上存在すれば、ステップ３０５に移行し、残レコードが０件の場合は、ステップ３０７に移行する。
【００６０】
ステップ３０５）  レコード取得部１２０は、当該キューからレコードを取得する。
【００６１】
ステップ３０６）  メモリ１５０内の当該キューの連続空振りカウンタを０にし、ステップ３１３に移行する。
【００６２】
ステップ３０７）  レコード取得抑止部１４０は、メモリ１５０を参照して、上記の第１の残レコード数が０件の場合は、当該キューの連続空振りカウンタに１加算する。
【００６３】
ステップ３０８）  レコード取得抑止部１４０は、連続空振りカウンタが第１の関数の計算結果Ｎ以上の場合は、ステップ３０９に移行し、そうでない場合はステップ３１３に移行する。
【００６４】
ステップ３０９）  レコード取得抑止部１４０は、メモリ１５０内の当該キューのウェイト開始時刻に現在時刻をセットする。
【００６５】
ステップ３１０）  レコード取得抑止部１４０は、当該キューのレコード取得抑止時間に規定の時間Ｙ（Ｙはレコード取得抑止時間の初期値である）をセットする（上記の第１の関数は当該キューの単位時間あたりの入力レコード数やレコード取得主体１００のサーバ負荷などの情報からＮの値を計算する関数であり、当該キューの単位時間あたりの入力レコード数の増加に反してＮを小さくし、レコード取得主体１００のサーバ負荷の増加に応じてＮを大きくする関数が考えられる。例えば、
（レコード取得主体のサーバ負荷）／（当該キューの単位時間当たりの入力レコード数）などが考えられるが、第１の関数がＮを定数として返すことも可能である）。ステップ３１３に移行する。
【００６６】
ステップ３１１）  ステップ３０３において、現在時刻とウェイト開始時刻の差がレコード取得抑止時間を越えていない場合は、レコード増加率計算部１３０において、第１の残レコード数と当該キューの残レコード数カウンタに記録された第２の残レコード数からレコード増加率あるいは増加数αを計算する。
【００６７】
ステップ３１２）  レコード増加率計算部１３０は、当該キューに対するレコード取得抑止時間に第３の関数の計算結果をセットする。ここで、第３の関数は、レコード増加率あるいは増加数αに応じて決まる正数を返す関数で、αが大きいほど当該キューのレコード取得抑止時間の値の減少値を大きくする関数である。例えば、当該キューの現在のレコード取得抑止時間をＴとすると、Ｔ−ｃα（ｃは係数、計算結果が負数の場合は０を返す）等の関数が考えられる。また、αの値が閾値Ｌを超えたかどうかで関数を変えることも可能である。
【００６８】
ステップ３１３）  上記の第１の残レコード数をメモリ１５０内の当該キューの残レコード数カウンタにセットする。
【００６９】
上記のように、図５の方法は、図４のスルーカウンタの代わりに、メモリ１５０内でウェイト開始時刻を管理し、所定の時間の間はレコードを取得しないようにするものである。
【００７０】
なお、上記の図２のレコード取得主体１００の構成要素の動作をプログラムとして構築し、レコード取得主体として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００７１】
また、構築されたプログラムをハードディスクや、フレキシブルディスク・ＣＤ−ＲＯＭ等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【００７２】
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【産業上の利用可能性】
【００７３】
本発明は、分散コンピューティング技術に適用可能である。
【図面の簡単な説明】
【００７４】
【図１】本発明の原理構成図である。
【図２】本発明の一実施の形態における分散資源取得スケジューリングシステムの構成図である。
【図３】本発明の一実施の形態におけるレコード取得主体が各キューからレコードを取得する動作のフローチャートである。
【図４】本発明の一実施の形態におけるレコード取得動作のフローチャート（その１）である。
【図５】本発明の一実施の形態におけるレコード取得動作のフローチャート（その２）である。
【図６】従来の分散資源取得スケジューリング方式を示す図である。
【符号の説明】
【００７５】
１００  レコード取得主体
１１０  キュー接続先リスト受信手段、キュー接続先リスト受信部
１２０  レコード取得手段、レコード取得部
１３０  レコード増加率計算手段、レコード増加率計算部
１４０  レコード取得抑止手段、レコード取得抑止部
１５０  記憶手段、メモリ
２００  キュー
【図１】
0004758412.tif 000002
【図２】
0004758412.tif 000003
【図３】
0004758412.tif 000004
【図４】
0004758412.tif 000005
【図５】
0004758412.tif 000006
【図６】
0004758412.tif 000007