JP2012510651A - サービスのロードバランシング - Google Patents

サービスのロードバランシング Download PDF

Info

Publication number
JP2012510651A
JP2012510651A JP2011525075A JP2011525075A JP2012510651A JP 2012510651 A JP2012510651 A JP 2012510651A JP 2011525075 A JP2011525075 A JP 2011525075A JP 2011525075 A JP2011525075 A JP 2011525075A JP 2012510651 A JP2012510651 A JP 2012510651A
Authority
JP
Japan
Prior art keywords
application
message
instance
load balancer
client
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
JP2011525075A
Other languages
English (en)
Other versions
JP5485993B2 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2012510651A publication Critical patent/JP2012510651A/ja
Application granted granted Critical
Publication of JP5485993B2 publication Critical patent/JP5485993B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/1014Server selection for load balancing based on the content of a request
    • 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/5033Allocation 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 data affinity
    • 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/1027Persistence of sessions during load balancing

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

本発明は、サービスのロードバランシングのための方法、システム、およびコンピュータープログラム製品に及ぶ。本発明の実施形態は、メッセージのアフィニティゼーションに基づいて、メッセージのコンテンツに基づいて、サービスのインスタンス間におけるロードバランシングを容易にする。例えば、同じセッションのメッセージを、同じサービスインスタンスに発送できる。長時間実行および/またはステートフルなサービスと関連したシーケンスまたは一連の関連メッセージは、サービスの同じインスタンスに発送されやすい。従って、サービスインスタンスがクライアントステートを持続した場合、持続されたクライアントステートを使用して、別のサービスインスタンスによってクライアントステートが再生成されない可能性が増加する。

Description

