JP2005516293A - ウェブ・ファーム・トラフィック制御の方法および装置 - Google Patents

ウェブ・ファーム・トラフィック制御の方法および装置 Download PDF

Info

Publication number
JP2005516293A
JP2005516293A JP2003563180A JP2003563180A JP2005516293A JP 2005516293 A JP2005516293 A JP 2005516293A JP 2003563180 A JP2003563180 A JP 2003563180A JP 2003563180 A JP2003563180 A JP 2003563180A JP 2005516293 A JP2005516293 A JP 2005516293A
Authority
JP
Japan
Prior art keywords
server
website
customer
requests
procedure
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.)
Granted
Application number
JP2003563180A
Other languages
English (en)
Other versions
JP3989443B2 (ja
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 JP2005516293A publication Critical patent/JP2005516293A/ja
Application granted granted Critical
Publication of JP3989443B2 publication Critical patent/JP3989443B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1006Server selection for load balancing with static server selection, e.g. the same server being selected for a specific client
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/10015Access to distributed or replicated servers, e.g. using brokers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Replacement Of Web Rolls (AREA)

Abstract

【課題】ウェブ・ファームを制御する方法および装置を提供すること。
【解決手段】開示されるのは、複数のウェブサイトおよびサーバを有するウェブ・ファームを制御する方法であって、前記ウェブサイトによって受信される顧客要求を複数のカテゴリに分類することであって、前記カテゴリが、共用可能顧客要求および共用不能顧客要求を含む、分類すること、前記サーバのいずれもが前記ウェブサイトの異なる1つから受け取られる共用可能顧客要求を処理できるように、前記共用可能な顧客要求を経路指定すること、前記ウェブサイトの特定の1つからの前記共用不能顧客要求を、前記特定のウェブサイトが割り当てられた特定のサーバだけに経路指定することを含む方法である。

Description

本発明は、ウェブ・ファーム(web farm)の負荷の平衡化に関する。
ウェブ・ファームまたはウェブ・コンプレックスは、非常に普及しつつある。ウェブ・ファームの背後の鍵になる概念は、複数の異なるウェブサイトが、共用リソースを共用するという概念である。具体的に言うと、ウェブ・ファームでは、通常は、共通のフロントエンド・ディスパッチャが共用されて、負荷制御が実行され、顧客要求が分配される。ウェブ・ファームでは、複数のウェブ・サーバも共用され、顧客に要求を返すのにバックエンド帯域幅が共用される。ハードウェアおよびソフトウェアは、通常は、単一のサービス・プロバイダまたはコンテンツ・ホストによって所有され、運営され、維持される。現在このサービスを提供するか提供を計画している会社の例に、AT&T、Exodus、Intel、IBM、Qwest、Verio、およびWorldcomが含まれる。
ウェブ・ファームの主要な性能の課題は、サーバで負荷を効率的に平衡化して、システムで達成される平均応答時間を最小にすることである。サーバの過剰使用は、顧客要求の課題な遅延を引き起こす可能性がある。その一方で、サーバの過小使用は、不経済である。平均応答時間を最小にすることには、ウェブ・ファームが達成することができるスループットが最大になるという二重の効果がある。これは、フロントエンド・ディスパッチャの負荷制御手順をより寛大にすることができ、拒否される要求が減ることを意味する。
ウェブ・ファームの主な動機の1つは、共用リソースのゆえに生じる効率である。各ウェブサイトが、1つまたは複数のサーバの組に割り当てられる。しかし、従来技術では、ウェブサイト割当が、サーバの間で区分されることが仮定されている。すなわち、複数のウェブサイトからのトラフィックを処理するサーバはない。
複数のサーバを含む組を作成することの裏にある論拠は、実現可能性である。さまざまなサイトの間での顧客の分布は、通常は非常に不均一である。一部のサイトが他のサイトより非常に人気がある可能性があり、話題のウェブサイトの人気は、一般に、単一のサーバを割り当てるとそのサーバに負荷をかけすぎることになるのに十分なものとなる。したがって、許容できる性能を達成するために、一部のサイトに複数のサーバを割り当てることが必要になる。
区分された事例について負荷平衡化アルゴリズムを実施することが既知であるが、サーバのそのような区分は、柔軟性の低下につながり、したがって、より最適でなく平衡化されたウェブサイト負荷平衡化につながる。
米国特許第6374297号 タンタウイ(Tantawi)他、「コンピュータ・システムでの複数クラス・リソースの最適割振り(Optimalallocation of multiple class resources in computer systems)、ACM Sigmetrics会議(ACMSigmetrics Conference)、1988年5月、253〜260頁 ガーファンケル(R. Garfinkel)他、「整数プログラミング(IntegerProgramming)」、ジョン・ワイリー・アンド・サンズ(John Wiley and Sons)、米国ニューヨーク州ニューヨーク、1972年
開示されるのは、複数のウェブサイトおよびサーバを有するウェブ・ファームを制御する方法であって、前記ウェブサイトによって受信される顧客要求を複数のカテゴリに分類することであって、前記カテゴリが、共用可能顧客要求および共用不能顧客要求を含む、分類すること、前記サーバのいずれもが前記ウェブサイトの異なる1つから受け取られる共用可能顧客要求を処理できるように、前記共用可能な顧客要求を経路指定すること、前記ウェブサイトの特定の1つからの前記共用不能顧客要求を、前記特定のウェブサイトが割り当てられた特定のサーバだけに経路指定することを含む方法である。
本発明のもう1つの態様に、ゴール手順(Goal procedure)が含まれ、前記ゴール手順は、前記ウェブサイトの前記サーバへの前記割当および現在の顧客要求負荷を与えられて、任意の所与の瞬間の平均顧客応答時間を最小にするために、前記顧客要求のそれぞれについて、前記顧客要求が割り当てられる前記サーバの間から最適なサーバを決定することを含む。
本発明のもう1つの態様では、前記ゴール手順が、制約
Figure 2005516293
の下で関数
Figure 2005516293
を最小にすることによって行われ、ここで、Mは、ウェブサイトの数であり、Nは、サーバの数であり、Rは、サーバjでの顧客到着レートの関数としての期待される応答時間であり、xi、jは、サーバjによって処理することができるウェブサイトiの共用可能要求の仮定の数を表す決定変数であり、yi、jは、サーバjによって処理することができるウェブサイトiの共用不能要求の仮定の数を表す決定変数であり、Lは、サーバjの最大許容可能負荷であり、cは、ウェブサイトiからの共用可能顧客要求の現在の数であり、dは、ウェブサイトiからの共用不能な要求の現在の数であり、ai、jは、ウェブサイトiからの共用可能要求をサーバjに経路指定できる場合を示すインデックスであり、bi、jは、ウェブサイトiからの共用不能要求をサーバjに経路指定できる場合を示すインデックスである。
本発明のもう1つの態様は、有向グラフを作成し、維持することであって、前記有向グラフが、ダミー・ノードおよび複数のサーバ・ノードを含み、各前記サーバ・ノードが、前記サーバの1つに対応する、作成し、維持すること、前記サーバ・ノードのうちで式
Figure 2005516293
が最小であるサーバ・ノードを勝利ノード(winning node)に指定すること、前記ダミー・ノードから前記勝利ノードへの最短有向パスを選択することを含む。
本発明のもう1つの態様は、静的手順(Static procedure)を含み、前記静的手順が、特定の前記ウェブサイトを特定の前記サーバに割り当てることを含む。
本発明のもう1つの態様では、前記静的手順が、各前記ウェブサイトの共用可能顧客要求および共用不能顧客要求の予測された需要に基づいて前記ウェブサイトを特定のサーバに割り当てる。
本発明のもう1つの態様は、動的手順(Dynamic procedure)を含み、前記動的手順が、次の顧客要求を検査すること、前記次の顧客要求を現在処理するのにどのサーバが最適サーバであるかを判定するために前記ゴール手順を呼び出すこと、前記次の顧客要求を前記最適サーバにディスパッチすることを含む。
本発明のもう1つの態様は、前記顧客要求をキューに受信することをさらに含み、前記動的手順が、さらに、前記キュー内の前記顧客要求を監視すること、前記サーバによって現在処理されつつある顧客要求を監視すること、各j番目のサーバについて、
Figure 2005516293
をセットすることによって、関数
Figure 2005516293
を定義すること、各j番目のサーバについて、
Figure 2005516293
をセットすることによって、改訂された許容可能負荷限度
Figure 2005516293
を定義すること、制約
Figure 2005516293
および、bi、j=0の場合に
Figure 2005516293
の下で関数
Figure 2005516293
を最小にするために前記
Figure 2005516293
関数および改訂された許容可能負荷限度
Figure 2005516293
を使用するために前記ゴール手順を呼び出すことを含み、
Figure 2005516293
が、サーバjによって処理できるウェブサイトiに関する前記キュー内の共用可能要求の仮定の数を表す決定変数であり、
Figure 2005516293
が、サーバjによって処理できるウェブサイトiに関する共用不能要求の仮定の数を表す決定変数であり、
Figure 2005516293
が、ウェブサイトiからの前記キュー内の共用可能顧客要求の現在の数であり、
Figure 2005516293
が、ウェブサイトiからの前記キュー内の共用不能要求の現在の数であり、
Figure 2005516293
が、サーバの1つで現在処理されつつある、ウェブサイトiからの共用可能顧客要求の現在の数であり、
Figure 2005516293
が、サーバの1つで現在処理されつつある、ウェブサイトiからの共用不能要求の現在の数である。
開示されるのは、機械によって可読のプログラム記憶装置であって、複数のウェブサイトおよびサーバを有するウェブ・ファームを制御する方法ステップを実行するために前記機械によって実行可能な命令のプログラムを有形に実施し、前記方法ステップは、前記ウェブサイトから受け取られる顧客要求を複数のカテゴリに分類することであって、前記カテゴリが、共用可能顧客要求および共用不能顧客要求を含む、分類すること、前記サーバのいずれもが異なる前記ウェブサイトから受け取られる共用可能顧客要求を処理できるように、前記共用可能な顧客要求を経路指定すること、特定の前記ウェブサイトからの前記共用不能顧客要求を、前記特定のウェブサイトが割り当てられた特定のサーバだけに経路指定することを含む。
本発明のもう1つの態様は、ゴール手順を含み、前記ゴール手順が、前記ウェブサイトの前記サーバへの前記割当および現在の顧客要求負荷を与えられて、任意の所与の瞬間の平均顧客応答時間を最小にするために、前記顧客要求のそれぞれについて、前記顧客要求が割り当てられる前記サーバの間から最適なサーバを決定することを含む。
この装置のもう1つの態様では、前記ゴール手順が、制約
Figure 2005516293
の下で関数
Figure 2005516293
を最小にすることによって行われ、ここで、Mは、ウェブサイトの数であり、Nは、サーバの数であり、Rは、サーバjでの顧客到着レートの関数としての期待される応答時間であり、xi、jは、サーバjによって処理することができるウェブサイトiの共用可能要求の仮定の数を表す決定変数であり、yi、jは、サーバjによって処理することができるウェブサイトiの共用不能要求の仮定の数を表す決定変数であり、Lは、サーバjの最大許容可能負荷であり、cは、ウェブサイトiからの共用可能顧客要求の現在の数であり、dは、ウェブサイトiからの共用不能な要求の現在の数であり、ai、jは、ウェブサイトiからの共用可能要求をサーバjに経路指定できる場合を示すインデックスであり、bi、jは、ウェブサイトiからの共用不能要求をサーバjに経路指定できる場合を示すインデックスである。
この装置のもう1つの態様は、有向グラフを作成し、維持することであって、前記有向グラフが、ダミー・ノードおよび複数のサーバ・ノードを含み、各前記サーバ・ノードが、前記サーバの1つに対応する、作成し、維持すること、
前記サーバ・ノードのうちで式
Figure 2005516293
が最小であるサーバ・ノードを勝利ノードに指定すること、
前記ダミー・ノードから前記勝利ノードへの最短有向パスを選択すること
を含む。
この装置のもう1つの態様は、静的手順を含み、前記静的手順が、特定の前記ウェブサイトを特定の前記サーバに割り当てることを含む。
この装置のもう1つの態様では、前記静的手順が、各前記ウェブサイトからの共用可能顧客要求および共用不能顧客要求の予測された需要に基づいて前記ウェブサイトを特定のサーバに割り当てる。
この装置のもう1つの態様は、動的手順を含み、前記動的手順が、次の顧客要求を検査すること、前記次の顧客要求を現在処理するのにどのサーバが最適サーバであるかを判定するために前記ゴール手順を呼び出すこと、前記次の顧客要求を前記最適サーバにディスパッチすることを含む。
この装置のもう1つの態様は、前記顧客要求をキューに受信することを含み、前記動的手順が、さらに、前記キュー内の前記顧客要求を監視すること、前記サーバによって現在処理されつつある顧客要求を監視すること、各j番目のサーバについて、
Figure 2005516293
をセットすることによって、関数
Figure 2005516293
を定義すること、各j番目のサーバについて、
Figure 2005516293
をセットすることによって、改訂された許容可能負荷限度
Figure 2005516293
を定義すること、制約
Figure 2005516293
およびbi、j=0の場合に
Figure 2005516293
の下で関数
Figure 2005516293
を最小にするために前記
Figure 2005516293
関数および改訂された許容可能負荷限度
Figure 2005516293
を使用するために前記ゴール手順を呼び出すことを含み、
Figure 2005516293
が、サーバjによって処理できるウェブサイトiに関する前記キュー内の共用可能要求の仮定の数を表す決定変数であり、
Figure 2005516293
が、サーバjによって処理できるウェブサイトiに関する共用不能要求の仮定の数を表す決定変数であり、
Figure 2005516293
が、ウェブサイトiからの前記キュー内の共用可能顧客要求の現在の数であり、
Figure 2005516293
が、ウェブサイトiからの前記キュー内の共用不能要求の現在の数であり、
Figure 2005516293
が、サーバの1つで現在処理されつつある、ウェブサイトiからの共用可能顧客要求の現在の数であり、
Figure 2005516293
が、サーバの1つで現在処理されつつある、ウェブサイトiからの共用不能要求の現在の数である。
開示されるのは、ウェブ・ファームであって、顧客から顧客要求を受信する手段と、応答を作るために前記顧客要求を処理する手段と、前記応答を前記顧客に送信する手段と、前記顧客要求を共用可能顧客要求および共用不能顧客要求に分類する手段と、ゴール手順、静的手順、および動的手順を実行する手段を含むネットワーク・ディスパッチャとを含み、前記ゴール手順が、前記ウェブサイトの前記サーバへの前記割当および現在の顧客要求負荷を与えられて、任意の所与の瞬間の平均顧客応答時間を最小にするために、前記顧客要求のそれぞれについて、各前記顧客要求が割り当てられる前記サーバの間から最適なサーバを決定することを含み、前記共用可能顧客要求を、いずれかの前記サーバに割り当てることができ、前記共用不能顧客要求を、前記共用不能顧客要求が発した前記ウェブサイトに依存する特定のサーバに割り当てることだけができ、前記静的手順が、特定の前記ウェブサイトを特定の前記サーバに割り当てることを含み、前記動的手順が、次の顧客要求を検査すること、前記次の顧客要求を現在処理するのにどのサーバが最適サーバであるかを判定するために前記ゴール手順を呼び出すこと、前記次の顧客要求を前記最適サーバにディスパッチすることを含む、ウェブ・ファームである。
本発明は、複数のサイトのサーバ割り当ての間でオーバーラップを可能にすることによって、ウェブ・ファームの負荷を平衡化するという問題に対する解決策を提供し、さまざまなサイトの所有者にここちよい実用的な形でこれを行う。本発明の教示は、現在は米国特許第6374297号である、本出願の譲受人に譲渡された、1999年8月16日出願の同時係属の米国特許出願第09/374539号明細書、整理番号12793(YO999−307)、「METHOD AND APPARATUS FOR LOAD BALANCING OF WEB CLUSTER FARMS」という名称で開示された負荷平衡化システムの代わりに使用することができる。
ウェブサイトの組のオーバーラップの裏にある論拠は、柔軟性である。ウェブ・ファームは、多数の異なるサイトから顧客要求を同時に処理できなければならず、この顧客需要は、通常はバースト性である。このバースト性は、変化するウェブサイトの人気および顧客の混合に起因して、週、日、および時間毎に見ることができる。この証拠から、分および秒などのはるかに小さい原子的時間単位でもこれが発生することが暗示される。ここでのポイントは、平均ウェブサイト・アクセス・レートが、顧客挙動の変わりやすい性質を十分に取り込んでいないことである。あるウェブサイトのトラフィックは、劇的に干満する可能性があり、あるウェブサイトが忙しい時に、別のウェブサイトがそうでない場合がある。複数のサイトを処理するサーバを、これらのサイトの間で作業負荷平衡を変更して、これらの動的トラフィックに反応するようにすることができるという望みがある。区分設計では、この反応性の機能が可能にならないことに留意されたい。
本発明では、サーバ・リソースが効率的にプールされ、これらのサーバの負荷を平衡化するために、フロントエンド・ディスパッチャに関するインテリジェントな方法が使用される。本発明は、各ウェブサイトが1つまたは複数のサーバの組に割り当てられると仮定するに十分に一般化可能であり、さらに、これらの組をオーバーラップできると仮定するに十分に一般化可能である。これは、所与のサーバによって、必要な場合に複数のサイトから顧客要求を処理できることを意味する。より望ましくない代替案は、さまざまなサイトの間でサーバを区分し、その結果、各サーバが正確に1つのウェブサイトから要求を処理するようにすることである。本発明は、より非効果的ではあるが、このより好ましくない特殊な事例についても動作する。
しかし、ウェブ・ファームの場合にオーバーラップする組は、問題がないわけではない。技術的な観点からは、適切に洗練されたサーバが適度な数のウェブサイトに対処することは無理でないが、政治的な観点からは、それほど理にかなっていない場合がある。たとえば、e−commerce商人は、サーバがサイトの間で論理的に区分される場合であっても、トランザクション要求を処理するサーバを他の商人と共用することに異議を申してたてる可能性がある。商人の異議は、通常は、プライバシの理由に基づく。幸い、そのような商人は、ブラウズ要求のためのサーバの共用には、それほど敏感でないことがだいたい常である。負荷平衡化手順を実用的にし、したがって実施可能にするために、この問題に有効に対処しなければならない。これは、必要な場合に各ウェブサイトの作業負荷を2つに分割することによって達成することができ、この2つの部分の一方は共用可能でなく、他方は共用可能である。これによって、パブリック要求(ブラウザによって動機づけされる)によって、他のサイトからの共用可能な要求を有するサーバを共用できるようになる。このパブリック要求は、同一のウェブサイトからのプライベート要求(トランザクションによって動機づけされる)を有するサーバも共用することができる。この非常に重要な洗練によって、本発明に、オーバーラップする割当の政治的侵害の問題をものともせずに良好に実行するのに必要な柔軟性が与えられる。
本発明を、2レベルの顧客トラフィックに関して本明細書で説明するが、本発明を、変化するウェブサイト対サーバ制限を有する複数レベルのトラフィックの階層に一般化可能であることを、当業者なら理解するであろう。
パブリック・カテゴリおよびプライベート・カテゴリが、それぞれブラウズ要求およびトランザクション要求によって動機づけされるが、これらの項が、実際には、共用の能力または不能によって定義されることに留意されたい。論理分割の概念を受け入れるe−commerceサイトについて、たとえば、トランザクション要求は、パブリック・トラフィックの一部としてカウントされ、その結果、プライベート・トラックは全くない。もう一方の極端で、ブラウザに関してもサーバの共用を可能にすることを拒否するe−commerceサイトでは、ブラウズ要求がプライベート・トラフィックの一部としてカウントされ、パブリック・トラフィックが全くない。もちろん、ブラウズ項およびトランザクション項が文字どおりの意味を全く有しない非商用サイトも存在する可能性がある。説明を簡単にするために、それでも、トラフィックを、共用可能性に応じてパブリック・カテゴリおよびプライベート・カテゴリのいずれかに分類する。
本発明では、オーバーラップするウェブサイト割当の可能性を利用して、ウェブ・ファーム負荷を非常に効果的に平衡化する。問題は、自然に2つの副問題に分離され、それぞれに対する解決策で、同一の基本的な最適化方法を使用して、適切なゴールを設定する。したがって、本発明には3つの主要な構成要素があり、これを、ゴール手順、静的手順、および動的手順と称する。
ゴール手順は、鍵になる共通の手順である。ゴール手順では、サーバへのサイトの割当および現在の顧客要求負荷を与えられて、所与の瞬間の平均顧客応答時間を最小にするように設計された最適化技法が使用される。この技法は、タンタウイ(Tantawi)他、「コンピュータ・システムでの複数クラス・リソースの最適割振り(Optimal allocation ofmultiple class resources in computer systems)、ACM Sigmetrics会議(ACM SigmetricsConference)、1988年5月、253〜260頁によって教示される、いわゆる離散クラス制約付き分離可能凸リソース割振り問題(discrete class constrained separable convex resource allocation problem)を解くのに使用されるわずかに特殊な事例である。したがって、この方法では、最適負荷平衡化ゴールが決定される。具体的に言うと、出力は、各適切なサーバによって処理されるウェブサイトごとのパブリック・カテゴリおよびプライベート・カテゴリの両方の顧客要求の最適な数であり、したがって、サーバごとの全顧客要求の最適な数の合計によるものである。この問題は、比較的頻繁な基礎で解決される必要がある。幸い、この解決技法は、高速(および性質において増分的)である。この解決技法では、異機種サーバを処理することができ、これは、一部の古く低速のサーバが、不可避的に経時的に新しい高速のサーバに置換されるので、重要である。ゴール手順は、動的手順構成要素および静的手順構成要素に一体化された部分である。
静的手順では、パブリック要求およびプライベート要求の要件に関する、よい、うまくいけばほぼ最適な、サーバへのサイトの割当が作成される。これをうまく行うほど、ゴール手順の平均応答時間をよくすることができる。静的手順構成要素によって、進行中にゴール手順が反復的に呼び出される。この技法は、初期モードまたは増分モードのいずれかで実行することができる。初期モードは、新しいウェブ・ファームを構成する時に適切である。増分モードを用いると、割当変更の数を制限する制約が可能になり、したがって、増分モードは、高品質ウェブサイト対サーバ割当を維持するのに実用的である。ガーファンケル(R. Garfinkel)他、「整数プログラミング(Integer Programming)」、ジョン・ワイリー・アンド・サンズ(JohnWiley and Sons)、米国ニューヨーク州ニューヨーク、1972年で開示されたものなどの近傍エスケープ・ヒューリスティック(neighborhood escape heuristic)が使用される。増分モードは、おそらくは毎週1回など、周期的に実行されることを意味する。ウェブサイト対サーバ割当の再構成は、明らかにささいな作業ではない。正確な頻度は、ウェブサイト需要予測の揮発性および新しい割当を行うことのコストに依存する。
動的手順によって、静的手順構成要素の出力および変動するウェブサイト顧客需要に基づいて、ネットワーク・ディスパッチャ内でのリアルタイム・ウェブ・サーバ経路指定が実行される。動的手順によって、ゴール手順に基づいて、制限された副問題が解かれて、この理想化された経路指定が計算される。動的手順では、性能を改善することができるが、極端に高いオーバーヘッドをこうむる、先にディスパッチされた要求の割当の転送を行わない。
図1を参照すると、3つのサイト12および9つのサーバ13を有する仮定のウェブ・ファーム10の例が示されている。ネットワーク・ディスパッチャ14によって、3つのサイト12に関する顧客要求が適切なサーバに経路指定される。第1ウェブサイト12aには、2つのサーバ(1および)が含まれ、第1ウェブサイト12aは、第2ウェブサイト12bとオーバーラップし、第2ウェブサイト12bは、5つのサーバ(2から5)を有し、第3ウェブサイト12cとオーバーラップし、第3ウェブサイト12cは、4つのサーバ(6から9)を有する。顧客要求の結果が、顧客にパイプ・バックされ、顧客は、追加要求を行うことができる。
図1の例示的な例があるので、本発明の3つの主要な構成要素を詳細に説明することが有用である。
ゴール手順(Goal)構成要素
まず、いくつかの表記を定義することが有用であろう。Mは、ウェブサイトの数を表し、便宜上、必ずiによってインデクシングされる。Nは、サーバの数を表し、jによってインデクシングされる。{0、1}のM×N行列A=(ai、j)は、ウェブサイトiのパブリック要求のサーバjへの割当の可能性を意味する。言い換えると、ウェブサイトiの共用可能要求を、サーバjによって処理できる場合にai、j=1であり、そうでない場合にai、j=0である。同様に、{0、1}のM×N行列B=(bi、j)は、ウェブサイトiのプライベート要求のサーバjへの割当の可能性を意味する。言い換えると、ウェブサイトiの非共用可能要求をサーバjによって処理できる場合にbi、j=1であり、そうでない場合にbi、j=0である。実際には、ウェブサイトiのプライベート要求を処理するサーバjが、そのウェブサイトのパブリック要求も処理できると仮定する。したがって、bi、j=1の場合に、ai、j=1である。
各サーバjに関連するのが、顧客到着レートの関数として、期待される応答時間を測定する関数Rである。この関数は、サービス時間分布に依存し、サービス時間分布は、プロセッサの速度に依存する。関数Rは、一般に、増加する凸関数である。その開示が参照によって本明細書に組み込まれる、ラベンバーグ(Lavenberg)、「コンピュータ性能モデリング・ハンドブック(Computer Performance ModelingHandbook)」、アカデミック・プレス(Academic Press)、米国ニューヨーク州ニューヨーク、1983年によって教示されるものなどの、古典的なキューイング技法が、到着レート・パターンおよびサービス時間分布に関するある単純化する前提の下でのRの計算または推定について存在するが、一般に、この関数は、シミュレーション実験または監視を介して評価される必要がある可能性がある。この関数に基づいて、この閾値を超えるとRの値が大きくなりすぎるという意味でのサーバjでの最大許容可能負荷Lがあると仮定することができる。L=∞にセットすると、この最大負荷制約は、もちろん緩慢になる。所与の瞬間に、ウェブサイトiについて進行中のc個のパブリック要求とd個のプライベート要求があると仮定する。これを、さらに、サーバj上のウェブサイトiのci、j個のパブリック要求とdi、j個のプライベート要求に分解することができる。したがって、c
Figure 2005516293
であり、ai、j=0の時には、必ずci、j=0である(割り当てられていないサーバからウェブサイトに関するパブリック要求を処理することはできない)。同様に、bi、j=0の時には、必ずdi、j=0である。
Figure 2005516293
が、進行中のパブリック要求の総数を表し、同様に、
Figure 2005516293
が、進行中のプライベート要求の総数を表すものとする。
サーバ負荷は、目的関数
Figure 2005516293
が、制約
Figure 2005516293
に従って最小化される時に、現在の負荷およびウェブサイト対サーバ割当について最適に平衡化されるとみなすことができる。
ここで、xi、jは、サーバjによって処理できる、ウェブサイトiのパブリック要求の仮定の数を表す決定変数である。同様に、yi、jは、サーバjによって処理できる、ウェブサイトiのプライベート要求の仮定の数を表す決定変数である。目的関数によって、さまざまなサーバでの期待される応答時間の合計が測定され、これは、平均応答時間とは乗算定数だけ異なる。この定数は、最適化問題の観点からは無関係である。制約(2)によって、サーバiでの許容可能な負荷が制限される。制約(3)によって、ウェブサイトiのパブリック要求の総数が、進行中のパブリック要求の実際の数と等しくなることが保証される。制約(4)によって、ウェブサイト対サーバ割当が、パブリック要求について守られることが保証される。制約(5)から(6)は、プライベート要求に関する対応する必要条件である。
Figure 2005516293
および
Figure 2005516293
が最適解に含まれる場合に、X+Yが、サーバjの所望の負荷を表すことに留意されたい。最終的な目標は、サーバjのそれぞれについて、最適負荷X+Yおよび実際の負荷
Figure 2005516293
が、必ず互いに近いことを保証することである。
上で説明した最適化問題は、いわゆる離散クラス制約付き分離可能凸リソース割振り問題の特殊な事例である。このクラスは、さまざまなサイトのパブリック要求およびプライベート要求に対応する。この問題が離散的であるのは、制約(2)のゆえであり、リソース割振り問題であるのは、制約(3)および(5)のゆえであり、クラス制約付きなのは、制約(4)および(6)のゆえである。分離可能という用語は、目的関数の性質を指し、凸という用語は、自明である。タンタウイによる教示のように、離散クラス制約付きリソース割振り問題は、グラフ理論最適化手順を使用して正確かつ効率的に解くことができる。
図3を参照すると、ゴール手順の好ましい実施形態の流れ図が示されている。可能解が存在すると仮定すると、この手順は、C+Dステップで進行する。図2に示されたものなどの有向グラフが、作成され、この手順の過程全体を通じて維持される。グラフのノードは、サーバ1、…、Nと、「ノード0」という符号を付けられたダミー・ノードである。各iについて、ai、0=1かつbi、0=1とし、L=0とする。部分可能解{xi、j|i=1、…、M、j=0、…、N}∪{yi、j|i=1、…、M、j=0、…、N}を作成し、修正する。まず、図3のステップ100および105で、各iについて、この部分可能解が、xi、0=c、yi、0=dを有し、すべてのj=1、…、Nについてxi、j=yi、j=0を有し、したがって、すべてのリソースがダミー・ノードに存在するようにする。ステップ110で、有向グラフを初期化し、この有向グラフは、どのステップでも、
Figure 2005516293
を満たす少なくとも1つのウェブサイトi、または
Figure 2005516293
および条件(9)を満たす少なくとも1つのウェブサイトiがある場合に、ノードj∈{0、…、N}からノードj∈{0、…、N}への有向弧を有する。条件(7)は、ノードjおよびjが、ウェブサイトiのパブリック要求を扱えることを示す。条件(8)は、ウェブサイトiのパブリック要求が、ノードjに割り当てられていることを示す。条件(9)は、ノードjの負荷限界を超えずに、この要求をノードjに転送できることを示す。条件(10)、(11)、および(9)は、プライベート要求に関する対応する必要条件である。ノード0からの有向弧が存在する場合があるが、ノード0への有向弧が存在しないことに留意されたい。したがって、受取り側のノードは、ダミー・ノードではなく、必ず実際のサーバになる。
この方法の全般的なステップでは、0からjへの有効パスがあるすべてのノードj∈{1…、N}の間で、第1階差分
Figure 2005516293
が最小である勝利ノードを見つける。このいわゆる第1階差分は、連続関数の導関数の離散系での類似物である。第1階差分は、Rが凸なので、各iについてjで非減少関数である。そのようなノードが存在しない場合に、この手順は、可能解なしで終了する。そうでない場合には、0から勝利ノードへの最短の有効パスを選択する。このパスの有向弧(j、j)のそれぞれについて、適切なウェブサイトiについて、
Figure 2005516293
の値を1つ減分し、
Figure 2005516293
の値を1つ増分する(パブリック要求に関する減少および増加、またはプライベート要求に関する減少および増加のいずれかによる)。このステップをすべての有向弧に対して実行することには、1単位の負荷をダミー・ノードから除去し、1単位の負荷を勝利ノードに追加するという効果がある。中間ノードの負荷に対する正味の影響はない。したがって、ダミー・ノードは、リソースのステージング・エリアとして働き、このリソースの1つが、各ステップでサーバ・ノードに解放される。その後、有向グラフ上で記帳を実行し、これによって、一部の有向弧が修正され、あるノードが潜在的に切断され、このステップが繰り返される。(C+D)ステップの後に、この手順は、元の離散クラス制約付きリソース割振り問題に対する最適解を得て終了する。有向グラフの弧に対する条件のゆえに、実現可能性が保証される。
より詳細に図3を参照すると、ゴール手順の好ましい実施形態は、ステップ100で、すべてのサイトiおよびサーバjについて、0になるように変数xi、jおよびyi、jをセットすることによって開始される。この手順では、進行中にこれらの変数を増減する。ステップ105で、ダミー・ノードを、ノード0として初期化する。すべてのリソースが、当初はこのノードに置かれ、その結果、xi、0=cおよびyi、0=dがセットされる。ステップ110で、N+1個のノードを接続する有向グラフを、下で図4に関して詳細に説明するように、式(7)から(11)に従って初期化する。これから、ダミー・ノード0からノードjへの有向弧があり、ai、j=1またはbi、j=1である少なくとも1つのウェブサイトがあると決定することができる。このグラフは、この手順の進行中に修正される。ステップ115で、k=1をセットする。この変数によって、リソースが割り当てられる際にリソースの単位がカウントされる。ステップ120で、mを無限大、jを1に初期化する。ステップ125で、0からノードjへの有向パスがあるかどうかを判定する。ある場合には、ステップ130で、このサーバjについて式(12)を評価し、mと比較する。m未満である場合には、ステップ135で、j=jをセットし、mが式(12)の値になるようにする。これは、mの現在の最小値である。次に、ステップ140に進む。ステップ125でパスがない場合、またはステップ130で式(12)がm以上に評価される場合にも、ステップ140に進む。ステップ140では、jを増分する。ステップ145で、jがN以下であるかどうかを調べる。そうである場合には、ステップ125に戻る。そうでない場合には、ステップ150に進み、mを無限大と比較する。mが無限大未満でない場合には、ダミー・ノードから他のノードへのパスが存在せず、したがって、この問題に対する可能解がない。したがって、この手順はステップ155で停止する。そうでない場合には、ステップ160に進み、最短のそのようなパスを探す。ステップ165で、このパスに関して記帳を実行し、xi、jおよびyi、jの適切な値を増分し、減分する。それを行う際に、下で図5に関して詳細に説明するように、1単位のリソースが、ダミー・ノードから除去され、1単位のリソースが、サーバjに追加される。次に、ステップ170で、有向グラフに関する記帳を実行し、やはり、式(7)から(11)が満足されることを保証する。この処理で、有向弧の一部が追加され、一部が除去される場合があるが、これについては下で図6に関して詳細に説明する。ステップ175で、kを増分する。ステップ180で、kをテストして、kがC+D以下であるかどうかを調べる。そうでない場合には、この手順は、ステップ185で、最終的な解xi、jおよびyi、jで完了し、そうである場合には、ステップ120に戻って、この手順を継続する。
図2を参照すると、クラス制約付きリソース割振り手順の有向グラフのパスが示されている。グラフのすべてのノードおよび有向弧が示されてはいないことに留意されたい。負荷は、ダミー「ノード0」20から、第1階差分が最小である、ノード0に接続された勝利(サーバ)ノード25に転送されつつある。図示の有向パスは、そのような最短パスであることが意図されている。有向弧に、1から5の番号が付けられている。この図では、あるウェブサイトに関する1つの新しい(パブリックまたはプライベートの)要求が、有向弧1を介して割り振られているが、それが割り振られる最初の(サーバ)ノード21のアクティビティのレベルは変更されない。実際には、最初の4つのサーバ・ノード21から24のどれもが、異なるレベルのアクティビティを有していない。第5の、勝利サーバ・ノード25は、ダミー・ノード20と引き換えに、1単位のアクティビティの増加を経験する。
図4を参照すると、図3のステップ110に対応する初期化手順の流れ図が示されている。ステップ400で、j=1に初期化し、次に、ステップ405で、テストして、Lが0を超えるかどうかを調べる。そうである場合には、ステップ401でiを1に初期化し、ステップ415で、テストして、aが0を超えるかどうかを調べる。そうである場合には、ステップ420で、テストして、xi0が0を超えるかどうかを調べる。そうである場合には、ステップ425で、ダミー・ノード0からjへの有向弧を作成し、ステップ430に進む。ステップ415またはステップ420のいずれかで否定になる場合には、ステップ435に進み、テストして、bが0を超えるかどうかを調べる。そうである場合には、ステップ440で、テストして、yi0が0を超えるかどうかを調べる。そうである場合には、流れは、前と同様にステップ425に進む。ステップ435またはステップ440のいずれかで否定になる場合には、制御は、ステップ430に進み、jを増分する。ステップ445で、テストして、jがN以下であるかどうかを調べる。そうでない場合には、制御はステップ405にループバックし、そうである場合には、ステップ450で終了する。
図5を参照すると、図3のステップ165のパス記帳手順の流れ図が示されている。この流れ図では、最短パスが、k個の有向弧を有し、j=0からjからjからj=jまでの符号が付けられている。ステップ500で、j=0に初期化し、ステップ505で、i=1に初期化する。ステップ510で、aij=a(j+1)=1であるかどうかを調べる。そうである場合には、ステップ515で、xijが0を超えるかどうかを調べる。そうである場合には、ステップ520で、xijを減分し、x(j+1)を増分する。ステップ510または515のテストのいずれかが否定になる場合には、ステップ525に進み、同様に、bij=b(j+1)=1であるかどうかを調べる。そうである場合には、ステップ530で、yijが0を超えるかどうかを調べる。そうである場合には、ステップ535で、yijを減分し、y(j+1)を増分する。ステップ525または530のいずれかのテストが否定になる場合には、ステップ540に進み、iを増分し、ステップ510に戻る(制約によって、あるサーバiが最終的にこのテストに合格することがわかっている)。ステップ520またはステップ535の後に、ステップ545に進み、jを増分する。ステップ550で、jがk未満であるかどうかを調べる。そうである場合には、ステップ505に戻る。そうでない場合には、ステップ555でこの手順を終了する。
図6を参照すると、図3のステップ170のグラフ記帳手順の流れ図が示されている。ステップ600で開始して、jが1になるように初期化する。ステップ605で、jが1になるように初期化する。ステップ610でテストして、
Figure 2005516293
に関する条件(9)が真であるかどうかを調べる。そうでない場合には、612でこの手順を終了し、そうである場合には、ステップ615でi=1に初期化し、ステップ620で、aj,1=aj,2=1であるかどうかを調べる。そうである場合には、ステップ625でテストして、
Figure 2005516293
が0を超えるかどうかを調べる。そうである場合には、ステップ630で、ノードjからノードjへの有向弧を作成し、ステップ635に進んでjを増分する。ステップ620またはステップ625のいずれかで否定になる場合には、ステップ640に進み、テストして、bj,1=bj,2=1であるかどうかを調べる。そうである場合には、ステップ645で、
Figure 2005516293
が0を超えるかどうかを調べる。そうである場合には、前と同様にステップ630に進む。ステップ640またはステップ645のいずれかで否定になる場合には、ステップ635に進む。ステップ650でテストして、jがN以下であるかどうかを調べる。そうである場合には、ステップ655でjを増分し、ステップ660に進んで、テストして、jがN以下であるかどうかを調べる。そうでない場合には、ステップ665で終了する。ステップ650のテストが否定になる場合には、ステップ670に進み、j=jであるかどうかを調べる。j=jである場合には、ステップ635に戻り、そうでない場合には、ステップ610に戻る。ステップ660のテストが否定になる場合には、ステップ675に進み、j=jであるかどうかを調べる。j=jである場合には、ステップ655に戻り、そうでない場合には、ステップ605に戻る。
動的手順(Dynamic)
図7を参照して、負荷平衡化手順の動的手順構成要素を説明する。この技法では、所与のものとして、サーバへのサイトの割当(静的手順構成要素)を前提とする。これは、行列AおよびBの決定ということになる。次に、サーバでの正確なまたは近似の負荷ならびにネットワーク・ディスパッチャでの新しい顧客要求の到着を監視する。動的手順構成要素の仕事は、これらのキューイングされた要求を適切なサーバに割り当てて、これらの要求に関するネットワーク・ディスパッチャでの経路指定判断を行うことである。それを行う際に、動的手順では、可能な範囲まで、ゴール手順によって指示される最適平均応答時間およびサーバ負荷レベルの達成を試みる。実際に、動的手順では、ネットワーク・ディスパッチャにキューイングされたトラフィックについてゴール手順を呼び出して、判断を行う。経路指定判断は、正確なポリシまたは確率的ポリシを介して実施することができる。要求が、静的手順構成要素によってサーバに割り当てられたならば、それらの要求はそのサーバで満足される。言い換えると、好ましい実施形態では、ネットワーク・ディスパッチャの判断が、最終的とみなされ、サーバ自体にある要求を負荷に基づいてリダイレクトすることはできない。
あるメタ表記を定義することが有用であろう。任意の所与の時に、いくつかの負荷が、ネットワーク・ディスパッチャでキューイングされ、いくつかの負荷が、既にサーバにディスパッチされている。この2タイプの負荷ならびに全体的な負荷を区別したい。ディスパッチャ内の負荷に関する変数を参照する時に、単一のドットを使用し、サーバ内の負荷に関する変数を参照する時に、2つのドットを使用する。ドットが使用されない場合に、その変数は、ディスパッチャ負荷およびサーバ負荷の組合せを指す。
この方法では、サーバj上のウェブサイトiに関するディスパッチされるパブリック要求の現在の個数
Figure 2005516293
と、ディスパッチされるプライベート要求の現在の個数
Figure 2005516293
を監視する。動的手順構成要素では、サーバでの要求の完了に直接に反応するのではなく、
Figure 2005516293
および
Figure 2005516293
の値を適切に減分する。このデータがすぐに使用可能でない場合には、推定することができる。その間に、新しい要求が到着し、ネットワーク・ディスパッチャ内でキューイングされる。
Figure 2005516293
が、動的手順構成要素の最後の実行以降の、ウェブサイトiに関する新しいパブリック要求の数を表すものとする。同様に、
Figure 2005516293
が、動的手順構成要素の最後の実行以降の、ウェブサイトiに関する新しいプライベート要求の数を表すものとする。合計して、
Figure 2005516293
および
Figure 2005516293
によって、それぞれディスパッチャにキューイングされたパブリック要求およびプライベート要求の総数を表すものとする。
動的手順構成要素を、固定された時間間隔の後に、キュー内の項目の数
Figure 2005516293
が固定されたバッチ・サイズ閾値に達した後に、またはおそらくはこの両方の判断基準の組合せで、覚醒し、実行するように設計することができる。
ネットワーク・ディスパッチャ内にキューイングされた要求にゴール手順を適用するが、その間に、前にディスパッチされた要求には手を付けない。これを行うために、多少の記帳が必要である。具体的に言うと、サーバjのそれぞれについて、
Figure 2005516293
をセットすることによって、新しい凸増加関数
Figure 2005516293
を定義する。
この関数では、元の関数を単純にシフトして、サーバ内の摂動不能な負荷の量を考慮に入れる。同一の理由から、サーバjのそれぞれについて、
Figure 2005516293
をセットすることによって、改訂された許容可能負荷限界
Figure 2005516293
も定義する。
これらの形式を用いて、
Figure 2005516293
個のキューイングされた要求をディスパッチする最適な形は、制約
Figure 2005516293
の下で
Figure 2005516293
を最小化するという、図7のステップ200に対応する制限付きゴール手順構成要素問題を解くことによって決定される。最適解においても、サーバjの総負荷
Figure 2005516293
は、全体的に準最適である。しかし、これは、前に割り当てられた負荷をサーバの間で転送できないという追加の制約の最適な対象である。
さらに、新しい要求がネットワーク・ディスパッチャに到着する時に必ずこの技法が覚醒され、その結果、あるウェブサイトiについて
Figure 2005516293
または
Figure 2005516293
のいずれかになる特殊な場合に、この手順が単に貪欲であることに留意されたい。言い換えると、
Figure 2005516293
であり、その結果、ウェブサイトiの新しいパブリック要求が割り当てられる場合に、
Figure 2005516293
および
Figure 2005516293
を満足し、第1階差分
Figure 2005516293
が最小であるサーバjが選択される。
Figure 2005516293
であり、その結果、ウェブサイトiの新しいプライベート要求が追加される場合に、
Figure 2005516293
を満足し、その第1階差分が式(12)によって与えられる負荷限度制約が最小であるサーバjが選択される。
動的手順を、図8および9に示された例によって示すことができる。ここでは、8つのサイトをホスティングする15個のサーバの構成を検討する。パブリック・ウェブサイト・トラフィックを処理するために割り当てられた5つのサーバがある。各サーバが複数のサイトからのトラフィックを処理する能力を有するので、これらのサーバをクラスタ・サーバと呼ぶ。プライベート・ウェブサイト・トラフィックを処理するために割り当てられた10個のサーバもある。したがって、これらを区画サーバと呼ぶ。各このようなサーバは、パブリック・トラフィックとプライベート・トラフィックの両方を処理できるが、単一のウェブサイトのトラフィックだけを処理できる。この例のウェブサイト記号用語集である図8を検討されたい。各記号は、ウェブサイトに一意の形状を有する。たとえば、circularlogic.comは、円によって表される。灰色の記号は、パブリック・トラフィックを示し、黒の記号は、プライベート・トラフィックを示す。関連するクラスタ・サーバおよび区画サーバの濃度も示される。それぞれ、割当行列AおよびBの行合計
Figure 2005516293
および
Figure 2005516293
がある。たとえば、circularlogic.comは、3つのクラスタ・サーバおよび2つの区画サーバを割り当てられている。
このすべてを、図9に詳細に示す。内側のループに、5つのクラスタ・サーバC1からC5が含まれ、外側ループに、10個の区画サーバP1からP10が含まれる。たとえば、circularlogic.comが、クラスタ・サーバC1、C2、およびC5に割り当てられていることに留意されたい。サーバC1では、このウェブサイトのパブリック・トラフィックによって、hexnut.comおよびeggcentric.comのパブリック・トラフィックと共にこのサーバが共用されなければならない。同様に、circularlogic.comは、区画サーバP1およびP2に割り当てられる。この2つのサーバのそれぞれが、パブリック・トラフィックおよびプライベート・トラフィックの両方を処理するが、このウェブサイトからのトラフィックだけを処理する。
実際には、図9によって、より多くの情報が伝えられる。図9には、ゴール手順によって使用される種類の、わずかに修正された有向グラフが示されている。図2を想起されたい。図2には、クラス制約付きリソース割振り問題の解での、特定の瞬間のダミー・ノードからサーバ・ノードへの最短パスが示されている。対照的に、図9には、1つの例外を含めて、そのような瞬間の、すべての有向弧およびノードを示す有向グラフHが示されている(例外は、ダミー・ノードと、そこからの有向弧が削除されていることである)。
したがって、Hは、次のように定義される:ノードは、サーバに対応する。別個のサーバ・ノードの対jおよびjのそれぞれについて、条件(7)から(9)または条件(10)、(11)、および(9)を満足する少なくとも1つのウェブサイトiが存在するならば、jからjへの有向弧がある。
図9では、すべての有向弧が両方向で示されてはいないが、これは、それらが、関連する制約のすべてを満足できないからである。たとえば、P3からP4への有向弧がないが、これは、明らかに、P3に、パブリック(条件8)およびプライベート(条件11)の両方の負荷がないからである。C3からP7への有向弧がないが、これは、明らかに、P7が最大容量で動作している(条件9)からである。C1とP3の間は両方向で弧がないが、これは、明らかに、P3にパブリック負荷がなく(条件8)、C1が最大容量で動作しているからである。P1とC4の間は両方向で弧がないが、これは、条件(7)および条件(10)の両方が満足されないからである。
やはり、有向弧の存在は、サーバの負荷を減らし、負荷容量を超えずに別のサーバに負荷を増やし、他のサーバの負荷に影響しないようにする可能性を意味する。ダミー・ノードからサーバ・ノードの1つへの有向パスによって、負荷の1単位をステージング・ノードからそのサーバ・ノードに転送し、他のサーバ・ノードを影響されないままにすることができる。この転送の後に、グラフHを、記帳技法を介して修正して、制約(8)、(9)、および(11)の現在の状況を守ることができる(制約(7)および(10)の状況は変更されない)。
図9で、3つの異なるタイプの有向弧を見ることができる。1つのタイプは、ある区画サーバから別の区画サーバへのパブリック負荷またはプライベート負荷の潜在的な転送を示し、P1とP2の間に見られる。第2のタイプは、区画サーバからクラスタ・サーバへまたはその逆のパブリック負荷の潜在的な転送を示し、P1とC1の間に見られる。第3のタイプは、あるクラスタ・サーバから別のクラスタ・サーバへのパブリック負荷の潜在的な転送を示し、C1とC2の間に見られる。
グラフHが、できる限り多数の有向弧を有することに関して密であるほどに、ゴール手順によってより短い応答時間を生じる良い品質の結果を達成できる可能性が高くなることを理解されたい。これが、次に説明する静的手順の目標である。
動的手順の詳細な実施形態を、図7の流れ図に示す。制御の流れは、ステップ200で開始され、ウェブサイトiおよびサーバjのそれぞれについて、ゴール手順を使用して、最適化目標
Figure 2005516293
および
Figure 2005516293
を解く。ステップ205で、k=1をセットする。ステップ210で、ウェブサイトiおよびサーバjのそれぞれについて、
Figure 2005516293
および
Figure 2005516293
が0になるように初期化する。これらの変数によって、ゴールに関するディスパッチャの進捗をカウントする。ステップ215で、どのウェブサイトがキュー内の要求kに対応するかを判定する。ステップ220で、要求がパブリックまたはプライベートのどちらであるかを判定する。この2つの可能性のそれぞれについて、匹敵するフローがあるが、パブリックのフローに焦点を合わせる。これは、ステップ225で開始され、ここで、j=1をセットし、Mに負の無限大をセットする。下記のように、ゴールと達成された値の間の最大の差を有するサーバを見つける。ステップ230で、Mが
Figure 2005516293
未満であるかどうかを調べる。そうである場合には、ステップ235で、j=jおよび
Figure 2005516293
をセットし、ステップ240に進む。ステップ230のテストが否定の場合にもステップ240に分岐する。ステップ240で、jを増分する。ステップ245で、jがN以下であるかどうかを調べる。そうである場合には、ステップ230に戻る。そうでない場合には、勝利サーバjが得られており、ステップ250で
Figure 2005516293
を増分し、要求kをサーバjにディスパッチする。次に、ステップ255に進み、kを増分する。ステップ260で、kが
Figure 2005516293
以下であるかどうかをテストする。そうである場合には、ステップ210に戻って、次の要求をディスパッチする。そうでない場合には、要求のキューが空になっており、停止する。ステップ220で、要求がプライベート要求と決定された場合には、ステップ270から295に進む。これらのステップは、パブリック要求ではなくプライベート要求を扱うことを除いて、ステップ225から250に正確に類似する。最終的に、制御フローはステップ220に戻る。
静的手順構成要素
図10から12を参照して、サイトをサーバに割り当てる静的手順構成要素を説明する。目標は、ゴール手順の達成可能な性能を最適化し、したがって、動的手順構成要素の性能を最適化することである。静的手順構成要素の鍵になる入力は、各ウェブサイトのパブリック要求およびプライベート要求の平均需要の予測と、許容可能なウェブサイト対サーバ割当に対する制約である。静的手順構成要素の出力は、単に、2つの{0、1}割当行列A=(ai、j)およびB=(bi、j)である。
また、所与のものとしてウェブサイト対サーバ割当に関する制約を仮定する。この制約は、サーバ自体の物理的能力、許容可能に高いキャッシュ・ヒット率の達成の目標、サーバ上のオペレーティング・システム、あるサイトがネゴシエーションする可能性がある固定されたサーバ割当などに関する可能性がある。そのような制約は、非常に複雑または非常に初歩的である可能性がある。たとえば、キャッシュ制約を、おそらくは分析的ヒット率モデル、ウェブ・サイト・データの局所性、およびキャッシュ・サイズに基づく比較的複雑なものにすることができる。これが、比較的少数のサイトが各サーバに割り当てられることの保証という影響を有する。その一方で、オペレーティング・システム制約は、単に、どのサイトがあるサーバに関して不適切であるかのリストとすることができる。ポイントは、静的手順構成要素が、性質においてヒューリスティックであり、割当の変更を検討する前に単純に制約を検査することによって、制約を扱うことができることである。
静的手順構成要素は、2つの可能なモードを有する。初期モード(図12)は、サイトがまだサーバに割り当てられていない、新しいシステムを一から構成するのに使用される。次に、増分モードが、周期的に使用されて、改訂されたウェブサイト需要予測に基づいて既存のウェブサイト対サーバ割当が調整される。この調整の実施が実用的になることを保証するために、許可されるウェブサイト対サーバ割当変更の許容可能な回数を制限する制約を考慮に入れる。両方のモードが、本質的に同一の方法論を使用するように見える。初期モードでは、応答時間関数に分析的モデルを使用しなければならない可能性があり、増分モードでは、その代わりにより正確に測定された応答時間を使用することができる。これによって、おそらくは、キャッシングおよび他の実世界の現象の影響がよりよく取り込まれる。
静的手順構成要素の増分は、頻繁に実行してはならない。というのは、割当変更を行う際に明白なコストがあるからである。週に1回程度が、おそらくは適度である。正確な頻度は、更新されたウェブサイト予測による性能改善の可能性と比較したこのコストの相対トレードオフに依存する。おそらく、静的手順の実行は、ある種の負荷不平衡状態の検出によってトリガすることができる。
両方のモードの主要な目標は、次のように定義される非有向グラフGの高い接続性を達成することである。ノードは、サーバに対応する。別個のノードの対jおよびjのそれぞれについて、
Figure 2005516293
である少なくとも1つのウェブサイトi、または
Figure 2005516293
である少なくとも1つのウェブサイトiが存在するならば、jとjの間に弧がある。この条件は、有向グラフHの定義の条件(7)および(10)を模倣したものである。条件(8)、(9)、および(11)は、一般に、すべてのよく平衡を取られたウェブ・ファームで満足されるので、この概念は、GがHの効果的な代用物として働くということである。また、条件(7)および(10)が、本質的に静的であり、条件(8)、(9)、および(11)が、本来動的であることに留意されたい。これが、Gが静的手順構成要素についてより適切である理由である。
図10に、上で説明した例のグラフGを示す。図9に示された有向グラフHとの類似性に留意されたい。しかし、図10の弧には、サーバC1とP3の間の弧があるが、図9には、どちらの方向にもそれに相当する有向弧がない。サーバP4からP3など、図9に示された複数の他の有向弧が、反対方向の有向弧と一致しない。図10では、2つのクラスタ・サーバの間の弧が、実線として示され、2つの区画サーバの間の弧が、点線として示され、クラスタ・サーバと区画サーバの間の弧が、破線として示されている。
最適化が試みられる目的関数は、本発明ではブラック・ボックスとして扱われる、ゴール手順構成要素自体の目的関数である。ここでの原理は、効果的に平均応答時間であるこの測定値が、明らかに、他の2つのグラフ理論の代用物(直径または平均距離)のどちらよりも直接的に適切であり、計算するのにそれほどコンピュータのコストがかからない。
使用されるメタ表記は、チルダ「」が、静的手順問題定式化を指すことである。
次のように、サーバへのサイトの割当の空間(いくつかの意味で好ましい)を記述する新しい行列
Figure 2005516293
を発明することによって進行する。
Figure 2005516293
は、やはり、サイズM×Nの{0、1}行列である。各ウェブサイトのパブリック・トラフィックおよびプライベート・トラフィックの両方に存在する通常の条件の下で、下記の形での、
Figure 2005516293
から
Figure 2005516293
および
Figure 2005516293
への変換を行う。
Figure 2005516293
Figure 2005516293
これによって、行の和が
Figure 2005516293
であるすべてのサーバjが、1つのウェブサイトのパブリックとプライベートの両方のトラフィックを有する区分サーバであり、他のすべてのサーバが、複数のパブリック・ウェブサイト・トラフィックを有するサーバであるという暗黙の仮定が行われる。割当行列AおよびBのすべての可能な対を、ある行列
Figure 2005516293
からの変換とみなすことはできないことに留意されたい。しかし、見なすことができない対は、より好ましくない。静的手順構成要素では、これらは選択されない。
特殊な事例を扱うために、微調整を行う必要がある。ウェブサイトiにプライベート・トラフィックだけが存在する場合に、
Figure 2005516293
である時に、必ず、i’≠iについて
Figure 2005516293
であることが必要である。これによって、jが、ウェブサイトiの区画サーバにされる。ai、j=0かつbi、j=1とする。ウェブサイトiについてパブリック・トラフィックだけが存在する場合に、そのウェブサイトに割り当てられたすべてのサーバjを、
Figure 2005516293
の場合であっても、公式にパブリックとみなすことができる。したがって、
Figure 2005516293
かつbi、j=0とする。
各サーバの負荷がその負荷限度Lを超える場合を処理するために、各サーバjの応答時間関数Rも修正する必要がある。そのような実現不能性は、少なくともこの静的手順構成要素の初期段階で発生する可能性があり、大きい目的関数コストで実現可能性を強制することによって、この実現不能性を扱う必要がある。したがって、非常に大きい数Qを考慮し、k≦Lについて
Figure 2005516293
であるが、
Figure 2005516293
などであるものとする。一般的な再帰によって、k>0について
Figure 2005516293
が定義される。
Figure 2005516293
が、凸の連続関数のままであることに留意されたい。また、最大許容可能負荷を、
Figure 2005516293
になるように再定義する。
Figure 2005516293
および
Figure 2005516293
が、それぞれ、ウェブサイトiの予測されたパブリック負荷および予測されたプライベート負荷を指すものとする。ここでの説明は、各ウェブサイトにパブリック・トラフィックとプライベート・トラフィックの両方が存在する場合に基づくが、そうでない時に適切な修正は、簡単に決定することができる。
一般性を失わずに、増加する予測された総負荷
Figure 2005516293
に関してサイトが再インデクシングされていると仮定する。また、サーバが、増加する性能に関して再インデクシングされていると仮定する。これは、たとえば、元々の最大許容可能負荷Lによって決定することができる。
初期割当方法の最初のステップは、可能な範囲でのサイトをサーバに順番にマッチングすることである。あるサーバからあるサイトを制限する実現可能性制約がある場合があり、これを守らなければならない。したがって、図12のステップ305から335に示された順番でウェブサイトi=1からMまでループして、ステップ325で
Figure 2005516293
をセットし、ここで、jは実現可能であるが現在割り当てられていないサーバの最小のインデックスであり、初期化時にすべての他のjで
Figure 2005516293
をセットする。すべてのサイトに関して可能な実現可能な割当がないことは、可能であるが、おそらくは非常に可能性が低い。これが発生するのは、制約のゆえであり、M>Nなので発生する可能性がある。この場合には、初期割当技法が失敗する。そうでない場合には、この時点でM個の区画サーバがあり、残りのN−M個のサーバは、アイドルである。
この初期解の目的関数を評価するが、これは次のようになる。
Figure 2005516293
この初期解を、いわゆる近傍エスケープ・ヒューリスティックの実施形態によって修正する。このヒューリスティックでは、メトリックΔを使用して、サーバへのサイトの2つの可能な割当の間の距離を測定するが、これを短く説明する。短く言えば、近傍エスケープ・ヒューリスティックは、局所最小値にトラップされないようにしながら比較的低い計算コストを達成する反復改良手順である。可能解の検索空間に対するモーメントの事前定義のメトリックΔと、上で説明したものなどの既存の初期可能解を仮定すると、この技法は、複数のステージで進行する。各ステージの始めに、ステージ中に修正できる、いわゆる現在の解がある。第1ステージの始めに、現在の解は、初期解である。各ステージで、現在の解の周囲で距離1、2、などの近傍を連続して検索する(現在の解の周囲の距離kの近傍は、現在の解からの距離がk以下のすべての実現可能な割当の集合である。現在の解の周囲の距離kのリングは、現在の解からの距離がkであるすべての実現可能な割当の集合であり、距離kの近傍から距離k−1の近傍を引いたものである)。目的関数改善を、現在の解の周囲の距離1の近傍で見つけることができる場合に、このヒューリスティックでは、そのような最善の改善を選択し、現在の解としてラベルを付けなおし、次のステージを開始することによって処理を繰り返す。距離1の近傍以内で改善が見つからない場合には、このヒューリスティックでは、代わりに距離2のリングを検討する。ここで、やはり2つの可能性がある。改善がある場合には、そのような最善の改善を現在の解として選択し、この手順では次のステージを開始する。そうでない場合には、距離3などのリングを検討し、固定された距離限度、たとえばKまでリングを検討する。K番目のリング以内で目的関数改善に到達しない場合には、現在の解と等しい最終的な解を得て処理が終了する。さまざまなリングの検査は、図12のステップ360、380、および385で行われる。改善は、ステップ370で検査される。
図11に、この処理を示す。初期ステージの始めの現在の解は、近傍の最初の集合、距離1の中心400にある。ヒューリスティックでは、第1の近傍を検索し、改善が見つかるまで、後続のリングを順番に検索する。図では、改善が発生するのは、K番目のリング、距離Kのみである。次に、このヒューリスティックでは、新しい中心410によって表されるように、現在の解を検索で見つかった最善の改善にリセットし、第2ステージを開始する。この図には、その解の周囲の近傍が示されている。改善は、3番目のリングで見つかる。第3ステージが開始されるが、図には示されていない。第1ステージでK番目のリングで改善を得られない場合には、初期解が最終的な解になる。
ここで、距離メトリックΔを定義する。
Figure 2005516293
および
Figure 2005516293
が、そのような2つの割当であるものとして、
Figure 2005516293
を定義する。
ここでの意図は単純である。たとえば、単一のウェブサイトをサーバの1つに追加またはサーバの1つから削除することによって、割当
Figure 2005516293
を新しい割当
Figure 2005516293
に修正する場合に、
Figure 2005516293
が得られる。古いサーバから新しいサーバ(前にウェブサイトを割り当てられていない)へのウェブサイトの移動は、図11で距離2を有する。ウェブサイトをサーバから除去し、同時にそのサーバに異なるウェブサイトを追加することも、距離2を有する。異なるサーバでの異なるサイトの交換は、距離4を有し、以下同様である。
所与の解
Figure 2005516293
とその変換された割当行列
Figure 2005516293
および
Figure 2005516293
を与えられれば、改善のテストに、制約
Figure 2005516293
の下で
Figure 2005516293
を最小化するというゴール手順構成要素問題を解くことが含まれる。
もちろん、
Figure 2005516293
を伴う制約は、無意味である。しかし、限度Lを超える負荷のコストを与えられれば、近傍エスケープ・ヒューリスティックの非常に少数のステージの後に、各サーバjについて
Figure 2005516293
を満足する解が期待される。したがって、あらゆる見通しから実現可能な割当が、短い順番で達成可能でなければならない。実際に、この手順の最初の少数のステージで、通常は、量の多いサイトが現在未使用のサーバに割り当てられ、その後、この技法では、区画サーバがクラスタ・サーバにされ、通常は、性能の高いサーバの状況が最初に変更される。
増分手順は、周期的に、おそらく毎週1回実行されて、変化する予測の存在の下で、よいウェブサイト対サーバ割当が保たれる。幸い、増分手順では、実質的に同一の方法が使用される。
初期解は、最後に実行された静的手順構成要素からの現在の解であり、もちろん、近傍エスケープ技法を介してこれを修正する。唯一の変更は、追加の停止判断基準すなわち、初期解と現在の解の間の距離が、あるユーザ定義の閾値Tを超える場合に停止するという判断基準を使用することである。これの理由は、割当変更が、実際に実施するのにコストがかかり、実行された静的手順構成要素の連続するインスタンスの間で激しく異なる解を許容することは望まないからである。
図12を参照すると、静的手順の詳細な実施形態が示されている。ステップ300から開始して、ウェブサイトiを1に初期化する。ステップ305で、サーバjを1に初期化する。ステップ310で、サーバjがウェブサイトiについて実現可能であるかどうかを判定する。そうである場合には、ステップ320に進み、サーバjが現在未割当であるかどうかを判定する。現在は未割当である場合には、ステップ325でこれを割り当て、ステップ330でウェブサイトiを増分する。ステップ335で、iがサイトの総数M以下であるかどうかを判定する。そうである場合には、ステップ305に戻る。ステップ310または320のテストが否定の場合には、ステップ340に進み、サーバjを増分する。ステップ345で、jがサーバの総数N以下であるかどうかを判定する。そうである場合には、ステップ310に戻る。そうでない場合には、ステップ350で、可能解なしで停止する。ステップ335でサイトが使い果たされた場合に戻ると、ステップ355に進み、この手順の近傍エスケープ構成要素を開始する。式(25)によって、解の値Rを評価する。ステップ360で、k=1をセットする。ステップ365で、k番目のリングを検索して、最良の可能な解Rを評価する。ステップ370で、最良の現在の解Rと比較してRを評価する。新しい値の方がよい場合には、ステップ375でこれを最良の解にし、ステップ360に戻る。新しい値がよりよくない場合には、ステップ380でkを増分する。ステップ385で、すべてのリングkを使い果たしたかどうかを判定する。まだ使い果たしていない場合には、ステップ365に戻る。そうでない場合には、ステップ390で最後の割当解を得て停止する。
本発明は、たとえば、コンピュータなどの命令を実行できる機械によって可読の記憶媒体上で命令のプログラムを有形に実施することによるなど、自動化に簡単に適合させることができる。
用語「ウェブサイト」は、本発明をワールド・ワイド・ウェブのハイパーテキスト・マークアップ言語(HTML)文書と共に使用することに制限する必要があるのではなく、顧客要求の受信、結果の出力、ならびに、たとえばローカル・エリア・ネットワーク上および類似物などのサーバとの通信が可能なすべてのユーザ・ネットワーク・インターフェースを含むと解釈されるべきである。
本明細書で開示されたすべての物理的量が、他の形で明示的に示されない限り、開示された量と正確に等しいものと解釈されるのではなく、開示された量におおむね等しいと解釈されるべきであることを理解されたい。さらに、「約」などの修飾語が単にないことを、そのような修飾語が本明細書で開示される他の物理的な量に関して使用されるかどうかに無関係に、そのような開示された物理的量が正確な量であることの明示的な表示と解釈すべきでない。
ネットワーク・ディスパッチャおよび複数のサーバを含むウェブ・ファームを示す図である。 ゴール手順の一部である、ダミー・ノードから勝利ノードへのパスを示す図である。 ゴール手順を示す流れ図である。 ゴール手順の初期化ステップを示す流れ図である。 ゴール手順のパス記帳ステップを示す流れ図である。 ゴール手順のグラフ記帳ステップを示す流れ図である。 動的手順を示す流れ図である。 動的手順を示す例のウェブサイト・シンボルの用語集である。 同一の例での動的手順の有向グラフを示す図である。 同一の例での静的手順の非有向グラフを示す図である。 静的手順での近傍エスケープ・ヒューリスティックを示す図である。 静的手順を示す流れ図である。
符号の説明
10 ウェブ・ファーム
12 サイト
13 サーバ
14 ネットワーク・ディスパッチャ
20 ダミー「ノード0」
21 サーバ・ノード
22 サーバ・ノード
23 サーバ・ノード
24 サーバ・ノード
25 勝利(サーバ)ノード
400 中心
410 新しい中心

Claims (11)

  1. 複数のウェブサイトおよびサーバを有するウェブ・ファームを制御する方法であって、
    前記ウェブサイトによって受信される顧客要求を、共用可能顧客要求および共用不能顧客要求を含む複数のカテゴリに分類するステップ、
    前記サーバのいずれもが前記ウェブサイトの異なる1つから受け取られる共用可能顧客要求を処理できるように、前記共用可能な顧客要求を経路指定するステップ、および
    前記ウェブサイトの特定の1つからの前記共用不能顧客要求を、前記特定のウェブサイトが割り当てられた特定のサーバだけに経路指定するステップ
    を含む方法。
  2. ゴール手順をさらに含み、前記ゴール手順が、前記ウェブサイトの前記サーバへの前記割当および現在の顧客要求負荷を与えられて、任意の所与の瞬間の平均顧客応答時間を最小にするために、前記顧客要求のそれぞれについて、前記顧客要求が割り当てられる前記サーバの間から最適なサーバを決定するステップを含む、請求項1に記載の方法。
  3. 前記ゴール手順が、制約
    Figure 2005516293
    の下で関数
    Figure 2005516293
    を最小にすることによって行われ、ここで、Mは、ウェブサイトの数であり、Nは、サーバの数であり、Rは、サーバjでの顧客到着レートの関数としての期待される応答時間であり、xi、jは、サーバjによって処理することができるウェブサイトiの共用可能要求の仮定の数を表す決定変数であり、yi、jは、サーバjによって処理することができるウェブサイトiの共用不能要求の仮定の数を表す決定変数であり、Lは、サーバjの最大許容可能負荷であり、cは、ウェブサイトiからの共用可能顧客要求の現在の数であり、dは、ウェブサイトiからの共用不能な要求の現在の数であり、ai、jは、ウェブサイトiからの共用可能要求をサーバjに経路指定できる場合を示すインデックスであり、bi、jは、ウェブサイトiからの共用不能要求をサーバjに経路指定できる場合を示すインデックスである、請求項2に記載の方法。
  4. 有向グラフを作成し、維持するステップであって、前記有向グラフが、ダミー・ノードおよび複数のサーバ・ノードを含み、各前記サーバ・ノードが、前記サーバの1つに対応する、作成し、維持するステップ、
    前記サーバ・ノードのうちで式
    Figure 2005516293
    が最小であるサーバ・ノードを勝利ノードに指定するステップ、および、
    前記ダミー・ノードから前記勝利ノードへの最短有向パスを選択するステップ
    をさらに含む、請求項3に記載の方法。
  5. 静的手順をさらに含み、前記静的手順が、共用不能顧客要求を処理するために前記ウェブサイトの特定の1つを特定の前記サーバに割り当てるステップを含む、請求項1ないし4のいずれかに記載の方法。
  6. 前記静的手順が、各前記ウェブサイトの共用可能顧客要求および共用不能顧客要求の予測された需要に基づいて前記ウェブサイトを特定のサーバに割り当てる、請求項5に記載の方法。
  7. 動的手順をさらに含み、前記動的手順が、
    次の顧客要求を検査するステップ、
    前記次の顧客要求を現在処理するのにどのサーバが最適サーバであるかを判定するために前記ゴール手順を呼び出すステップ、および、
    前記次の顧客要求を前記最適サーバにディスパッチするステップ
    を含む、請求項2ないし4のいずれか一項に記載の方法。
  8. 前記顧客要求をキューに受信するステップ
    をさらに含み、前記動的手順が、さらに、
    前記キュー内の前記顧客要求を監視するステップ、
    前記サーバによって現在処理されつつある顧客要求を監視するステップ、
    各j番目のサーバについて、
    Figure 2005516293
    をセットするステップによって、関数
    Figure 2005516293
    を定義するステップ、
    各j番目のサーバについて、
    Figure 2005516293
    をセットするステップによって、改訂された許容可能負荷限度
    Figure 2005516293
    を定義するステップ、および、
    制約
    Figure 2005516293
    の下で関数
    Figure 2005516293
    を最小にするために前記
    Figure 2005516293
    関数および改訂された許容可能負荷限度
    Figure 2005516293
    を使用するために前記ゴール手順を呼び出すステップ
    を含み、
    Figure 2005516293
    が、サーバjによって処理できるウェブサイトiに関する前記キュー内の共用可能要求の仮定の数を表す決定変数であり、
    Figure 2005516293
    が、サーバjによって処理できるウェブサイトiに関する共用不能要求の仮定の数を表す決定変数であり、
    Figure 2005516293
    が、ウェブサイトiからの前記キュー内の共用可能顧客要求の現在の数であり、
    Figure 2005516293
    が、ウェブサイトiからの前記キュー内の共用不能要求の現在の数であり、
    Figure 2005516293
    が、サーバの1つで現在処理されつつある、ウェブサイトiからの共用可能顧客要求の現在の数であり、
    Figure 2005516293
    が、サーバの1つで現在処理されつつある、ウェブサイトiからの共用不能要求の現在の数である
    請求項7に記載の方法。
  9. 請求項1ないし8のいずれかに記載の方法の各ステップをコンピュータに実行させるためのプログラム。
  10. 複数のウェブサイトおよびサーバを有するウェブ・ファームであって、さらに、
    顧客から顧客要求を受信する手段と、
    応答を作るために前記顧客要求を処理する手段と、
    前記応答を前記顧客に送信する手段と、
    前記顧客要求を共用可能顧客要求および共用不能顧客要求に分類する手段と、
    前記サーバのいずれかが前記ウェブサイトの異なる1つから受け取られる共用可能顧客要求を処理できるように、前記共用可能顧客要求を経路指定する手段と、
    前記ウェブサイトの特定の1つからの前記共用不能顧客要求を、前記特定のウェブサイトに割り当てられた特定のサーバだけに経路指定する手段と
    を含むウェブ・ファーム。
  11. ゴール手順、静的手順、および動的手順を実行する手段を含むネットワーク・ディスパッチャをさらに含み、
    前記ゴール手順が、前記ウェブサイトの前記サーバへの前記割当および現在の顧客要求負荷を与えられて、任意の所与の瞬間の平均顧客応答時間を最小にするために、前記顧客要求のそれぞれについて、各前記顧客要求が割り当てられる前記サーバの間から最適なサーバを決定する手段を含み、前記共用可能顧客要求を、いずれかの前記サーバに割り当てることができ、前記共用不能顧客要求を、前記共用不能顧客要求が発した前記ウェブサイトに依存する特定のサーバに割り当てることだけができ、
    前記静的手順が、特定の前記ウェブサイトを特定の前記サーバに割り当てる手段を含み、
    前記動的手順が、
    次の顧客要求を検査する手段、
    前記次の顧客要求を現在処理するのにどのサーバが最適サーバであるかを判定するために前記ゴール手順を呼び出す手段、および、
    前記次の顧客要求を前記最適サーバにディスパッチする手段
    を含む
    請求項10に記載のウェブ・ファーム。
JP2003563180A 2002-01-24 2003-01-17 ウェブ・ファームを制御する方法およびウェブ・ファーム Expired - Fee Related JP3989443B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/057,516 US7356592B2 (en) 2002-01-24 2002-01-24 Method and apparatus for web farm traffic control
PCT/GB2003/000167 WO2003063447A1 (en) 2002-01-24 2003-01-17 Method and apparatus for web farm traffic control

Publications (2)

Publication Number Publication Date
JP2005516293A true JP2005516293A (ja) 2005-06-02
JP3989443B2 JP3989443B2 (ja) 2007-10-10

Family

ID=22011052

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003563180A Expired - Fee Related JP3989443B2 (ja) 2002-01-24 2003-01-17 ウェブ・ファームを制御する方法およびウェブ・ファーム

Country Status (10)

Country Link
US (1) US7356592B2 (ja)
EP (1) EP1472846B1 (ja)
JP (1) JP3989443B2 (ja)
KR (1) KR100754296B1 (ja)
CN (1) CN100556024C (ja)
AT (1) ATE301364T1 (ja)
CA (1) CA2471594C (ja)
DE (1) DE60301202T2 (ja)
TW (1) TWI238621B (ja)
WO (1) WO2003063447A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008097378A (ja) * 2006-10-12 2008-04-24 Nomura Research Institute Ltd ジョブ管理装置、ジョブ実行装置、及びそれら装置を含むジョブ管理システム
US8694580B2 (en) 2011-07-04 2014-04-08 Fujitsu Limited Information processing apparatus, server selecting method and recording medium
KR20140119090A (ko) * 2012-02-03 2014-10-08 마이크로소프트 코포레이션 확장 가능한 환경에서의 동적 로드 밸런싱 기법
US10635500B2 (en) 2012-02-03 2020-04-28 Microsoft Technology Licensing, Llc Decoupling partitioning for scalability
US10860384B2 (en) 2012-02-03 2020-12-08 Microsoft Technology Licensing, Llc Managing partitions in a scalable environment

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7451183B2 (en) * 2003-03-21 2008-11-11 Hewlett-Packard Development Company, L.P. Assembly and method for balancing processors in a partitioned server
US7562143B2 (en) 2004-01-13 2009-07-14 International Business Machines Corporation Managing escalating resource needs within a grid environment
US7406691B2 (en) 2004-01-13 2008-07-29 International Business Machines Corporation Minimizing complex decisions to allocate additional resources to a job submitted to a grid environment
US7552437B2 (en) 2004-01-14 2009-06-23 International Business Machines Corporation Maintaining application operations within a suboptimal grid environment
US20060048157A1 (en) * 2004-05-18 2006-03-02 International Business Machines Corporation Dynamic grid job distribution from any resource within a grid environment
US7266547B2 (en) * 2004-06-10 2007-09-04 International Business Machines Corporation Query meaning determination through a grid service
US7584274B2 (en) * 2004-06-15 2009-09-01 International Business Machines Corporation Coordinating use of independent external resources within requesting grid environments
US7712102B2 (en) 2004-07-30 2010-05-04 Hewlett-Packard Development Company, L.P. System and method for dynamically configuring a plurality of load balancers in response to the analyzed performance data
US7712100B2 (en) * 2004-09-14 2010-05-04 International Business Machines Corporation Determining a capacity of a grid environment to handle a required workload for a virtual grid job request
US20060168584A1 (en) * 2004-12-16 2006-07-27 International Business Machines Corporation Client controlled monitoring of a current status of a grid job passed to an external grid environment
US7590623B2 (en) * 2005-01-06 2009-09-15 International Business Machines Corporation Automated management of software images for efficient resource node building within a grid environment
US7533170B2 (en) * 2005-01-06 2009-05-12 International Business Machines Corporation Coordinating the monitoring, management, and prediction of unintended changes within a grid environment
US7793308B2 (en) * 2005-01-06 2010-09-07 International Business Machines Corporation Setting operation based resource utilization thresholds for resource use by a process
US20060149652A1 (en) * 2005-01-06 2006-07-06 Fellenstein Craig W Receiving bid requests and pricing bid responses for potential grid job submissions within a grid environment
US7668741B2 (en) * 2005-01-06 2010-02-23 International Business Machines Corporation Managing compliance with service level agreements in a grid environment
US7502850B2 (en) * 2005-01-06 2009-03-10 International Business Machines Corporation Verifying resource functionality before use by a grid job submitted to a grid environment
US7761557B2 (en) * 2005-01-06 2010-07-20 International Business Machines Corporation Facilitating overall grid environment management by monitoring and distributing grid activity
US7707288B2 (en) * 2005-01-06 2010-04-27 International Business Machines Corporation Automatically building a locally managed virtual node grouping to handle a grid job requiring a degree of resource parallelism within a grid environment
US7562035B2 (en) 2005-01-12 2009-07-14 International Business Machines Corporation Automating responses by grid providers to bid requests indicating criteria for a grid job
US7571120B2 (en) 2005-01-12 2009-08-04 International Business Machines Corporation Computer implemented method for estimating future grid job costs by classifying grid jobs and storing results of processing grid job microcosms
US8176408B2 (en) * 2005-09-12 2012-05-08 Microsoft Corporation Modularized web provisioning
US20070101061A1 (en) * 2005-10-27 2007-05-03 Guruprasad Baskaran Customized content loading mechanism for portions of a web page in real time environments
US7979789B2 (en) * 2005-12-19 2011-07-12 Microsoft Corporation System and method of replacing a delegate component associated with a delegate modular software component at software execution time
US20080043965A1 (en) * 2006-08-01 2008-02-21 Microsoft Corporation Provision and Management of Conference Websites
US8225192B2 (en) * 2006-10-31 2012-07-17 Microsoft Corporation Extensible cache-safe links to files in a web page
US20080114879A1 (en) * 2006-11-14 2008-05-15 Microsoft Corporation Deployment of configuration data within a server farm
US8849746B2 (en) * 2006-12-19 2014-09-30 Teradata Us, Inc. High-throughput extract-transform-load (ETL) of program events for subsequent analysis
KR101092675B1 (ko) * 2007-07-06 2011-12-09 엘지전자 주식회사 무선 네트워크 관리 방법 및 그 방법을 지원하는 스테이션
WO2009094672A2 (en) * 2008-01-25 2009-07-30 Trustees Of Columbia University In The City Of New York Belief propagation for generalized matching
US8683062B2 (en) * 2008-02-28 2014-03-25 Microsoft Corporation Centralized publishing of network resources
US20090259757A1 (en) * 2008-04-15 2009-10-15 Microsoft Corporation Securely Pushing Connection Settings to a Terminal Server Using Tickets
US8612862B2 (en) 2008-06-27 2013-12-17 Microsoft Corporation Integrated client for access to remote resources
EP2377080A4 (en) * 2008-12-12 2014-01-08 Univ Columbia DEVICES, METHODS AND SYSTEMS FOR MACHINE OPTIMIZATION
US8275853B2 (en) * 2009-01-29 2012-09-25 Hewlett-Packard Development Company, L.P. Method and system for a service intermediary selection in a web service management system
EP2433249A4 (en) 2009-05-20 2014-03-05 Univ Columbia SYSTEMS, DEVICES AND METHODS OF ESTIMATION
US9836783B2 (en) 2009-07-24 2017-12-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for content selection, delivery and payment
US20120259956A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies, Ltd. System and method for implementing a dynamic change in server operating condition in a secured server network
US20120259913A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies, Ltd. System and method for implementing a dynamic change in server operating condition in a secured server network
US9082082B2 (en) 2011-12-06 2015-07-14 The Trustees Of Columbia University In The City Of New York Network information methods devices and systems
EP3279756B1 (de) 2016-08-01 2019-07-10 Siemens Aktiengesellschaft Diagnoseeinrichtung und verfahren zur überwachung des betriebs einer technischen anlage
CN107979876B (zh) * 2017-11-16 2022-01-07 广州市百果园网络科技有限公司 数据传输方法及终端

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2281793A (en) * 1993-09-11 1995-03-15 Ibm A data processing system for providing user load levelling in a network
US5774668A (en) * 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5806065A (en) * 1996-05-06 1998-09-08 Microsoft Corporation Data system with distributed tree indexes and method for maintaining the indexes
US6119143A (en) * 1997-05-22 2000-09-12 International Business Machines Corporation Computer system and method for load balancing with selective control
US6351775B1 (en) * 1997-05-30 2002-02-26 International Business Machines Corporation Loading balancing across servers in a computer network
US6633916B2 (en) * 1998-06-10 2003-10-14 Hewlett-Packard Development Company, L.P. Method and apparatus for virtual resource handling in a multi-processor computer system
US6185598B1 (en) * 1998-02-10 2001-02-06 Digital Island, Inc. Optimized network resource location
US6611861B1 (en) * 1998-02-27 2003-08-26 Xo Communications, Inc. Internet hosting and access system and method
US6098093A (en) * 1998-03-19 2000-08-01 International Business Machines Corp. Maintaining sessions in a clustered server environment
US6112279A (en) * 1998-03-31 2000-08-29 Lucent Technologies, Inc. Virtual web caching system
US6092178A (en) * 1998-09-03 2000-07-18 Sun Microsystems, Inc. System for responding to a resource request
JP3550503B2 (ja) * 1998-11-10 2004-08-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 通信を可能とするための方法及び通信システム
US6728748B1 (en) * 1998-12-01 2004-04-27 Network Appliance, Inc. Method and apparatus for policy based class of service and adaptive service level management within the context of an internet and intranet
EP1049307A1 (en) * 1999-04-29 2000-11-02 International Business Machines Corporation Method and system for dispatching client sessions within a cluster of servers connected to the World Wide Web
US6976077B1 (en) * 1999-07-06 2005-12-13 Microsoft Corporation Automatic and transparent synchronization of server-side state information with a client application
US6697849B1 (en) * 1999-08-13 2004-02-24 Sun Microsystems, Inc. System and method for caching JavaServer Pages™ responses
US6374297B1 (en) * 1999-08-16 2002-04-16 International Business Machines Corporation Method and apparatus for load balancing of web cluster farms
US6771595B1 (en) * 1999-08-31 2004-08-03 Intel Corporation Apparatus and method for dynamic resource allocation in a network environment
US6772333B1 (en) * 1999-09-01 2004-08-03 Dickens Coal Llc Atomic session-start operation combining clear-text and encrypted sessions to provide id visibility to middleware such as load-balancers
US6798747B1 (en) * 1999-12-22 2004-09-28 Worldcom, Inc. System and method for time slot assignment in a fiber optic network simulation plan
US7000007B1 (en) * 2000-01-13 2006-02-14 Valenti Mark E System and method for internet broadcast searching
US6587970B1 (en) * 2000-03-22 2003-07-01 Emc Corporation Method and apparatus for performing site failover
WO2002008870A2 (en) * 2000-07-26 2002-01-31 David Dickenson Distributive access controller
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US6901448B2 (en) * 2000-12-29 2005-05-31 Webex Communications, Inc. Secure communications system for collaborative computing
US20020087679A1 (en) * 2001-01-04 2002-07-04 Visual Insights Systems and methods for monitoring website activity in real time
US20020198995A1 (en) * 2001-04-10 2002-12-26 International Business Machines Corporation Apparatus and methods for maximizing service-level-agreement profits
US6675264B2 (en) * 2001-05-07 2004-01-06 International Business Machines Corporation Method and apparatus for improving write performance in a cluster-based file system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008097378A (ja) * 2006-10-12 2008-04-24 Nomura Research Institute Ltd ジョブ管理装置、ジョブ実行装置、及びそれら装置を含むジョブ管理システム
US8694580B2 (en) 2011-07-04 2014-04-08 Fujitsu Limited Information processing apparatus, server selecting method and recording medium
KR20140119090A (ko) * 2012-02-03 2014-10-08 마이크로소프트 코포레이션 확장 가능한 환경에서의 동적 로드 밸런싱 기법
JP2015506523A (ja) * 2012-02-03 2015-03-02 マイクロソフト コーポレーション スケーラブルな環境における動的負荷均衡化
KR102013004B1 (ko) 2012-02-03 2019-08-21 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 확장 가능한 환경에서의 동적 로드 밸런싱 기법
US10635500B2 (en) 2012-02-03 2020-04-28 Microsoft Technology Licensing, Llc Decoupling partitioning for scalability
US10860384B2 (en) 2012-02-03 2020-12-08 Microsoft Technology Licensing, Llc Managing partitions in a scalable environment

Also Published As

Publication number Publication date
CA2471594C (en) 2010-06-01
WO2003063447A1 (en) 2003-07-31
JP3989443B2 (ja) 2007-10-10
US20030140143A1 (en) 2003-07-24
TW200302644A (en) 2003-08-01
EP1472846B1 (en) 2005-08-03
TWI238621B (en) 2005-08-21
US7356592B2 (en) 2008-04-08
CN100556024C (zh) 2009-10-28
CA2471594A1 (en) 2003-07-31
DE60301202D1 (de) 2005-09-08
KR100754296B1 (ko) 2007-09-03
KR20040075048A (ko) 2004-08-26
EP1472846A1 (en) 2004-11-03
ATE301364T1 (de) 2005-08-15
CN1706165A (zh) 2005-12-07
DE60301202T2 (de) 2006-04-20

Similar Documents

Publication Publication Date Title
JP3989443B2 (ja) ウェブ・ファームを制御する方法およびウェブ・ファーム
CN106020941B (zh) 选择资源分配策略和解决资源冲突的方法
US5504894A (en) Workload manager for achieving transaction class response time goals in a multiprocessing system
Wang et al. Algorithms for a facility location problem with stochastic customer demand and immobile servers
US8484348B2 (en) Method and apparatus for facilitating fulfillment of web-service requests on a communication network
US7870256B2 (en) Remote desktop performance model for assigning resources
Balasangameshwara et al. Performance-driven load balancing with a primary-backup approach for computational grids with low communication cost and replication cost
US7113986B2 (en) System and method for modeling information system capacity and accepting sessions in an information system
Wolf et al. On balancing the load in a clustered web farm
CN101266557A (zh) 在客户机-服务器或主机环境中计算作业的多目标分配
US7006512B2 (en) Apparatus and methods for managing queues on a mobile device system
Banaie et al. Load-balancing algorithm for multiple gateways in Fog-based Internet of Things
Baranwal et al. FONS: a fog orchestrator node selection model to improve application placement in fog computing
CN108604193A (zh) 异构系统、计算任务分配方法及装置
Lu et al. On the performance-driven load distribution for heterogeneous computational grids
Shukla et al. Fault tolerance based load balancing approach for web resources in cloud environment.
Chauhan et al. Delay-aware application offloading in fog environment using multi-class Brownian model
US20220365826A1 (en) Allocation of heterogeneous computational resource
CN114490086A (zh) 资源动态调整方法、装置、电子设备、介质和程序产品
KR20070032441A (ko) 퍼지 그룹핑 기반의 로드 밸런싱 시스템 및 그 로드 밸런싱방법
Jayasinghe et al. An analysis of throughput and latency behaviours under microservice decomposition
Wang et al. A resource management framework for multi-tier service delivery in autonomic virtualized environments
Lu et al. Towards decentralized load balancing in a computational grid environment
Mostafaei et al. Network-aware worker placement for wide-area streaming analytics
Komalavalli et al. An Optimal Server Selection Model for Dynamic Task Allocation in Cloud

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070426

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070426

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20070426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070427

TRDD Decision of grant or rejection written
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070629

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070629

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070629

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070717

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110727

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110727

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120727

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130727

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees