JP2014501010A - サーバ側の処理能力を拡張するための方法及び装置 - Google Patents

サーバ側の処理能力を拡張するための方法及び装置 Download PDF

Info

Publication number
JP2014501010A
JP2014501010A JP2013540363A JP2013540363A JP2014501010A JP 2014501010 A JP2014501010 A JP 2014501010A JP 2013540363 A JP2013540363 A JP 2013540363A JP 2013540363 A JP2013540363 A JP 2013540363A JP 2014501010 A JP2014501010 A JP 2014501010A
Authority
JP
Japan
Prior art keywords
clients
tasks
job
server side
task
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
JP2013540363A
Other languages
English (en)
Inventor
チャオ、イー、シン
リー、シン、ホイ
シュエ、ウェイ
リー、リー
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2014501010A publication Critical patent/JP2014501010A/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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】サーバ側の処理能力を拡張するための方法及び装置を提供すること。
【解決手段】サーバ側の処理能力を拡張するための方法は、(a)前記サーバ側からオフロードすべき一のジョブを決定するステップと、(b)前記ジョブを1つ以上のタスクに分割するステップと、(c)1つ以上のクライアントから送信されたHTTP要求に応答して、前記1つ以上のタスクを前記1つ以上のクライアントに割り振るステップと、(d)前記1つ以上のクライアントから送信された前記HTTP要求から、前記1つ以上のタスクに対する前記1つ以上のクライアントの応答を受信するステップを有する。
【選択図】 図4

Description