本発明は、サービスのロードバランシングに関する。
コンピューターシステムおよびコンピューター関連技術は、社会の多くの側面に影響を及ぼす。確かに、コンピューターシステムの性能は、我々の生活および仕事のやり方を変えた。今日、コンピューターシステムは、コンピューターシステムの出現より前に手で実行された多数のタスク(例えば、文書処理、スケジューリング、アカウンティング等)を普通に実行する。ごく最近、コンピューターシステムを、互いに連結して、他の電子デバイスを連結して、有線と無線との両方のコンピューターネットワークを形成し、それらを介してコンピューターシステムおよび他の電子デバイスが電子コンテンツを転送できる。従って、多くのコンピューティングタスクのパフォーマンスは、多数の異なるコンピューターシステムおよび/または多数の異なるコンピューティングコンポーネントにわたって分散される。
多くの環境において、複数のリモートユーザーは、集中化されたリモートロケーションを通じてアプリケーションおよびデータにアクセスする。例えば、多数のクライアントマシンは、インターネットによってウェブサービスにアクセスできる。多くの環境において、特に作業負荷が増大したサービス(または他のアプリケーション)に対して、サービス(またはアプリケーション)の複数のインスタンスを生成して、より良いユーザー体験を提供する。しかしながら、全般的な作業負荷がサービスの複数のインスタンスにわたり比較的均等に分散されない場合、サービスの複数のインスタンスを有することは、ほとんど利点がない。例えば、1つのインスタンス(またはインスタンスの小さいサブセット)が過剰であり、同時に他のインスタンスが十分に利用されてない場合、複数のインスタンスを有する利点は、著しく縮小される。
従って、通常、複数のインスタンスサーバ環境は、サービスのインスタンス間にわたる作業負荷をより均等に分散させるあるタイプのロードバランシング技術を含む。例えば、サービスの通信が受信されると、ロードバランサーは、その通信をサービスのインスタンスにルーティングして、負荷を減らすことができる。従って、サービスの全般的な作業負荷を、サービスの複数のインスタンスにわたって、より均等に分散することができる。
しかしながら、新しく受信された通信をどのようにルーティングするかを決定することは、主として、新しい通信が受信された時点におけるインスタンスの作業負荷に基づく。例えば、クライアントが、サービスの進行中の使用に関連したサービスの個別のインスタンスとの通信を以前に行っていたかもしれない。しかしながら、クライアントがそのサービスの進行中の使用に関連した新しい通信を送信すると、新しい通信は、単に新しい通信が受信された時点における作業負荷に本質的に基づいてサービスの異なるインスタンスにルーティングされることがある。このことは、より長い実行および/またはステートフルな(stateful)サービスについて最適とはいえない。
クライアントとステートフルサービスとの間の通信は、一連の要求/応答シーケンスを含むことができる。各要求/応答シーケンス間におけるサービスは、例えば、さらなるクライアント要求を待つ間に中間値を保持すること等、通信に関連したあるステートを持続できる。しかしながら、ステートが持続されたサービスのインスタンスが要求/応答シーケンス間において後続の高い作業負荷を受ける場合、ロードバランサーは、さらなるクライアント要求をサーバの異なるインスタンスに送信することがある。残念ながら、通信がサービスのあるインスタンスからサービスの別のインスタンスに切り替わると、サービスのその他のインスタンスは、通信に対して持続されたステートに気づくことができない。このように、その他のインスタンスは、持続されたステートを再計算するように要求される。
新しいインスタンスにおいて(すでに持続された)ステートをリロードすることは、ステートが持続されたインスタンスに、通信の次のクライアント要求を処理することを可能にするよりも多くのリソースを消費する。従って、通信を新しいインスタンスへ 迂回することは、サービスの全般的な作業負荷をむだに増加することがある。さらに、ステートが持続されたインスタンスのメモリリソースは、持続されたステートがクライアントとのさらなる通信に使用されないので、本質的に浪費される。
本発明は、サービスのロードバランシングのための方法、システム、およびコンピュータープログラム製品に及ぶ。いくつかの実施形態において、アプリケーション・ロード・バランサーは、アプリケーションに送信される第1のクライアント開始メッセージを受信する。第1のクライアント開始メッセージは、メッセージシーケンスに含まれる複数のメッセージのうち最初のメッセージ(例えば、アクティベーションメッセージ)である。アプリケーション・ロード・バランサーは、指定された識別子を、第1のクライアント開始メッセージの特性に基づいて、メッセージシーケンスに含まれる複数のメッセージに割り当てる。アプリケーション・ロード・バランサーは、割り当てられた識別子を、アプリケーションのインスタンスにマッピングしないことを決定する。
アプリケーション・ロード・バランサーは、指定された識別子を、ロード・バランシング・アルゴリズムに従って、アプリケーションの指定されたインスタンスにマッピングする。マッピングは、アプリケーションの負荷を、アプリケーションの複数のインスタンスにわたってバランスを取ることを援助する。アプリケーション・ロード・バランサーは、メッセージを、アプリケーションの指定されたインスタンスに送信する。
アプリケーション・ロード・バランサーは、第1のクライアント開始メッセージの受信に引き続く、アプリケーションに送信される第2のクライアント開始メッセージを受信する。アプリケーション・ロード・バランサーは、指定された識別子を、第2のクライアント開始メッセージの特性に基づいて第2のクライアント開始メッセージに割り当てる。アプリケーション・ロード・バランサーは、第2のクライアント開始メッセージを、指定された識別子をアプリケーションの指定されたインスタンスにマッピングすることに基づいて、第1のクライアント開始メッセージと相関させる(例えば、アクティベーションメッセージと相関させる相関メッセージに帰着する)。アプリケーション・ロード・バランサーは、第2のクライアント開始メッセージを、相関に応答してアプリケーションの指定されたインスタンスに送信する。
他の実施形態において、アプリケーション・ロード・バランサーは、アプリケーションの複数のインスタンスのうち指定されたインスタンスから、アプリケーションインスタンス開始メッセージを受信する。アプリケーションインスタンス開始メッセージは、別のアプリケーションに送信される。アプリケーション・ロード・バランサーは、指定された識別子を、アプリケーションインスタンス開始メッセージの特性に基づいてアプリケーションインスタンス開始メッセージに割り当てる。アプリケーション・ロード・バランサーは、指定された識別子をアプリケーションの指定されたインスタンスにマッピングして、アプリケーションの負荷を、アプリケーションの複数のインスタンスにわたってバランスを取る。マッピングは、アプリケーションの負荷を、アプリケーションの複数のインスタンスにわたってバランスを取ることを援助する。
アプリケーション・ロード・バランサーは、メッセージを、その他のアプリケーションに送信する。アプリケーション・ロード・バランサーは、アプリケーションに送信される、その他のアプリケーションからの返信メッセージを受信する。アプリケーション・ロード・バランサーは、指定された識別子を、返信メッセージの特性に基づいて返信メッセージに割り当てる。アプリケーション・ロード・バランサーは、返信メッセージを、指定された識別子をアプリケーションの指定されたインスタンスにマッピングすることに基づいて、アプリケーションインスタンス開始メッセージと相関させる。アプリケーション・ロード・バランサーは、返信メッセージをアプリケーションの指定されたインスタンスに送信する。
本概要は、以下の発明を実施するための形態においてさらに説明される簡易な形式において概念の一つの選択を導入するために与えられる。本概要は、特許請求の範囲の対象の主な特徴または不可欠な特徴を特定することを意図せず、特許請求の範囲の対象の範囲を決定するのに役立つものとして使用されることも意図しない。
本発明の付加的な特徴および利点は、本明細書において以下に説明され、ある程度、本明細書から明らかになるであろうし、または本発明の実施によって習得されることができる。本発明の特徴および利点を、特に添付の特許請求の範囲において指示された手段および組み合わせによって実現させて得ることができる。本発明のこれらと他の特徴は、以下の明細書および添付の特許請求の範囲からさらに十分に明らかになるであろうし、または後述のとおり本発明の実施によって習得されることができる。
本発明の上述および他の利点および特徴を得ることができる方法を説明するために、簡単に上述した本発明のさらに詳細な説明は、添付の図面に示されたそれらの特定の実施形態を参照することによって与えられるであろう。それらの図面は、本発明の典型的な実施形態を表しているにすぎず、従って本発明の範囲を限定するものとみなすべきでないことを理解した上で、本発明を、添付の図面の使用を通じて付加的な特定性および詳細を用いて説明していく。
サービスのロードバランシングを容易にする例示的なコンピューターアーキテクチャの概観を示す図である。 サービスのロードバランシングを容易にする例示的なコンピューターアーキテクチャの概観を示す図である。 サービスのロードバランシングのための例示的な方法のフローチャートを示す図である。 サービスのロードバランシングのための例示的な方法のフローチャートを示す図である。
本発明は、サービスのロードバランシングのための方法、システム、およびコンピュータープログラム製品に及ぶ。いくつかの実施形態において、アプリケーション・ロード・バランサーは、アプリケーションに送信される第1のクライアント開始メッセージを受信する。第1のクライアント開始メッセージは、メッセージシーケンスに含まれる複数のメッセージのうち最初のメッセージ(例えば、アクティベーションメッセージ)である。アプリケーション・ロード・バランサーは、指定された識別子を、第1のクライアント開始メッセージの特性に基づいて、メッセージシーケンスに含まれる複数のメッセージに割り当てる。アプリケーション・ロード・バランサーは、割り当てられた識別子を、アプリケーションのインスタンスにマッピングしないことを決定する。
アプリケーション・ロード・バランサーは、指定された識別子を、ロード・バランシング・アルゴリズムに従って、アプリケーションの指定されたインスタンスにマッピングする。マッピングは、アプリケーションの負荷を、アプリケーションの複数のインスタンスにわたってバランスを取ることを援助する。アプリケーション・ロード・バランサーは、メッセージを、アプリケーションの指定されたインスタンスに送信する。
アプリケーション・ロード・バランサーは、第1のクライアント開始メッセージの受信に引き続く、アプリケーションに送信される第2のクライアント開始メッセージを受信する。アプリケーション・ロード・バランサーは、指定された識別子を、第2のクライアント開始メッセージの特性に基づいて第2のクライアント開始メッセージに割り当てる。アプリケーション・ロード・バランサーは、第2のクライアント開始メッセージを、指定された識別子をアプリケーションの指定されたインスタンスにマッピングすることに基づいて、第1のクライアント開始メッセージと相関させる(例えば、アクティベーションメッセージと相関させる相関メッセージに帰着する)。アプリケーション・ロード・バランサーは、第2のクライアント開始メッセージを、相関に応答してアプリケーションの指定されたインスタンスに送信する。
他の実施形態において、アプリケーション・ロード・バランサーは、アプリケーションの複数のインスタンスのうち指定されたインスタンスから、アプリケーションインスタンス開始メッセージを受信する。アプリケーションインスタンス開始メッセージは、別のアプリケーションに送信される。アプリケーション・ロード・バランサーは、指定された識別子を、アプリケーションインスタンス開始メッセージの特性に基づいてアプリケーションインスタンス開始メッセージに割り当てる。アプリケーション・ロード・バランサーは、指定された識別子をアプリケーションの指定されたインスタンスにマッピングして、アプリケーションの負荷を、アプリケーションの複数のインスタンスにわたってバランスを取る。マッピングは、アプリケーションの負荷を、アプリケーションの複数のインスタンスにわたってバランスを取ることを援助する。
アプリケーション・ロード・バランサーは、メッセージをその他のアプリケーションに送信する。アプリケーション・ロード・バランサーは、アプリケーションに送信される、その他のアプリケーションからの返信メッセージを受信する。アプリケーション・ロード・バランサーは、指定された識別子を、返信メッセージの特性に基づいて返信メッセージに割り当てる。アプリケーション・ロード・バランサーは、返信メッセージを、指定された識別子をアプリケーションの指定されたインスタンスにマッピングすることに基づいて、アプリケーションインスタンス開始メッセージと相関させる。アプリケーション・ロード・バランサーは、返信メッセージを、アプリケーションの指定されたインスタンスに送信する。
本発明の実施形態は、以下により詳細に説明するように、コンピューターハードウェアを含む専用または汎用コンピューターを備えるまたは使用することができる。本発明の範囲内における実施形態は、コンピューター実行可能命令および/またはデータ構造を伝達または格納するための物理および他のコンピューター読み取り可能な媒体も含む。そのようなコンピューター読み取り可能な媒体は、汎用または専用コンピューターシステムによってアクセスすることができるあらゆる利用可能な媒体とすることができる。コンピューター実行可能命令を格納するコンピューター読み取り可能な媒体は、物理ストレージ媒体である。コンピューター実行可能命令を伝達するコンピューター読み取り可能な媒体は、送信媒体である。従って例を挙げると、発明の実施形態は、少なくとも2つの明確に異なる種類のコンピューター読み取り可能な媒体、即ち、物理ストレージ媒体と送信媒体とを備えることができるが、これに限らない。
物理ストレージ媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、またはコンピューター実行可能命令またはデータ構造の形式で所望のプログラムコード手段を格納するのに使用することができて、汎用または専用コンピューターによってアクセスすることができるその他の媒体を含む。
本明細書および以下の特許請求の範囲において、「ネットワーク」は、コンピューターシステムおよび/またはモジュールおよび/または他の電子デバイス間で、電子データの移送を実現させる1または複数のデータリンクとして定義される。情報がネットワークまたは別の通信接続(有線、無線、または有線または無線の組み合わせのいずれか)を介してコンピューターに転送または提供されると、適切に、コンピューターは、接続を送信媒体とみなす。送信媒体は、コンピューター実行可能命令またはデータ構造の形式で所望のプログラムコード手段を伝達するのに使用することができて、汎用または専用コンピューターによってアクセスすることができるネットワークおよび/またはデータリンクを含むことができる。上記の組み合わせも、コンピューター読み取り可能な媒体の範囲内に含まれなければならない。
さらに、さまざまなコンピューターシステムコンポーネントに到達すると、コンピューター実行可能命令またはデータ構造の形式のプログラムコード手段を、送信媒体から物理ストレージ媒体に(逆の場合も同じ)自動的に転送することができることを理解されたい。例えば、ネットワークまたはデータリンクを介して受信されたコンピューター実行可能命令またはデータ構造を、ネットワーク・インターフェース・モジュール(例えば、「NIC」)内のRAMにバッファして、その後最終的には、コンピューターシステムにおけるコンピューターシステムRAMおよび/または不揮発性の物理ストレージ媒体に転送することができる。従って、物理ストレージ媒体を、送信媒体も(またはそれを主に)使用するコンピューターシステムコンポーネントに含むことができることを理解されたい。
コンピューター実行可能命令は、例えば、汎用コンピューター、専用コンピューター、または専用処理デバイスにいくつかの機能または機能群を実行させる命令およびデータを備える。コンピューター実行可能命令を、例えば、バイナリ、アセンブリ言語等の中間フォーマット命令、さらにはソースコードとすることができる。本発明の対象を、構造的特徴および/または方法論的動作に特有の言語で説明してきたが、添付の特許請求の範囲に定義される本発明の対象は、上述の特有の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、上述の特有の特徴および動作は、特許請求の範囲を実装する例示的な形態として開示される。
本発明を、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルな家電、ネットワークPC、ミニコンピューター、メインフレームコンピューター、携帯電話、PDA、ページャ、ルータ、交換機等を含む多くの種類のコンピューターシステム構成を用いたネットワークコンピューティング環境において実施できることを当業者は認識するであろう。本発明を、(有線データリンク、無線データリンク、または有線データリンクと無線データリンクの組み合わせのいずれかによって)ネットワークにリンクされたローカルコンピューターシステムとリモートコンピューターシステムとの両方がタスクを実行する、分散システム環境において実施することもできる。分散システム環境において、プログラムモジュールをローカルメモリストレージデバイスとリモートメモリストレージデバイスとの両方に置くことができる。
図1は、サービスのロードバランシングを容易にする例示的なコンピューターアーキテクチャ100を示す。図に示すように、コンピューターアーキテクチャ100は、アプリケーション・ロード・バランサー101とコンテナー112を含む。垂直の省略記号141は、1または複数の他のコンテナーもコンピューターアーキテクチャ100に含まれることを表す。コンピューターアーキテクチャ100は、アプリケーション・ロード・バランサー101、コンテナー112、および1または複数の他のコンテナーを包むコンテナーグループを表すことができる。各々のコンポーネントを、システムバス経由および/または、例えば、ローカル・エリア・ネットワーク(「LAN」)、ワイド・エリア・ネットワーク(「WAN」)等のネットワーク経由(またはその一部として)、さらにインターネット経由で互いに接続することができる。それによって、図示されたそれぞれのコンポーネントだけでなくその他の接続されたコンポーネントも、メッセージに関連するデータと交換メッセージに関連するデータ(例えば、インターネットプロトコル(「IP」)データグラムと、伝送制御プロトコル(「TCP」)、ハイパーテキスト転送プロトコル(「HTTP」)、簡易メール転送プロトコル(「SMTP」)等のIPデータグラムを使用する他の上位層プロトコル)をネットワーク経由で生成することができる。
アプリケーション・ロード・バランサー101は、サービスバインディング102、アフィニティゼーション(affinitization)モジュール104、クレームシリアライザー105、ロード・バランサー・バインディング106、コンフィギュレーションマネージャー107、アクティブ・インスタンス・マネージャー108、ノードマネージャー109、およびアフィニティゼーションステート111をさらに含む。一般に、サービスバインディング102は、アプリケーション・ロード・バランサー101用のメッセージを提供する通信スタックである。サービスバインディング102内の相関モジュール103は、メッセージを、メッセージコンテンツに基づいて相関させるように構成されて、相関識別子をメッセージに挿入して(例えば、メッセージヘッダーに挿入する)相関メッセージを示す。
一般に、アプリケーション・ロード・バランサー101は、サービスの一部として、または同じコンテナーグループに包まれた、ロードバランスされるアプリケーションとして構成される。このように、アプリケーション・ロード・バランサー101は、アプリケーションと同じセキュリティモデルを有する。従って、アプリケーション・ロード・バランサー101は、アプリケーションと同じ権限を用いてアプリケーションのメッセージ部分にアクセスできる。アプリケーション・ロード・バランサー101を、アプリケーションが設計されるときに、設計するまたはアプリケーションに組み込むことができる。あるいはまた、アプリケーション・ロード・バランサー101を、例えば、アプリケーションがコンピューターアーキテクチャ100において開始されるときに、アプリケーションに統合させることができる。
アフィニティゼーションモジュール104は、メッセージ(例えば、メッセージヘッダー)を検査してメッセージがどのようにサービスインスタンスに発送されるかを決定する。アフィニティゼーションモジュール104は、トランスポートセッション、プロトコルセッション、メッセージセッション(例えば、相関モジュール103からの相関識別子)、メッセージコンテンツ等を含むさまざまな異なるピボット上でメッセージをアフィニタイズ(affinitize)することができる。アフィニタイズすることは、シーケンス内のメッセージまたは連続メッセージをサービスインスタンスに「ピンで留める(pin)」、またはどのサービスインスタンスがメッセージを受信するかを決定するアフィニティ(affinity)IDを作成することを含む。アフィニティゼーションを使用することにより、同じセッション内のメッセージを、互いに相関させて、同じサービスインスタンスに発送させることができる可能性の著しい増加がある。
一般に、アプリケーション・ロード・バランサー101は、アフィニティゼーションのエラーから学習することができる。アプリケーション・ロード・バランサー101をコンテナーグループ112(サービスインスタンス114を含むコンテナーグループ)に含むことができるので、アプリケーション・ロード・バランサー101は、コンテナー112によって投入された例外を理解することができる。従って、メッセージがアフィニタイズされて異なるバックエンドコンテナーに発送されて、そのコンテナーのインスタンスが現在アクティブオンである場合、異なるバックエンドコンテナーによって投入された例外は、そのインスタンスが他の場所で現在アクティブオンであることを示すデータを包む。
例えば、アプリケーション・ロード・バランサー101は、バックエンドアプリケーションによって返信されるリダイレクトされた例外を理解することができる。リダイレクトされた例外は、アプリケーションインスタンスが現在どこで実行しているかについての情報を包むことができる。この情報は、アプリケーション・ロード・バランサー101によって、そのメッセージを新しい宛先に再送信するのに使用される。
クレームシリアライザー105は、メッセージ認証情報を検査して、メッセージから生じたあらゆるセキュリティクレームをメッセージヘッダーにシリアライズするように構成される。次に、メッセージヘッダーは、メッセージに含まれる。従って、メッセージ内のクレームを、サービスインスタンスにおいて再シリアライズして、承認チェックを実行することができる。
ロード・バランサー・バインディング106は、アプリケーション・ロード・バランサー101とコンテナー112との間の通信スタックである。ノードマネージャー109は、アプリケーション・ロード・バランサー101がバランスを取るサービスインスタンスについての動的および静的情報にアクセスするように構成される。例えば、ノードマネージャーは、ヘルスレポート133からサービスインスタンス114の動的および静的情報にアクセスすることができる。アフィニティゼーションモジュール103は、動的および静的情報を使用して、メッセージがどのように発送されるかを決定することを援助できる。アクティブ・インスタンス・マネージャー108は、ロードバランスされたサービスに対して現在アクティブであるサービスインスタンスおよびそのロードバランスされたサービスの各サービスインスタンスの位置についての情報にアクセスするように構成される。例えば、アクティブ・インスタンス・マネージャー108は、インスタンスステータス変更134からサービスインスタンス114の情報にアクセスすることができる。アクティブ・インスタンス・マネージャー108は、この情報をアフィニティゼーションステート111に格納することができる。
コンフィギュレーションマネージャー107は、アプリケーション・ロード・バランサー101をそのコンフィギュレーションに提供するように構成される。コンフィギュレーションマネージャー107は、例えば、例としてアプリケーション・ロード・バランサー101用のコンフィギュレーションをロードするコンフィギュレーションデータ136等の、コンフィギュレーションデータを処理することができる。コンフィギュレーションデータは、スロットリングまたはサービスのサービスインスタンスに適用できるサービスの他の挙動を指定することができる。
コンテナー112は、ロード・バランサー・バインディング116、クレームデシリアライザー113、サービスインスタンス114、コンテナー管理サービス121、およびインスタンス・ライフサイクル・レポーティング122を含む。サービスインスタンス114は、例えば、例として長時間実行および/またはステートフルな(例えば、ウィンドウズファンデーション(「WF」)またはウィンドウズ・コミュニケーション・ファンデーション(「WCF」)テクノロジーに基づく)ウェブサービス等のサービスのインスタンスである。サービスインスタンス114を、サービスの複数のインスタンスの1つとすることができる。サービスの他のインスタンスを、垂直の省略記号141によって表された他のコンテナー上で実行させることができる。
ロード・バランサー・バインディング116は、アプリケーション・ロード・バランサー101とコンテナー112との間において使用される通信スタックである。
クレームデシリアライザー113は、シリアライズされたクレームヘッダーを検査して、承認を実行するためにセキュリティクレームを再構成するように構成される。さらに、クレームデシリアライザーは、アプリケーション・ロード・バランサー101を認証して、セキュリティクレームがアプリケーション・ロード・バランサー101から送信されるようにして、ある保証(例えば、アンチスプーフィングメカニズム)を提供するように構成される。さらに、クレームデシリアライザー113は、例えば、アプリケーション・ロード・バランサー101がメッセージを転送した結果としてメッセージに追加されたアプリケーション・ロード・バランサー101のクレームを除去するように構成される。従って、クライアント認証を、ロードバランサー101において実行するのに続いて、コンテナー112においてクライアント承認を実行することができる。
コンテナー管理サービス121は、サービスインスタンス114を実行するコンピューターシステムの正常性についてのヘルス情報を提供するように構成される。コンピューターシステムの正常性を、例えば、例としてメモリ、CPU等のさまざまな環境条件から決定することができる。コンテナー管理サービス121は、例えば、例としてヘルスレポート133においてヘルス情報を出力することができる。
インスタンス・ライフサイクル・レポーティング・サービス122は、例えば、例としてサービスインスタンス114が完了する、または退避する/パッシベートする(passivate)ときに等の、サービスインスタンス114のステートが変化するときにイベントを提供するように構成される。例えば、これらの2つのイベントのうちどちらか一方は、アクティブ・インスタンス・マネージャー108によって使用されて、そのインスタンス・アフィニティ・マップ(アフィニティゼーションステート111に格納される)をクリーンアップすることができる。インスタンス・ライフサイクル・レポーティング・サービス122は、例えば、例としてインスタンスステータス変更134においてイベントを出力することができる。
クライアントとサービスインスタンスとの間の通信を、クライアントかサービスインスタンスかにおいて開始できる。図3は、クライアントが開始する通信による実施形態における、サービスのロードバランシングのための例示的な方法300のフローチャートを示す。方法300を、コンピューターアーキテクチャ100におけるコンポーネントおよびデータに関して説明する。
方法300は、アプリケーションに送信された第1のクライアント開始メッセージを受信するアプリケーション・ロード・バランサーの動作を含み、第1のクライアント開始メッセージは、メッセージシーケンスに含まれる複数のメッセージのうち最初のメッセージである(動作301)。例えば、アプリケーション・ロード・バランサー101は、コンテンツ141を含む、メッセージ131をクライアントから受信することができる。メッセージ131は、メッセージ132と、1または複数の他のメッセージとを含むメッセージのシーケンスのうち最初のメッセージであるとすることができる。従って、メッセージ131を、メッセージシーケンスのロードバランシングをアクティベートするためのアクティベーションメッセージとみなすことができる。先に説明したように、アプリケーション・ロード・バランサー191を、アプリケーションの一部として統合させることができる。従って、アプリケーション・ロード・バランサーを、サービスインスタンス114がインスタンスであるアプリケーションの一部として統合させることができる。従って、アプリケーション・ロード・バランサー101は、サービスインスタンス114と同じセキュリティモデルのもとにメッセージコンテンツにアクセスできる。
方法300は、アプリケーション・ロード・バランサーが、指定された識別子を、第1のクライアント開始メッセージの特性に基づいて、メッセージシーケンスに含まれる複数のメッセージに割り当てる動作を含む(動作302)。例えば、アフィニティゼーションモジュール104は、アフィニティIDを、メッセージ131を含むメッセージシーケンスに割り当てることができる。例えば、アフィニティIDを、相関モジュール103、コンテンツ141等によって決定される、指定されたメッセージセッションへの相関に基づいて割り当てることができる。
方法300は、アプリケーション・ロード・バランサーが、割り当てられた識別子を、アプリケーションのインスタンスにマッピングしないことを決定する動作を含む(動作303)。例えば、アクティブ・インスタンス・マネージャー104は、メッセージ131に割り当てられたアフィニティIDを、アフィニティゼーションステート111に含まないことを決定できる。方法300は、アプリケーション・ロード・バランサーが、指定された識別子を、ロード・バランシング・アルゴリズムに従ってアプリケーションの指定されたインスタンスにマッピングする動作を含む(動作304)。例えば、アフィニティゼーションモジュール104は、割り当てられたアフィニティIDを、ロード・バランシング・アルゴリズムに従ってサーバインスタンス114にマッピングできる。事実上、あらゆるロード・バランシング・アルゴリズムを使用できる。いくつかの実施形態において、ラウンド・ロビン・アルゴリズムは、メッセージを、指定されたアプリケーションインスタンスを実行するコンピューターシステムのアプリケーションインスタンスおよびヘルスステート情報のライフサイクルに基づいてアプリケーションインスタンスに割り当てる。例えば、アフィニティゼーションモジュール104は、割り当てられたアフィニティIDを、省略記号191によって表された他のコンテナー内の他のサービスインスタンスの同様の情報と共に、サービスインスタンス114ベースの(サービスインスタンス1140を実行するコンピューターシステムの)ヘルスレポート133および(サービスインスタンス114の)インスタンスステータス変更134にマッピングすることができる。
方法300は、アプリケーション・ロード・バランサーが、第1のクライアント開始メッセージを、アプリケーションの指定されたインスタンスに送信する動作を含む(動作305)。例えば、アプリケーション・ロード・バランサー101は、メッセージ131をコンテナー112に送信できる。
方法300は、アプリケーション・ロード・バランサーが、第1のクライアント開始メッセージの受信に引き続くメッセージシーケンスに含まれる第2のクライアント開始メッセージを受信する動作を含む(動作306)。例えば、アプリケーション・ロード・バランサー101は、メッセージ132をクライアントから受信することができる。方法300は、アプリケーション・ロード・バランサーが、指定された識別子を、第2のクライアント開始メッセージの特性に基づいて第2のクライアント開始メッセージに割り当てる動作を含む(動作307)。例えば、アフィニティゼーションモジュール104は、メッセージ131のアフィニティIDを、例えば、メッセージ131と同一指定のメッセージセッションへの相関に基づいてメッセージ132に割り当てて、メッセージ131、コンテンツ142等のメッセージシーケンスに含むことができる。
方法300は、アプリケーション・ロード・バランサーが、第2のクライアント開始メッセージを、指定された識別子をアプリケーションの指定されたインスタンスにマッピングすることに基づいて第1のクライアント開始メッセージと相関させる動作を含む(動作308)。例えば、アクティブ・インスタンス・サービス・マネージャー104は、メッセージ132に割り当てられたアフィニティIDが、(アフィニティIDをメッセージ131に割り当てることによって)アフィニティゼーションステート111にすでに含まれていて、サービスインスタンス114にマッピングされていることを決定することができる。このように、メッセージ132をメッセージ131と相関される相関メッセージとみなすことができて、アクティベーションメッセージとみなすことができる。方法300は、アプリケーション・ロード・バランサーが、第2のクライアント開始メッセージを、相関に応答してアプリケーションの指定されたインスタンスに送信する動作を含む(動作309)。例えば、アプリケーション・ロード・バランサー101は、メッセージ132をコンテナー112に送信できる。
図4は、サービスインスタンスが開始する通信による実施形態における、サービスのロードバランシングのための例示的な方法400のフローチャートを示す。方法400は、コンピューターアーキテクチャ100におけるコンポーネントおよびデータに関して説明する。
方法400は、アプリケーション・ロード・バランサーが、アプリケーションインスタンス開始メッセージを、アプリケーションの複数のインスタンスのうち指定されたインスタンスから受信して、そのアプリケーションインスタンス開始メッセージは、アプリケーションの複数のインスタンスの外部にある別のアプリケーションに送信される、の動作を含む(動作401)。例えば、アプリケーション・ロード・バランサー101は、メッセージ151をコンテナー112から受信できる。メッセージ151を、コンピューターアーキテクチャ100において、コンテナー112およびアプリケーション・ロード・バランサー101の外部にある別のアプリケーションに送信できる。例えば、メッセージ151を、有線または無線のネットワーク接続によって、アプリケーション・ロード・バランサーに接続されるアプリケーションに送信できる。方法400は、アプリケーション・ロード・バランサーが、指定された識別子を、アプリケーションインスタンス開始メッセージの特性に基づいてアプリケーションインスタンス開始メッセージに割り当てる動作を含む(動作402)。例えば、アフィニティゼーションモジュール104は、アフィニティIDを、メッセージ151のメッセージセッション、プロトコルセッション、トランスポートセッション、コンテンツ161等に基づいてメッセージ151に割り当てることができる。
方法400は、アプリケーション・ロード・バランサーが、指定された識別子を、アプリケーションの指定されたインスタンスにマッピングして、アプリケーションの負荷を、アプリケーションの複数のインスタンスにわたってバランスを取る動作を含む(動作403)。例えば、アクティブ・インスタンス・マネージャー108は、メッセージ151用のアフィニティIDを、メッセージがコンテナー112から生じるのでサービスインスタンス114にマッピングできる。この実施形態において、メッセージ151を、アクティベーションメッセージとみなすことができる。方法400は、アプリケーション・ロード・バランサーが、メッセージを、その他のアプリケーションに送信する動作を含む(動作404)。例えば、アプリケーション・ロード・バランサー101は、メッセージ151をクライアントに送信できる。
方法400は、アプリケーション・ロード・バランサーが、アプリケーションに送信される、その他のアプリケーションからの返信メッセージを受信する動作を含む(動作405)。例えば、アプリケーション・ロード・バランサー101は、メッセージ132をクライアントから受信できる。方法400は、アプリケーション・ロード・バランサーが、指定された識別子を、返信メッセージの特性に基づいて返信メッセージに割り当てる動作を含む(動作406)。例えば、アフィニティゼーションモジュール104は、相関IDを、例えば、メッセージ151、コンテンツ142、またはメッセージシーケンス等に含まれるもの等と同一、指定のメッセージセッションへの相関に基づいてメッセージ132に割り当てることができる。
方法400は、アプリケーション・ロード・バランサーが、返信メッセージを、指定された識別子をアプリケーションの指定されたインスタンスにマッピングすることに基づいてアプリケーションインスタンス開始メッセージと相関させる動作を含む(動作407)。例えば、アクティブインスタンスサービスマネージャー104は、アフィニティゼーションステート111を参照して、相関IDを、メッセージ151に割り当てられたアフィニティIDにマッピングすることができる。本質的に、これは、配信用のメッセージ132をサービスインスタンス114にマッピングする。このように、メッセージ132を、メッセージ151と相関される相関メッセージとみなすことができて、アクティベーションメッセージとみなすことができる。方法400は、アプリケーション・ロード・バランサーが、返信メッセージを、アプリケーションの指定されたインスタンスに送信する動作を含む(動作408)。例えば、アプリケーション・ロード・バランサー101は、メッセージ132をコンテナー112に送信できる。
アプリケーション・ロード・バランサーを、アプリケーション・ロード・バランサーがバランスを取るサービスを組み立てるのに使用されるのと同じインフラストラクチャを使用して組み立てることができる。さらに、アプリケーション・ロード・バランサーをサービスと共にグローバルコンテナーに含むことができるので、アプリケーション・ロード・バランサーは、サービスのあらゆるトランスポートチャネルからメッセージを受信することができる。このように、アプリケーション・ロード・バランサーを、例えば、例としてキュー、データベース、外部ストア等のポーリングトランスポートからのメッセージを受信するように構成できる。従って、本発明の実施形態は、サービスをより簡単にスケールアウトさせることを可能にする。さらに、同じグローバルコンテナーに含めることによって、アプリケーション・ロード・バランサーを、アプリケーションと同じセキュリティモデルのもとに、アプリケーションに送信されるメッセージのコンテンツにアクセスさせることを可能にする。
例えば、図2は、サービスのロードバランシングを容易にする例示的なコンピューターアーキテクチャ200の概観を示す。図に示すように、コンピューターアーキテクチャ200は、コンテナーグループ201とコンテナーグループ202とを含む。コンテナーグループ201は、(マシン251において)ロードバランサー271とロードバランサー272とを含み、マシン252においてローカルコンテナー261を含む。コンテナーグループ202は、マシン256においてロードバランサー273を含み、マシン254においてローカルコンテナー263を含む。マシン253は、ロケーションコンテナー261とロケーションコンテナー263とを含む。ローカルコンテナー261は、コンテナーグループ201に含まれて、ローカルコンテナー263は、コンテナーグループ202に包まれる。
コンピューターアーキテクチャ200内において、最後が文字で終わる参照記号は、その参照記号の各数字にそれぞれ一致するサービスのインスタンスを表す。従って、サービスインスタンス211Aおよび211Bは、サービス211のインスタンスを表し、サービスインスタンス212Aおよび212Bは、サービス212のインスタンスを表し、サービスインスタンス213Aおよび213Bは、サービス213のインスタンスを表す。従って、コンピューターアーキテクチャ200において図に示すように、各サービスは、それ自体に対応するロードバランサーを有する。即ち、ロードバランサー271は、少なくともサービスインスタンス211Aとサービスインスタンス211Bとの間でバランスを取り、ロードバランサー272は、少なくともサービスインスタンス212Aとサービスインスタンス212Bとの間でバランスを取り、ロードバランサー273は、少なくともサービスインスタンス213Aとサービスインスタンス213Bとの間でバランスを取る。
各々のロードバランサーは、メッセージを受信するのに対応するサービスバインディングを有する。即ち、ロードバランサー271は、サービスバインディング221を含み、ロードバランサー272は、サービスバインディング222を含み、ロードバランサー273は、サービスバインディング223を含む。さらに、各々のロードバランサーは、サービスインスタンスとの通信のためのロード・バランサー・バインディングを含む。即ち、ロードバランサー271は、ロード・バランサー・バインディング231を含み、ロードバランサー272は、ロード・バランサー・バインディング232を含み、ロードバランサー273は、ロード・バランサー・バインディング233を含む。
さらに、各サービスインスタンスは、それに対応するロードバランサーとの通信のためのロード・バランサー・バインディングを含む。例えば、サービスインスタンス211Aおよび211Bは、ロードバランサー271との通信のためのロード・バランサー・バインディング241Aおよび241Bを含む。サービスインスタンス212Aおよび212Bは、ロードバランサー272との通信のためのロード・バランサー・バインディング242Aおよび242Bを含む。サービスインスタンス213Aおよび213Bは、ロードバランサー273との通信のためのロード・バランサー・バインディング243Aおよび243Bを含む。従って、各サービスインスタンスのエンドポイントに対して、アプリケーション・ロード・バランサーにおいて対応するエンドポイントがある。
したがって、本発明の実施形態は、メッセージのアフィニティゼーションに基づいて、サービスのインスタンス間におけるロードバランシングを容易にする。例えば、同じセッション内のメッセージを、同じサービスのインスタンスに発送させることができる。長時間実行および/またはステートフルなサービスと関連したシーケンスまたは一連の関連メッセージは、サービスの同じインスタンスに、より発送されやすい。従って、サービスインスタンスがクライアントステートを持続した場合、持続されたクライアントステートを利用する可能性の増加があり、そのクライアントステートを再生成する別のサービスインスタンスを有さない可能性の増加がある。
さらに、本発明の実施形態は、メッセージを、サーバファーム内に展開されるサービスに分散することを容易にする。例えば、実施形態は、相関メッセージを、サービスのキャッシュされたインメモリのインスタンスにアフィニタイズして、サービスを短時間または長時間実行させることができる。相関メッセージの分散およびアフィニティゼーションを容易にするために、ロードバランサーは、アプリケーションの一部として動作し、承認を実行する実アプリケーションにセキュリティ情報を渡す前に、必要な復号およびメッセージの承認を実行する。相関がコンテンツに基づき、メッセージのコンテンツが基本的にアプリケーションの変更に従うので、アプリケーション・ロード・バランサーは、実アプリケーションのあらゆる種類のバージョニング(versioning)に関与する。すなわち、アプリケーション・ロード・バランサーは、新しいメッセージコントラクトを有する(従って、異なるメッセージコンテンツになる)アプリケーションの新しいバージョンがある場合でさえ、その職務を実行することができる。
本発明を、その精神または本質的特性から逸脱することなく、他の特定の形態において実施することができる。説明した実施形態は、すべての点において単に例示的と見なされ、限定されるものではない。本発明の範囲は、従って、上述の説明よってではなく、むしろ添付の特許請求の範囲によって示される。特許請求の範囲と同等の意味および範囲におけるすべての変更も、その範囲内に包含される。

