JP2007529066A - アフィニティ管理のための方法およびシステム - Google Patents

アフィニティ管理のための方法およびシステム Download PDF

Info

Publication number
JP2007529066A
JP2007529066A JP2007502330A JP2007502330A JP2007529066A JP 2007529066 A JP2007529066 A JP 2007529066A JP 2007502330 A JP2007502330 A JP 2007502330A JP 2007502330 A JP2007502330 A JP 2007502330A JP 2007529066 A JP2007529066 A JP 2007529066A
Authority
JP
Japan
Prior art keywords
service provider
addressing
service
entity
entities
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007502330A
Other languages
English (en)
Inventor
パイパー、アンドリュー、アーサー
ワーウィック、マルコム、ミッシェル
ホワイト、ジェームス、リチャード、ハミルトン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007529066A publication Critical patent/JP2007529066A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

複数のアドレッシング・エンティティ(311−315)が、アドレッシング・エンティティ内のグループ・アフィニティを保持しながら、複数のサービス・プロバイダ(301−304)全体にわたって平衡されると必要がある分散コンピュータ・システムにおけるアフィニティ管理のための方法およびシステムが提供される。複数のアドレッシング・エンティティの各々についての識別子が提供され、アフィニティを有するアドレッシング・エンティティのグループの各メンバについての識別子は、同じグループ識別子である。サービスのインスタンスを提供するために、アドレッシング・エンティティによりアドレスされるために利用可能な複数のサービス・プロバイダのリストが提供される。サービス・プロバイダへのアドレッシング・エンティティの配分は、アルゴリズムにより管理される。このアルゴリズムは、標準整数を得るためにアドレッシング・エンティティの識別子にハッシュ関数を適用する(205)ステップと、標準整数をサービス・プロバイダの数で割って(206)法を得るステップと、この法を参照してサービス・プロバイダを選ぶ(207)ステップとを含む。アドレッシング・エンティティは、選ばれたサービス・プロバイダにより提供されるサービスのインスタンス(306)に送られる。

Description