本発明は、データ処理に係り、さらに詳細に説明すれば、サーバ側の処理能力を拡張するための方法及び装置に係る。
ネットワーク技術及び分散コンピューティング技術のサポートにより、複数のサーバを有するデータ・センタを設置することが可能となり、そして超大規模のデータ処理能力を必要とするアプリケーションが、複数のサーバ間の共同作業を通して実行されるようになってきた。しかし、幾つかの計算については、サーバ側の処理能力だけに依存して、計算動作を完了することができない。そのため、サーバ側の処理能力を拡張するための新しい解決方法を開発することが必要である。
何百万及び何千万ものユーザを有する大きなウェブサイトでは、大量のユーザが照会を同時に行うか又は当該ウェブサイト内のあるデータについて索引を作成する場合、超大規模のデータ処理能力が常に必要となる。一例として、ショッピング・ウェブサイトを使用して、サーバ側の処理能力を拡張することができる解決方法を概説する。ショッピング・ウェブサイトのサーバ側に関する限り、複数のサーバをウェブ・アプリケーション・サーバ及び分析サーバの2つのタイプに分割することができる。これらの両タイプのサーバは、同一の物理ホスト資源を共有する。一般に、ウェブ・アプリケーション・サーバは、フロントエンドのウェブ・サービスをサポートするために必要なアプリケーションを稼働させるために使用される。これに対し、分析サーバは、他の関係する分析機能を提供するために使用される。
図1は、第1の解決方法110に従った、サーバ側113における構成のアーキテクチャ全体図を示す。第1の解決方法110では、ユーザ114の数が比較的少ない場合、比較的少数のサーバをウェブ・サーバ111として割り振り、それ以上のサーバを分析サーバ112として使用することができる。しかし、ユーザの数が増大すると、ウェブ・サーバ側113が負担する負荷が増加し、指数関数的に増加することさえある。このため、増大傾向にあるデマンドに適合するためのより多くのデータ処理能力を提供するように、より多くのハードウェア・サーバをウェブ・サーバ111として購入しなければならない。
図2は、ハードウェア投資を増やさずにサーバ側の処理能力を拡張するための、第2の解決方法120のアーキテクチャ全体図を示す。第2の解決方法120は、サーバ側123におけるそれぞれのサーバ間で機能性を再分割するというものである。例えば、第2の解決方法120によれば、比較的多数のサーバをウェブ・サーバ121として割り当て、比較的少数のサーバを分析サーバ122として割り当てることができる。
前記第1及び第2の解決方法は、ウェブ・サーバ121の資源不足の問題をある程度まで解決することができるであろうが、分析サーバ122の数を減少させると、種々の問題(例えば、分析能力の低下及び過度に長いフィードバック時間)を引き起こすことになろう。このため、切迫した問題は、分析サーバのハードウェア投資を増やさずにサーバ側の処理能力を拡張するためには、他の使用可能な資源をどのように行使すればよいかということである。
従って、至急に要請されているのは、ハードウェア投資を増やさずにサーバ側の処理能力を拡張するための便利で且つ確実な方法を提供することである。さらに要請されているのは、既存のハードウェア及びソフトウェア構成への変更を最小限に留めるとともに、サーバ側の処理能力を展開が容易な態様で拡張することである。
本発明の第1の側面に従って、サーバ側の処理能力を拡張するための方法が提供される。この方法は、(a)前記サーバ側からオフロードすべき一のジョブを決定するステップと、(b)前記ジョブを1つ以上のタスクに分割するステップと、(c)1つ以上のクライアントから送信されたHTTP要求に応答して、前記1つ以上のタスクを前記1つ以上のクライアントに割り振るステップと、(d)前記1つ以上のクライアントから送信された前記HTTP要求から、前記1つ以上のタスクに対する前記1つ以上のクライアントの応答を受信するステップを有する。
前記方法は、前記1つ以上のタスクを実行するための前記1つ以上のクライアントを選択するステップをさらに有する。
前記方法の前記ステップ(a)は、前記サーバ側の現在の負荷レベルを決定するステップと、前記現在の負荷レベルが一のしきい値負荷レベルを超えそうか又は既に当該しきい値負荷レベルを超えていると決定することに応答して、前記サーバ側からオフロードすべき一のジョブを指定するステップを含む。
前記方法の前記ステップ(c)は、前記1つ以上のクライアントの属性に基づき、前記1つ以上のクライアントをグループ化するステップと、1つ以上のグループと適合する1つ以上のタスクを、グループ単位で、前記1つ以上のクライアントに割り振るステップを含む。
本発明の第2の側面に従って、サーバ側の処理能力を拡張するための装置が提供される。この装置は、前記サーバ側からオフロードすべき一のジョブを決定するように構成された決定手段と、前記ジョブを1つ以上のタスクに分割するように構成された分割手段と、1つ以上のクライアントから送信されたHTTP要求に応答して、前記1つ以上のタスクを前記1つ以上のクライアントに割り振るように構成された割り振り手段と、前記1つ以上のクライアントから送信された前記HTTP要求から、前記1つ以上のタスクに対する前記1つ以上のクライアントの応答を受信するように構成された受信手段を備える。
前記装置は、前記1つ以上のタスクを実行するための前記1つ以上のクライアントを選択するように構成された選択手段をさらに備える。
前記装置の前記決定手段は、前記サーバ側の現在の負荷レベルを決定するように構成された決定手段と、前記現在の負荷レベルが一のしきい値負荷レベルを超えそうか又は既に当該しきい値負荷レベルを超えていると決定することに応答して、前記サーバ側からオフロードすべき一のジョブを指定するように構成された指定手段を有する。
前記装置の前記割り振り手段は、前記1つ以上のクライアントの属性に基づき、前記1つ以上のクライアントをグループ化するように構成されたグループ化手段と、1つ以上のグループと適合する1つ以上のタスクを、グループ単位で、前記1つ以上のクライアントに割り当てるように構成された割り当て手段を有する。
本発明は、ハードウェア投資を増やさずにサーバ側の処理能力を便利で且つ確実に拡張するとともに、サーバ側の処理能力を展開が容易な態様で拡張することができるという効果を奏する。
第1の解決方法に従った、サーバ側の構成のアーキテクチャ全体図である。 サーバ側の処理能力を拡張するための、第2の解決方法のアーキテクチャ全体図である。 本発明に従った、サーバ側の処理能力を拡張するためのアーキテクチャ全体図である。 本発明に従った、サーバ側の処理能力を拡張するための方法を示すフローチャートである。 本発明に従った、サーバ側の諸タスクを諸クライアントに割り振るための方法を示すフローチャートである。 本発明に従った、サーバ側の負荷検査フローを示すフローチャートである。 本発明に従った、サーバ側のイベント処理フローを示すフローチャートである。 図7のイベント処理フローのうち新しいクライアントのログオン用の処理フローを示すフローチャートである。 図7のイベント処理フローのうちタスク結果を戻す処理フローを示すフローチャートである。 図7のイベント処理フローのうち一のジョブをオフロードすることを要求する処理フローを示すフローチャートである。 図7のイベント処理フローのうちタスク処理の処理フローを示すフローチャートである。 本発明に従った、サーバ側の処理能力を拡張するための装置を示すブロック図である。
フローチャート及びブロック図内のブロックは、本発明に従った方法及び装置によって実行可能な機能及び動作を示す。この点に関連して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実行するための1つ以上の動作可能命令を保持する、モジュール、プログラム・セグメント又はコード部分を表すことがある。幾つかの代替的実装では、諸ブロック内に表記された機能を図面に示した順序とは異なる順序で実行することができる。例えば、特定の機能性に依存して、連続的に示した2つのブロックを実質的に並列に実行したり、これらのブロックを反対の順序で実行することができる。ブロック図及び/又はフローチャートの各ブロック及び諸ブロックの組み合わせは、指定された機能又は行為を実行する専用のハードウェア・ベースのシステム又は専用ハードウェア及びコンピュータ命令の組み合わせによって実装することができる。
以下、本発明に従った方法の処理フローを、ショッピング・ウェブサイトを使用する一例のみに沿って詳述することにする。しかし、本発明によれば、種々の方法、装置及びコンピュータ・プログラムの実装は、ショッピング・ウェブサイトによって表されるウェブ・ベースのアプリケーションに制限されない点に留意されたい。かかる実装は、他の種々のアプリケーションにおいても行うことができるからである。
一のクライアントは、種々の態様でサーバ側にアクセスすることができる。説明の便宜上、本明細書では、サーバ側によって提供されるウェブ・ページにアクセスするという態様におけるサーバ側への接続だけを説明する。しかし、クライアント側のコンピュータ装置は、他のアプリケーションを通してネットワークを介してサーバ側にアクセスすることができる。例えば、サーバ側は、特定のアプリケーションを通して、又はプラグ・インをインストールすることにより、アクセスすることができる。
本明細書では、クライアントの特定の例として通常のコンピュータ端末を想定し、そして通常のコンピュータ端末がサーバ側によって提供されるウェブ・ページにアクセスするという特定の例を想定するが、クライアントは、データ処理能力を有する種々のコンピュータ端末(例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、パネル・コンピュータ、ワークステーション等)のうち何れかとすることもできる。また、コンピュータ装置の小型化の動向及び処理能力の拡張を考慮すると、クライアントは、ポータブル式のモバイル・コンピュータ装置(例えば、携帯情報端末、インテリジェント電話機及びモバイル端末)とすることもできる。
本発明の実施形態では、ショッピング・ウェブサイト内の分析サーバを想定するが、本発明の実施形態は、この例に制限されるものではなく、その上で稼働中の一のジョブを複数のコンピュータ端末上で実行される複数のタスクに分割することができる、任意のサーバを備えることができる。本明細書で説明するジョブの分割化については、種々の要因(例えば、当該ジョブの緊急度、そのリアルタイム性質、機密性等)を考慮する必要があり、そしてサーバ側に接続されたクライアント上で全てのジョブを実行することが適切であるとは限らない点に留意されたい。本発明の方法を使用することによって、サーバ側に接続された複数のクライアントは、元々サーバ側で実行されると計画されていたタスクを共有することができ、このため、サーバ側の負荷が緩和されることになる。
本発明の一の利点は、一のクライアントに透明な態様でサーバ側の処理能力を拡張するという点にある。例えば、当該クライアントにとっては、割り振られたタスクを受信し且つ処理結果を戻すための専用アプリケーションをインストールすることが不要となる。これに対し、サーバ側は、当該クライアントから送信されたHTTP要求に応答して、一のタスクを当該クライアントに割り振ることができ、このため、サーバにとっては、当該クライアントから送信された前記要求から当該タスクに対する一の応答を受信することだけが必要となる。その上、当該クライアントにとっては、前記タスクを実行するための専用アプリケーションをインストールすることが不要となり、前記割り振られたタスクは、タスク記述式に実装することができる。すなわち、当該クライアントは、タスク記述のみに基づき、前記割り振られたタスクを実装することができる。
図3は、本発明に従った、サーバ側230の処理能力を拡張するためのアーキテクチャ全体図200を示す。サーバ側230の資源(例えば、分析サーバ220)が不足している場合、サーバ側230の全体的なデータ処理能力を改良するために、分析サーバ220に接続されたクライアントの処理能力を共同的(collaboratively)に利用することができる。
図1及び図2に示した解決方法とは異なり、図3のアーキテクチャでは、一のユーザ240が使用するクライアントと分析サーバ220との間の対話は、当該クライアントがデータを要求し且つ分析サーバ220からデータを受信するという通常の動作に制限されない。すなわち、当該クライアントは、分析サーバ220によって割り振られたタスク及びそれに関係する処理すべきデータを受信し、タスク記述に基づいて当該処理すべきデータを処理した後、その処理結果を分析サーバ220に戻すように動作する。このため、サーバ側230は、それ自体のジョブを適切なサイズの諸タスクに分割することを通して、これらのタスク及びそれに関係する処理すべきデータを資格のある諸クライアントに割り振り、そしてこれらのクライアントから処理結果を受信する。その結果、ユーザ240の諸クライアントは、元々分析サーバ220自体によって実行されると計画されていたジョブの一部を共有することになる。
以下、図4〜図12を参照して、本発明に従った方法及び装置の処理フローを説明する。図4は、サーバ側の処理能力を拡張するための方法を示すフローチャート300である。この方法のステップS302では、サーバ側からオフロードすべき一のジョブを決定する。ここで、「オフロード」動作とは、一般に、元々サーバ側のコンピュータ装置によって実行すべきであった一のジョブを、実行のために他のコンピュータ装置に対し再割り当てするプロセスを意味するものとする。かかるオフロードされたジョブは、サーバ側に割り振られたばかりでまだ実行されていない新しいジョブであるか、又は実行中であるがサーバ側が過度に重い負荷が有するために、他のコンピュータ装置が共有しなければならないジョブとすることができる。オフロードすべき一のジョブを決定する場合には、種々の要因(例えば、サーバ側の現在の負荷、サーバ側の処理能力、当該ジョブの機密性、当該ジョブの応答時間等)を考慮することができる。例えば、高い機密性を有し且つ最大のリアルタイム応答を必要とする一のジョブをサーバ側で優先的に実行するように考慮し、低い機密性及び応答時間に関する低い要件を有する一のジョブをクライアントが実行するためにオフロードするように選択することができる。
ステップS304では、ステップS302で決定されたジョブを、1つ以上のタスクに分割する。サーバ側は、所定の規則に基づいて当該ジョブを分割することができる。例えば、分割中に、諸タスクの粒度を決定し、これらのタスクに対応する処理すべきデータを決定することができる。諸クライアントの計算能力及び諸クライアントとサーバ側との間のネットワーク接続状態のような諸要因に基づき、諸クライアントに割り振られる諸タスクは、一般により細かな粒度を有し、そしてサーバ側が少なくとも1つのクライアントからの応答を受信することを保証するように、冗長機構(例えば、一の同じタスクを複数のクライアントに割り振ること)を採用することが必要とされる点に留意されたい。一のジョブを分割する場合、各タスクは異なる粒度を有し、各タスクに対応する処理すべきデータは異なるサイズを有することができる。
ステップS306では、1つ以上のクライアントから送信されたHTTP要求に応答して、1つ以上のタスクを当該1つ以上のクライアントに割り振る。異なる割り当てポリシーをセットすることができる点に留意されたい。例えば、1つのクライアントが1つのタスクだけを同時に実行することができ、当該タスクが完了し且つタスク実行結果をサーバ側にサブミットした後にだけ、次のタスクを取得することができるように制限することが可能であり、或いは1つのクライアントが同じジョブからの複数のタスクを同時に実行することができるか、又は一のクライアントが異なるジョブからの複数のタスクを実行することができるように制限することが可能である。タスク割り振りは、クライアントから送信されたHTTP要求に応答して実行される。例えば、サーバ側が一のクライアントのログオンを検出する場合、サーバ側は、タスク割り振り動作を行うことができる。当該クライアントがログオンの後にサーバ側への接続を維持する限り、諸タスクを当該クライアントに割り振ることができる。当該クライアントが一のタスクを完了した後、サーバ側は、それ自体のポリシーに基づき、他の1つ以上のタスクを当該クライアントに割り振るか、又は当該クライアントにタスクをもはや割り振らないであろう。当該クライアントがサーバ側とのその接続を切断する(例えば、ウェブ・ページを閉じる)場合、サーバ側は、当該クライアントにタスクをもはや割り振らないであろう。さらに、当該クライアントは、異なるデータ・センタ内の諸サーバから複数のタスクを受信することができる。
次に、ステップS308では、1つ以上のクライアントから送信された1つ以上のHTTP要求から、1つ以上のタスクに対する当該1つ以上のクライアントの応答を受信する。本発明に従って、当該クライアントが応答を有さないという例外状況を処理することがさらに含まれる。ステップS306及びS308では、タスク割り振り及び当該タスクに対する一のクライアントの応答の受信は、諸クライアントの既存の構成を変更することなく、何れもHTTP要求の態様で実装される。
本発明に従って、サーバ側(例えば、データ・センタ)において、1つ以上のタスクを実行するための1つ以上のクライアントを選択するステップがさらに含まれる。何百万ものクライアントがサーバ側に接続されている状況が存在し得るから、この選択ステップの目的は、このタスクをより適時に且つ正確に完了するように、使用可能な諸クライアントから当該タスクを実行するのに適切なクライアントを選択することである。諸クライアントの属性は、諸タスクを実行するのに適切なクライアントを選択するための、フィルタ基準として使用することができる。本発明では、より高度のハードウェア構成、より軽い負荷及びより良いネットワーク接続条件を有する諸クライアントを選択することができる。或いは、選択をランダムに行うか、又は現在サーバ側にアクセス中の全てのクライアントを使用することができる。
サーバ側からオフロードすべき一のジョブを決定するステップS302は、サーバ側の現在の負荷レベルを決定することと、当該現在の負荷レベルが一のしきい値負荷レベルを超えそうか又は既に当該しきい値負荷レベルを超えていると決定することに応答して、サーバ側からオフロードすべき一のジョブを指定することを含む。
オフロードすることが必要な一のジョブを決定する場合、サーバ側は、先ずそれ自体の現在の負荷を検査することができる。もし、サーバ側の現在の負荷が比較的小さければ、新しいジョブをサーバ側で完全に実行することができる。一方、サーバ側の現在の負荷が全負荷に接近していれば、当該ジョブの一部を実行のためにサーバ側のホストに割り当て且つ残りの一部を諸クライアントに割り当てるか、又は当該ジョブの全体を実行のために諸クライアントに割り振ることができる。さらに、ジョブ実行プロセス中に、現在の負荷レベルがしきい値負荷レベルに接近するか又は既に超過したことをサーバ側が検出する場合、サーバ側で実行中のジョブをサーバ側から除去し、これをさらに1つ以上のタスクに分割した後、当該1つ以上のタスクを実行するように1つ以上のクライアントを割り当てることができる。
次に、図5を参照して、サーバ側の諸タスクを諸クライアントに割り振るための方法のフローチャート400を説明する。ステップS402では、1つ以上のクライアントを、それらの属性に基づいてグループ化する。このグループ化は、サーバ側に接続された諸クライアントの共通の性質を考慮することができる。すなわち、同一の属性を有する諸クライアントは、対応する一のグループにグループ化され、また諸タスクを割り振る場合、諸クライアントによって実行するのにより適切な諸タスクを選択することができる。
諸クライアントの諸属性は、諸クライアントの処理能力、諸クライアントの現在の負荷、諸クライアントの応答時間、諸クライアントの信頼度(confidence degree)、諸クライアントからサーバ側までの経路指定条件、諸クライアントのタスク完了履歴及び諸クライアントとサーバ側との間の契約のうちの1つ以上を含むことができる。
本発明の着想は、諸クライアントの処理能力を共同的に利用することである。この共同的態様は、ユーザに対し透明なものとすることができる。すなわち、ユーザからの多くの手動的関与を必要としないか、又は諸クライアントのアプリケーションを変更することを必要としない。例えば、サーバ側と諸クライアントとの間で処理能力共有契約を締結して、サーバ側は、一のタスクを諸クライアントに割り振ることを約束し、諸クライアントは、当該タスクを実行し且つその処理結果をサーバ側に戻すことを約束することができる。かかる契約に合意した後、諸クライアントは、サーバ側から割り振られたタスクを受信し、その後の動作を行うことができる。異なるビジネス運用モデルに従って、諸クライアントの処理能力を共同的に共有することを他の態様で実装することができるが、そのような運用プロセスに関係するビジネス・モデル及び法的問題については、ここでは触れないことにする。
グループ単位で、当該グループと適合する1つ以上のタスクを、1つ以上のクライアントに割り当てることができる。例えば、より強力な処理能力を有する諸クライアントを1つのグループにセットして、より高度の処理能力を必要とする諸タスクを当該グループ内の諸クライアントに割り振ることができる。例えば、それらのクライアントには、高度の計算力及び重い計算負荷を有する一のタスクを割り振るか、又はより大きなサイズを有する処理すべきデータ・ブロックを割り振ることができる。他の例について説明すると、過去の経験から幾つかのクライアントの応答時間が非常に短いことが分かっている場合、これらのクライアントを1つのグループに分類し、応答時間についてより高いデマンドを有する一のタスクをこのグループに割り振ることができる。さらに他の例について説明すると、幾つかのクライアントのジョブ完了の履歴から、以前のタスクのそれらの完了レートが非常に高いことが分かっている場合、これらのクライアントを1つのグループに分類し、諸タスクをこのグループに優先的に割り振ることができる。諸クライアントは、サーバ側と諸クライアントとの間の異なるサービス契約に基づき、異なるグループに分割することができる。例えば、諸クライアントが夜間(例えば、00:00〜06:00)におけるそれら自体の計算能力を提供することに合意し、そして当該クライアントがこの期間中にサーバ側に接続されるということを保証する場合、サーバ側は、同様の状況を有する諸クライアントを同じグループに分割するとともに、夜間においてこのグループ内のクライアントに対し諸タスクを連続的に割り振ることができる。
1つ以上のタスクを1つ以上のクライアントに割り振るステップS306(図4)は、1つ以上のクライアントがサーバ側にログオンすることに応答して、当該1つ以上のタスクに対応するタスク記述及び処理すべきデータを当該1つ以上のクライアントに送信することを含む。諸タスクを諸クライアントに割り振ることは、当該クライアントがサーバ側に接続されていることを条件とする点に留意されたい。例えば、一のクライアントがサーバ側の一のページにアクセスしている場合、一のタスクを当該クライアントに割り振ることができ、そして当該クライアントがサーバ側への接続を維持している期間中、サーバ側は、当該クライアントの処理能力を活用することができる。但し、当該クライアントが当該ページを離れた後は、当該クライアントの処理能力を活用することはできない。クライアントは、ウェブ・ベースの態様でサーバ側にアクセスすることができる点に留意されたい。このウェブ態様には、広い意味を与えるべきである。この態様は、サーバ側にアクセスすることにより提供されるウェブ・ページを含むだけでなく、既に存在しているか又は将来に開発されるであろう種々の種類のウェブ・ベースのアクセス態様を含む。サービス契約に従って、一のタスクは、諸クライアントがサーバ側にログオンする期間中に、当該クライアントに割り振ることができる。
本発明の一の利点は、新しいアプリケーションをクライアント上に追加的にインストールすることなく、諸クライアントの計算能力を活用することができるという点にある。というのは、当該タスクを割り振る間に、当該タスクに対応する一のタスク記述及び処理すべきデータを諸クライアントに送信することができるからである。従って、諸クライアントは、受信したタスク記述を使用して、処理すべきデータを処理することができる。このタスク記述は、入力データ記述、出力データ記述及び処理アルゴリズム又はその記述のうちの1つ以上を含むことができる。
例えば、ショッピング・ウェブサイトの一のログがトランザクションのより小さな各要素(例えば、特定の時間に販売された商品の数、当該商品の単価)の諸レコードだけを記録するというシナリオにおいて、一のジョブが最大の単一トランザクションの量及び対応する商品の名称を計算することを意図するものであると仮定すると、このジョブは、次のように分割することができる。
前記ログが諸トランザクション・レコードの10,000個の要素(piece)を記録したものと仮定すると、例えば、これらのレコードを、1,000個のデータ・セグメントに分割し、そして一のデータ・セグメントにおける最大の単一トランザクションの量を計算するタスクを、各クライアントに割り振る(一のクライアント・グループをセットした場合には、当該タスクは当該クライアント・グループにも割り振ることができる)。この場合、一のタスク記述及び対応する処理すべきデータを、諸クライアント(又は諸クライアント・グループ)に送信する。当該クライアント・グループを考慮することなく、サーバ側は、当該タスクを1,000個のクライアントに送信することができる。一方、処理すべきデータの各要素は、諸トランザクション・レコードの10個の要素を含む、一のデータ・セグメントとすることができる。クライアントの信頼度及びネットワーク条件のような要因を考慮して、信頼度を拡張することができる他の割り振り態様も採用することができる。その特定の例については、以下で詳述する。
本発明に従って、タスク記述は、次の通りとすることができる。
{入力データ:諸トランザクション・レコードの10個の要素を含む。
但し、諸データ・レコードの各要素は、
商品名:a;販売された商品の量:b;及び商品の単価:c;を含む。
出力データ:最大の単一トランザクションの量,商品名;
アルゴリズム:最大の単一トランザクションの量=b×c,商品名=a}
前記タスク記述を受信した各クライアントは、諸トランザクション・レコードの10個の要素について処理結果を計算するために、前記アルゴリズムを採用することができる。このアルゴリズムは、スクリプト技術(例えば、AJAX技術)で、又は諸クライアントによって直接的に又は間接的に実行することができる他のプログラムで記述することができる。サーバ側が1,000個のクライアントから戻された処理結果、例えば、2タプル(最大の単一トランザクションの量、商品名)を受信する場合、諸レコード・ログの10,000個の要素内のデータを1つずつ比較することなく、1,000個の2タプルから「最大の単一トランザクションの量」を有する一の2タプルを選択することだけが必要となるに過ぎない。
一のジョブを1つ以上のタスクに分割するステップS302(図4)は、所定の規則に基づいて行われる。この規則は、当該タスクの粒度、当該ジョブの計算負荷、当該ジョブの優先順位、当該ジョブの機密性等のうちの少なくとも1つに関係する。例えば、当該ジョブの計算負荷が重い場合、当該ジョブを比較的軽い計算負荷を有するより多くのタスクに分割することができる。その結果、諸クライアントは、各タスクを比較的短い時間内に完了し、その処理結果をサーバ側にできるだけ早く戻すことができる。例えば、最高優先順位を有する一のジョブを優先的に処理することを考慮する場合、その分割後に、対応する諸タスクは、高い処理能力及び早い応答時間を有し且つより高い信頼度を有する諸クライアントに割り振られる。例えば、一のジョブの機密性に基づき、より高い機密性を有する当該ジョブをより少数のタスクに分割し、これらのタスクを実行のためにより高い信頼度を有する諸クライアントに割り振るようにすれば、当該タスク割り振り及び結果回復プロセス中に不法に侵入されるというリスクを減少させることができる。
諸タスクの粒度は、以前のタスク実行におけるクライアントの経験に基づき、動的にセットすることができる。例えば、以前のタスク実行プロセス中に、過度に粗いタスクの粒度に起因して、多数のクライアントが所定の応答時間内に処理結果を得ることができない場合は、その後、より細かいタスクの粒度をセットすることができ、逆も同様である。タスクの粒度をセットする場合、諸クライアントの属性をさらに考慮することができる。一のジョブについては、その分割中に、複数のタスクの粒度をセットすることができる。すなわち、そのジョブを、異なるサイズを有する複数のタスクに分割し、対応するタスクを異なるクライアント及び/又はクライアント・グループに割り振ることができる。
本発明に従って、1つ以上のタスクに対する1つ以上のクライアントの応答に基づき、一のジョブの少なくとも一部の処理結果を生成するステップがさらに含まれる。ここで、当該生成するプロセスは、処理結果を取得するために複数のクライアントからの諸応答を集約することを意味する。例えば、最大の単一トランザクションの量及びショッピング・ウェブサイトの対応する商品名の計算中に、サーバ側は、1,000個のクライアントからの処理結果、例えば、1,000個の2タプル(最大の単一トランザクションの量、商品名)を受信した後、「最大の単一トランザクションの量」を有する一の2タプルを選択する。
さらに、サーバ側から一のジョブの一部のみをオフロードする場合(例えば、サーバ側が、諸ログ・レコードの5,000個の要素における「最大の単一トランザクションの量」を計算しているのに対し、諸クライアントが諸ログ・レコードの他の5,000個の要素を処理している場合)、タスク分割の態様が変わらなければ、サーバ側は、500個のクライアントからの応答(すなわち、500個の2タプル)に基づき、当該ジョブの少なくとも一部(すなわち、諸ログ・レコードの5,000個の要素)の処理結果のみを生成することを必要とするに過ぎない。
一のジョブの少なくとも一部の処理結果を生成するステップは、1つ以上のクライアントからの応答の信頼度を取得するステップと、当該信頼度に基づき、当該ジョブの少なくとも一部の処理結果を提供するステップをさらに含む。最終結果の信頼度を保証する方法に関する原理は、以上で簡潔に説明した。以下、特定の動作フローを詳述する。
本発明の着想は、諸クライアントがインターネットを介してサーバ側に常時接続されている間に、諸クライアントの処理能力を共同的に利用することにあるから、サーバ側から割り振られた諸タスクを受信する諸クライアントは、絶えず変わることがある。その結果、当該ジョブの最終処理結果の信頼度は、それぞれのクライアントからの諸処理結果の信頼度を保証することによってのみ保証することができる。
諸クライアントからの諸応答の信頼度は、整合性(consistency)を決定する態様で推定することができる。例えば、一のタスク及びその対応する処理すべきデータは、少なくとも1つのクライアントが処理結果を戻すことを保証するように、複数のクライアントに送信することができる。一の同じタスク及びこれに対応する処理すべきデータに対する複数のクライアントからの処理結果を(例えば、これらの処理結果の整合性を分析することによって)包括的に比較し、前記複数の処理結果と整合する一の処理結果を選択することができる。一のタスクを、一のクライアント・グループに割り振ることができる。一の同じタスクを複数のクライアント・グループに割り振る場合は、複数のグループからの処理結果の整合性を比較し、比較的高い整合性を有する一の処理結果を選択する。本発明に従って、複数の処理結果を「平均する」ための方法を採用することもできる。ここで、「平均する」は、単純な数学的平均値解法を意味するのではなく、複数のクライアントからの諸処理結果に基づき、最も信頼度の高い結果を取得するプロセスを意味する。
他の例について説明する。諸クライアントからの諸応答を使用することにより、一のジョブの少なくとも一部の処理結果を生成する場合、最終処理結果が履歴上の経験的な値、既存の標準及び常識の何れかと一致しなければ、諸クライアントからのこれらの応答を廃棄することができる。サーバ側自体の処理能力に基づき、又はより信頼度の高い諸クライアントを選択することにより、諸タスクの再割り振りが行われる。本発明に従って、一のタスクを諸クライアントに割り振るための全ての動作は、一のタスクをクライアント・グループに割り振るためにも適切である点に留意されたい。本発明に従って、一のジョブを異なる粒度に従って異なる複数セットのタスクに分割し、当該複数セットのタスクを処理のために異なるクライアント・グループに割り振り、そして当該グループからの処理結果を比較して信頼度を決定することができる。
以上では、図3〜図5を参照して、諸タスクをサーバ側の諸クライアントに割り振るための方法を説明した。以下では、図6〜図11を参照して、サーバ側における処理を詳述する。
図6及び図7は、サーバ側の処理を示すフローチャートである。具体的には、図6は、サーバ側の負荷検査フロー510を示す。サーバ側が過度に重い負荷を有している場合は、ジョブの一部をサーバ側から「オフロード」して、これを諸クライアントによって実行することを保証するように、サーバ側の現在の負荷を所定の時間インターバル内に検査することが必要となる。図6のステップS512では、サーバ側の現在の負荷を検査し、ステップS514では、一の規則を照会する。ここでは、当該規則とは、サーバ側の処理能力用の負荷しきい値のような、サーバ側から一のジョブをオフロードするために必要とされる諸条件をセットする所定の規則であって、どのジョブを優先的にオフロードすることができるか、どのジョブがオフロードすることに適さないか等を指定するものである点に留意されたい。さらに、この規則は、サーバ側のジョブ完了状態に応じて動的に変わるか、又は管理者によって経験的にセットすることができる。
ステップS516では、サーバ側から一のジョブをオフロードすることが必要であるか否かを決定する。当該ジョブをオフロードすることが必要であれば、ステップS518に進み、そこで一のオフロード要求を送信する。当該ジョブをオフロードすることが不要であれば、ステップS520に進む。ステップS520は、次の検査用のインターバルを制御する。例えば、一のインターバル制御タイマをセットし、当該タイマが期限切れとなる場合、次のラウンドの負荷検査を行うためにステップS512を反復することができる。ステップS518の後は、ステップS520に進み、そこで次の検査を待機する。ステップS512〜S520は、反復的な実行プロセスである。サーバ側が稼働状態にある限り、このプロセスを実行することにより、サーバ側の現在の負荷に基づき、諸クライアントの処理能力を活用することが必要であるか否かを決定する。
次に、図7を参照して説明する。図7は、サーバ側のイベント処理フロー530を示す。図6の負荷検査プロセスのように、図7のイベント処理フロー530は、サーバ側の稼働期間中に反復的に実行される動作である。説明の便宜上、記号「A」は、各ラウンドのイベント処理の出発点を表し、記号「B」は、各ラウンドのイベント処理の終了点を表すものとする。図7では、5ステップの全部が出発点「A」から開始し、終了点「B」で終了するように示されているが、このことは、各ラウンド中にこれらの5ステップを厳密に並列に実行しなければならないことを意味しない。すなわち、これらの5ステップは、対応するイベントの発生に応答して異なる時間インターバル中に実行してもよく、またこれらの5ステップのうち2つ以上のステップを同時に実行してもよいからである。
図7に示すように、このプロセスの実行中、サーバ側は、次のイベントを処理しなければならない。
S532:新しいクライアントがログオン
S534:ジョブのオフロードを要求
S536:タスク処理
S538:タスク結果を戻す
S540:タイムアウト。
一ラウンドの処理に関する限り、ステップS534からステップS538の間は、ステップS534〜S538を順次に実行することができる。しかし、異なるラウンドについては、ステップS534〜S538の実行は、必ずしも順次的な関係を有しておらず、またこれらのステップを厳密に並行に実行する必要はない。例えば、ステップS534を実行している間、他のステップS536を実行してもよいし、他のタスクのためのステップS538を実行してもよい。
ステップS540は、サーバが一のタスクを諸クライアントに割り振ったが、所定の期間内に予期された戻り結果を受信することができないというシナリオのための処理である。サーバ側が一のタイムアウト・イベントの発生を検出する場合、その処理は、次のものを含むことができる。
1)タスク完了状態に関する統計を更新すること。タイムアウト状態にある諸タスクは完了しないから、当該タイムアウト・タスクを「未終了」とマークすること、すなわち、それぞれのタスクの完了状態を更新することが必要となる。
2)一のタスクをタスク・リストに追加すること。「未完了」タスクについては、これらのタスクを処理のために諸クライアントに再割り振りすることが必要である。この再割り振りは、以下で詳述するステップS536に類似する。
3)使用可能なグループをマークすること。タイムアウトの後は、一のタスクの実行がタイムアウトで終わるグループは、アイドル状態にある。従って、このグループは、他の割り振り済みタスクを実行するように、「使用可能」としてマークすることができる。
以下、図8〜図11を参照して、他のイベントの処理フローを説明する。これらの図面における記号「A」及び「B」は、図7に示すような各ラウンドのイベント処理の出発点及び終了点をそれぞれ表す。
図8は、図7に示すような新しいクライアント・ログオンの処理フローS532の詳細を示す。このラウンドの動作中、ステップS610で、新しいクライアント・ログオン・イベントの発生に応答して、当該クライアントに関する情報を取得する。この情報は、当該クライアントの属性(例えば、当該クライアントの処理能力、当該クライアントの現在の負荷、当該クライアントの応答時間、当該クライアントの信頼度、当該クライアントからサーバ側までの経路指定条件、当該クライアントのタスク完了履歴、当該クライアントとサーバ側との間の契約、又は当該クライアントに関連する他の情報)とすることができる。次に、ステップS612で、一の規則を照会する。ここの規則は、諸クライアントをグループ化するための規則である。例えば、特定のタイプの諸クライアントのための一のグループが既に存在しているというケースでは、この規則は、どんな属性を有するかということに基づいて諸クライアントをこのグループに追加することに関する規則とすることができる。
ステップS614では、当該クライアントを当該クライアント・グループに追加すべきか否かを決定する。当該クライアントを当該クライアント・グループに追加することが不要であれば、ステップS624に進み、そこで当該クライアントを無視する。新しいクライアント・ログオン・イベント処理のこのラウンドが終了し、そして動作フローは、他のイベントを待機するように継続する。ステップS614の決定結果が「Yes」であれば、ステップS616に進み、そこでグループ・リストを検査する。次に、ステップS618では、当該クライアントを一の新しいグループに追加すべきか否かを決定する。その決定結果が「Yes」であれば、ステップS626に進み、そこで一の新しいグループを作成する。さもなければ、ステップS620に進み、そこで当該クライアントを既存のクライアント・グループに追加する。次のステップS622では、当該クライアント・グループ・リストを更新し、その後、このラウンドのイベント処理が終了する。新しいグループを作成するステップS626及び当該クライアントを既存のクライアント・グループに追加するステップS620は、ステップS610及びステップS612で取得されたクライアント情報及び規則に基づいて行われる。
図9は、図7に示すような一のジョブをオフロードすることを要求する処理フローS534の詳細を示す。このラウンドの動作中、ステップS630で、一のジョブをオフロードすることを要求するイベントの発生に応答して、一の規則を照会する。この規則は、どのタイプのジョブをオフロードすることができるか、どのタイプのジョブをオフロードすることができないか、そしてオフロード可能な複数のジョブが同時に存在する場合の優先順位等を指定する。次のステップS632では、一のジョブの完了状態を検査し、ステップS634では、諸タスクの粒度を調整することが必要であるか否かを決定する。諸タスクの粒度を調整することが不要であれば、ステップS640に進み、そこで当該タスクを一のタスク・リストに追加する。一方、諸タスクの粒度を調整することが必要であれば、ステップS636に進み、そこで当該タスクの粒度をリセットする。諸タスクの粒度は、以前のタスク実行における一のクライアントの経験に基づき、動的にセットすることができる。次のステップS640では、当該タスクは、図7に示すようなタスク処理プロセスS536によってスケジュールすべき、タスク・リストに追加される。この点で、一のジョブをオフロードすることを要求するイベントのための処理が終了し、そして本プロセスは他のイベントを待機する状態に入る。
図10は、図7に示すようなタスク処理の処理フローS536の詳細を示す。このタスク処理イベントのための動作は、本発明に従った重要な動作フローであり、クライアントの処理能力を共同的に活用するようにサーバ側を制御するための主要なプロセス・フローである点に留意されたい。
このラウンドの動作中、ステップS650で、タスク処理のイベントの発生に応答して、クライアント・グループのリストを検査し、ステップS652では、新しいクライアント・グループを使用すべきか否かを決定する。その決定結果が「Yes」であれば、ステップS654に進み、そこで諸タスクを当該グループ内の諸クライアントに割り振る。一方、ステップS652の決定結果が「No」であれば、ステップS662に進み、そこで使用可能な一のグループが存在するか否かを決定する。ステップS662の決定結果が「No」であれば、ステップS664に進み、そこで一のログを記録し且つサーバ側のイベント・スケジューラに対し現在使用可能なグループは存在しないことを報告する。ステップS654の後、ステップS656では、諸レコードを更新し、ステップS658では、当該クライアント・グループの占有をマークし、ステップS660では、処理されている当該タスクのための一のタイマを開始する。この点で、タスク処理イベントのための処理が終了する。ステップS660のタイマは、図11のステップS680に示すようなタイマである点に留意されたい。図10のタスク処理フローのステップS660は、当該タイマを開始するための出発点であるのに対し、図11のタスク結果を戻すフローのステップS680は、当該タイマが停止するための終了点である。これらの開始及び終了ステップは、異なるイベント処理フロー内で実行されるが、同じタスクに関する限り、これらの2つの動作は、当該クライアント・グループが当該タスク上の処理を完了し且つその処理結果を所定の時間内にサーバに戻したか否かを示すように同じタイマをセットすべきものである。当該タスクを前記所定の時間内に完了しない場合には、図7のステップS540に示すように対応するタイムアウト動作が呼び出される。
図11は、図7に示すようなタスク結果を戻す処理フローS538の詳細を示す。このラウンドの動作中、ステップS670では、新しいクライアント・ログオンというイベントの発生に応答して、一のタスク・リストを検査する。当該タスク・リストは、当該ジョブが分割される諸タスクについての情報(例えば、当該タスクと当該ジョブとの対応関係、当該タスクの現在の状態(例えば、まだ割り振られていない、割り振り済み、完了済み)、当該クライアント・グループと当該クライアント・グループ内の一のクライアントとの対応関係)を維持することができる。ステップS672では、一のタスク結果を戻すことに関連する一の規則を照会し、ステップS674では、前述の整合性を分析する方法又は他の方法によって当該処理結果の信頼度が十分に高いか否かを決定する。
ステップS674の決定結果が「No」(すなわち、信頼できない)であれば、ステップS684に進み、そこで当該処理結果を保存し、ステップS686では、処理結果の量を更新した後、このイベントのための処理が終了する。ステップS674の決定結果が「Yes」(すなわち、信頼できる)であれば、ステップ676に進み、タスク完了をマークし、ステップ678では、当該クライアント・グループが使用可能であることをマークし、ステップS680では、関連するタイマを停止する。このタイマは、一のタスク実行がタイムアウトであるか否かを決定する点に留意されたい。このタイマがタイムアウトし且つ当該処理結果がまだ求められていない場合は、図7のステップS540に示するようなタイムアウト・イベントが生成される。ステップS680の後、タスク結果を戻すための処理が終了している場合は、ステップS682で、タスク完了状態を更新し、そして本プロセスは他のイベントを待機する状態に入る。
図12は、本発明に従った、サーバ側の処理能力を拡張するための装置のブロック図1200を示す。図12の左側ブロックに示すように、この装置は、サーバ側からオフロードすべき一のジョブを決定するための決定手段710と、当該ジョブを1つ以上のタスクに分割するための分割手段720と、1つ以上のクライアントから送信されたHTTP要求に応答して、当該1つ以上のタスクを当該1つ以上のクライアントに割り振るための割り振り手段740と、当該1つ以上のクライアントから送信されたHTTP要求から、当該1つ以上のタスクに対する当該1つ以上のクライアントの応答を受信するための受信手段750を備える。
前記装置は、前記1つ以上のタスクを実行するためにサーバ側で前記1つ以上のクライアントを選択するための選択手段730をさらに備えることができる。
前記装置は、諸決定(例えば、サーバ側から一のジョブをオフロードすること、前記ジョブを諸タスクに分割すること、諸タスクを諸クライアントに割り振ること、諸クライアントからの諸応答に基づき前記ジョブの少なくとも一部の処理結果を生成すること、諸クライアントを諸グループに分類すること)に関係する種類の規則を格納するための規則ベース760をさらに備えることができる。図12では、規則ベース760をサーバ側に設置するように示しているが、前記装置が規則ベース760にアクセスし且つそこから一の規則を取得することができる限り、実際上、規則ベース760をサーバ側の外部にある任意のデータ・ストレージ手段内に設置することができる。
図12の右側には、クライアント・グループ及び対応する諸クライアントが示されている。サーバ側は、それ自体の負荷を共有するために、これらのクライアント・グループ及び対応する諸クライアントを使用することができる。例えば、クライアント・グループ1(772)はM個のクライアントを含み、一方、クライアント・グループK(772)はN個のクライアントを含む。
図12の装置が、決定手段710によって決定されたオフロードすべきジョブについて稼働するとき、分割手段720は、そのジョブを1つ以上のタスクに分割する。その後、割り振り手段740は、分割手段720による分割から取得された諸タスクを対応するクライアント・グループにそれぞれ割り振る。また、受信手段750は、それぞれのクライアント・グループから生成された諸応答を受信し、前記ジョブの少なくとも一部について一の処理結果を生成する。この動作プロセス中、それぞれの手段は、それ自体の動作を制御するために規則ベース760から諸規則を読み取ることができる。
決定手段710は、サーバ側の現在の負荷レベルを決定するための決定手段と、前記現在の負荷レベルが一のしきい値負荷レベルを超えそうか又は既に当該しきい値負荷レベルを超えていると決定することに応答して、サーバ側からオフロードすべき前記ジョブを指定するための指定手段を有する。
割り振り手段740は、前記1つ以上のクライアントの属性に基づき、前記1つ以上のクライアントをグループ化するためのグループ化手段と、前記グループと適合する一のタスクを、グループ単位で、前記1つ以上のクライアントに割り当てるための割り当て手段を有する。
前記1つ以上のクライアントの前記属性は、前記1つ以上のクライアントの処理能力、前記1つ以上のクライアントの現在の負荷、前記1つ以上のクライアントの応答時間、前記1つ以上のクライアントの信頼度、前記1つ以上のクライアントから前記サーバ側までの経路指定条件、前記1つ以上のクライアントのタスク完了履歴及び前記1つ以上のクライアントと前記サーバ側との間の契約のうちの1つ以上を含む。
割り振り手段740は、前記1つ以上のクライアントが前記サーバ側にログオンすることに応答して、前記1つ以上のタスクに対応するタスク記述及び処理すべきデータを前記1つ以上のクライアントに送信するための送信手段を有する。
前記タスク記述は、入力データ記述、出力データ記述及び処理アルゴリズム又はその記述のうちの1つ以上を含む。
分割手段720は、前記ジョブの計算負荷、前記ジョブの優先順位、前記ジョブの機密性及び前記タスクの粒度のうちの少なくとも1つに関係する所定の規則に基づいて動作する。
前記タスクの粒度は、以前のタスクを実行する際のクライアントの経験に基づいて動的にセットされる。
サーバ側の処理能力を拡張するための前記装置は、前記1つ以上のタスクに対する前記1つ以上のクライアントの応答に基づき、前記ジョブの少なくとも一部の処理結果を生成するための生成手段をさらに備える。
前記生成手段は、前記1つ以上のクライアントからの応答の信頼度を取得するための取得手段と、前記信頼度に基づき、前記ジョブの少なくとも一部の処理結果を提供するための提供手段を有する。
サーバ側の処理能力を拡張するための前記装置内の種々の手段は、図面には詳細に示していないが、当業者は、本明細書の開示に基づきこれらの手段を実装することができる点に留意されたい。さらに、図12に示されている各手段及び図12に示されていない他の手段は、サーバ側の1つ以上のサーバ又は1つ以上の他の専用装置内に設置することができる。本発明の諸実施形態は、サーバ側の処理能力を拡張するための前記装置の物理位置を制限しないから、この装置を構成する各手段は、本明細書に開示した諸機能を全体として実装することができる限り、任意の適当な物理デバイス内に集合的に又は分散的に設置することができる。
以上では、図1〜図12を参照して、本発明に従った、サーバ側の処理能力を拡張するための方法及び装置を説明した。しかし、本明細書において提示したショッピング・ウェブサイトの例や、これらの例における特定のウェブサイト・レコード・ログの態様は、本発明の動作原理を説明するための単なる例であるに過ぎない点に留意されたい。サーバ側及びクライアントにおけるセッティングの相違に基づき、本発明の原理から逸脱することなく、他の態様で実装することができる。サーバ側の処理能力を拡張するための方法において、MapReduce アーキテクチャを採用することができる。
本発明は、ハードウェア実施形態、ソフトウェア実施形態又はハードウェア及びソフトウェア要素の両方を含む実施形態の形式を取ることができる。好ましい実施形態では、本発明は、(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)ソフトウェアとして実装される。
さらに、本発明は、コンピュータ又は任意の命令実行システムによって或いはそれらに関連して使用するためのプログラム・コードを提供するコンピュータ使用可能媒体又はコンピュータ可読媒体からアクセス可能なコンピュータ・プログラムとして実装することができる。この点に関連して、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置又はデバイスによってあるいはそれらに関連して使用するためのプログラムを保持し、格納し、通信し、伝播し又は搬送することができる任意の有形的手段とすることができる。
かかる媒体は、電子的、磁気的、光学的、電磁的、赤外線、又は半導体システム(装置又はデバイス)或いは伝播媒体とすることができる。コンピュータ可読媒体の例は、半導体又は固体ストレージ・デバイス、磁気テープ、取り外し可能なフレキシブル・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、固定磁気ディスク及び光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク・リード・オンリ・メモリ(CD−ROM)、コンパクト・ディスク・リード/ライト(CD−R/W)及びDVDを含む。
プログラム・コードを格納又は実行するのに適したデータ処理システムは、メモリ要素に直接的に結合されるか又はシステム・バスを通してメモリ要素に間接的に結合された少なくとも1つのプロセッサを含むであろう。かかるメモリ要素は、プログラム・コードの実際の実行中に使用されるローカル・メモリと、大容量ストレージ、及び実行中にコードが大容量ストレージから検索されなければならない回数を減らすために、プログラム・コードの一時的ストレージを提供するキャッシュとを含む。
I/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス等を含む)は、直接的に又はI/Oコントローラを介してシステムに結合することができる。
また、ネットワーク・アダプタをデータ処理システムに結合すると、当該データ処理システムを、プライベート・ネットワーク又は公衆ネットワークを介して、他のデータ処理システム、リモート・プリンタ、ストレージ・デバイス等に結合することができる。モデム、ケーブル・モデム及びイーサネット(登録商標)カードは、現時点で使用可能なタイプのネットワーク・アダプタである。
前述の説明から理解されるように、本発明の精神から逸脱することなく、本発明のそれぞれの実施形態に対し修正又は変形を施すことができる。本明細書の説明は、例示を目的としたものであって、本発明を制限するものではない。本発明の範囲は、添付の特許請求の範囲における請求項の記載のみによって制限される。
111、121、210・・・ウェブ・サーバ
112、122、220・・・分析サーバ
113、123、230・・・サーバ側
114、124、240・・・ユーザ
710・・・決定手段
720・・・分割手段
730・・・選択手段
740・・・割り振り手段
750・・・受信手段
760・・・規則ベース
771・・・クライアント・グループ1
772・・・クライアント・グループK