Claims (15)

  1. コンピューターアーキテクチャ内に、前記コンピューターアーキテクチャがアプリケーションの複数のインスタンス(114)および前記アプリケーションのアプリケーション・ロード・バランサー(101)を含み、アプリケーション・ロード・バランシングが前記アプリケーションの一部であり、前記アプリケーションのインスタンスがマシンのファーム中のマシン上実行されて、前記アプリケーションの負荷を前記アプリケーションの前記複数のインスタンスにわたってバランスを取る方法であって、
    アプリケーション・ロード・バランサー(101)が、前記アプリケーションに送信される第1のクライアント開始メッセージ(131)を受信する動作であって、前記アプリケーション・ロード・バランサー(101)は、前記アプリケーション・ロード・バランサー(101)が前記アプリケーションと同じセキュリティモデルにおいてメッセージコンテンツ(141)にアクセスすることができるよう前記アプリケーションの一部として統合して、前記第1のクライアント開始メッセージ(131)が、メッセージシーケンスに含まれる複数のメッセージのうち最初のメッセージである、動作と、
    前記アプリケーション・ロード・バランサー(101)が、指定された識別子を、前記第1のクライアント開始メッセージ(131)の特性に基づいて前記メッセージシーケンスに含まれる前記複数のメッセージに割り当てる動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記割り当てられた識別子を前記アプリケーションのインスタンスにマッピングしないことを決定する動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記指定された識別子を、前記アプリケーションの負荷を前記アプリケーションの前記複数のインスタンスにわたってバランスを取るロード・バランシング・アルゴリズムに従って前記アプリケーションの指定されたインスタンスにマッピングする動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記第1のクライアント開始メッセージ(131)を前記アプリケーションの指定されたインスタンス(114)に送信する動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記第1のクライアント開始メッセージの受信に引き続く前記メッセージシーケンスに含まれる第2のクライアント開始メッセージ(132)を受信する動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記指定された識別子を、前記第2のクライアント開始メッセージの特性に基づいて前記第2のクライアント開始メッセージ(132)に割り当てる動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記第2のクライアント開始メッセージ(132)を、前記指定された識別子を前記アプリケーションの指定されたインスタンスにマッピングすることに基づいて前記第1のクライアント開始メッセージ(131)と相関させる動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記第2のクライアント開始メッセージ(132)を、前記相関に応答して前記アプリケーションの指定されたインスタンス(114)に送信する動作と
    を備えたことを特徴とする方法。
  2. 前記第1のクライアント開始メッセージを、前記第1のクライアントメッセージのコンテンツに基づいてメッセージセッションと相関させることをさらに備えたことを特徴とする請求項1に記載の方法。
  3. 前記指定された識別子を前記第1のクライアント開始メッセージに割り当てる動作は、アフィニティIDを前記第1のクライアントメッセージに割り当てて、前記第1のクライアントメッセージを前記アプリケーションに送信される前記第1のクライアントからの他のメッセージと関連付ける動作を含むことを特徴とする請求項1に記載の方法。
  4. 前記アフィニティIDを前記第1のクライアントメッセージに割り当てる動作は、アフィニティIDを、1または複数のトランスポートセッション、プロトコルセッション、メッセージコンテンツ、および第1のクライアントメッセージと関連するメッセージセッションに基づいて前記第1のクライアントメッセージに割り当てる動作を含むことを特徴とする請求項3に記載の方法。
  5. 前記アプリケーション・ロード・バランサーが前記指定された識別子を前記第2のクライアント開始メッセージに割り当てる動作は、前記アフィニティIDを前記第2のクライアント開始メッセージに割り当てる動作を含むことを特徴とする請求項3に記載の方法。
  6. 前記アプリケーション・ロード・バランサーが前記指定された識別子を前記アプリケーションの指定されたインスタンスにマッピングする動作は、前記指定された識別子を、前記アプリケーションの複数のインスタンスの各々における環境条件に基づいて前記アプリケーションの指定されたインスタンスにマッピングする動作を含むことを特徴とする請求項1に記載の方法。
  7. 前記アプリケーション・ロード・バランサーが前記指定された識別子を前記アプリケーションの指定されたインスタンスにマッピングする動作は、前記指定された識別子を、前記アプリケーションの指定されたインスタンスがアイドルであることに基づいて前記アプリケーションの指定されたインスタンスにマッピングする動作を含むことを特徴とする請求項1に記載の方法。
  8. 前記アプリケーション・ロード・バランサーが、前記第1のクライアント開始メッセージの認証情報を検査して、前記クライアントを認証する動作と、
    前記アプリケーションインスタンスが承認チェックのためにセキュリティクレームを使用することができるよう前記セキュリティクレームをシリアライズする動作と
    をさらに備えたことを特徴とする請求項1に記載の方法。
  9. 前記アプリケーション・ロード・バランサーは、キュー、データベース、および外部ストアの中から選択されるポーリング・トランスポート・セッションからクライアント開始メッセージを受信することを特徴とする請求項1に記載の方法。
  10. コンピューターアーキテクチャ内に、前記コンピューターアーキテクチャがアプリケーションの複数のインスタンス(114)および前記アプリケーションのアプリケーション・ロード・バランサー(101)を含み、アプリケーション・ロード・バランシングが前記アプリケーションの一部であり、前記アプリケーションの各インスタンスが、対応する別個のマシン上実行されて、前記アプリケーションの負荷を前記アプリケーションの前記複数のインスタンスにわたってバランスを取る方法であって、
    アプリケーション・ロード・バランサー(101)が、アプリケーションインスタンス開始メッセージ(151)を、前記アプリケーションの複数のインスタンスのうち指定されたインスタンスから受信する動作であって、前記アプリケーションインスタンス開始メッセージが、前記アプリケーションの複数のインスタンスの外部にある別のアプリケーションに送信される、動作と、
    前記アプリケーション・ロード・バランサー(101)が、指定された識別子を、前記アプリケーションインスタンス開始メッセージ(151)の特性に基づいて前記アプリケーションインスタンス開始メッセージに割り当てる動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記指定された識別子を前記アプリケーションの指定されたインスタンスにマッピングして、前記アプリケーションの負荷を前記アプリケーションの前記複数のインスタンスにわたってバランスを取る動作と、
    前記アプリケーション・ロード・バランサー(101)が、返信メッセージ(132)を前記アプリケーションに送信されるその他のアプリケーションから受信する動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記指定された識別子を、前記返信メッセージの特性に基づいて前記返信メッセージ(132)に割り当てる動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記返信メッセージ(132)を、前記指定された識別子を前記アプリケーションの指定されたインスタンスにマッピングすることに基づいて前記アプリケーションインスタンス開始メッセージ(151)と相関させる動作と、
    前記アプリケーション・ロード・バランサー(101)が、前記返信メッセージ(132)を前記アプリケーションの指定されたインスタンスに送信する動作と
    を備えたことを特徴とする方法。
  11. 前記アプリケーションインスタンス開始メッセージを、前記アプリケーションインスタンス開始メッセージのコンテンツに基づいてメッセージセッションと相関させることをさらに備えたことを特徴とする請求項10に記載の方法。
  12. 前記指定された識別子を前記アプリケーションインスタンス開始メッセージに割り当てる動作は、アフィニティIDを前記アプリケーションインスタンス開始メッセージに割り当てて、前記アプリケーションインスタンス開始メッセージを前記アプリケーションインスタンスに送信される他のメッセージと関連付ける動作を含むことを特徴とする請求項10に記載の方法。
  13. 前記アフィニティIDを前記アプリケーションインスタンス開始メッセージに割り当てる動作は、アフィニティIDを、1または複数のトランスポートセッション、プロトコルセッション、およびアプリケーションインスタンス開始メッセージと関連するメッセージセッションに基づいて前記アプリケーションインスタンス開始メッセージに割り当てる動作を含むことを特徴とする請求項12に記載の方法。
  14. 前記アプリケーション・ロード・バランサーが、前記返信メッセージの認証情報を検査して、前記クライアントを認証する動作と、
    前記アプリケーションインスタンスが承認チェックのためにセキュリティクレームを使用することができるよう前記セキュリティクレームをシリアライズする動作と
    をさらに備えたことを特徴とする請求項10に記載の方法。
  15. アプリケーションの負荷を前記アプリケーションの複数のインスタンスにわたってバランスを取るためのロード・バランシング・システムであって、
    少なくとも1つのコンピューターシステムと、
    システムメモリと、
    アプリケーションを表現するコンピューター実行可能命令を格納する1または複数のコンピューター読み取り可能な記録媒体であって、前記アプリケーションが、異なるマシン上実行される前記アプリケーションの複数のインスタンスおよび異なるマシン上実行されるアプリケーション・ロード・バランサーを含み、前記アプリケーション・ロード・バランサーが、負荷を前記アプリケーションの前記複数のインスタンスにわたってバランスを取る、コンピューター読み取り可能な記録媒体と
    を備え、前記アプリケーションの各インスタンスは、
    通信スタックを通じて前記アプリケーション・ロード・バランサー(101)と通信して、
    シリアライズされたセキュリティ(113)のクレームヘッダーをデシリアライズして、
    セキュリティクレームをデシリアライズされたセキュリティクレームヘッダーから再構成して、
    前記アプリケーションインスタンスの正常性に関連するヘルスステート情報(133)を提供して、
    アプリケーションインスタンスにおけるステータス変更に関連するライフサイクルイベント(134)を提供する
    よう構成され、前記アプリケーション・ロード・バランサーは、
    前記アプリケーション(112)に送信されるメッセージ(131、132)を受信して、
    メッセージの特性に基づいて識別子をメッセージに割り当てて、
    ライフサイクルイベント(134)を前記複数のアプリケーションインスタンスの各々から受信して、ヘルスステート情報(113)を前記複数のアプリケーションインスタンスを実行する対応するコンピューターシステムから受信して、
    割り当てられた識別子をアプリケーションインスタンスにマッピングしないことを決定して、
    同じ特性を有する一連のメッセージを互いに相関させることができるよう割り当てられた識別子をアプリケーションインスタンスにマッピングしないことを決定することに応答して、割り当てられた識別子を、受信されたヘルスステート情報および受信されたライフサイクルイベントに基づいてアプリケーションインスタンスにマッピングして、
    割り当てられた識別子をアプリケーションインスタンスにマッピングすることを決定して、
    前記割り当てられた識別子を前記アプリケーションインスタンスにマッピングすることを決定することに応答して、受信されたメッセージ(131、132)を、割り当てられた識別子に基づいて一連のメッセージの1または複数の以前に受信されたメッセージと相関させて、
    前記アプリケーションの負荷を前記アプリケーションの複数のインスタンスにわたってバランスを取るために、受信されたメッセージ(131、132)をアプリケーションインスタンス(112)に送信する
    よう構成されることを特徴とするロード・バランシング・システム。