本発明はアフィニティ管理の分野に関する。特に、本発明は、メッセージング・システムを含む分散コンピュータ・システムにおけるアフィニティ管理に関する。
アフィニティ管理は、複数のエンティティが同様なやり方で取り扱われることを要求する状況において必要とされる。そのようなアフィニティの1つの例は、分散コンピュータ・システムにおけるWebSphere MQ(WebSphereおよびMQは、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である)メッセージング環境において用いられることがある。メッセージのグループが送信されるとき、すべてのメンバが到着するまでグループのメンバが全く配信されない場合がある。しかしながら、グループの各メンバがそれぞれ別のキュー・マネージャに配信されれば、キュー・マネージャは、このキュー・マネージャがグループのすべてのメンバを見るまで配信しないので、結果として、グループ・メンバは決して配信されないことになる。この場合、そのグループのメンバは、それらすべてが同じキュー・マネージャに送られることを確実にするために、アフィニティを用いて取り扱われる必要がある。
アフィニティが要求される別の例は、質問および応答の形で2つのアプリケーション間を流れる一連のメッセージに依拠する2つのアプリケーションがあるか場合である。すべての応答が同じキュー・マネージャに送り返されることが重要となろう。作業負荷管理ルーチンがメッセージを、正しいキューのコピーを偶然ホストするどのようなキュー・マネージャにも送らないことが重要である。同様に、メッセージが順次処理されることを必要とするアプリケーション、例えば、順次取得されなければならないメッセージのバッチを送るファイル転送アプリケーションまたはデータ・ベース複製アプリケーションが考えられる。
クラスタ化キュー・マネージャにおいて、メッセージは、適切なキューのインスタンスをホストするどのようなキュー・マネージャにルーティングされても良い。アプリケーションを検査して、関連するメッセージを交換する必要性の如くのメッセージ・アフィニティを有するものがあるか否かを調べなければならない。もしメッセージが異なるキュー・マネージャにルーティングされると、メッセージ・アフィニティを用いたアプリケーションのロジックは混乱してしまうであろう。
メッセージング・システムにおけるアフィニティ管理は、アプリケーションがキューを開くやり方(例えば、MQOPENコール時のBIND_ON_OPENオプション)を変更することにより、対応できる。しかしながら、これには、アプリケーションがメッセージ・アフィニティの問題を理解していることを前提にするという不利な点がある。
本発明の1つの実施形態がWebSphere MQ(IBM社の登録商標)メッセージング・システムに即して説明される。特に、クラスタ化キュー・マネージャの環境下で説明される。しかしながら、本発明は、多くの関連するクライアント・アプリケーションが、あるウェブ・サービスの同じインスタンスを用いることを要求する、Web Servicesのような、他の分散計算システムにも広範囲に適用可能である。別の例は、WebSphere(IBM社の登録商標)Edge Serverシステムである。
本発明は、アドレッシング・エンティティのグループにより、そのグループの各メンバが、あるサービスの同じインスタンスに向けられるように、アフィニティが保たれねばならないどの状況においても適用可能である。WebSphere MQ(IBM社の登録商標)の環境において、メッセージのグループはアフィニティを保持でき、すべてが同じキュー・マネージャに送られ得る。
アドレッシング・エンティティによるトランザクションの宛先の履歴を維持しても良く、そうすると、アドレッシング・エンティティ間にアフィニティがあれば、同じ宛先が確実に選ばれ得る。しかしながら、大量トランザクション・システムにおいては、すべてのトランザクションがどこに送られたかを示すそのような履歴を保持することが常に実際的または効率的であるというわけではない。
本発明の第1の局面によれば、分散コンピュータ・システムにおけるアフィニティ管理のための方法が提供され、この方法は、複数のアドレッシング・エンティティの各々についての識別子を提供するステップであって、アフィニティを有するアドレッシング・エンティティのグループの各メンバについての識別子は同じグループ識別子であるステップと、サービスのインスタンスを提供するために、アドレッシング・エンティティによりアドレスされるために利用可能なサービス・プロバイダの数を決定するステップと、標準整数を得るためにアドレッシング・エンティティの識別子にハッシュ関数を適用し、標準整数をサービス・プロバイダの数で割って法(modulus)を得、この法を参照してサービス・プロバイダを選び、アドレッシング・エンティティを選ばれたサービス・プロバイダにより提供されるサービスのインスタンスに送るやり方に従ってサービス・プロバイダへのアドレッシング・エンティティの配分を管理するステップとを含む。
サービス・プロバイダの数を決定するステップは周期的に実行されても良く、サービス・プロバイダの数は、ある期間内で一定となる。サービス・プロバイダが動的であり、ある期間の間に参加または離脱しても、サービス・プロバイダの数は一定に保たれる。
上記方法は、法値により参照される、利用可能なサービス・プロバイダのインデックスを提供するステップを含んでも良い。例えば、6つの利用可能なサービス・プロバイダについて、法値は0〜5であり、各法値は、これらのサービス・プロバイダの1つについてのインデックスを提供できる。
選ばれたサービス・プロバイダが利用できなければ、アドレッシング・エンティティは、予め決められた順序で次のサービス・プロバイダに送られても良い。あるサービス・プロバイダが機能しなくなれば、前に配信されたアドレッシング・エンティティを取得するためのプロセスが作動されても良い。あるサービス・プロバイダが機能しなくなった場合、そのサービス・プロバイダは、代わりのサービス・プロバイダ中にグループ・アフィニティを有するアドレッシング・エンティティまったくないことを確認した後、復旧されても良い。また、あるサービス・プロバイダが機能しなった場合に、そのサービス・プロバイダに送られたアドレッシング・エンティティを再頒布しても良い。
1つの実施形態において、分散計算システムは、アドレッシング・エンティティがメッセージであり、サービス・プロバイダが1つ以上のクラスタ・キューのインスタンスをホストするクラスタ化キュー・マネージャであるメッセージング・システムであっても良く、グループ識別子は、汎用一意識別子(UUID)の形であっても良い。
別の実施形態において、アドレッシング・エンティティはクライアント・アプリケーションとすることができ、サービス・プロバイダは、サービスのインスタンスをホストするWeb Servicesとすることができる。
本発明の第2の局面によれば、分散コンピュータ・システムにおけるアフィニティ管理のためのシステムが提供され、このシステムは、各々が識別子を有する複数のアドレッシング・エンティティであって、アフィニティを有するアドレッシング・エンティティのグループの各メンバについての識別子が同じグループ識別子である複数のアドレッシング・エンティティと、サービスのインスタンスを提供するために、アドレッシング・エンティティによりアドレスされるために利用可能な複数のサービス・プロバイダのリストと、標準整数を得るためにアドレッシング・エンティティの識別子にハッシュ関数を適用するステップ、標準整数をリスト中のサービス・プロバイダの数で割って法を得るステップ、およびこの法を参照してサービス・プロバイダを選ぶステップを有するアルゴリズムを用いてサービス・プロバイダへのアドレッシング・エンティティの配分を管理するための手段と、選ばれたサービス・プロバイダにより提供されるサービスのインスタンスにアドレッシング・エンティティを送るための手段とを含む。
サービス・プロバイダのリストは周期的に更新されても良く、リスト上のサービス・プロバイダの数は、ある期間内で一定となる。リスト中に示されるサービス・プロバイダを作業負荷マネージャに知らせるための機構が提供されても良い。このシステムは、サービス・プロバイダのインデックスを、法値により参照されるリストに含めることができる。
選ばれたサービス・プロバイダが利用できなければ、作業負荷マネージャは、アドレッシング・エンティティを、予め決められた順序で次のサービス・プロバイダに送ることができる。あるサービス・プロバイダが機能しなくなれば、前に配信されたアドレッシング・エンティティを取得するための手段が提供されても良い。あるサービス・プロバイダが機能しなくなれば、その機能しなくなったサービス・プロバイダが復旧される前に、代わりのサービス・プロバイダ中にグループ・アフィニティを有するアドレッシング・エンティティがまったくないことを確実にするための手段が提供され得る。あるサービス・プロバイダが機能しなくなった場合、そのサービス・プロバイダに送られたアドレッシング・エンティティを再頒布するための手段が提供されても良い。
1つの実施形態において、分散計算システムは、アドレッシング・エンティティがメッセージであり、サービス・プロバイダが1つ以上のクラスタ・キューのインスタンスをホストするクラスタ化キュー・マネージャであるメッセージング・システムであっても良い。グループ識別子は、汎用一意識別子(UUID)の形であっても良い。
別の実施形態において、アドレッシング・エンティティはクライアント・アプリケーションとすることができ、サービス・プロバイダは、サービスのインスタンスをホストするWeb Servicesとすることができる。
本発明の第3の局面によれば、複数のアドレッシング・エンティティの各々についての識別子を提供するステップであって、アフィニティを有するアドレッシング・エンティティのグループの各メンバについての識別子が同じグループ識別子であるステップと、サービスのインスタンスを提供するために、アドレッシング・エンティティによりアドレスされるために利用可能なサービス・プロバイダの数を決定するステップと、標準整数を得るためにアドレッシング・エンティティの識別子にハッシュ関数を適用し、標準整数をサービス・プロバイダの数で割って法を得、この法を参照してサービス・プロバイダを選び、アドレッシング・エンティティを選ばれたサービス・プロバイダにより提供されるサービスのインスタンスに送る方法によりサービス・プロバイダへのアドレッシング・エンティティの配分を管理するステップとを実行するためのコンピュータ可読プログラム・コード手段を含むコンピュータ可読記憶媒体上に格納されたコンピュータ・プログラム製品が提供される。
本発明の実施形態を、単なる例示として、添付図面に関連して説明する。
図1は、分散計算システム100の概略図を示す。このシステム100は、本願に記載されるアフィニティ管理方法により提供することの可能なアフィニティ管理が必要とされる構成を概括的に例示するために用いられる。これは、広範な種々のアーキテクチャに適用できる。WebSphere MQ(IBM社の登録商標)メッセージング・システムの形の1つの実施形態を説明する。
分散計算システム100中の複数のアドレッシング・エンティティ102は、同じサービスを提供する複数のサービス・プロバイダ104にアドレスできる。システム100における通信は、通信インフラストラクチャを提供する1つ以上のネットワーク106を介する。
用語「アドレッシング・エンティティ」は、サービス・プロバイダ104にアドレスするどのような手段も含む一般用語として用いられる。例えば、アドレッシング・エンティティは、クライアント・アプリケーションであっても良く、またはメッセージング・システムにおけるメッセージであっても良い。
複数のアドレッシング・エンティティ102は、グループ108を形成するために何らかのやり方で関連付けられることができ、そのグループのメンバはアフィニティを有している。グループ108のメンバは、利用可能なサービス・プロバイダ104からのサービスの同じインスタンスにアドレスすることにより、それらのアフィニティを保持しなければならない。
用語「サービス・プロバイダ」104も、一般的な意味で用いられる。複数のサービス・プロバイダ104は、これらの複数のサービス・プロバイダ104のどれもがアドレッシング・エンティティ102により、等しく選ばれ得るように、同じサービスのインスタンスをアドレッシング・エンティティ102に提供する。以下で説明されるメッセージング・システムの実施形態において、サービス・プロバイダ104はキュー・マネージャであり、複数のキュー・マネージャは、メッセージがアドレスされるキューのインスタンスをホストし得る。Web Services環境において、複数のサービス・プロバイダ104は各々、クライアント・アプリケーションによりアドレスされるサービスのインスタンスをホストし得る。
本明細書に記載されるアフィニティ管理の方法において、特定の時にどのサービス・プロバイダがグループ頒布に関与しているかが最初に決定される。すなわち、アドレッシング・エンティティにより等しく選ばれ得て、サービスを実行する、サービス・プロバイダである。関与しているサービス・プロバイダのリストは、例えばリストが改訂される時まで、ある期間にわたって一定である。その期間は、規則的に更新される期間であってもよく、またはその期間は、例えば、利用可能であり続けるリスト上のサービス・プロバイダの数によって決定される不規則な期間であってもよい。
リストが決定された後に、あるサービス・プロバイダが利用可能になっても、そのサービス・プロバイダは、そのリストが改訂されるまでリストに追加されない。同様に、あるサービス・プロバイダがリスト中に示されるが、利用可能でなくなっても、そのサービス・プロバイダは、リストが改訂されるまでリスト上に残る。以下で説明されるフェイルオーバ機構は、もはや利用できないサービス・プロバイダにアドレッシング・エンティティが送られるような場合に用いられる。
サービス・プロバイダのリストに基づき、その期間のリスト上のサービス・プロバイダの数が数えられる。この数は、その期間に各アドレッシング・エンティティに対するサービス・プロバイダを選ぶための選択または調和(バランシング)アルゴリズムにおいて用いられる。数0〜nにより参照されるサービス・プロバイダのインデックスが設定され、ここで、nは、リスト上のサービス・プロバイダの数である。
選択アルゴリズムは、アドレッシング・エンティティがサービス・プロバイダへアドレスすることを要求する場合に用いられる。アドレッシング・エンティティは識別子を有しており、この識別子は、名前、ID参照、汎用一意識別子(UUID)等であり得る。ある1つのアフィニティを保持する必要のある複数のアドレッシング・エンティティから構成されるグループのメンバは、同じグループ識別子を有している。識別子は、標準整数を得るために、いずれかの適切なハッシュ演算によりハッシュされる。
標準整数は、現期間についてのリストから計数されたサービス・プロバイダの数nで割られて、法が得られる。この法は、アドレッシング・エンティティがどのサービス・プロバイダにアドレスすべきかを決定するためにインデックスを参照するために用いられる。
アフィニティ・グループのメンバであるアドレッシング・エンティティが同じ識別子、例えば、グループIDを有しているので、そのグループの各メンバは同じサービス・プロバイダに送られる。アドレッシング・エンティティが異なる識別子を有していれば、それらのエンティティは、選択アルゴリズムの結果に応じて、そのサービス・プロバイダのうちの何れかに送られる。その結果、アドレッシング・エンティティが、リスト中にある関与するサービス・プロバイダに満遍なく行きわたるようになる。
図2は、上記の方法を例示する流れ図である。第1のステップ201において、関与するサービス・プロバイダのリストが生成される。サービス・プロバイダの数nに基づく除数が決定される(202)。各法値についてサービス・プロバイダのインデックスが生成される(203)。
アドレッシング・エンティティが処理される(204)。標準整数を得るために、アドレッシング・エンティティの識別子のハッシュが実行される(205)。法を得るために、標準整数が除数nで割られる(206)。得られた法値について、サービス・プロバイダのインデックスが検索される(207)。アドレッシング・エンティティは、法に基づいてインデックス中で識別されたサービス・プロバイダに対して送られる(208)。
次に、処理待ちの別のアドレッシング・エンティティがあるかどうかが決定され(209)、もしあれば、この方法内のループ210が次のアドレッシング・エンティティについて実行される。アドレッシング・エンティティがもはやなければ、このプロセスは、処理されるべき次のアドレッシング・エンティティに備えて待機させられる(211)。
処理されるべきアドレッシング・エンティティがメッセージであるような、メッセージング環境において、ステップ204は、メッセージの到着によりトリガされ、ステップ205からステップ208がそのメッセージについて実行される。従って、ループ210は必要とされない。
この方法は、アドレッシング・エンティティのグループが、同じ識別子を有するアフィニティ・グループのメンバによってアフィニティを保持することを可能にし、従って同じサービス・プロバイダに送られることを可能にする。
利用できないサービス・プロバイダにアドレッシング・エンティティが送られる場合をを扱うために、フェイルオーバ機構が提供される。あるサービス・プロバイダが利用できなければ、アドレッシング・エンティティは、フェイルオーバ・リスト中の次のサービス・プロバイダに送られる。このように、利用できないサービス・プロバイダに送られるすべてのアドレッシング・エンティティは、同じフォールバック・サービス・プロバイダに送られ、それによってアドレッシング・エンティティのグループのアフィニティを保持する。
あるサービス・プロバイダが機能しなくなれば、そのアドレッシング・エンティティを返送して、再処理およびアフィニティを受け持つサービス・プロバイダに転送する必要があろう。そして、利用可能なリソース全体の中で、アフィニティをまったく有しないアドレッシング・エンティティを負荷バランシングする。
WebSphere MQ(IBM社の登録商標)メッセージング・システムの環境における1つの実施形態を説明する。1つのネットワーク内の異なるコンピュータまたはノード上で走っているアプリケーションは、メッセージおよびキューイングを用いて通信することができる。メッセージングおよびキューイングによる通信は、複数のアプリケーションが、それらをリンクするためのプライベートな専用の論理接続を持つことなく、ネットワークを介して通信できるようにする。通信は、メッセージをメッセージ・キュー上に載せ、メッセージをメッセージ・キューから取り込むことにより行われる。
ネットワーク中の各ノードは、1つのキュー・マネージャを有している。これらのキュー・マネージャは、アプリケーションにより呼び出されるメッセージ・キュー・インタフェースを介してアプリケーションに接続する。メッセージ・キュー・インタフェースは、多くの異なるオペレーティングシステムおよびプラットホームをサポートする。
分散キューイング・システムにおいて、キュー・マネージャは独立であり、分散キューイングを用いて通信する。メッセージを別のキュー・マネージャに送る1つのキュー・マネージャは、伝送キュー、リモート・キュー・マネージャへのチャネルおよびキュー・マネージャがメッセージを送ろうとするすべてのキューについてのリモート・キュー定義を定義していなければならない。
複数のキュー・マネージャが1つのクラスタにグループ化される場合、それらのキュー・マネージャは、それらがホストするキューを、そのクラスタ中のすべての他のキュー・マネージャにとり利用可能にできる。どのキュー・マネージャも、各宛先についての明示的なチャンネル定義、リモート・キュー定義、または伝送キューの必要なしにメッセージを同じグループ中のどの他のキュー・マネージャにも送ることができる。1つのクラスタ中のすべてのキュー・マネージャは、単一の伝送キューを有しており、この伝送キューからキュー・マネージャはクラスタ中のどの他のキュー・マネージャにもメッセージを伝送できる。1つのクラスタ中の各キュー・マネージャは、その上でメッセージを受信する1つのクラスタ受信器チャネル、およびキュー・マネージャが自己導入およびそのクラスタについて学習するクラスタ送信器チャネルのみを定義する必要がある。
図3は、メッセージング・システム中のキュー・マネージャのクラスタ300を示す。4つのキュー・マネージャQM1 301、QM2 302、QM3 303およびQM4 304が示してある。これらのキュー・マネージャの各々は、1つ以上のアプリケーション311、312、313、314、315の応対をする。
各キュー・マネージャは、そのキュー・マネージャにより応対されるアプリケーションのみがアクセス可能なローカル・キュー305を有することができる。クラスタ中の各キュー・マネージャは、クラスタ・キュー306も有することができる。クラスタ・キュー306には、クラスタ中のどの他のキュー・マネージャもアクセス可能である。キュー・マネージャのうちの1つ以上は、そのクラスタ中のキュー・マネージャについての情報のリポジトリ307をホストすることもできる。
任意のキュー・マネージャ301、302、303、304においてメッセージをクラスタ・キュー306上に置くために、アプリケーション311は、MQPUTコールを用いる。ローカル・キュー・マネージャ301上のクラスタ・キュー306からメッセージを取得するために、アプリケーション311は、MQGETコールを用いる。
クラスタ300に送られたメッセージは、作業負荷を均衡させる頒布キュー・マネージャ中の作業負荷マネージャにより、利用可能なキュー・マネージャ301、302、303、304中のクラスタ・キュー306のインスタンスの各々に分散される。
WebSphere MQ(IBM社の登録商標)メッセージング・システムでは、すべてが到着するまでグループのメンバがまったく配信されないように、メッセージのグループを送ることができる。これは、すべてのメッセージが1つのクラスタ中の同じキュー・マネージャに送られることを必要とするグループの例である。そのグループ中のメッセージが異なるキュー・マネージャに送られる場合には、どのキュー・マネージャも、すべてのメッセージが到着したことを認識しないので、それらのメッセージは配信されない。ある特定のグループに属するメッセージが、そのクラスタ中の同じキュー・マネージャに対するアフィニティを有することを保証する必要がある。しかしながら、非グループ化メッセージは影響されてはならず、そのため1つのクラスタ中のキュー・マネージャの中で作業負荷バランスが保たれる。
グループ・メンバはそれ自体、24バイトの汎用一意識別子(UUID)として明示されるグループIDにより識別される。グループの各メンバは、一連番号も有しており、グループの最終メンバはそれ自身をそのようなものとして識別する。
説明された方法において、クラスタ中の配分キュー・マネージャにおける作業負荷マネージャは、メッセージがどのキュー・マネージャのクラスタ・キューに送られるかを決定するためにバランシング・アルゴリズムを実行する。バランシング・アルゴリズムは、1つのグループのメンバがそのクラスタ中の同じキュー・マネージャに確実に送られるようにすることによりグループ・メンバ・アフィニティを保つ。
バランシング・アルゴリズムは、標準整数を得るために、グループIDに対してハッシュ関数を実行する。標準整数の法は、キュー・マネージャの数で割って目標キュー・マネージャのインデックスを決定することにより得られる。
配分キュー・マネージャにグループ配分に関与するクラスタ・キューを知らせるために、構成ファイルまたは他の機構の形のリストが用いられる。このリストは、バランシング・アルゴリズムにおいて用いられる法を得るための除数を決定する。この除数は、キュー・マネージャの数であり、それゆえ、メッセージが送られ得るクラスタ・キューのインスタンスの数である。このリストは、クラスタに出入りするキューにかかわらず、変化せず、バランシング・アルゴリズムが正しいキューに一貫してアドレスできるようにする。
これにより、状態の保持または履歴をチェックするための大きいオーバヘッドを招くことなく、配分キュー・マネージャが、同じメッセージのグループのすべてのメンバを同じキュー・マネージャに送ることが可能になる。
キュー・マネージャのクラスタは、キュー・マネージャがいつでも参加または離脱できるように、動的である。除数がキュー・マネージャの現在の数に基づくものであったら、平衡アルゴリズムはエラーになる傾向があるであろう。従って、平衡アルゴリズムには、選ぶべきキュー・マネージャのリストが与えられ、このリストは、静的であり、キュー・マネージャの選択においてバランシング・アルゴリズムが一貫していられるようにする。
加えて、キュー・マネージャはドミノ式で倒れる。例えば、図3に示されるようにクラスタ中に4つのキュー・マネージャがあれば、これらのキュー・マネージャは、予め決められた順序:QM1、QM2、QM3、QM4を有する。1つのキュー・マネージャQM1が機能しなくなれば、そのメッセージは作業負荷マネージャに送り返される。キュー・マネージャQM1がバランシング・アルゴリズムにより選ばれて、しかも利用できなければ、並んでいる次のキュー・マネージャ、すなわちQM2が選ばれる。
このドミノ・フェイルオーバ法は、すべての前に配信されたグループ・メンバを取得するためのプロセスと共に可能にされる。回復されたキュー・マネージャの再設定は同様な制御で行われる必要がある。
いったんあるキュー・マネージャが機能しなくなったと確認されると、そのキュー・マネージャは、別のキュー・マネージャ中で待機しているグループに属するどのようなメッセージもないことが保証されることなしには復旧され得ない。
また、あるキュー・マネージャが機能しなくなったと新たに検出されれば、メッセージは、そのキュー・マネージャが閉じられたこと、およびすでに配信されたメッセージが再配分されることを知らされるまで、通常のWebSphere MQ(IBM社の登録商標)システムのやり方での伝送のために格納されなければならない。
このように、機能しなくなったキュー・マネージャの作業負荷は、アフィニティを受け持ちかつ利用可能なリソース全体にわたりアフィニティを持たないメッセージを平衡させつつ、回復させ得る。
図3に示される例には、4つの利用可能なキュー・マネージャがある。キュー・マネージャ、従ってクラスタ・キューの利用可能なインスタンスのリストがインデックスとしてコンパイルされ、各キュー・マネージャは、以下のインデックス数を有する:
QM1=0、
QM2=1、
QM3=2、
QM4=3。
リスト中には4つのキュー・マネージャがあるので、平衡アルゴリズムにおいて使用するための除数は4である。これは、リストが改訂されて新しい除数が決定されるまで一定のままである。
この例において、グループ識別子を有するいくつかのメッセージのグループがある。グループ識別子は、例示の目的のため固有名詞として選ばれた。実際には、グループ識別子は、例えば、24バイトUUIDの形のグループIDであり得る。
この例におけるハッシュ関数は、連続した数をアルファベットの文字に割り当て、これらの数を合算して標準整数を得る。
以下の表は、グループ名に対するハッシュ関数の演算を示す。
Figure 2007529066
「HAMPSHIRE」の識別子を有するグループのメンバについて平衡アルゴリズムによって得られるインデックス数は「1」である。従って、このグループのメンバはQM2に送られる。以下の表は、各グループのメンバの宛先を示す。
Figure 2007529066
このように、アフィニティを有するグループのメンバは、キュー・マネージャ全体にわたり作業負荷を平衡しつつ、同じキュー・マネージャに送られる。
本発明は一般に、コンピュータまたは同様なデバイスを制御するための1組のプログラム命令を含むコンピュータ・プログラム製品として実施される。これらの命令は、システムにあらかじめロードされたり、CD−ROMのような記憶媒体に記録されて供給されたり、あるいはインターネットのようなネットワークまたは移動電話網上でのダウンロードで利用可能にされ得る。
本発明の範囲を逸脱することなく、上記のことに対する改良および変更がなされ得る。
本発明による分散計算システムのブロック図である。 本発明による方法の流れ図である。 クラスタ化キュー・マネージャを有する本発明の実施形態によるメッセージング・システムのブロック図である。