Claims (22)

  1. サーバ側の処理能力を拡張するための方法であって、
    (a)前記サーバ側からオフロードすべき一のジョブを決定するステップと、
    (b)前記ジョブを1つ以上のタスクに分割するステップと、
    (c)1つ以上のクライアントから送信されたHTTP要求に応答して、前記1つ以上のタスクを前記1つ以上のクライアントに割り振るステップと、
    (d)前記1つ以上のクライアントから送信された前記HTTP要求から、前記1つ以上のタスクに対する前記1つ以上のクライアントの応答を受信するステップを有する、方法。
  2. 前記1つ以上のタスクを実行するための前記1つ以上のクライアントを選択するステップをさらに有する、請求項1に記載の方法。
  3. 前記ステップ(a)が、
    前記サーバ側の現在の負荷レベルを決定するステップと、
    前記現在の負荷レベルがしきい値負荷レベルを超えそうか又は既に当該しきい値負荷レベルを超えていると決定することに応答して、前記サーバ側からオフロードすべき一のジョブを指定するステップを含む、請求項1に記載の方法。
  4. 前記ステップ(c)が、
    前記1つ以上のクライアントの属性に基づき、前記1つ以上のクライアントをグループ化するステップと、
    1つ以上のグループと適合する1つ以上のタスクを、グループ単位で、前記1つ以上のクライアントに割り当てるステップを含む、請求項1ないし請求項3の何れか1項に記載の方法。
  5. 前記1つ以上のクライアントの前記属性が、
    前記1つ以上のクライアントの処理能力、前記1つ以上のクライアントの現在の負荷、前記1つ以上のクライアントの応答時間、前記1つ以上のクライアントの信頼度、前記1つ以上のクライアントから前記サーバ側までの経路指定条件、前記1つ以上のクライアントのタスク完了履歴及び前記1つ以上のクライアントと前記サーバ側との間の契約のうちの1つ以上を含む、請求項4に記載の方法。
  6. 前記ステップ(c)が、
    前記1つ以上のクライアントが前記サーバ側にログオンすることに応答して、前記1つ以上のタスクに対応するタスク記述及び処理すべきデータを前記1つ以上のクライアントに送信するステップを含む、請求項1ないし請求項3の何れか1項に記載の方法。
  7. 前記タスク記述が、
    入力データ記述、出力データ記述及び処理アルゴリズム又はその記述のうちの1つ以上を含む、請求項6に記載の方法。
  8. 前記ステップ(a)が、
    前記ジョブの計算負荷、前記ジョブの優先順位、前記ジョブの機密性及び前記タスクの粒度のうちの少なくとも1つに関係する所定の規則に基づいて実行される、請求項1ないし請求項3の何れか1項に記載の方法。
  9. 前記タスクの粒度が、
    以前のタスクを実行する際のクライアントの経験に基づいて動的にセットされる、請求項8に記載の方法。
  10. 前記1つ以上のタスクに対する前記1つ以上のクライアントの応答に基づき、前記ジョブの少なくとも一部の処理結果を生成するステップをさらに有する、請求項1ないし請求項3の何れか1項に記載の方法。
  11. 前記生成するステップが、
    前記1つ以上のクライアントからの応答の信頼度を取得するステップと、
    前記信頼度に基づき、前記ジョブの少なくとも一部の処理結果を提供するステップを含む、請求項10に記載の方法。
  12. サーバ側の処理能力を拡張するための装置であって、
    前記サーバ側からオフロードすべき一のジョブを決定するように構成された決定手段と、
    前記ジョブを1つ以上のタスクに分割するように構成された分割手段と、
    1つ以上のクライアントから送信されたHTTP要求に応答して、前記1つ以上のタスクを前記1つ以上のクライアントに割り振るように構成された割り振り手段と、
    前記1つ以上のクライアントから送信された前記HTTP要求から、前記1つ以上のタスクに対する前記1つ以上のクライアントの応答を受信するように構成された受信手段を備える、装置。
  13. 前記1つ以上のタスクを実行するための前記1つ以上のクライアントを選択するように構成された選択手段をさらに備える、請求項12に記載の装置。
  14. 前記決定手段が、
    前記サーバ側の現在の負荷レベルを決定するように構成された決定手段と、
    前記現在の負荷レベルがしきい値負荷レベルを超えそうか又は既に当該しきい値負荷レベルを超えていると決定することに応答して、前記サーバ側からオフロードすべき一のジョブを指定するように構成された指定手段を有する、請求項12に記載の装置。
  15. 前記割り振り手段が、
    前記1つ以上のクライアントの属性に基づき、前記1つ以上のクライアントをグループ化するように構成されたグループ化手段と、
    1つ以上のグループと適合する1つ以上のタスクを、グループ単位で、前記1つ以上のクライアントに割り当てるように構成された割り当て手段を有する、請求項12ないし請求項14の何れか1項に記載の装置。
  16. 前記1つ以上のクライアントの前記属性が、
    前記1つ以上のクライアントの処理能力、前記1つ以上のクライアントの現在の負荷、前記1つ以上のクライアントの応答時間、前記1つ以上のクライアントの信頼度、前記1つ以上のクライアントから前記サーバ側までの経路指定条件、前記1つ以上のクライアントのタスク完了履歴及び前記1つ以上のクライアントと前記サーバ側との間の契約のうちの1つ以上を含む、請求項15に記載の装置。
  17. 前記割り振り手段が、
    前記1つ以上のクライアントが前記サーバ側にログオンすることに応答して、前記1つ以上のタスクに対応するタスク記述及び処理すべきデータを前記1つ以上のクライアントに送信するように構成された送信手段を有する、請求項12ないし請求項14の何れか1項に記載の装置。
  18. 前記タスク記述が、
    入力データ記述、出力データ記述及び処理アルゴリズム又はその記述のうちの1つ以上を含む、請求項17に記載の装置。
  19. 前記分割手段が、
    前記ジョブの計算負荷、前記ジョブの優先順位、前記ジョブの機密性及び前記タスクの粒度のうちの少なくとも1つに関係する所定の規則に基づいて動作する、請求項12ないし請求項14の何れか1項に記載の装置。
  20. 前記タスクの粒度が、
    以前のタスクを実行する際のクライアントの経験に基づいて動的にセットされる、請求項19に記載の装置。
  21. 前記1つ以上のタスクに対する前記1つ以上のクライアントの応答に基づき、前記ジョブの少なくとも一部の処理結果を生成するように構成された生成手段をさらに備える、請求項12ないし請求項14の何れか1項に記載の装置。
  22. 前記生成手段が、
    前記1つ以上のクライアントからの応答の信頼度を取得するように構成された取得手段と、
    前記信頼度に基づき、前記ジョブの少なくとも一部の処理結果を提供するように構成された提供手段を有する、請求項21に記載の装置。