JP2011525075A 2008-09-02 2009-08-11 サービスのロードバランシング Active JP5485993B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/203,024 US8447881B2 (en) 2008-09-02 2008-09-02 Load balancing for services
US12/203,024 2008-09-02
PCT/US2009/053479 WO2010027609A2 (en) 2008-09-02 2009-08-11 Load balancing for services

Publications (2)

Publication Number Publication Date
JP2012510651A true JP2012510651A (ja) 2012-05-10
JP5485993B2 JP5485993B2 (ja) 2014-05-07

Family

ID=41727310

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011525075A Active JP5485993B2 (ja) 2008-09-02 2009-08-11 サービスのロードバランシング

Country Status (5)

Country Link
US (1) US8447881B2 (ja)
EP (1) EP2321937B1 (ja)
JP (1) JP5485993B2 (ja)
CN (1) CN102138307B (ja)
WO (1) WO2010027609A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021504991A (ja) * 2017-11-21 2021-02-15 テレフオンアクチーボラゲット エルエム エリクソン(パブル) アプリケーションのためのトラフィックをハンドリングするための方法および機能

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8402530B2 (en) * 2010-07-30 2013-03-19 Microsoft Corporation Dynamic load redistribution among distributed servers
US9184983B2 (en) * 2010-08-26 2015-11-10 Futurewei Technologies, Inc. Cross-stratum optimization protocol
US9094309B2 (en) * 2012-03-13 2015-07-28 International Business Machines Corporation Detecting transparent network communication interception appliances
US9961137B2 (en) * 2012-04-26 2018-05-01 At&T Intellectual Property I, L.P. Long term evolution radio network application-level load balancing
US9158577B2 (en) * 2012-08-08 2015-10-13 Amazon Technologies, Inc. Immediately launching applications
US9729652B2 (en) 2013-04-22 2017-08-08 Microsoft Technology Licensing, Llc Dynamically affinitizing users to a version of a website
US9537742B2 (en) * 2013-06-25 2017-01-03 Microsoft Technology Licensing Llc Automatic adjustment of application launch endpoints
US9530482B2 (en) 2014-09-25 2016-12-27 Kilopass Technology, Inc. Methods of retaining and refreshing data in a thyristor random access memory
US10331493B2 (en) * 2015-11-03 2019-06-25 Nec Corporation Systems and methods for distributed assignment of task identifiers
US10404827B2 (en) * 2016-06-22 2019-09-03 Cisco Technology, Inc. Client network information service
US10237339B2 (en) 2016-08-19 2019-03-19 Microsoft Technology Licensing, Llc Statistical resource balancing of constrained microservices in cloud PAAS environments
CN107704310B (zh) * 2017-09-27 2021-06-29 郑州云海信息技术有限公司 一种实现容器集群管理的方法、装置和设备
US11463516B2 (en) * 2020-06-29 2022-10-04 Amdocs Development Limited System, method, and computer program for distributed application execution using a cluster of mobile devices
CN113094182B (zh) * 2021-05-18 2024-02-27 联想(北京)有限公司 一种服务的负载均衡处理方法、装置及云端服务器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189646A (ja) * 2000-12-22 2002-07-05 Matsushita Electric Ind Co Ltd 中継装置
JP2002232446A (ja) * 2000-11-21 2002-08-16 Avaya Communication Israel Ltd ダイナミック・ロード・バランサ
JP2002351760A (ja) * 2001-05-30 2002-12-06 Mitsubishi Electric Corp サーバ負荷分散装置、サーバ負荷分散方法およびその方法をコンピュータに実行させるプログラム
JP2006221450A (ja) * 2005-02-10 2006-08-24 Nec Access Technica Ltd 負荷分散装置、負荷分散方法、および、負荷分散プログラム
JP2007521684A (ja) * 2003-08-13 2007-08-02 マイクロソフト コーポレーション ルーティングヒント
JP2007219964A (ja) * 2006-02-20 2007-08-30 Hitachi Ltd 負荷分散方法およびシステム

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6587836B1 (en) 1997-09-26 2003-07-01 Worldcom, Inc. Authentication and entitlement for users of web based data management programs
US6249801B1 (en) * 1998-07-15 2001-06-19 Radware Ltd. Load balancing
US6970913B1 (en) 1999-07-02 2005-11-29 Cisco Technology, Inc. Load balancing using distributed forwarding agents with application based feedback for different virtual machines
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
US6970425B1 (en) * 2000-04-27 2005-11-29 At&T Corp. Method and apparatus for throttling and distributing data transmissions across a network
US7366755B1 (en) * 2000-07-28 2008-04-29 International Business Machines Corporation Method and apparatus for affinity of users to application servers
US7480705B2 (en) * 2001-07-24 2009-01-20 International Business Machines Corporation Dynamic HTTP load balancing method and apparatus
US7406524B2 (en) * 2001-07-26 2008-07-29 Avaya Communication Isael Ltd. Secret session supporting load balancer
US8126722B2 (en) 2001-12-20 2012-02-28 Verizon Business Global Llc Application infrastructure platform (AIP)
US7694128B2 (en) * 2002-03-08 2010-04-06 Mcafee, Inc. Systems and methods for secure communication delivery
US7185096B2 (en) * 2003-05-27 2007-02-27 Sun Microsystems, Inc. System and method for cluster-sensitive sticky load balancing
US7613822B2 (en) 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US8266294B2 (en) * 2003-08-13 2012-09-11 Microsoft Corporation Routing hints
US20060064478A1 (en) * 2004-05-03 2006-03-23 Level 3 Communications, Inc. Geo-locating load balancing
US8095658B2 (en) * 2004-05-07 2012-01-10 International Business Machines Corporation Method and system for externalizing session management using a reverse proxy server
US8028334B2 (en) 2004-12-14 2011-09-27 International Business Machines Corporation Automated generation of configuration elements of an information technology system
US20060155862A1 (en) 2005-01-06 2006-07-13 Hari Kathi Data traffic load balancing based on application layer messages
US20070070937A1 (en) * 2005-09-28 2007-03-29 Mustafa Demirhan Multi-radio mesh network channel selection and load balancing
US7512707B1 (en) * 2005-11-03 2009-03-31 Adobe Systems Incorporated Load balancing of server clusters
US20070288466A1 (en) * 2006-05-02 2007-12-13 Mypoints.Com Inc. System and method for evenly distributing data across a distributed member architecture utilizing a home silo
US7606808B2 (en) 2006-08-25 2009-10-20 Microsoft Corporation Maintaining and establishing subscriptions with load-balanced servers
US8214497B2 (en) * 2007-01-24 2012-07-03 Mcafee, Inc. Multi-dimensional reputation scoring
US20080228926A1 (en) * 2007-03-13 2008-09-18 Asher Shiratzky Methods, media, and systems for balancing session initiation protocol server load
US8881167B2 (en) * 2008-04-28 2014-11-04 International Business Machines Corporation Load balancing in network based telephony applications

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002232446A (ja) * 2000-11-21 2002-08-16 Avaya Communication Israel Ltd ダイナミック・ロード・バランサ
JP2002189646A (ja) * 2000-12-22 2002-07-05 Matsushita Electric Ind Co Ltd 中継装置
JP2002351760A (ja) * 2001-05-30 2002-12-06 Mitsubishi Electric Corp サーバ負荷分散装置、サーバ負荷分散方法およびその方法をコンピュータに実行させるプログラム
JP2007521684A (ja) * 2003-08-13 2007-08-02 マイクロソフト コーポレーション ルーティングヒント
JP2006221450A (ja) * 2005-02-10 2006-08-24 Nec Access Technica Ltd 負荷分散装置、負荷分散方法、および、負荷分散プログラム
JP2007219964A (ja) * 2006-02-20 2007-08-30 Hitachi Ltd 負荷分散方法およびシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021504991A (ja) * 2017-11-21 2021-02-15 テレフオンアクチーボラゲット エルエム エリクソン(パブル) アプリケーションのためのトラフィックをハンドリングするための方法および機能