Claims (18)

  1. 分散コンピュータ・システム(100)におけるアフィニティ管理のための方法であって、複数のアドレッシング・エンティティ(311−315)の各々についての識別子を提供するステップであって、アフィニティを有するアドレッシング・エンティティのグループの各メンバについての前記識別子は同じグループ識別子であるステップと、サービスのインスタンスを提供するために、アドレッシング・エンティティによりアドレスされるために利用可能なサービス・プロバイダ(301−304)の数を決定するステップと、標準整数を得るためにアドレッシング・エンティティの前記識別子にハッシュ関数を適用し(205)、前記標準整数をサービス・プロバイダの前記数で割って(206)法を得、前記法を参照してサービス・プロバイダを選び(207)、前記アドレッシング・エンティティを前記選ばれたサービス・プロバイダにより提供される前記サービスの前記インスタンスに送る(208)やり方によりサービス・プロバイダへのアドレッシング・エンティティの配分を管理するステップと、を含む方法。
  2. サービス・プロバイダの前記数を決定する前記ステップは周期的に実行され、サービス・プロバイダの前記数は、ある期間内で一定である請求項1に記載の方法。
  3. 前記方法は、法値により参照される前記利用可能なサービス・プロバイダのインデックスを提供するステップ(203)を含む請求項1または請求項2に記載の方法。
  4. 選ばれたサービス・プロバイダが利用できなければ、前記アドレッシング・エンティティは、予め決められた順序で次のサービス・プロバイダに送られる請求項1〜3のいずれか1項に記載の方法。
  5. あるサービス・プロバイダが機能しなくなれば、前に配信されたアドレッシング・エンティティを取得するためのプロセスが作動させられる先行請求項のいずれか1項に記載の方法。
  6. あるサービス・プロバイダが機能しなくなれば、該サービス・プロバイダは、代わりのサービス・プロバイダ中にグループ・アフィニティを有するアドレッシング・エンティティまったくないことが保証された後に復旧され得る先行請求項のいずれか1項に記載の方法。
  7. あるサービス・プロバイダが機能しなくなれば、該サービス・プロバイダに送られたアドレッシング・エンティティが再配分される先行請求項のいずれか1項に記載の方法。
  8. 前記分散計算システムはメッセージング・システムであり、前記アドレッシング・エンティティはメッセージであり、前記サービス・プロバイダは、1つ以上のクラスタ・キューのインスタンスをホストするクラスタ化キュー・マネージャである先行請求項のいずれか1項に記載の方法。
  9. 分散コンピュータ・システムにおけるアフィニティ管理のためのシステムであって、各々が識別子を有する複数のアドレッシング・エンティティ(311−315)であって、アフィニティを有するアドレッシング・エンティティのグループの各メンバについての識別子が同じグループ識別子である複数のアドレッシング・エンティティと、サービスのインスタンスを提供するために、アドレッシング・エンティティによりアドレスされるために利用可能な複数のサービス・プロバイダ(301−304)のリストと、標準整数を得るためにアドレッシング・エンティティの前記識別子にハッシュ関数を適用する(205)ステップ、前記標準整数を前記リスト中のサービス・プロバイダの前記数で割って(206)法を得るステップ、および前記法を参照してサービス・プロバイダを選ぶ(207)ステップを有するアルゴリズムを用いてサービス・プロバイダへのアドレッシング・エンティティの配分を管理するための手段と、前記選ばれたサービス・プロバイダにより提供される前記サービスの前記インスタンスに前記アドレッシング・エンティティを送る(208)ための手段と、を含むシステム。
  10. サービス・プロバイダの前記リストは周期的に更新され、該リスト上のサービス・プロバイダの前記数は、ある期間内で一定である請求項9に記載のシステム。
  11. 前記リスト中に示される前記サービス・プロバイダを作業負荷マネージャに知らせるための機構が提供される請求項9または請求項10に記載のシステム。
  12. 前記システムは、法値により参照される前記リスト中のサービス・プロバイダのインデックスを含む請求項9〜11のいずれか1項に記載のシステム。
  13. 選ばれたサービス・プロバイダが利用できなければ、作業負荷マネージャが前記アドレッシング・エンティティを予め決められた順序で前記次のサービス・プロバイダに送る請求項9〜12のいずれか1項に記載のシステム。
  14. あるサービス・プロバイダが機能しなくなれば、前に配信されたアドレッシング・エンティティを取得するための手段が提供される請求項9〜13のいずれか1項に記載のシステム。
  15. あるサービス・プロバイダが機能しなくなれば、該機能しなくなったサービス・プロバイダが復旧される前に、代わりのサービス・プロバイダ中にグループ・アフィニティを有するアドレッシング・エンティティがまったくないことを保証するための手段が提供される請求項9〜14のいずれか1項に記載のシステム。
  16. あるサービス・プロバイダが機能しなくなれば、前記サービス・プロバイダに送られたアドレッシング・エンティティを再配分するための手段が提供される請求項9〜15のいずれか1項に記載のシステム。
  17. 前記分散計算システムはメッセージング・システムであり、前記アドレッシング・エンティティはメッセージであり、前記サービス・プロバイダは、1つ以上のクラスタ・キューのインスタンスをホストするクラスタ化キュー・マネージャである請求項9〜16のいずれか1項に記載のシステム。
  18. デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラム製品であって、該製品がコンピュータ上で走らされる時に、請求項1〜10に記載の前記発明を実行するためのソフトウェア・コード部分を含むコンピュータ・プログラム製品。
