JP2013186745A - 処理システム及びプログラム - Google Patents

処理システム及びプログラム Download PDF

Info

Publication number
JP2013186745A
JP2013186745A JP2012052061A JP2012052061A JP2013186745A JP 2013186745 A JP2013186745 A JP 2013186745A JP 2012052061 A JP2012052061 A JP 2012052061A JP 2012052061 A JP2012052061 A JP 2012052061A JP 2013186745 A JP2013186745 A JP 2013186745A
Authority
JP
Japan
Prior art keywords
processing
group
job
request
queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012052061A
Other languages
English (en)
Inventor
Junya Kato
淳也 加藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2012052061A priority Critical patent/JP2013186745A/ja
Priority to US13/554,691 priority patent/US8826291B2/en
Priority to CN201210380229.3A priority patent/CN103309731B/zh
Publication of JP2013186745A publication Critical patent/JP2013186745A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Abstract

【課題】個々のジョブ処理部の状態を監視する監視装置を設けなくても、スケールイン(ジョブ処理部の数の削減)を行う場合に、処理要求の処理が完了したジョブ処理部を停止させる。
【解決手段】監視部160はジョブキュー142内のジョブ数等から求めた処理グループ110の処理負荷が閾値を下回った場合、スケールイン指示をスケールインキュー146に送信する。処理グループ110内のジョブ処理部100のうち早い者勝ちでそのスケールイン指示を受け取ったジョブ処理部100は、ジョブキュー142からのジョブの取得を停止し、現在実行中のジョブの実行は継続する。そして、それら実行中のジョブがすべて完了すると、そのジョブ処理部100は自らを停止するコマンドを発し、これによりそのジョブ処理部100が消滅することで、処理グループ110のスケールインが実現される。
【選択図】図1

Description