Also Published As

Publication number Publication date
US8447881B2 (en) 2013-05-21
WO2010027609A3 (en) 2010-05-14
CN102138307A (zh) 2011-07-27
EP2321937A2 (en) 2011-05-18
EP2321937B1 (en) 2017-11-29
WO2010027609A2 (en) 2010-03-11
EP2321937A4 (en) 2013-03-06
JP5485993B2 (ja) 2014-05-07
US20100058451A1 (en) 2010-03-04
CN102138307B (zh) 2014-01-29

Similar Documents

Publication Publication Date Title
JP5485993B2 (ja) サービスのロードバランシング
CN101370035B (zh) 用于动态客户端/服务器网络管理的方法以及系统
US9195520B2 (en) Event driven sendfile
US8533453B2 (en) Method and system for configuring a server and dynamically loading SSL information
CN103562882B (zh) 用于提供消息传送应用程序接口的系统和方法
CN107948324B (zh) 请求传输系统、方法、装置及存储介质
US20030126196A1 (en) System for optimizing the invocation of computer-based services deployed in a distributed computing environment
EP0817043A2 (en) Apparatus and method for operating an aggregation of server computers using a dual-role proxy server computer
CN104852934A (zh) 基于前端调度实现流量分配的方法、装置和系统
JP2009508260A (ja) 複数のプロセスにおけるポートの共有
CN104753817A (zh) 一种云计算消息队列服务本地模拟方法和系统
US7266822B1 (en) System and method for controlling and managing computer farms
WO2008087633A2 (en) Method for statistics based performance optimization of regenerated code
CN103248670A (zh) 计算机网络环境下的连接管理
US8103759B2 (en) Message redirection within a messaging infrastructure
CN106131162B (zh) 一种基于iocp机制实现网络服务代理的方法
CN112702362B (zh) Tcp/ip协议栈的增强方法、装置、电子设备及存储介质
US11861386B1 (en) Application gateways in an on-demand network code execution system
US9537931B2 (en) Dynamic object oriented remote instantiation
Soundararajan et al. A novel client/server protocol for web-based communication over UDP on a bare machine
CN114615315A (zh) 线上会话的通讯方法、装置、设备及存储介质
US9479599B2 (en) Reroute of a web service in a web based application
US8499023B1 (en) Servlet-based grid computing environment using grid engines and switches to manage resources
CN110855787A (zh) 基于Consul实现OpenResty动态负载均衡的方法
US11872497B1 (en) Customer-generated video game player matchmaking in a multi-tenant environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120515

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130718

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130925

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130926

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140220

R150 Certificate of patent or registration of utility model

Ref document number: 5485993

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250