JP2007502330A 2004-03-12 2005-03-01 アフィニティ管理のための方法およびシステム Pending JP2007529066A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0405595.0A GB0405595D0 (en) 2004-03-12 2004-03-12 Method and system for affinity management
PCT/EP2005/050896 WO2005091134A2 (en) 2004-03-12 2005-03-01 Method and system for affinity management

Publications (1)

Publication Number Publication Date
JP2007529066A true JP2007529066A (ja) 2007-10-18

Family

ID=32117556

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007502330A Pending JP2007529066A (ja) 2004-03-12 2005-03-01 アフィニティ管理のための方法およびシステム

Country Status (6)

Country Link
US (1) US20080019351A1 (ja)
EP (1) EP1728158A2 (ja)
JP (1) JP2007529066A (ja)
CN (1) CN100421078C (ja)
GB (1) GB0405595D0 (ja)
WO (1) WO2005091134A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017091569A (ja) * 2011-11-04 2017-05-25 フェイスブック,インク. 電力消費およびソーシャル要因に基づく通知制御

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7693050B2 (en) * 2005-04-14 2010-04-06 Microsoft Corporation Stateless, affinity-preserving load balancing
US20080212763A1 (en) * 2007-03-01 2008-09-04 Chandranmenon Girish P Network-based methods and systems for responding to customer requests based on provider presence information
US7793140B2 (en) * 2007-10-15 2010-09-07 International Business Machines Corporation Method and system for handling failover in a distributed environment that uses session affinity
US8881167B2 (en) * 2008-04-28 2014-11-04 International Business Machines Corporation Load balancing in network based telephony applications
WO2010053763A1 (en) * 2008-10-29 2010-05-14 Academia Sinica Tumor-targeting peptides and uses thereof
US20100325640A1 (en) * 2009-06-17 2010-12-23 International Business Machines Corporation Queueing messages related by affinity set
KR101164725B1 (ko) * 2009-12-21 2012-07-12 한국전자통신연구원 사용자 위치에 따른 멀티미디어 브로트캐스트/멀티캐스트 서비스 제어 장치 및 방법
JP5712694B2 (ja) * 2010-03-24 2015-05-07 富士ゼロックス株式会社 計算資源制御装置及び計算資源制御プログラム
CN101909003A (zh) * 2010-07-07 2010-12-08 南京烽火星空通信发展有限公司 线速分流设备及方法
CN102521304A (zh) * 2011-11-30 2012-06-27 北京人大金仓信息技术股份有限公司 基于哈希的聚簇表存储方法
US8843894B2 (en) 2012-03-12 2014-09-23 International Business Machines Corporation Preferential execution of method calls in hybrid systems
US10097628B2 (en) * 2014-01-29 2018-10-09 Microsoft Technology Licensing, Llc Resource affinity in a dynamic resource pool
US10122647B2 (en) * 2016-06-20 2018-11-06 Microsoft Technology Licensing, Llc Low-redistribution load balancing
US11237963B2 (en) * 2019-02-01 2022-02-01 Red Hat, Inc. Shared filesystem metadata caching
US11368465B2 (en) * 2019-02-21 2022-06-21 AVAST Software s.r.o. Distributed entity counting with inherent privacy features

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109512A (en) * 1990-05-31 1992-04-28 International Business Machines Corporation Process for dispatching tasks among multiple information processors
JPH04195577A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd マルチプロセッサにおけるタスクスケジューリング方式
US6263364B1 (en) * 1999-11-02 2001-07-17 Alta Vista Company Web crawler system using plurality of parallel priority level queues having distinct associated download priority levels for prioritizing document downloading and maintaining document freshness
US6587866B1 (en) * 2000-01-10 2003-07-01 Sun Microsystems, Inc. Method for distributing packets to server nodes using network client affinity and packet distribution table
US7366755B1 (en) * 2000-07-28 2008-04-29 International Business Machines Corporation Method and apparatus for affinity of users to application servers
EP1488330B1 (en) * 2002-03-15 2014-05-07 Shinkuro, Inc. Method for forming groups

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017091569A (ja) * 2011-11-04 2017-05-25 フェイスブック,インク. 電力消費およびソーシャル要因に基づく通知制御
US9819605B2 (en) 2011-11-04 2017-11-14 Facebook, Inc. Controlling notification based on power expense and social factors