本発明は、処理システム及びプログラムに関する。
近年、クラウドコンピューティングサービスのように、サービス提供者の有する計算リソースをユーザに対して例えば課金方式等の形で利用させるシステムが普及しつつある。このようなサービスは、一般に、ユーザのための処理に用いる計算リソースを必要に応じて自動的に増減する、いわゆるオートスケーリング機能を有する。例えばAmazon EC2 (Elastic Compute Cloud)というクラウドサービスでは、ユーザに対してEC2インスタンスと呼ぶ仮想マシンを割り当てるが、処理負荷に応じてそのインスタンスの数を自動的に増減する(非特許文献1参照)。一般的に、インスタンスの数を増加させることを「スケールアウト」、減少させることを「スケールイン」と呼んでいる。例えば、サービスの利用料金が使用するリソースの量に応じて定められている場合、処理負荷が低下したときに使用リソースの量を自動的に減らすことで、利用料金が節約される。
特許文献1には、ロードバランス機能をクライアントとサーバに分散した情報処理システム及びクライアントとサーバに分散したロードバランス機能によって自律的にサーバ間のロードバランスをとる並列ロードバランサ方式が記載されている。この方式のシステムは、初期に指定されているサーバに対してセッション確立要求を送信し、該初期に指定さているサーバからの該セッション確立要求への応答に従ってタスクを実行するサーバを選択するクライアント・ロードバランサを備えるクライアントと、該クライアント・ロードバランサからのセッション確立要求を受けた時に複数のサーバのセッション数を比較して該セッション確立要求への応答を該クライアント・ロードバランサに送信すると共にセッション数を管理するサーバ・ロードバランサを備えるサーバとによって構成される。
特許文献2には、サーバに仮想マシンモニタを搭載して複数の仮想マシンを並列構成で設置し、各仮想マシンの負荷を計測する負荷計測手段と、計測した負荷に応じて必要な資源量を決定する資源量決定手段と、決定した資源量を各仮想マシンに割り当てる資源割り当て手段とを備え、各仮想マシンの資源割り当てを一元的に管理することを特徴とする仮想化サーバ、が開示されている。
特許文献3には、Web型クライアントサーバシステムにおいて、負荷バランサを用いることなく、各Webサーバの負荷の分散を図るための方法が開示される。この方法では、各Webサーバの各々に対し予め決定された優先順位データテーブルを記憶し、各Webサーバの稼働状態が稼働中又は停止中であるかを把握すると共に、クライアント計算機からリクエストがあった場合には、稼働状態が稼働中であるWebサーバの中から、優先順位データテーブルに書き込まれた優先順位が最も高いWebサーバへと、このリクエストを割り振る。リクエストが割り振られたWebサーバは、自己の負荷が許容負荷以内である場合にはこのリクエストに対するタスクを実行し、自己の負荷が許容負荷よりも大きい場合には、稼働中であるWebサーバ13の中の自己以外で優先順位が最も高いWebサーバへリクエストを転送する。
特許文献4には、要求元にエラーを返さずに処理を継続するトランザクション処理方法が記載されている。この方法では、リクエスト代理装置が受け取ったリクエスト情報を要求情報管理装置に記録し、管理下にある冗長化されたサーバにリクエストを発行する。サーバに障害が発生したときには、記録していたリクエスト情報からトランザクション処理を継続し、他のサーバで処理を引き継ぐ。この方法では、ロードバランサと組み合わせてスケールインする場合も、障害発生と同様の仕組みで、他のサーバに処理を引き継ぐことが可能としている。
特許文献5には、コンピュータのうちの一つに障害が発生したとき、そのコンピュータに登録されていたジョブを二重起動することなしに別のコンピュータで自動的に再起動するシステムが記載されている。このシステムでは、共有ディスク装置は、障害検出手段と接続切替手段をもつ外部記憶装置であり、その接続は複数のコンピュータに対して行われるが、接続切替手段は常時一つのコンピュータからの接続のみを受け付ける。障害検出手段はバッチを処理するコンピュータの障害を検出し、接続切替手段の接続を切替える。平時、共有ディスク装置は現用コンピュータのジョブ情報とジョブ実行結果の記録を行っているが、障害発生時は代替用コンピュータに接続が切替えられ、ジョブ再投入手段群を用いて代替用コンピュータに再投入することで、自動的に再実行を行う。
特開2002−342298号公報 特開2009−265778号公報 特開2004−192449号公報 特開2008−027189号公報 特開平10−326201号公報
"Auto Scaling"、[online]、[平成24年1月10日検索]、インターネット<http://aws.amazon.com/jp/autoscaling/>
複数の処理部によりユーザからの複数の処理要求を分散処理している場合において、処理負荷が低くなってスケールイン、すなわち一部の処理部を停止させる場合を考える。この場合、処理要求を処理中の処理部を停止させると、その処理要求が処理されないので問題がある。ここで、個々の処理部の状態を監視している監視装置が存在していれば、その監視装置がそれら各処理部から処理要求の処理を完了したものを見出し、そのような処理部を停止させることで、そのような問題が解消される。しかしながら、個々の処理部の状態を監視する監視装置を設けることはシステムのコスト高に繋がり、また監視のための監視装置と各処理部との間の通信のためにネットワークの負荷が高まってしまう。
本発明は、個々の処理部の状態を監視する監視装置を設けなくても、スケールインを行う場合に、処理要求の処理が完了した処理部を停止させることができるようにすることを目的とする。
請求項1に係る発明は、処理グループ宛に到来した処理要求が追加される、当該処理グループに対応づけられた処理要求キューと、前記処理グループに属する1以上の処理部であって、新たな処理要求を受け付け可能になったときに、前記処理要求キューから処理要求を取得し、取得した処理要求を処理する1以上の処理部と、前記処理グループの処理負荷を監視し、当該監視により前記処理グループの処理負荷があらかじめ定められた縮小閾値より低くなったことがわかった場合、当該処理グループに対してグループ縮小指示を発行する監視部と、を備え、前記グループ縮小指示が発せられた場合、前記処理グループのうちのあらかじめ定められた数の前記処理部が停止対象となり、停止対象となった前記処理部は、当該処理グループの処理要求キューからの新たな処理要求の取得を停止すると共に、既に取得済みのすべての処理要求の処理が完了すると動作を停止して前記処理グループから外れる、ことを特徴とする処理システムである。
請求項2に係る発明は、前記処理グループに対応づけられたリカバリキューをさらに備え、前記停止対象となった前記処理部は、前記既に取得済みの処理要求の中に、処理の中断からの再開待ちの状態である再開待ち状態のものがある場合には、当該再開待ち状態の処理要求を前記リカバリキューに追加することで、当該処理要求を前記既に取得済みの処理要求に該当しないものとみなし、前記各処理部は、新たな処理要求を受け付け可能になったときに、前記リカバリキューから優先的に処理要求を取得し、当該リカバリキューに処理要求がない場合に前記処理要求キューから処理要求を取得する、ことを特徴とする請求項1に記載の処理システムである。
請求項3に係る発明は、処理要求の処理の途中段階の処理結果を記憶するための途中結果記憶部、をさらに備え、前記停止対象となった前記処理部は、前記再開待ち状態の処理要求についての当該再開待ち状態の段階までの途中の処理結果を、前記リカバリキューに追加した当該処理要求に対応づけて前記途中処理結果記憶部に記憶させ、前記各処理部は、前記リカバリキューから処理要求を取得した場合に、当該処理要求に対応づけて前記途中処理結果記憶部に記憶されている途中の処理結果を用いることにより、当該処理要求の処理が前記再開待ち状態の段階まで済んだものとして、当該処理を再開する、ことを特徴とする請求項2に記載の処理システムである。
請求項4に係る発明は、前記監視部は、前記監視により前記処理グループの処理負荷があらかじめ定められた拡大閾値より高くなったことがわかった場合、当該処理グループ内の各処理部に対してグループ拡大指示を発行し、前記グループ拡大指示を受け取った各処理部は、自己が停止対象であるがまだ動作の停止に至っていない場合には、自己を停止対象でなくし、前記処理要求キューからの新たな処理要求の取得を再開する、ことを特徴とする請求項1〜3のいずれか1項に記載の処理システムである。
請求項5に係る発明は、前記処理グループに対応づけられた縮小指示キューをさらに備え、前記監視部は、前記処理グループに対して発行するグループ縮小指示を、当該処理グループに対応づけられた前記縮小指示キューに追加し、前記各処理部は、それぞれ、処理負荷があらかじめ定められた停止対象閾値より低い場合にのみ、前記縮小指示キューからの前記グループ縮小指示の取得動作を行い、この取得動作により前記グループ縮小指示が取得できた場合に、前記停止対象となる、ことを特徴とする請求項1〜4のいずれか1項に記載の処理システムである。
請求項6に係る発明は、コンピュータを、処理グループ宛に到来した処理要求が追加される、当該処理グループに対応づけられた処理要求キュー、前記処理グループに属する1以上の処理部であって、新たな処理要求を受け付け可能になったときに、前記処理要求キューから処理要求を取得し、取得した処理要求を処理する1以上の処理部、前記処理グループの処理負荷を監視し、当該監視により前記処理グループの処理負荷があらかじめ定められた縮小閾値より低くなったことがわかった場合、当該処理グループに対してグループ縮小指示を発行する監視部、として機能させるためのプログラムであって、前記グループ縮小指示が発せられた場合、前記処理グループのうちのあらかじめ定められた数の前記処理部が停止対象となり、停止対象となった前記処理部は、当該処理グループの処理要求キューからの新たな処理要求の取得を停止すると共に、既に取得済みのすべての処理要求の処理が完了すると動作を停止して前記処理グループから外れる、ことを特徴とするプログラムである。
請求項7に係る発明は、前記コンピュータを、前記処理グループに対応づけられたリカバリキューとして更に機能させると共に、前記停止対象となった前記処理部は、前記既に取得済みの処理要求の中に、処理の中断からの再開待ちの状態である再開待ち状態のものがある場合には、当該再開待ち状態の処理要求を前記リカバリキューに追加することで、当該処理要求を前記既に取得済みの処理要求に該当しないものとみなし、前記各処理部は、新たな処理要求を受け付け可能になったときに、前記リカバリキューから優先的に処理要求を取得し、当該リカバリキューに処理要求がない場合に前記処理要求キューから処理要求を取得する、ことを特徴とする請求項6に記載のプログラムである。
請求項8に係る発明は、前記コンピュータを、処理要求の処理の途中段階の処理結果を記憶するための途中結果記憶部として更に機能させると共に、前記停止対象となった前記処理部は、前記再開待ち状態の処理要求についての当該再開待ち状態の段階までの途中の処理結果を、前記リカバリキューに追加した当該処理要求に対応づけて前記途中処理結果記憶部に記憶させ、前記各処理部は、前記リカバリキューから処理要求を取得した場合に、当該処理要求に対応づけて前記途中処理結果記憶部に記憶されている途中の処理結果を用いることにより、当該処理要求の処理が前記再開待ち状態の段階まで済んだものとして、当該処理を再開する、ことを特徴とする請求項7に記載のプログラムである。
請求項9に係る発明は、前記監視部は、前記監視により前記処理グループの処理負荷があらかじめ定められた拡大閾値より高くなったことがわかった場合、当該処理グループ内の各処理部に対してグループ拡大指示を発行し、前記グループ拡大指示を受け取った各処理部は、自己が停止対象であるがまだ動作の停止に至っていない場合には、自己を停止対象でなくし、前記処理要求キューからの新たな処理要求の取得を再開する、ことを特徴とする請求項6〜8のいずれか1項に記載のプログラムである。
請求項10に係る発明は、前記コンピュータを、前記処理グループに対応づけられた縮小指示キューとして更に機能させると共に、前記監視部は、前記処理グループに対して発行するグループ縮小指示を、当該処理グループに対応づけられた前記縮小指示キューに追加し、前記各処理部は、それぞれ、処理負荷があらかじめ定められた停止対象閾値より低い場合にのみ、前記縮小指示キューからの前記グループ縮小指示の取得動作を行い、この取得動作により前記グループ縮小指示が取得できた場合に、前記停止対象となる、ことを特徴とする請求項6〜9のいずれか1項に記載のプログラムである。
請求項1又は6に係る発明によれば、個々の処理部の状態を監視する監視装置を設けなくても、スケールインを行う場合に、処理要求の処理が完了した処理部を停止させることができる。
請求項2又は7に係る発明によれば、停止対象となった処理部がいつ完了するか不明である再開待ち状態の処理要求の処理を完了させてから停止する場合よりも、より早く処理グループの縮小(すなわち処理グループ内の処理部の削減)を実行することができる。
請求項3又は8に係る発明によれば、停止対象となった処理部がリカバリキューに追加された処理要求を別の処理部が実行する際に、その処理要求のための処理を最初から実行するよりも早く、処理を行うことができる。
請求項4又は9に係る発明によれば、処理グループの処理能力を高める(処理部の数を増やす)必要がでてきた場合に、新たな処理部を立ち上げるよりも素早く、処理能力の増強を実現することができる。
請求項5又は10に係る発明によれば、処理グループ内のすべての処理部がグループ縮小指示を取得できる場合よりも、処理グループをより早く縮小することができる。
実施形態のシステム構成の例を示す図である。 監視部の処理手順の一例を示すフローチャートである。 ジョブ処理部のジョブ取得動作の手順の一例を示すフローチャートである。 ジョブ処理部のジョブ実行動作の手順の一例を示すフローチャートである。 ジョブ処理部のスケールインのための処理手順の一例を示すフローチャートである。 ジョブ処理部のスケールイン指示の受付可否の切換のための処理手順の一例を示すフローチャートである。 ジョブ処理部のスケールアウトのための処理手順の一例を示すフローチャートである。 再開待ちのジョブがないジョブ処理部がスケールインのために停止する処理の流れの一例を示す図である。 再開待ちのジョブがあるジョブ処理部がスケールインのために停止する処理の流れの一例を示す図である。 第1段階及び第2段階のスケールアウトが行われる流れの例を示す図である。
図1に、本実施形態の処理システムの例を示す。以下において、「スケールイン」とは、処理グループ110の規模縮小、すなわち当該処理グループ110に所属するジョブ処理部100の数を減少させる処理を意味し、「スケールアウト」とは、処理グループ110の規模拡大、すなわち当該処理グループ110に所属するジョブ処理部100の数を増大させる処理を意味する。
図1のシステムは、図示省略したクライアント装置から、インターネット等のネットワークを介して処理要求を受け取り、それら処理要求に応じた処理を複数のジョブ処理部100で分散処理する。個々のジョブ処理部100は、物理的に単体のコンピュータであってもよいし、仮想マシン(すなわちジョブ処理部100のクラスのインスタンス)であってもよいし、一つの仮想マシン上で複数の顧客向けのサービスを提供する処理を実行するシステムにおける、各顧客向けの処理部であってもよい。複数のジョブ処理部100は、典型的にはクラウドコンピューティングシステム等のようにネットワーク上に分散しているが、単体のコンピュータ上で設けられる構成もあり得る。処理要求により要求される処理、すなわち、システム内のジョブ処理部100により実行(あるいは複数のジョブ処理部100により並列実行)される処理には特に限定はないが、一例を挙げるとすれば、クライアント装置であるデジタル複合機(複写機、スキャナ、プリンタ等の機能を併せ持つ多機能装置)でスキャンされた文書の画像に対して光学文字認識(OCR)処理を施し、その文書中の各項目のデータを抽出してデータベースに登録する処理などがある。処理要求には、要求する処理の内容をあらかじめ定められたフォーマットに従って記述した処理手順情報が含まれる。処理手順情報が表す処理は、例えば、個々のコマンドで表される単位的な処理(「タスク」と呼ぶ)が1以上連なった処理フローである。また、処理要求には、処理手順情報が規定する処理の対象となる対象データが含まれていてもよい。対象データは、画像データや、ワードプロセッサや表計算などのアプリケーションで生成された文書データ等、どのようなものであってもよい。また、処理要求には、そのような対象データの実体の代わりに、その実体が格納されたネットワーク上の格納場所を指し示す参照情報が含まれていてもよい。なお、処理要求を発するクライアント装置は、複合機に限られるものではなく、パーソナルコンピュータやファクシミリ装置等といった、情報処理機能を備えた他の種類の装置であってもよい。
このシステムは、多数のジョブ処理部100を有しており、それらジョブ処理部100のうちの一部をユーザに対して提供する。ここで言うユーザは、個人の場合もあれば、企業のような複数の個人を含んだグループの場合もある。例えば、このシステムは、個々のユーザに対してそれぞれ、1以上のジョブ処理部100を含んだ処理グループ110を割り当て、その処理グループ110内の複数のジョブ処理部100により、当該ユーザからの処理要求を分散処理する。各ジョブ処理部100は、それぞれ、自己がどの処理グループ110に属しているかを知っており(例えばジョブ処理部100が起動される際に、所属する処理グループのIDが通知されるなどの方法による)、所属先の処理グループ110に対するジョブを取得して処理する。なお、1ユーザに対して割り当てられる処理グループ110は1つに限らなくてもよい。また、複数の契約者で1つの処理グループを共有するが、複数の契約者間の処理は排他的に行う、いわゆるマルチテナントの処理を行うようにしてもよい。
クライアント装置から本システムに送られてきた処理要求は、ジョブ投入部120により受け取られる。ジョブ投入部120は、受け取った処理要求に含まれる処理手順情報から、本システム内での当該処理要求に対する処理の管理のための「ジョブ」(すなわちジョブは処理要求に対応する処理を表す)を生成し、生成したジョブをジョブ管理部150及びキュー管理部130に登録する。このとき、生成したジョブには、システム内での各ジョブを一意に識別するジョブID(識別子)が付与され、ジョブ管理部150には、そのジョブIDに対応づけて、当該処理要求に含まれていた処理手順情報や対象データ等が登録される。これらの情報は、各ジョブ処理部100がジョブを実行する際に利用される。また、ジョブ管理部150は、各ジョブの実行状態(例えば、未実行、実行中、正常終了、エラー等)の情報をジョブ処理部100等から得て、ジョブIDに対応づけて管理してもよく、この場合、実行状態の情報は要求に応じてクライアント装置に提供される。また、詳細は後述するが、スケールインのために停止対象となったジョブ処理部100から差し戻された実行途中のジョブの途中段階の処理結果のデータ(以下「途中処理結果データ」と呼ぶ)をジョブIDに対応づけて記憶する、途中処理結果記憶部152を有していてもよい。
キュー管理部130は、本システムが受け付けた処理要求に対応するジョブ群の実行順序を、先入れ先出し方式で管理するためのキュー(待ち行列)構造を管理する。本システムでは、キュー構造として、ジョブキュー142、リカバリキュー144、及びスケールインキュー146という3種類のキューを用いる。
ジョブキュー142は、ジョブ投入部120から投入されたジョブを保持するキューである。投入されたジョブはジョブキュー142の末尾に追加され、先入れ先出し方式でジョブキュー142の先頭から取り出され、ジョブ処理部100に提供される。
リカバリキュー144は、スケールイン処理を行うために停止対象とされたジョブ処理部100から差し戻された実行途中のジョブ(詳細は後述)を保持するキューである。投入されたジョブはリカバリキュー144の末尾に追加され、先入れ先出し方式でリカバリキュー144の先頭から取り出され、ジョブ処理部100に提供される。
ジョブキュー142とリカバリキュー144との間には、優劣関係が設定されている。すなわち、本システムでは、リカバリキュー144内のジョブの方がジョブキュー142内のジョブよりも優先して処理される。すなわち、各ジョブ処理部100は、リカバリキュー144内にジョブがある間はリカバリキュー144からジョブを取得し、リカバリキュー144が空になって初めて、ジョブキュー142からジョブを取得する。
この例では、ジョブキュー142及びリカバリキュー144にはジョブIDのみが入れられ、ジョブの実体的なデータや管理情報はジョブ管理部150に保持されるが、このような構成はあくまで例示的なものである。
ジョブキュー142及びリカバリキュー144がジョブを保持するキューであるのに対し、スケールインキュー146は、スケールイン指示(より厳密には、スケールインすべきことを表すあらかじめ定められた指示情報)を保持するキューである。本システムでは、スケールインの必要が生じた際に、あらかじめ定められた数(これが一回のスケールイン動作の際に停止させようとするジョブ処理部の数であり、例えば「1」である)のスケールイン指示が発せられ、そのスケールイン指示がスケールインキュー146に追加される。そして、各ジョブ処理部100は、自律的にスケールインキュー146からのスケールイン指示の取得動作を行い、その結果スケールイン指示を受け取ったジョブ処理部100のみが、スケールインのための停止対象となる。
また、本システムは、上述した3つのキュー142〜146に加え、スケールアウトトピック148と呼ぶ、トピック形式のメッセージ伝達機構も用いる。例えばJMS(Java (登録商標)Message Service)に用意されているように、「キュー」が1つの受け手に対してメッセージを伝達する機構であるのに対し、「トピック」は、関連する複数の受け手に対してメッセージを伝達(同報)する機構である。スケールアウトトピック148には、スケールアウトの必要が生じた際に、スケールアウト指示が入れられる。スケールアウトトピック148に入れられたスケールアウト指示は、当該トピック148に対応する処理グループ110内のすべてのジョブ処理部100により取得される。後で詳しく説明するが、本システムには、キューからジョブを取得(消費)して実行しているいわば現役のジョブ処理部100(以下、「通常稼働」状態のジョブ処理部100という)だけでなく、スケールインのための停止対象となって新たなジョブ消費は停止しているものの既に取得済みのジョブが完了するまでは存在して処理を実行する、いわば退役準備中のジョブ処理部100(以下、「停止準備状態」のジョブ処理部100と呼ぶ)があり、スケールアウトトピック148は後者の停止準備状態のジョブ処理部100を通常稼働状態に復帰させるために用いられる。
なお、本システムでは、このような停止準備状態のジョブ処理部100を通常稼働状態に復帰させる第1段階のスケールアウトの他に、処理グループ110に属するジョブ処理部100を新たに生成する第2段階のスケールアウトも行われる。むしろ、この第2段階のスケールアウトが、一般的な意味でのスケールアウトに該当する。なお、これら2段階のスケールアウトについては、後で詳しく説明する。
本システムでは、キュー管理部130は、処理グループ110毎に、このようなジョブキュー142、リカバリキュー144、スケールインキュー146、及びスケールアウトトピック148を含んだキュー構造140を有している。各ジョブ処理部100は、自己の属する処理グループ110に対応するキュー構造140から、ジョブやスケールイン指示、スケールアウト指示を受け取って処理を実行する。
また、本システムでは、これら各処理グループ110のジョブキュー142に保持されるジョブの数は、ジョブ管理部150にて管理されており、キューへのジョブの追加、及びキューからのジョブの取り出しに応じて随時更新される。なお、このようにジョブ数をジョブ管理部150で管理する代わりに、キュー管理部130で管理してももちろんよい。
本システムは、処理グループ110に属するジョブ処理部100の数を、その処理グループ110の処理負荷に応じて自動的に調整する、オートスケーリング機能を有している。すなわち、本システムでは、処理グループ110の処理負荷が増大すればその増大分に応じてその処理グループ110に対して新たなジョブ処理部100を追加し、処理負荷が減少すればその減少分に応じてその処理グループ110に属するジョブ処理部100を減少させる。これにより、例えば、処理グループ110の応答時間(処理要求を送ってからその結果が得られるまでの時間)をほぼ一定に保つために必要最低限の数のジョブ処理部100が稼働している状態が維持される。稼働させるジョブ処理部100の数が課金に反映される場合等には、このようにサービス品質を維持できる最低限のジョブ処理部100のみを稼働させることが望まれることがある。
本システムのオートスケーリング機能は、監視部160及びオートスケーラー170による中央での管理と、個々のジョブ処理部100によるスケールイン指示及びスケールアウト指示に応じた自律的な動作と、の協働により実現される。
監視部160は、処理グループ110毎に、その処理グループ110をスケールアウト(ジョブ処理部100を増すこと)又はスケールイン(減らすこと)する判断材料となる情報を監視し、その監視の結果に応じてスケールイン又はスケールアウトの要否を判定する。この判断材料の情報は、処理グループ110の処理負荷の量である。そして、その判定の結果に応じて、スケールイン又はスケールアウトの指示をキュー管理部130に送る。このような監視部160の詳細な処理手順の一例を図2に示す。監視部160は、システム内に存在する処理グループ110毎に、図2の手順を実行する(あるいは、処理グループ110毎に、それぞれ専用の監視部160が動作していると考えてもよい)。
図2の手順では、監視部160は、あらかじめ定められた時間間隔で到来するタイミングのような、あらかじめ定められた規則によって決まる監視タイミングの到来を待つ(S10)。監視タイミングが到来すると、監視対象の処理グループ110の処理負荷の指標値を、ジョブ管理部150から取得する(S12)。この指標値は、例えば、当該処理グループ110のジョブキュー142内に存在しているジョブの数である。このジョブ数が多いほど、未処理のジョブが多いということであり、処理グループ110の現状の処理能力(基本的にジョブ処理部100の数が多いほど高くなる)に比して実行すべきジョブの数が多く、新たなジョブが処理グループ110により処理されるまでに時間がかかるという意味で、処理負荷が高いことになる。この例では、監視部160は、監視対象の処理グループ110に対応するジョブキュー142内のジョブ数をジョブ管理部150から取得する。
監視部160は、取得した処理負荷の指標値を、あらかじめ定められたスケールイン閾値と比較(図示例では、指標値がスケールイン閾値未満かどうかを判定)する(S14)。そして、処理負荷の指標値がそのスケールイン閾値よりも低い場合(S14の判定結果がYes)には、監視部160は、監視対象の処理グループ110についてスケールインが必要と判定し、その処理グループ110に対応するスケールインキュー146に、あらかじめ定めた数(例えば1つ)のスケールイン指示を追加する(S16)。スケールインキュー146内のスケールイン指示は、先入れ先出し順に、アクセスしてきた当該処理グループ110内のジョブ処理部100により当該キュー146の先頭から取り出される。
また、処理負荷の指標値がスケールイン閾値以上の場合(S14の判定結果がNo)、監視部160は、その指標値をあらかじめ定められた第1スケールアウト閾値と比較(図示例では、指標値が第1スケールアウト閾値より高いかどうかを判定)する(S18)。ここで用いる第1スケールアウト閾値は、スケールイン閾値以上の値である。そして、処理負荷の指標値が第1スケールアウト閾値よりも高い場合(S18の判定結果がYes)には、監視部160は、監視対象の処理グループ110についてスケールアウトが必要と判定し、その処理グループ110に対応するスケールアウトトピック148にスケールアウト指示を送信する(S20)。スケールアウトトピック148が受け取ったスケールアウト指示は、当該処理グループ110に属するすべてのジョブ処理部100により取得される。(ジョブ処理部100のスケールアウト関連の処理手順については後述する図7参照)。
なお、このスケールアウトトピック148を用いたスケールアウトは、前述した第1段階のスケールアウト、すなわち停止準備状態のジョブ処理部100を通常稼働状態に戻す処理である。例えば、停止準備状態のジョブ処理部100が存在しない場合等のように、この第1段階のスケールアウトで間に合わない(すなわち処理負荷の低減効果が得られない)場合もある。このような場合には、第2段階のスケールアウト(すなわち一般的な意味でのスケールアウト)、すなわち、新たなジョブ処理部100を生成して、スケールアウトの対象の処理グループ110に所属させる処理を行うこととなる。
すなわち、図2の手順では、監視部160は、さらに、監視対象の処理グループ110の処理負荷の指標値を、第1スケールアウト閾値よりも高い第2スケールアウト閾値と比較する(S22)。すなわち、処理グループ110の処理負荷が第1スケールアウト閾値よりも大きくなると第1段階のスケールアウトが行われる(試みられる)が、停止準備中のジョブ処理部100をすべて通常稼働(ジョブ消費)状態に戻しても処理負荷の増大が解消されないと、いずれ処理負荷が第2スケールアウト閾値よりも大きくなり、S22の判定結果がYesとなる。S22の判定結果がYesとなると、監視部160は、オートスケーラー170に対して、当該処理グループ110に対して通常のスケールアウト(すなわち新規のジョブ処理部100をあらかじめ定められた数だけ追加すること)を依頼する(S24)。オートスケーラー170は、ジョブ処理部100群を管理するシステム(例えば仮想マシン群を管理するサーバ)に対してジョブ処理部の生成を指示する生成コマンドを発することにより、仮想マシンとしてのジョブ処理部100を新たに生成する。生成されたジョブ処理部100には、スケールアウト対象であるその処理グループ110のIDが通知(例えば生成コマンドの引数として)される。これにより、その生成されたジョブ処理部100は、その処理グループ110に所属することとなる。すなわち、そのジョブ処理部100は、キュー管理部130にアクセスしたときに、その通知された処理グループ110のIDを提示することで、自己が所属する処理グループ110宛のジョブや各種指示を受け取ることが可能となる。なお、オートスケーラー170が実行する第2段階のスケールアウト処理は、従来のオートスケーラーが行うスケールアウト処理と同様のものである。
処理グループ110の処理負荷が、スケールイン閾値以上、且つ、第1スケールアウト閾値以下の場合は、その処理グループ110についてはスケールインのための処理もスケールアウトのための処理も行われない。
なお、本システムでは、スケールインは監視部160によるスケールイン指示に応じて実現されるので、オートスケーラー170はスケールインのための処理を実行しなくてよい。なお、公知のオートスケーラー170に、この実施形態の監視部160の機能を持たせるようにしてももちろんよい。
以上の説明では、ジョブキュー142内のジョブ数を処理負荷の指標値としたが、この代わりに、ジョブキュー142とリカバリキュー144内のジョブ数との和を処理負荷の指標値として用いてもよい。また、キュー142(及び144)内のジョブ数だけでなく、ジョブ管理部150が管理している処理グループ110に関する他の情報も加味して、その処理グループ110の処理負荷の指標値を求めてもよい。
次に、ジョブ処理部100の動作について説明する。ジョブ処理部100の動作には、ジョブを取得して実行するという基本動作と、スケールインの指示の取得及びその指示に対応する動作と、スケールアウトの指示の取得及びその指示に対応する動作と、が含まれる。以下、それら各動作の流れを順に説明する。
基本動作の処理手順の一例を、図3及び図4に示す。図3の処理はジョブ処理部100がジョブを受け付ける際の処理であり、図4の処理はジョブ処理部100が受け付けたジョブを実行する際の処理である。この例では、ジョブ処理部100は複数のスレッド又はプロセス等を走らせることで複数のジョブを並列に実行することが可能であるとする(ただし、これに限られるものではない。)図3に示すように、ジョブ処理部100は、新たなジョブを受け付け可能な状態になる毎に(S30)、自己の属する処理グループ110に対応するキュー構造140から、新たなジョブを取得する。例えば、当該ジョブ処理部100が同時実行可能な上限ジョブ数よりも、実際に同時実行しているジョブ数が少なくなった場合に、S30で新規ジョブが受け付け可能と判定される。また、別の例では、ジョブ処理部100が、キュー構造140から取得したジョブを入れる自前のキューを有し、そのキューからジョブを順次取得して実行していく構成を有している場合、そのキュー内の実際のジョブ数がそのキューに保持可能なジョブの上限数よりも少ない場合に、新規ジョブが受け付け可能と判定される。
このように新規ジョブが受け付け可能な場合に、ジョブ処理部100は、ジョブキュー142とリカバリキュー144のうちの後者から優先的にジョブを取得する。すなわち、ジョブ処理部100は、S30の判定がYESの場合、まず、当該ジョブ処理部100が所属する処理グループ110(ジョブ処理部100は、自己の属する処理グループ110のIDを有している)のキュー構造140内のリカバリキュー144から、先頭のジョブを取得する(S32)。
S32でリカバリキュー144からジョブ(のID)を取得できた場合(S34の判定結果がYes)、ジョブ処理部100は、ジョブ管理部150から、そのジョブの詳細情報(処理手順情報等)と途中処理結果(及び、その途中処理結果が処理手順内のどのタスクまでの実行結果なのかを示す情報)を取得する(S42)。そして、処理手順情報が示すフローの最初からその途中処理結果の段階までのタスクをスキップ(すなわち実際には実行せずに、それらタスクの実行が済んだものとみなすこと)し、途中処理結果に応じてジョブ処理部100内のそのジョブを実行するスレッド又はプロセス等の内部状態等をセットすることで、そのスレッド等の状態がそのジョブを再開待ち状態の段階となるようにする(S44)。そして、図4の処理に進むことで、スケールインのために別のジョブ処理部100がリカバリキュー144に差し戻したジョブが、この図3の手順を実行している当該ジョブ処理部100により再開されることになる。
リカバリキュー144が空の場合は、リカバリキュー144からジョブが取得できない(S34の判定結果がNo)。この場合に初めて、ジョブ処理部100は、ジョブキュー142から先頭のジョブ(すなわちジョブID)を取得する(S36)。ただし、ジョブキュー142にジョブがない場合は、S36ではジョブを取得できない(S38の判定結果がNO)。この場合は、S30以下の処理を繰り返すことになる。S36でジョブが取得できた場合(S38の判定結果がYes)、ジョブ処理部100は、そのジョブについて図4の処理に進む。
ジョブ処理部100は、図3の受付処理で受け付けたジョブ毎に、図4の処理を実行する。この処理では、S36でジョブキュー142から取得したジョブIDを取得したジョブについては、そのジョブIDに対応するジョブの詳細情報(例えば処理手順情報や対象データ)をジョブ管理部150から取得し、その詳細情報を用いてジョブの実行を開始する(S40)。なお、ジョブキュー142の先頭から取得されたジョブは、そのキュー142から削除される(リカバリキュー144についても同様)。また、S32でリカバリキュー144からジョブIDを取得したジョブについては、S42及びS44でそのジョブ実行状態を再開待ち状態の段階まで進めた状態から、そのジョブの実行を再開する(S40)。
その後、そのジョブの実行が完了するまで(S46)、そのジョブの処理を、処理手順情報に示されるフローに従って、タスクを順に実行していく。この実行の中で、ジョブが中断され、再開待ち状態に入ることがある。例えば、ジョブの中でユーザとの対話処理を行う場合には、ユーザに対して入力画面を提示した後は、ジョブ処理部100は、いったんそのジョブの処理を中断し、そのジョブについて再開待ち状態となり、その入力画面に対してユーザがデータを入力し、入力したデータを送信(すなわち、正しい入力データであると確認)するのを待つことになる。この他にも、例えばユーザからジョブ処理の中断指示を受けた場合やジョブ実行中の障害を検知した場合に、ジョブ処理部100は再開待ち状態になる。本実施形態では、このような再開待ち状態にあるジョブについて、そうでない通常状態のジョブとは異なった取扱をするので、ジョブ処理部100は、実行中のジョブが再開待ちの状態に入ったかどうかを監視する(S48)。再開待ち状態でなければ、S46に戻り、ジョブ完了までフローの処理を進める。
S48でジョブが再開待ち状態に入った場合、ジョブ処理部100は、その再開待ち状態に入った段階でのジョブの処理結果(以下「途中処理結果」と呼ぶ)を保存する(S50)。例えば、ジョブのフロー中に対話処理のタスクがある場合、そのタスクの直前のタスクまでの途中処理結果を保存するのである。また、ユーザの中断指示や障害などでジョブの実行を中断した場合は、その中断までに実行が完了した最後のタスクまでの途中処理結果を保存する。保存する途中処理結果には、対象データについての途中までの処理結果と、再開待ち状態に入った段階での当該ジョブ処理部100の内部状態(例えばそのジョブの実行に用いられる変数の値)等が含まれる。この保存は、後述するスケールイン指示取得時の処理の際に、再開待ちの状態のジョブを、途中処理結果と共にキュー管理部130に差し戻すための準備である。この保存の後、再開待ち状態を解除する再開条件が満たされるのを待つ(S52)。例えば、対話処理のために再開待ち状態に入った場合、対話処理の目的であるユーザからの入力データを受け取ることが再開条件である。再開条件が満たされると(S52の判定結果がYes)、そのジョブの実行を再開し(S54)、S46に戻って、ジョブ完了までフローに従って処理を進めていく。そして、ジョブが完了すると、S40に戻る。この場合、それまで実行していたジョブが1つ完了したので、新規ジョブが実行可能な状態であり、そのような新たなジョブを受け付けていれば、そのジョブの実行が行われる。
次に、ジョブ処理部100のスケールインのための動作の例を、図5及び図6を参照して説明する。
図5に示すように、ジョブ処理部100は、スケールイン確認タイミングであるかをチェックする(S60)。スケールイン確認タイミングは、あらかじめ定められた時間間隔で到来するタイミングまたは、ジョブ処理部100でジョブを開始や終了時のようなジョブの処理量が変化するタイミング等である。このスケールイン確認タイミングが到来すると、ジョブ処理部100は、自分がスケールイン指示を受付可能な状態であるかどうかを判定する(S62)。
ここでこの例では、スケールインが必要となった場合、処理負荷が低いジョブ処理部100を優先的に停止させるために、個々のジョブ処理部100の処理負荷に応じて、当該ジョブ処理部100のスケールイン指示の受付の可否を切り換えている。このための処理手順を、図6に示す。
図6の手順は、例えば定期的に、ジョブ処理部100により実行される。この手順では、当該ジョブ処理部100の処理負荷があらかじめ定められた受付開始閾値より低いかどうかを判定し(S70)、低ければ、自己の状態をスケールイン指示受付可能状態に遷移させる(S72)。ここで、ジョブ処理部100の処理負荷は、例えば、そのジョブ処理部100が現在同時に実行中のジョブの数、当該ジョブ処理部100に割り当てられた計算資源(例えばCPUやメモリ)の現在の使用率、あるいはそれらのうちの2以上から計算される指標値、等により表される。
S70の判定結果がNoの場合、ジョブ処理部100は、自己の処理負荷があらかじめ定められた受付停止閾値よりも高いかどうかを判定し(S74)、高ければ、自己の状態をスケールイン指示受付不可状態に遷移させる(S76)。受付停止閾値には、受付開始閾値よりも高い(より重負荷な)値が設定される。これにより、スケールイン指示受付可能状態とスケールイン指示受付不可状態との間の遷移にヒステリシスがもたらされ、処理不可の微小な変化で状態が頻繁に変化することが防がれる。なお、S74の判定結果がNoの場合は、スケールイン指示受付可否に関する状態が、現在の状態のまま維持される。
図5の手順の説明に戻ると、S62では、このようなスケールイン指示受付可否に関する状態の現在値が、受付可能状態であるか否かが判定されるわけである。
S62の判定結果がYesの場合、ジョブ処理部100は、自分の属する処理グループ110に対応するスケールインキュー146からスケールイン指示を待ち受ける待ち受け状態となる(S64)。この時点でスケールインキュー146が空であれば、スケールイン指示は通知されて来ないのでスケールイン指示は取得できない(S66の判定結果がNo)。この場合は、S60に戻って次の確認タイミングを待つ。
S62の判定結果がNo、すなわち、ジョブ処理部100がスケールイン指示受付不可状態である場合には、当該ジョブ処理部100は現在高負荷なので、スケールインの際の停止対象にはならない。したがって、S64以降の処理は行わず、スケールインキュー146からの通知の待ち受けを停止し、S60に戻って次のスケールイン確認タイミングを待つ。
スケールイン指示を待ち受けているジョブ処理100に対しS66でスケールイン指示が通知された場合、そのジョブ処理部100は、そのスケールイン指示を取得し、停止準備状態に移行する。すなわち、リカバリキュー144及びジョブキュー142内のジョブの消費(取得)を停止し、現在実行中のジョブについてはその処理を続行する(S68)。ただし、このS68では、現在実行中のジョブの中に再開待ち状態のものがあれば、それを所属する処理グループ110のリカバリキュー144に差し戻し(すなわちそのジョブをリカバリキュー144の末尾に追加し)、そのジョブの実行を取りやめる。すなわち、停止準備状態に入ったジョブ処理部100は、スケールイン指示取得時点で再開待ち状態であったジョブについては、処理は続行せず、そのジョブの処理を通常稼働状態にある別のジョブ処理部100に引き継ぐのである。なお、再開待ち状態のジョブのリカバリキュー144への差し戻しの際には、再開待ち状態に入る際に保存した途中処理結果のデータ、及び、その途中処理結果が処理手順内のどのタスクまでの実行結果なのかを示す情報を、当該ジョブのIDに対応づけてジョブ管理部150に登録する。これにより、後でそのジョブをリカバリキュー144からジョブを取得した他のジョブ処理部100は、それら途中処理結果に関する情報を用いて、ジョブの最初からの処理をスキップし、その再開待ち状態に入った段階からジョブを再開する。
S68で停止準備段階に入ると、ジョブ処理部100は、実行中のジョブがすべて処理完了するのを待ち(S70)、それらすべてのジョブの実行が完了すると、自ら(ジョブ処理部100である仮想マシンすなわちインスタンス)を停止する(S72)。これにより、そのジョブ処理部100は存在しなくなり、スケールイン対象の処理グループ110内のジョブ処理部100の数が1つ減ることとなる。以上は、ジョブ処理部100が自ら停止して消滅することができるシステムの場合であったが、そうでない場合には、ジョブ処理部100は、例えばジョブ処理部100の生成、消滅を制御する他の装置(プロセス)に、自らを消すように依頼するなどすればよい。
なお、停止準備状態にあるジョブ処理部100は、図5の処理手順は実行しない。すなわち、既に停止しようとしているジョブ処理部100は、新たなスケールイン指示の対象とはならない。
次に、図7を参照して、ジョブ処理部100のスケールアウトのための動作の例を説明する。
図7の手順では、ジョブ処理部100は、スケールアウトトピック(スケールアウト指示)の到来を待つ(S80)。ここで、ジョブ処理部100は、スケールアウトトピックを常時待ち受けていてもよいし、ある確認タイミング毎(例えばスケールイン確認タイミングと同時)にスケールアウトトピックがあるか確認してもよい。スケールアウトトピックが到来すると、ジョブ処理部100は、自分が停止準備状態であるかどうかを判定する(S82)。停止準備状態でなければ、S80に戻って、スケールアウトトピックを待つ。
S82で自分が停止準備状態であると判定した場合は、ジョブ処理部100は、リカバリキュー144及びジョブキュー142からのジョブの消費(取得)を再開する(S84)。これにより、このジョブ処理部100は、停止準備状態から抜け出し、通常稼働状態に戻ることになる。一方、S82で自分が停止準備状態でない(すなわち通常稼働状態である)と判定した場合は、ジョブ処理部100は、S80で受け取ったスケールアウトトピックを無視し、S80に戻る。
このように、スケールアウト指示を受け取った停止準備状態のジョブ処理部100が通常稼働状態に戻ることで、スケールアウト対象の処理グループ110内の通常稼働状態(すなわちジョブを消費する)ジョブ処理部100の数が増えることになる。
次に、図8〜図10を参照して、本実施形態のシステムの動作の一例を説明する。
図8は、2つのジョブ処理部100(#1及び#2)からなる処理グループ110において、どちらのジョブ処理部#1及び#2にも再開待ち状態のジョブが存在しない時に行われるスケールインの処理の流れを示している。
この例では、(1)監視タイミングが到来すると、監視部160がジョブ管理部150からその処理グループ110の処理負荷の情報(キュー構造140内の待ちジョブ数等)を取得する。(2,3)一方、ジョブ処理部#1及び#2は、それぞれのタイミングで、自分の処理負荷を閾値と比較する。(2.1,3.1)この例では、ジョブ処理部#1及び#2は、共に処理負荷が閾値より小さいのでスケールイン指示受付可能(待ち受け)状態となる。図5の例では、各ジョブ処理部100が確認タイミング毎にキュー管理部130にジョブを取りに行ったが、図8の例では、各ジョブ処理部#1及び#2は、スケールイン指示の待ち受け状態となった旨をキュー管理部130に登録し、キュー管理部130は、スケールイン指示がスケールインキュー146に入れられると、待ち受け状態の登録の先着順に各ジョブ処理部#1又は#2にスケールイン指示を通知するものとする(具体的な実現方法は異なっているが、実現している制御の内容そのものは実質的に同じ)。図8の例では、ジョブ処理部#1の方が先にキュー管理部130に待ち受け状態を登録している。(4)監視部160は、処理グループ110の処理負荷の確認の結果、スケールインが必要と判定すると、キュー管理部130内の当該処理グループ110のスケールインキュー146に対して、この例では1つのスケールイン指示を送信する。(5)スケールイン指示がスケールインキュー146に入れられると、キュー管理部130は、そのスケールイン指示を、待ち受け状態の登録の先着順に、この例ではジョブ処理部#1に対して通知する。スケールインキュー146に入れられたスケールイン指示は1つだけなので、ジョブ処理部#2にはスケールイン指示は通知されない。(6)スケールイン指示を受け取ったジョブ処理部#1は、停止準備状態となり、キュー管理部130からのジョブの消費を停止すると共に、既に取得済みで現在実行中のジョブについてはその処理を続行する。(7)そして、スケールイン指示を受け取った際に実行中であったジョブのうちの最後のものの実行が完了すると、(8)当該ジョブ処理部100のインスタンス自体を停止する。これにより、処理グループ110からジョブ処理部#1が削除され、処理グループ110を構成するジョブ処理部100の数が1つ減る。
図9は、2つのジョブ処理部#1及び#2からなる処理グループ110において、スケールイン指示を受け取ったジョブ処理部#1に再開待ち状態のジョブが存在している場合に行われるスケールインの処理の流れを示している。
図9では省略したが、少なくともジョブ処理部#1はスケールイン指示の待ち受け状態である旨をキュー管理部130に対して登録済みであるとする。(1)監視部160の処理負荷の監視の結果、(2)スケールイン指示がキュー管理部130内のスケールインキュー146に送信されると、(3)キュー管理部130はそのスケールイン指示をジョブ処理部#1に通知する。(4)スケールイン指示を受け取ったジョブ処理部#1は、停止準備状態となり、キュー管理部130からのジョブの消費を停止する。(5)ここで、ジョブ処理部#1は再開待ち状態のジョブを有しており、有するすべての再開待ちジョブをキュー管理部130内のリカバリキュー144に差し戻す。そして、ジョブ処理部#1は、残った現に実行中(すなわち再開待ちでない)のジョブの実行を続行し、それらジョブの実行が完了し次第、(8)自分自身を停止して消滅する。
一方、ジョブ処理部#2はスケールイン指示を受け取っていないので、通常稼働状態のままであり、ジョブの消費を続けている。(6)ジョブ処理部#2は、新たなジョブを取得可能になると、まずリカバリキュー144からジョブ取得を試みるが、このときリカバリキュー144内にはジョブ処理部#1から差し戻された再開待ちのジョブが存在するので、そのジョブを取得することとなる。(7)再開待ちのジョブを取得したジョブ処理部#2は、そのジョブのフローの最初から再開待ちまでのタスクをスキップし、再開待ちの段階から実行を再開する。なお、通常稼働状態のジョブ処理部#2は、リカバリキュー144内にジョブがある間は、リカバリキュー144から優先的にジョブを取得する。
図10は、第1段階及び第2段階のスケールアウトが行われる例を示している。この例のうち(1)〜(4)のイベントは、図9の例における(1)〜(4)と同様である。ここで、図10の例では、停止準備状態となったジョブ処理部#1が消滅する前に、処理グループ110の処理負荷が増大してスケールアウトが必要になった場合を想定している。すなわち、(5)監視部160の処理負荷の監視の結果、処理グループ110の処理負荷が第1スケールアウト閾値より高くなったことが分かると(図2のS18参照)、(6)監視部160はキュー管理部130内のスケールアウトトピック148にスケールアウト指示を送信する。(7)キュー管理部130は、受け取ったスケールアウト指示を、処理グループ110内のすべてのジョブ処理部#1及び#2に同報する。なお、図7の手順のように、各ジョブ処理部100がそれぞれ独自のタイミングで非同期にスケールアウトトピック148からスケールアウト指示を受け取る構成では、各ジョブ処理部#1及び#2がスケールアウト指示を受け取るタイミングは、図示のように同時ではなく、若干の差が出る。(8)ジョブ処理部#1は、停止準備(ジョブ消費停止)中なので、スケールアウト指示を受け取ると、停止準備状態から抜け、ジョブ消費を再開する。一方、ジョブ処理部#2は通常稼働状態のままなので、スケールアウト指示を受け取っても何もしない(すなわち、ジョブの取得及び実行を続行する)。以上の(6)〜(8)が第1段階のスケールアウトである。この第1段階のスケールアウトで、処理グループ110の処理負荷の増大が十分に抑制されないと、(9)処理グループ110の処理負荷が第2スケールアウト閾値を超えることになり、このことが監視部160の監視により検出される(図2のS22参照)。(10)この場合、監視部160は、オートスケーラー170に対してスケールアウト指示を出す。(11)この指示を受け取ったオートスケーラー170は、当該処理グループ内に新規のジョブ処理部100を生成する。これにより、処理グループ110がスケールアウトされる。
以上に説明したように、この実施形態では、スケールインが必要となった場合、あらかじめ定められた個数(例えば1個)のスケールイン指示がスケールインキュー146に入れられる(図2参照)。そして、そのキュー内のスケールイン指示を、スケールイン指示受付可能状態のジョブ処理部100が早い者勝ちで取得し、停止準備状態に入る。この構成により、スケールインが必要と判定される都度、当該あらかじめ定められた数の通常稼働状態のジョブ処理部100がジョブ消費を停止し、停止準備状態となって、実行中のジョブが完了し次第消滅することとなる。
すなわち、この実施形態では、中央の監視部160が個々のジョブ処理部100のジョブ実行状況を監視して停止させるべきジョブ処理部100を特定しなくても、スケールイン指示を受け取ったジョブ処理部100自身が自律的に停止のための準備をし、実行中のすべてのジョブが完了した時点で停止する。本実施形態では、監視部160は、処理グループ110内の個々のジョブ処理部100の処理状況は監視せず、その処理グループ110全体の処理負荷を監視しているに過ぎない。
これに対し、スケールアウト指示に応じた第1段階のスケールアウト処理では、スケールアウト指示はトピックの形で、対象の処理グループ110内のすべてのジョブ処理部100に伝達される。したがって、スケールアウト指示は、停止準備状態のすべてのジョブ処理部100に伝わり、それら停止準備状態のすべてのジョブ処理部100が通常稼働状態に復帰することになる。なお、停止準備状態は過渡的な状態であり、停止準備状態のジョブ処理部100は比較的短時間で既存のジョブの実行を完了して消滅する。したがって、スケールアウト指示が発行された時に処理グループ110内に存在する停止準備状態のジョブ処理部100の数は多くはなく(例えば、1回に発行するスケールイン指示の個数程度と考えられる)、それら停止準備状態のジョブ処理部100がすべて通常稼働状態に復帰したとしても、処理グループ110内のジョブ処理部100の数が突然大幅に増えてしまうということはない。このスケールアウトトピック148を利用した第1段階のスケールアウトは、現に存在している停止準備状態のジョブ処理部100にジョブ消費を再開させるだけの処理なので、新たなジョブ処理部100を生成する通常の(第2段階の)スケールアウト処理よりも反応速度が速い。したがって、処理負荷の増加に素早く反応し、通常稼働状態のジョブ処理部100の数を増やして、キュー構造140内のジョブの消費速度を速め、処理負荷の増加を解消又は緩和する。
また、本実施形態では、この第1段階のスケールアウトでは過剰な処理負荷が解決できない場合には、第2段階のスケールアウト(図2のS24)により新規のジョブ処理部100を生成することで、処理グループ110の処理能力を高める。
また、本実施形態では、スケールイン指示を受け取った停止対象となった(すなわち停止準備状態の)ジョブ処理部100は、再開待ち状態のジョブをリカバリキュー144に差し戻す。この構成により、停止対象となったジョブ処理部100は、いつ再開されるか分からず、従っていつ完了するかも分からない再開待ちのジョブの完了を待つことなく、消滅する。
また、リカバリキュー144に差し戻された再開待ちのジョブは、通常稼働状態のジョブ処理部100により、ジョブキュー142内のジョブよりも優先して実行されるので、再開待ちのジョブの実行順序が、後から投入されたジョブにより追い抜かれてしまう可能性は少ない。
上述の例では、処理グループ110内の通常稼働状態のジョブ処理部100のうち、処理負荷が受付開始閾値よりも低くなってスケールイン指示受付可能状態となっているジョブ処理部100のみが、スケールインキュー146にスケールイン指示を取りに行くが、これは一例に過ぎない。この代わりに、処理グループ110内の通常稼働状態のすべてのジョブ処理部100がスケールイン指示を取りに行くようにしてもよい。ただし、処理負荷が高い(実行中のジョブ数が多いなど)ジョブ処理部100ほど、停止準備状態に入ってから消滅するまでに長い時間がかかるので、上述の例のように処理負荷が高いジョブ処理部100がスケールイン指示を取りに行かないようにした方が、すべてのジョブ処理部100が取りに行く方式よりも、スケールインがより早く実現されることとなる。
以上の説明では省略したが、実施形態の処理システムは、処理グループ110内のジョブ処理部100の数に応じて課金を行う課金処理部を備えていてもよい。
以上に例示した処理システムのうちの管理機能、すなわちジョブ投入部120、キュー管理部130、ジョブ管理部150、監視部160、及びオートスケーラー170を担う部分は、例えば、汎用のコンピュータにそれら各機能モジュールの処理を表すプログラムを実行させることにより実現される。ここで、コンピュータは、例えば、ハードウエアとして、CPU等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)等のメモリ(一次記憶)、HDD(ハードディスクドライブ)を制御するHDDコントローラ、各種I/O(入出力)インタフェース、ローカル・エリア・ネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばI/Oインタフェース経由で、CDやDVDなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがRAMに読み出されCPU等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。なお、それら機能モジュール群のうちの一部又は全部を、専用LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit、特定用途向け集積回路)又はFPGA(Field Programmable Gate Array)等のハードウエア回路として構成してもよい。
また、そのように管理機能を構成するすべての機能モジュールを1つのコンピュータ上に実現する代わりに、それら機能モジュールをネットワークに接続された複数のコンピュータに分散して実装し、それら各コンピュータ間で通信を行うことにより管理機能を実現してももちろんよい。
また、各ジョブ処理部100は、当該管理機能が実装されるコンピュータ、あるいはネットワークに接続された多数のコンピュータの各々に、ジョブ処理部100の上述の機能(処理手順)を記述したプログラムを実行させることにより実現される。
100 ジョブ処理部、110 処理グループ、120 ジョブ投入部、130 キュー管理部、140 キュー構造、142 ジョブキュー、144 リカバリキュー、146 スケールインキュー、148 スケールアウトトピック、150 ジョブ管理部、152 途中処理結果記憶部、160 監視部、170 オートスケーラー。