JP2013540363A 2010-11-29 2011-11-24 サーバ側の処理能力を拡張するための方法及び装置 Pending JP2014501010A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201010577023.0A CN102480512B (zh) 2010-11-29 2010-11-29 用于扩展服务器端处理能力的方法和装置
CN201010577023.0 2010-11-29
PCT/EP2011/070936 WO2012072486A1 (en) 2010-11-29 2011-11-24 Extending processing capacity of server side

Publications (1)

Publication Number Publication Date
JP2014501010A true JP2014501010A (ja) 2014-01-16

Family

ID=45420574

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013540363A Pending JP2014501010A (ja) 2010-11-29 2011-11-24 サーバ側の処理能力を拡張するための方法及び装置

Country Status (6)

Country Link
US (1) US9531636B2 (ja)
JP (1) JP2014501010A (ja)
CN (1) CN102480512B (ja)
DE (1) DE112011103369B4 (ja)
GB (1) GB2499549B (ja)
WO (1) WO2012072486A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021060026A1 (ja) * 2019-09-26 2021-04-01 株式会社デンソー 車載情報処理システム、車載機器及び車載情報処理プログラム
KR20220022807A (ko) * 2020-08-19 2022-02-28 서울대학교산학협력단 모바일 엣지 컴퓨팅 환경에서의 태스크 분할 오프로딩 방법 및 장치

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9313087B2 (en) 2013-01-29 2016-04-12 Stg Interactive, S.A. Distributed computing architecture
CN104468638B (zh) * 2013-09-12 2018-04-03 北大方正集团有限公司 一种分布式数据处理方法及系统
US9959142B2 (en) * 2014-06-17 2018-05-01 Mediatek Inc. Dynamic task scheduling method for dispatching sub-tasks to computing devices of heterogeneous computing system and related computer readable medium
US9465645B1 (en) 2014-06-25 2016-10-11 Amazon Technologies, Inc. Managing backlogged tasks
CN104318381A (zh) * 2014-10-21 2015-01-28 中国建设银行股份有限公司 一种后台审核任务分发方法和装置
US9894185B2 (en) * 2014-12-16 2018-02-13 Software Ag System and method for condition-based application logic shifting between a client and a server
US10366358B1 (en) 2014-12-19 2019-07-30 Amazon Technologies, Inc. Backlogged computing work exchange
CN105786463A (zh) * 2014-12-24 2016-07-20 北京奇虎科技有限公司 任务处理方法和系统、及电子设备
US10419401B2 (en) 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
CN105847356A (zh) * 2016-03-23 2016-08-10 上海爱数信息技术股份有限公司 通信系统、电子设备、数据处理方法及系统
WO2017166119A1 (en) * 2016-03-30 2017-10-05 Intel Corporation Adaptive workload distribution for network of video processors
CN106600220A (zh) * 2016-11-29 2017-04-26 叶飞 一种分布式计算方法
US10951521B2 (en) * 2017-09-01 2021-03-16 Maxlinear, Inc. Method for scheduling a computational task, a method for processing a computational task, a computer readable storage medium, a computer program, a residential gateway, and a server
CN107544940A (zh) * 2017-09-06 2018-01-05 深圳市金蝶精斗云网络科技有限公司 一种web的计算方法及装置
CN107979876B (zh) * 2017-11-16 2022-01-07 广州市百果园网络科技有限公司 数据传输方法及终端
CN108762907B (zh) * 2018-05-31 2021-11-02 口口相传(北京)网络技术有限公司 基于多个客户端的任务处理方法及系统
CN110933132A (zh) * 2019-10-25 2020-03-27 中国环境监测总站 数据处理服务器及数据处理系统
KR20210067468A (ko) * 2019-11-29 2021-06-08 삼성전자주식회사 무선 통신 시스템에서 데이터를 오프로딩하기 위한 방법 및 장치

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000242614A (ja) * 1999-02-22 2000-09-08 Nippon Steel Corp 分散処理システムおよびその方法、分散処理を行うための端末装置および記録媒体
US20020019844A1 (en) * 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
US6418462B1 (en) * 1999-01-07 2002-07-09 Yongyong Xu Global sideband service distributed computing method
JP2003515807A (ja) * 1999-11-29 2003-05-07 グラクソ グループ リミテッド ネットワーク化された1以上のコンピュータの余剰の処理能力を用いて複雑な科学的問題を解決するためのスレッドベースの方法及びシステム
JP2006244146A (ja) * 2005-03-03 2006-09-14 Canon Inc コンテンツ管理システム
US20080030764A1 (en) * 2006-07-27 2008-02-07 Microsoft Corporation Server parallel aggregation
JP2008071294A (ja) * 2006-09-15 2008-03-27 Korea Univ Industrial & Academic Collaboration Foundation ピアツーピアグリッド演算環境におけるモバイルエージェントによる適応グループスケジューリングのための方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153326A (ja) * 1997-07-30 1999-02-26 Internatl Business Mach Corp <Ibm> 分散処理システム、クライアントノード、サーバノードおよび分散処理方法
CA2352807A1 (en) * 1999-08-26 2001-03-01 Sean Cier System and method for the establishment and utilization of networked idle computational processing power
US7797368B1 (en) * 2000-11-17 2010-09-14 Intel Corporation Managing a network of consumer-use computing devices
US20020091752A1 (en) 2001-01-09 2002-07-11 Firlie Bradley M. Distributed computing
CN1292346C (zh) * 2003-09-12 2006-12-27 国际商业机器公司 用于在分布式计算体系结构中执行作业的系统和方法
US20050268151A1 (en) 2004-04-28 2005-12-01 Nokia, Inc. System and method for maximizing connectivity during network failures in a cluster system
JP2005352697A (ja) * 2004-06-09 2005-12-22 Canon Inc コンピュータシステム、及び該システムにおけるジョブの割り当て方法
US20060080678A1 (en) * 2004-09-07 2006-04-13 Bailey Mark W Task distribution method for protecting servers and tasks in a distributed system
US7774195B2 (en) 2005-03-08 2010-08-10 Microsoft Corporation Method and system for creating, storing, managing and consuming culture specific data
US7739314B2 (en) 2005-08-15 2010-06-15 Google Inc. Scalable user clustering based on set similarity
US8332479B2 (en) 2005-08-26 2012-12-11 Hewlett-Packard Development Company, L.P. Enterprise application server system and method
US8307366B2 (en) * 2006-03-30 2012-11-06 Apple Inc. Post-processing phase in a distributed processing system using assignment information
US8380880B2 (en) 2007-02-02 2013-02-19 The Mathworks, Inc. Scalable architecture
JP5251002B2 (ja) * 2007-05-25 2013-07-31 富士通株式会社 分散処理プログラム、分散処理方法、分散処理装置、および分散処理システム
US8108864B2 (en) * 2007-06-01 2012-01-31 International Business Machines Corporation Method and system for dynamically tracking arbitrary task dependencies on computers in a grid environment
US8250215B2 (en) 2008-08-12 2012-08-21 Sap Ag Method and system for intelligently leveraging cloud computing resources
US7917463B2 (en) 2008-10-10 2011-03-29 Business.Com, Inc. System and method for data warehousing and analytics on a distributed file system
US7987262B2 (en) 2008-11-19 2011-07-26 Accenture Global Services Limited Cloud computing assessment tool
TW201025065A (en) 2008-12-29 2010-07-01 Lei Wang Expandable secure server alternate system
WO2010102084A2 (en) 2009-03-05 2010-09-10 Coach Wei System and method for performance acceleration, data protection, disaster recovery and on-demand scaling of computer applications

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6418462B1 (en) * 1999-01-07 2002-07-09 Yongyong Xu Global sideband service distributed computing method
JP2000242614A (ja) * 1999-02-22 2000-09-08 Nippon Steel Corp 分散処理システムおよびその方法、分散処理を行うための端末装置および記録媒体
JP2003515807A (ja) * 1999-11-29 2003-05-07 グラクソ グループ リミテッド ネットワーク化された1以上のコンピュータの余剰の処理能力を用いて複雑な科学的問題を解決するためのスレッドベースの方法及びシステム
US20020019844A1 (en) * 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
JP2006244146A (ja) * 2005-03-03 2006-09-14 Canon Inc コンテンツ管理システム
US20080030764A1 (en) * 2006-07-27 2008-02-07 Microsoft Corporation Server parallel aggregation
JP2008071294A (ja) * 2006-09-15 2008-03-27 Korea Univ Industrial & Academic Collaboration Foundation ピアツーピアグリッド演算環境におけるモバイルエージェントによる適応グループスケジューリングのための方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021060026A1 (ja) * 2019-09-26 2021-04-01 株式会社デンソー 車載情報処理システム、車載機器及び車載情報処理プログラム
JP2021051665A (ja) * 2019-09-26 2021-04-01 株式会社デンソー 車載情報処理システム、車載機器及び車載情報処理プログラム
JP7192730B2 (ja) 2019-09-26 2022-12-20 株式会社デンソー 車載情報処理システム、携帯通信端末及び車載情報処理プログラム
KR20220022807A (ko) * 2020-08-19 2022-02-28 서울대학교산학협력단 모바일 엣지 컴퓨팅 환경에서의 태스크 분할 오프로딩 방법 및 장치
KR102387246B1 (ko) * 2020-08-19 2022-04-15 서울대학교산학협력단 모바일 엣지 컴퓨팅 환경에서의 태스크 분할 오프로딩 방법 및 장치