Also Published As

Publication number Publication date
WO2005091134A2 (en) 2005-09-29
GB0405595D0 (en) 2004-04-21
US20080019351A1 (en) 2008-01-24
CN1926517A (zh) 2007-03-07
EP1728158A2 (en) 2006-12-06
CN100421078C (zh) 2008-09-24
WO2005091134A3 (en) 2005-12-15

Similar Documents

Publication Publication Date Title
JP2007529066A (ja) アフィニティ管理のための方法およびシステム
CN109688235B (zh) 虚拟网络业务处理方法、装置和系统,控制器,存储介质
US8788565B2 (en) Dynamic and distributed queueing and processing system
US7543069B2 (en) Dynamically updating session state affinity
US8166097B2 (en) Using distributed queues in an overlay network
US8843580B2 (en) Criteria-based message publication control and feedback in a publish/subscribe messaging environment
US10091098B1 (en) Distributed affinity tracking for network connections
EP2248311B1 (en) Method and system for message delivery in messaging networks
US20050050202A1 (en) Methods, systems and computer program products for application instance level workload distribution affinities
US8615580B2 (en) Message publication feedback in a publish/subscribe messaging environment
US8793322B2 (en) Failure-controlled message publication and feedback in a publish/subscribe messaging environment
US20150312378A1 (en) System and method for supporting a proxy model for across-domain messaging in a transactional middleware machine environment
US9628505B2 (en) Deploying a security appliance system in a high availability environment without extra network burden
JP2005524147A (ja) 分散形アプリケーションサーバおよび分散された機能を実施するための方法
US20080195689A1 (en) Subscription-based management and distribution of member-specific state data in a distributed computing system
US20070005800A1 (en) Methods, apparatus, and computer programs for differentiating between alias instances of a resource
US20190363990A1 (en) Distributed affinity tracking for network connections
US20220141080A1 (en) Availability-enhancing gateways for network traffic in virtualized computing environments
US8230086B2 (en) Hidden group membership in clustered computer system
CN117492944A (zh) 任务调度方法、装置、电子设备及可读存储介质
US7111063B1 (en) Distributed computer network having a rotating message delivery system suitable for use in load balancing and/or messaging failover
CZ20032918A3 (cs) Privatizace přístupu ke skupině v klastrovém počítačovém systému
US8094669B2 (en) System and method for store and forward routing for distributed destinations
US11381665B2 (en) Tracking client sessions in publish and subscribe systems using a shared repository
US11567841B1 (en) Database system