Claims (10)

  1. 処理グループ宛に到来した処理要求が追加される、当該処理グループに対応づけられた処理要求キューと、
    前記処理グループに属する1以上の処理部であって、新たな処理要求を受け付け可能になったときに、前記処理要求キューから処理要求を取得し、取得した処理要求を処理する1以上の処理部と、
    前記処理グループの処理負荷を監視し、当該監視により前記処理グループの処理負荷があらかじめ定められた縮小閾値より低くなったことがわかった場合、当該処理グループに対してグループ縮小指示を発行する監視部と、
    を備え、
    前記グループ縮小指示が発せられた場合、前記処理グループのうちのあらかじめ定められた数の前記処理部が停止対象となり、停止対象となった前記処理部は、当該処理グループの処理要求キューからの新たな処理要求の取得を停止すると共に、既に取得済みのすべての処理要求の処理が完了すると動作を停止して前記処理グループから外れる、
    ことを特徴とする処理システム。
  2. 前記処理グループに対応づけられたリカバリキューをさらに備え、
    前記停止対象となった前記処理部は、前記既に取得済みの処理要求の中に、処理の中断からの再開待ちの状態である再開待ち状態のものがある場合には、当該再開待ち状態の処理要求を前記リカバリキューに追加することで、当該処理要求を前記既に取得済みの処理要求に該当しないものとみなし、
    前記各処理部は、新たな処理要求を受け付け可能になったときに、前記リカバリキューから優先的に処理要求を取得し、当該リカバリキューに処理要求がない場合に前記処理要求キューから処理要求を取得する、
    ことを特徴とする請求項1に記載の処理システム。
  3. 処理要求の処理の途中段階の処理結果を記憶するための途中結果記憶部、をさらに備え、
    前記停止対象となった前記処理部は、前記再開待ち状態の処理要求についての当該再開待ち状態の段階までの途中の処理結果を、前記リカバリキューに追加した当該処理要求に対応づけて前記途中処理結果記憶部に記憶させ、
    前記各処理部は、前記リカバリキューから処理要求を取得した場合に、当該処理要求に対応づけて前記途中処理結果記憶部に記憶されている途中の処理結果を用いることにより、当該処理要求の処理が前記再開待ち状態の段階まで済んだものとして、当該処理を再開する、
    ことを特徴とする請求項2に記載の処理システム。
  4. 前記監視部は、前記監視により前記処理グループの処理負荷があらかじめ定められた拡大閾値より高くなったことがわかった場合、当該処理グループ内の各処理部に対してグループ拡大指示を発行し、
    前記グループ拡大指示を受け取った各処理部は、自己が停止対象であるがまだ動作の停止に至っていない場合には、自己を停止対象でなくし、前記処理要求キューからの新たな処理要求の取得を再開する、
    ことを特徴とする請求項1〜3のいずれか1項に記載の処理システム。
  5. 前記処理グループに対応づけられた縮小指示キューをさらに備え、
    前記監視部は、前記処理グループに対して発行するグループ縮小指示を、当該処理グループに対応づけられた前記縮小指示キューに追加し、
    前記各処理部は、それぞれ、処理負荷があらかじめ定められた停止対象閾値より低い場合にのみ、前記縮小指示キューからの前記グループ縮小指示の取得動作を行い、この取得動作により前記グループ縮小指示が取得できた場合に、前記停止対象となる、
    ことを特徴とする請求項1〜4のいずれか1項に記載の処理システム。
  6. コンピュータを、
    処理グループ宛に到来した処理要求が追加される、当該処理グループに対応づけられた処理要求キュー、
    前記処理グループに属する1以上の処理部であって、新たな処理要求を受け付け可能になったときに、前記処理要求キューから処理要求を取得し、取得した処理要求を処理する1以上の処理部、
    前記処理グループの処理負荷を監視し、当該監視により前記処理グループの処理負荷があらかじめ定められた縮小閾値より低くなったことがわかった場合、当該処理グループに対してグループ縮小指示を発行する監視部、
    として機能させるためのプログラムであって、
    前記グループ縮小指示が発せられた場合、前記処理グループのうちのあらかじめ定められた数の前記処理部が停止対象となり、停止対象となった前記処理部は、当該処理グループの処理要求キューからの新たな処理要求の取得を停止すると共に、既に取得済みのすべての処理要求の処理が完了すると動作を停止して前記処理グループから外れる、
    ことを特徴とするプログラム。
  7. 前記コンピュータを、前記処理グループに対応づけられたリカバリキューとして更に機能させると共に、
    前記停止対象となった前記処理部は、前記既に取得済みの処理要求の中に、処理の中断からの再開待ちの状態である再開待ち状態のものがある場合には、当該再開待ち状態の処理要求を前記リカバリキューに追加することで、当該処理要求を前記既に取得済みの処理要求に該当しないものとみなし、
    前記各処理部は、新たな処理要求を受け付け可能になったときに、前記リカバリキューから優先的に処理要求を取得し、当該リカバリキューに処理要求がない場合に前記処理要求キューから処理要求を取得する、
    ことを特徴とする請求項6に記載のプログラム。
  8. 前記コンピュータを、処理要求の処理の途中段階の処理結果を記憶するための途中結果記憶部として更に機能させると共に、
    前記停止対象となった前記処理部は、前記再開待ち状態の処理要求についての当該再開待ち状態の段階までの途中の処理結果を、前記リカバリキューに追加した当該処理要求に対応づけて前記途中処理結果記憶部に記憶させ、
    前記各処理部は、前記リカバリキューから処理要求を取得した場合に、当該処理要求に対応づけて前記途中処理結果記憶部に記憶されている途中の処理結果を用いることにより、当該処理要求の処理が前記再開待ち状態の段階まで済んだものとして、当該処理を再開する、
    ことを特徴とする請求項7に記載のプログラム。
  9. 前記監視部は、前記監視により前記処理グループの処理負荷があらかじめ定められた拡大閾値より高くなったことがわかった場合、当該処理グループ内の各処理部に対してグループ拡大指示を発行し、
    前記グループ拡大指示を受け取った各処理部は、自己が停止対象であるがまだ動作の停止に至っていない場合には、自己を停止対象でなくし、前記処理要求キューからの新たな処理要求の取得を再開する、
    ことを特徴とする請求項6〜8のいずれか1項に記載のプログラム。
  10. 前記コンピュータを、前記処理グループに対応づけられた縮小指示キューとして更に機能させると共に、
    前記監視部は、前記処理グループに対して発行するグループ縮小指示を、当該処理グループに対応づけられた前記縮小指示キューに追加し、
    前記各処理部は、それぞれ、処理負荷があらかじめ定められた停止対象閾値より低い場合にのみ、前記縮小指示キューからの前記グループ縮小指示の取得動作を行い、この取得動作により前記グループ縮小指示が取得できた場合に、前記停止対象となる、
    ことを特徴とする請求項6〜9のいずれか1項に記載のプログラム。