Also Published As

Publication number Publication date
CN102480512A (zh) 2012-05-30
US9531636B2 (en) 2016-12-27
GB2499549A (en) 2013-08-21
DE112011103369B4 (de) 2020-07-23
DE112011103369T5 (de) 2013-07-18
GB201309675D0 (en) 2013-07-17
CN102480512B (zh) 2015-08-12
WO2012072486A1 (en) 2012-06-07
US20140025828A1 (en) 2014-01-23
GB2499549B (en) 2017-08-02

Similar Documents

Publication Publication Date Title
JP2014501010A (ja) サーバ側の処理能力を拡張するための方法及び装置
JP7138126B2 (ja) リソース配置を最適化するための適時性リソース移行
US11487760B2 (en) Query plan management associated with a shared pool of configurable computing resources
US20200364608A1 (en) Communicating in a federated learning environment
US9852035B2 (en) High availability dynamic restart priority calculator
US8996890B2 (en) Method for power conservation in virtualized environments
US9363154B2 (en) Prediction-based provisioning planning for cloud environments
JP5600277B2 (ja) クラウドサービス再配置システムと方法およびプログラム
US10783002B1 (en) Cost determination of a service call
US8429165B1 (en) Systems and methods of partitioning data for synchronous parallel processing
US10616134B1 (en) Prioritizing resource hosts for resource placement
WO2016103471A1 (ja) 計算機システムおよび管理プログラム
US10754368B1 (en) Method and system for load balancing backup resources
US20230055511A1 (en) Optimizing clustered filesystem lock ordering in multi-gateway supported hybrid cloud environment
US20220292001A1 (en) Predictive optimal queue length management for backup sessions using distributed proxies
US11782801B2 (en) Systems and methods for selecting optimal proxy devices for backup and restore operations for virtual machines
US11379145B2 (en) Systems and methods for selecting devices for backup and restore operations for virtual machines
US11336519B1 (en) Evaluating placement configurations for distributed resource placement
US11119867B1 (en) System and method for backup storage selection
JP6127754B2 (ja) プログラム、排他制御要求振り分け方法およびシステム
WO2020233364A1 (zh) 资源处理平台的确认方法、装置、电子设备和介质
US10721181B1 (en) Network locality-based throttling for automated resource migration
US11507469B2 (en) Method and system for risk score based asset data protection using a conformal framework
US11381468B1 (en) Identifying correlated resource behaviors for resource allocation
US11842213B2 (en) Cooling-power-utilization-based workload allocation system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150728

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151027

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160329