JP2012052061A 2012-03-08 2012-03-08 処理システム及びプログラム Pending JP2013186745A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012052061A JP2013186745A (ja) 2012-03-08 2012-03-08 処理システム及びプログラム
US13/554,691 US8826291B2 (en) 2012-03-08 2012-07-20 Processing system
CN201210380229.3A CN103309731B (zh) 2012-03-08 2012-10-09 处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012052061A JP2013186745A (ja) 2012-03-08 2012-03-08 処理システム及びプログラム

Publications (1)

Publication Number Publication Date
JP2013186745A true JP2013186745A (ja) 2013-09-19

Family

ID=49115241

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012052061A Pending JP2013186745A (ja) 2012-03-08 2012-03-08 処理システム及びプログラム

Country Status (3)

Country Link
US (1) US8826291B2 (ja)
JP (1) JP2013186745A (ja)
CN (1) CN103309731B (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014238677A (ja) * 2013-06-06 2014-12-18 富士通株式会社 トランザクション再開プログラム、情報処理装置及びトランザクション再開方法
JP2015075778A (ja) * 2013-10-04 2015-04-20 オリンパス株式会社 負荷分散制御装置
JP2015088093A (ja) * 2013-11-01 2015-05-07 日本電信電話株式会社 システム連携装置、その方法およびプログラム
WO2015145753A1 (ja) * 2014-03-28 2015-10-01 富士通株式会社 プログラム、管理方法およびコンピュータ
JP2016177376A (ja) * 2015-03-18 2016-10-06 富士ゼロックス株式会社 プログラム、情報処理装置及び情報処理方法
JP2016184357A (ja) * 2015-03-26 2016-10-20 富士ゼロックス株式会社 情報処理装置、プログラム及び情報処理方法
JP2017113375A (ja) * 2015-12-25 2017-06-29 株式会社あかつき 情報処理システム、及び情報処理プログラム
JP2018018275A (ja) * 2016-07-27 2018-02-01 富士ゼロックス株式会社 情報処理装置及びプログラム
JP2019021167A (ja) * 2017-07-20 2019-02-07 富士ゼロックス株式会社 情報処理装置および情報処理システム
JP2019519026A (ja) * 2016-04-28 2019-07-04 スノーフレーク インク. マルチクラスタウェアハウス
WO2022269870A1 (ja) * 2021-06-24 2022-12-29 日本電信電話株式会社 リソース動的割り当て装置、リソース動的割り当てプログラム、リソース動的割り当てシステム、および、リソース動的割り当て方法
WO2024004930A1 (ja) * 2022-06-28 2024-01-04 京セラドキュメントソリューションズ株式会社 クラウドシステム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140080058A (ko) * 2012-12-20 2014-06-30 삼성전자주식회사 멀티코어를 위한 로드 밸런싱 방법 및 휴대 단말
US9183049B1 (en) * 2013-01-25 2015-11-10 Amazon Technologies, Inc. Processing content using pipelines
US8813245B1 (en) 2013-01-25 2014-08-19 Amazon Technologies, Inc. Securing content using pipelines
US9223621B1 (en) 2013-01-25 2015-12-29 Amazon Technologies, Inc. Organizing content using pipelines
US9311146B2 (en) * 2013-05-24 2016-04-12 International Business Machines Corporation Strategic placement of jobs for spatial elasticity in a high-performance computing environment
US9594545B2 (en) 2013-06-05 2017-03-14 Splunk Inc. System for displaying notification dependencies between component instances
US8756614B2 (en) 2013-06-05 2014-06-17 Splunk Inc. Central registry for binding features using dynamic pointers
US10061626B2 (en) 2013-06-05 2018-08-28 Splunk Inc. Application framework providing a registry for mapping names to component instances
US8978036B2 (en) 2013-07-29 2015-03-10 Splunk Inc. Dynamic scheduling of tasks for collecting and processing data from external sources
US9246840B2 (en) 2013-12-13 2016-01-26 International Business Machines Corporation Dynamically move heterogeneous cloud resources based on workload analysis
US20150172204A1 (en) * 2013-12-13 2015-06-18 International Business Machines Corporation Dynamically Change Cloud Environment Configurations Based on Moving Workloads
US9495238B2 (en) 2013-12-13 2016-11-15 International Business Machines Corporation Fractional reserve high availability using cloud command interception
JP7135648B2 (ja) * 2018-09-20 2022-09-13 富士フイルムビジネスイノベーション株式会社 中継システム
CN111124254B (zh) * 2018-10-30 2023-09-29 伊姆西Ip控股有限责任公司 调度存储空间回收请求的方法、电子设备和程序产品
CN109669773B (zh) * 2018-11-12 2024-03-08 平安科技(深圳)有限公司 金融数据处理方法、装置、设备和存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3139536B2 (ja) 1997-05-26 2001-03-05 日本電気株式会社 分散バッチジョブ処理システムおよびその障害時におけるジョブの自動再起動方法
JP2002342298A (ja) 2001-05-11 2002-11-29 Fujitsu Ltd クライアント・サーバ型情報処理システム及び並列ロード・バランス方式
JP2004192449A (ja) 2002-12-12 2004-07-08 Toshiba Corp Web型クライアントサーバシステムにおける負荷分散方法、負荷分散システム、および負荷分散プログラム
JP4058038B2 (ja) * 2004-12-22 2008-03-05 株式会社日立製作所 負荷監視装置および負荷監視方法
JP2007041720A (ja) * 2005-08-01 2007-02-15 Fujitsu Ltd ジョブステップ実行プログラムおよびジョブステップ実行方法
JP4107676B2 (ja) 2006-07-21 2008-06-25 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクション引継ぎシステム
JP2009265778A (ja) 2008-04-22 2009-11-12 Dino Co Ltd 仮想化サーバ
WO2009155574A1 (en) * 2008-06-19 2009-12-23 Servicemesh, Inc. Cloud computing gateway, cloud computing hypervisor, and methods for implementing same
US8250215B2 (en) * 2008-08-12 2012-08-21 Sap Ag Method and system for intelligently leveraging cloud computing resources
US8631403B2 (en) * 2010-01-04 2014-01-14 Vmware, Inc. Method and system for managing tasks by dynamically scaling centralized virtual center in virtual infrastructure
US8661120B2 (en) * 2010-09-21 2014-02-25 Amazon Technologies, Inc. Methods and systems for dynamically managing requests for computing capacity
US8667495B1 (en) * 2010-12-29 2014-03-04 Amazon Technologies, Inc. Virtual resource provider with virtual control planes
US8909785B2 (en) * 2011-08-08 2014-12-09 International Business Machines Corporation Smart cloud workload balancer
US20130061220A1 (en) * 2011-09-06 2013-03-07 Xerox Corporation Method for on-demand inter-cloud load provisioning for transient bursts of computing needs
US9372735B2 (en) * 2012-01-09 2016-06-21 Microsoft Technology Licensing, Llc Auto-scaling of pool of virtual machines based on auto-scaling rules of user associated with the pool

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014238677A (ja) * 2013-06-06 2014-12-18 富士通株式会社 トランザクション再開プログラム、情報処理装置及びトランザクション再開方法
JP2015075778A (ja) * 2013-10-04 2015-04-20 オリンパス株式会社 負荷分散制御装置
JP2015088093A (ja) * 2013-11-01 2015-05-07 日本電信電話株式会社 システム連携装置、その方法およびプログラム
WO2015145753A1 (ja) * 2014-03-28 2015-10-01 富士通株式会社 プログラム、管理方法およびコンピュータ
JPWO2015145753A1 (ja) * 2014-03-28 2017-04-13 富士通株式会社 プログラム、管理方法およびコンピュータ
JP2016177376A (ja) * 2015-03-18 2016-10-06 富士ゼロックス株式会社 プログラム、情報処理装置及び情報処理方法
JP2016184357A (ja) * 2015-03-26 2016-10-20 富士ゼロックス株式会社 情報処理装置、プログラム及び情報処理方法
JP2017113375A (ja) * 2015-12-25 2017-06-29 株式会社あかつき 情報処理システム、及び情報処理プログラム
US11630850B2 (en) 2016-04-28 2023-04-18 Snowflake Inc. Multi-cluster warehouse
JP7271059B2 (ja) 2016-04-28 2023-05-11 スノーフレーク インク. マルチクラスタウェアハウス
JP2019519026A (ja) * 2016-04-28 2019-07-04 スノーフレーク インク. マルチクラスタウェアハウス
JP2022069497A (ja) * 2016-04-28 2022-05-11 スノーフレーク インク. マルチクラスタウェアハウス
JP2018018275A (ja) * 2016-07-27 2018-02-01 富士ゼロックス株式会社 情報処理装置及びプログラム
JP2019021167A (ja) * 2017-07-20 2019-02-07 富士ゼロックス株式会社 情報処理装置および情報処理システム
WO2022269870A1 (ja) * 2021-06-24 2022-12-29 日本電信電話株式会社 リソース動的割り当て装置、リソース動的割り当てプログラム、リソース動的割り当てシステム、および、リソース動的割り当て方法
WO2024004930A1 (ja) * 2022-06-28 2024-01-04 京セラドキュメントソリューションズ株式会社 クラウドシステム

Also Published As

Publication number Publication date
US20130239115A1 (en) 2013-09-12
CN103309731A (zh) 2013-09-18
CN103309731B (zh) 2017-12-29
US8826291B2 (en) 2014-09-02

Similar Documents

Publication Publication Date Title
JP2013186745A (ja) 処理システム及びプログラム
US10338962B2 (en) Use of metrics to control throttling and swapping in a message processing system
JP4992408B2 (ja) ジョブ割当プログラム、方法及び装置
JPWO2006100752A1 (ja) 分散処理管理装置、分散処理管理方法、分散処理管理プログラム
JP2010204876A (ja) 分散システム
JP2012064070A (ja) クラウドコンピューティングシステム、クラウドコンピューティングシステムの制御方法、および管理アプリケーション
US10908963B2 (en) Deterministic real time business application processing in a service-oriented architecture
JPWO2018003031A1 (ja) 仮想化管理プログラム、仮想化管理装置および仮想化管理方法
JP4834622B2 (ja) ビジネスプロセス運用管理システム、方法、プロセス運用管理装置およびそのプログラム
JP6939327B2 (ja) プログラム及び情報処理装置
JP2007188212A (ja) マルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラム
US20120303720A1 (en) Rapid notification system
CN115150464B (zh) 应用代理方法、装置、设备及介质
CN115237558A (zh) 一种任务调度方法及装置、系统、存储介质、计算机设备
US11113106B2 (en) Coordinating distributed task execution
JP2014032619A (ja) 情報処理装置、情報処理方法及びプログラム
JP2010182017A (ja) 分散計算機システム、マネージャ引き継ぎ方法及びマネージャ引き継ぎプログラム
JP2014139845A (ja) データ処理システム、そのコンピュータプログラムおよびデータ処理方法
JP2016184357A (ja) 情報処理装置、プログラム及び情報処理方法
JP6477081B2 (ja) プログラム、情報処理装置及び情報処理方法
JP2013134636A (ja) 計算機負荷制御方法
JP2020014105A (ja) 情報処理装置及びプログラム
US10893166B2 (en) Management system, method, and program storage medium
WO2023223599A1 (ja) 計算機システム及びメトリクスの算出方法
JP2008310687A (ja) 情報処理システム、情報処理方法、およびプログラム