(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6013300
(24)【登録日】2016年9月30日
(45)【発行日】2016年10月25日
(54)【発明の名称】クラスタデータ処理のための方法及び装置
(51)【国際特許分類】
G06F 9/50 20060101AFI20161011BHJP
【FI】
G06F9/46 465Z
【請求項の数】16
【全頁数】16
(21)【出願番号】特願2013-192238(P2013-192238)
(22)【出願日】2013年9月17日
(62)【分割の表示】特願2010-506526(P2010-506526)の分割
【原出願日】2008年4月25日
(65)【公開番号】特開2014-38637(P2014-38637A)
(43)【公開日】2014年2月27日
【審査請求日】2013年10月7日
(31)【優先権主張番号】200710102649.4
(32)【優先日】2007年4月25日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】ヤオ チァンドン
【審査官】
原 忠
(56)【参考文献】
【文献】
国際公開第2005/020085(WO,A1)
【文献】
特表2002−510077(JP,A)
【文献】
特開2005−025756(JP,A)
【文献】
特開2006−134203(JP,A)
【文献】
特開平11−120108(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
少なくとも2つのサーバを含むサーバクラスタのデータを処理するための方法であって、
外部処理要求を受信すると、制御識別子記録及び処理するデータを含む第1のデータを生成するステップであって、前記生成するステップは、少なくとも所定のメカニズムに基づき、前記制御識別子記録は、前記外部処理要求に関連付けられた一意の識別子、前記処理するデータの宛先となるサーバの位置情報、及び前記処理するデータに使用されるプログラムの互換性情報を含む制御情報を含み、前記サーバは前記サーバクラスタ内に位置付けられる、ステップと、
前記第1のデータを外部コンピューティングデバイスに送信するステップと、
前記サーバクラスタ内の前記少なくとも2つのサーバのいずれかにおいて、前記外部コンピューティングデバイスから第2のデータを受信するステップであって、前記第2のデータは、前記制御識別子記録及び処理されたデータを含む、ステップと、
少なくとも前記制御情報に基づいて、前記第2のデータを前記少なくとくも2つのサーバのいずれかに送信するステップと
を含むことを特徴とする方法。
【請求項2】
前記制御識別子記録は、1つの所定のメカニズムのもとに暗号化された前記処理するデータのハッシュ値をさらに備えることを特徴とする請求項1に記載の方法。
【請求項3】
前記サーバクラスタは、送信される前に前記第2のデータが受信される負荷バランシングデバイスを有することを特徴とする請求項1に記載の方法。
【請求項4】
前記負荷バランシングデバイスは、前記サーバクラスタ内の1つのサーバに配置されることを特徴とする請求項3に記載の方法。
【請求項5】
前記サーバクラスタの1つのサーバによって前記第2のデータを解析するステップと、
前記第2のデータに関連付けられた前記制御識別子記録を判断するステップと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記第2のデータを受信するステップは、
既定の負荷バランシングルールに少なくとも基づいて1つのサーバに前記第2のデータを送信するステップと、
前記制御情報に基づいて前記第2のデータを送信するように構成されたルーティングミドルウェアに前記第2のデータを送信するステップと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記制御情報は、前記処理するデータに使用される1又は複数の前記プログラム、又は、前記少なくとも2つのサーバのいずれかが前記第2のデータを処理することになる時間閾値をさらに含むことを特徴とする請求項1に記載の方法。
【請求項8】
前記少なくとも2つのサーバのいずれかが適切に機能しないことを判断するステップと、
それに応じて、規定のルーティングルールに少なくとも基づいて前記サーバクラスタのうちの他のサーバに前記第2のデータを送信するステップと
をさらに含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記第2のデータは、前記第1のデータに少なくとも基づいて前記外部コンピューティングデバイスによって生成されることを特徴とする請求項1に記載の方法。
【請求項10】
前記外部処理要求は、商取引に関連付けられた情報を含み、前記制御識別子記録は、発注に関連付けられた情報を含むことを特徴とする請求項1に記載の方法。
【請求項11】
前記外部コンピューティングデバイスに前記第1のデータを送信後、前記第1のデータを送信するサーバと前記外部コンピューティングデバイスとの間のネットワーク接続を中断するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項12】
クラスタデータを処理するシステムであって、前記システムは、
複数のサーバであって、
処理するデータ及び制御識別子記録を含む第1のデータを生成し、前記制御識別子記録は、前記処理するデータに使用されるプログラムの互換性情報を含む制御情報を含み、
前記第1のデータを外部コンピューティングデバイスに送信する
ように構成された複数のサーバと、
前記外部コンピューティングデバイスから、処理されたデータ及び前記制御識別子記録を含む第2のデータを受信するように構成された負荷バランシングデバイスと、
前記複数のサーバにそれぞれに配置された1又は複数のルーティングユニットであって、
前記複数のサーバのうちの1つのサーバが適切に機能することを判断して、それに応答して、前記制御識別子記録に少なくとも基づいて前記複数のサーバのうちの前記1つのサーバに前記第2のデータを送信し、
前記複数のサーバのうちの前記1つのサーバが適切に機能しないことを判断して、それに応答して、既存のルーティングルールに少なくとも基づいて前記複数のサーバのうちの他のサーバに前記第2のデータを送信する
ように構成された1又は複数のルーティングユニットと
を含むことを特徴とするシステム。
【請求項13】
前記負荷バランシングデバイスは、負荷バランシングルールに少なくとも基づいて、前記複数のサーバのうちの受信サーバに前記第2のデータを送信するようにさらに構成されることを特徴とする請求項12に記載のシステム。
【請求項14】
前記制御識別子記録は、前記複数のサーバに関連付けられたサーバ位置情報を含むことを特徴とする請求項12に記載のシステム。
【請求項15】
前記複数のサーバのうちの前記サーバに前記第2のデータを送信することは、前記サーバ位置情報に少なくとも基づくことを特徴とする請求項14に記載のシステム。
【請求項16】
クラスタデータ処理システムであって、前記システムは、
複数のサーバであって、
制御識別子記録及び処理するデータを含む第1のデータを生成し、前記制御識別子記録は、前記処理するデータに関連付けられた一意の識別子と、前記処理するデータの宛先となるサーバを選択するための処理時間要件と、前記処理するデータに使用されるプログラムの互換性情報とを含む制御情報を含み、
前記第1のデータを外部コンピューティングデバイスに送信する
ように構成された複数のサーバと、
負荷バランシングデバイスであって、
前記外部コンピューティングデバイスから、前記制御識別子記録及び処理されたデータを含む第2のデータを受信し、
既定の負荷バランシングルールに少なくとも基づいて前記複数のサーバのうちの1つのサーバに前記第2のデータを送信する
ように構成された負荷バランシングデバイスと、
前記複数のサーバにそれぞれ配置された1又は複数のルーティングユニットであって、各ルーティングユニットは、前記制御情報に少なくとも基づいて前記複数のサーバのうちの他のサーバに前記第2のデータを送信するように構成された、1又は複数のルーティングユニットと
を含むことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理技術の分野に関し、特に、クラスタに基づくデータ処理方法システムに関する。本願は、2007年4月25日出願の中国特許出願第200710102649.4号「METHOD AND APPARATUS FOR CLUSTER DATA PROCESSING(クラスタデータ処理のための方法及び装置)」の優先権を主張するものである。
【背景技術】
【0002】
コンピュータ及びネットワーク技術の継続的な発展に伴って、サーバの信頼性に対してますます高まりつつある処理需要及び要件は、単に、サーバのハードウェア性能を向上させるだけでは、もはや充足させることは不可能である。このような状況下、クラスタコンピューティング技術は、次第に、広く注目を集め、使用されるようになってきている。クラスタとは、多くの集積コンピューティングデバイス(パーソナルコンピュータ及びサーバ等)によって構成され、統合コンピューティングリソースとして使用される、ある種の並列又は分散システムを指す。クラスタ内のサーバのうちの1つが機能しない場合、同一クラスタ内の他のサーバが、そのサービス及びジョブを引き継ぎ、高信頼性ネットワークサービスを提供することができる。さらに、クラスタコンピューティング技術を使用することによって、もともと単一サーバによって担われていた負荷を、同一クラスタ内の他のサーバによって共有することができる。これによって、システムの処理能力が、大幅に向上する。
【0003】
図1は、クラスタを使用して、データ処理を実行する共通システムの構造図を示す。
図1のシステムは、クラスタ100と、外部サーバ190とを有する。クラスタ100は、サーバa
0、a
1、…a
i、…及びa
nと、負荷バランシングデバイス110とによって形成される。外部処理要求を受信後、負荷バランシングデバイス110は、システムの物理的見地に基づくあるストラテジーを使用して、クラスタ100からサーバを選択し、外部にサービスを提供する。選択は、例えば、クラスタ100内のサーバの現在のネットワーク接続に基づくことができる。通常の状況下では、クラスタ内の各サーバは、類似サービスを提供する。しかしながら、時として、異なるサーバが異なる役割を担い、異なるサービスを提供する場合がある。例えば、サーバa
0は、主要顧客のデータを取り扱うことができる一方で、サーバa
1及びa
2は、一般顧客のデータに対応することができる。この場合、サーバa
0は、一意の識別子を含む1つ又は複数セットのデータを外部サーバ190へ送信すると、外部サーバ190は、同一の一意の識別子を含む処理結果のデータを返送し、返送されたデータが同一サーバa
0によってさらに処理されることを要求する。
【0004】
上述のプロセスにおいて、処理されたデータを関連サーバa
0へ正確に返送するために、既存の技術における常套手段は、外部サーバ190がクラスタサーバa
0からデータを受信後、外部サーバ190とクラスタサーバa
0との間のネットワーク接続を維持することである。処理が完了すると、次いで、サーバ190は、維持されるネットワークリンクを通して、直接、サーバa
0に処理結果を返送することができる。しかしながら、これによって、ネットワーク接続の負荷が外部サーバ190にかかる。この問題は、外部サーバ190によって送達される多くの標的が存在する場合、より顕著となる。過剰な数のネットワーク接続は、外部サーバ190のリソースを大幅に消費し、その処理能力を低減させる。
【0005】
したがって、処理されたデータを外部サーバ190からクラスタ内の関連サーバへ正確に伝送するのに役立ち得る新しい設計が望ましく、これは、クラスタコンピューティング技術の分野において一般的に直面する継続的課題である。
【発明の概要】
【0006】
本開示は、サーバリソースにかかる重い負荷の課題を解決し、かつ既存の技術においてデータ伝送のための外部サーバとクラスタとの間のネットワーク接続を継続的に維持することによって生じる低サーバ処理性能を防止するための、クラスタに基づくデータ処理方法について説明する。開示されるクラスタデータ処理方法及びシステムは、クラスタ内のサーバと外部コンピュータとの間の連続的ネットワーク接続を必要としない、一意の識別子制御に基づく。
【0007】
本開示の一態様は、少なくとも2つのサーバを含むクラスタを使用するクラスタデータ処理方法である。本方法によると、クラスタは、第1の制御識別子記録を含む第1のデータを外部コンピューティングデバイス(外部サーバ等)へ送信し、続いて、外部コンピューティングデバイスから第2のデータをクラスタにおいて受信する。第2のデータは、第1のデータの処理結果であって、第1のデータの第1の制御識別子記録に対応する第2の制御識別子記録を含む。第1の制御識別子記録及び第2の制御識別子記録は各々、互いに対応する一意の識別子と、互いに対応する制御情報とを有する。クラスタは、次いで、第2のデータの第2の制御識別子記録に従って、第2のデータをルーティングする。
【0008】
第2の制御識別子記録と第1の制御識別子記録との間の対応によって、クラスタは、第2のデータと第1のデータとの間の関係を識別し、第2のデータの適切なルーティングのために、第2のデータに含まれる制御情報を使用することが可能となる。一実施形態では、第2の制御識別子記録の一意の識別子は、第1の制御識別子記録の一意の識別子と等しい。さらに、第2の制御識別子記録の制御情報もまた、第1の制御識別子記録の制御情報と等しい場合がある。
【0009】
本方法の一実施形態では、クラスタは、負荷バランシングデバイスを有し、第2のデータは、ルーティングされる前に、負荷バランシングデバイスによって受信される。負荷バランシングデバイスは、別個のデバイスであってもよく、又はクラスタ内のサーバのうちの1つに配置されてもよい。
【0010】
最適には、外部サーバからの第2のデータの受信に応じて、負荷バランシングデバイスは、既定の負荷バランシングルールに従って、クラスタ内の受信サーバへ第2のデータを送信することもできる。受信サーバは、次いで、第2のデータに含まれる制御情報に従って、第2のデータをルーティングする。別の実施形態では、受信サーバは、ルーティングミドルウェアへ受信した第2のデータを送信し、このミドルウェアは、続いて、第2のデータに含まれる制御情報に従って、第2のデータをルーティングすることができる。
【0011】
ルーティングを制御するため、制御情報は、サーバ位置情報を含み、第1のデータによって指定されるように、クラスタ内の所望のサーバを識別することができる。この場合、制御情報に従って、クラスタ内で第2のデータをルーティングするステップは、サーバ位置情報に従って選択される受信サーバへ第2のデータを送信するステップを含むことができる。一実施形態では、サーバ位置情報に従って選択される受信サーバが機能していない場合、既定のルーティングルールに従って、代替受信サーバがクラスタから選択され、次いで、第2のデータは代替受信サーバへ伝送される。
【0012】
本開示の別の態様は、少なくとも2つのサーバと、負荷バランシングデバイスと、ルーティングユニットとを含む、クラスタデータ処理システムである。各サーバは、第1の制御識別子記録を含む第1のデータを外部コンピューティングデバイスへ送信するように適合される送信ユニットを有する。負荷バランシングデバイスは、外部サーバから、第2のデータを受信するように適合され、第2のデータは、第1のデータの第1の制御識別子記録に対応する第2の制御識別子記録を含む。ルーティングユニットは、第2のデータに含まれる第2の制御識別子記録に従って、第2のデータをルーティングするように適合される。
【0013】
ルーティングユニットは、クラスタのサーバのうちの1つ以上に配置されてもよい。第2のデータの受信に応じて、負荷バランシングデバイスは、既定の負荷バランシングルールに従って、ルーティングユニットをホスティングするサーバのうちの1つへ第2のデータを伝送する。ホスティングサーバは、負荷バランシングデバイスから、第2のデータを受信するために使用される受信ユニットを有する。ホスティングサーバ内のルーティングユニットは、第2のデータに含まれる制御情報に従って、第2のデータをルーティングする。
【0014】
代替として、ルーティングユニットは、独立型デバイスであってもよい。負荷バランシングデバイスは、既定の負荷バランシングルールに従って、クラスタのサーバへ第2のデータを伝送し、次いで、サーバはルーティングユニットへ第2のデータを送信し、このルーティングユニットは、続いて、第2のデータに含まれる制御情報に従って、第2のデータをルーティングする。
【0015】
最適には、ルーティングユニットは、故障検出ユニットをさらに含むことができる。故障検出ユニットは、サーバ位置情報に従って選択されるサーバが、適切に機能しているかどうか検出するために使用される。適切に機能していない場合、代替サーバが、既定のルーティングルールに基づいて選択され、第2のデータが、代替サーバへ伝送される。
【0016】
既存の技術と比較して、本明細書で開示されるいくつかの例示的な実施形態は、潜在的に以下の効果を有することができる。一意の識別子は、データ伝送中に変更又は修正されないという利点を利用して、開示される方法及びシステムは、制御情報を追加することによって、一意の識別子を制御識別子記録に拡張する。外部からの第2のデータの受信に応じて、本方法及びシステムは、第2のデータ内の制御識別子記録の制御情報に従って、クラスタ内の第2のデータのルーティングを実現する。これによって、クラスタ内のサーバと外部サーバとの間のネットワーク接続が維持されていなくても、正しいサーバによって、第2のデータを処理させることができる。これは、サーバのリソースにかかる重い負荷の課題を解決し、既存の技術において、データ伝送のために、外部サーバとクラスタサーバとの間のネットワーク接続を連続的に維持することによるサーバの処理性能の低減を防止するのに役立つ。本明細書で開示される概念は、既存の技術におけるデータ伝送の際の一意の識別子の使用に関する一般的理解から脱却するものである。開示される方法及びシステムは、既存のデータ構造の何らかの変更、ならびに外部サーバのプログラム及びシステムの何らかの修正を必要とせずに、クラスタと外部サーバとの間の処理のアップグレードを達成する。
【0017】
本発明の概要は、発明を実施するための形態においてさらに後述される、選択された概念を簡略化した形態で紹介するために提供される。本発明の概要は、請求される主題の重要な特徴又は不可欠な特徴を識別すること、又は請求される主題の範囲を判断する補助として使用されることを意図していない。
【図面の簡単な説明】
【0018】
発明を実施するための形態は、付随の図面を参照して記述される。図面中、参照番号の一番左の桁の数字は、参照番号が初出である図を識別する。異なる図における同一参照番号の使用は、類似又は同一項目を示す。
【
図1】データ処理を実行するために、クラスタを使用する共通システムの構造図である。
【
図2】本開示による、方法の例示的な実施形態を示すフローチャートである。
【
図3】本開示による、アプリケーション環境を伴う方法の例示的な実施形態を示すフローチャートである。
【
図4】本開示による、例示的なクラスタデータ処理システムを示す図である。
【
図5】本開示による、別の例示的なクラスタデータ処理システムを示す図である。
【発明を実施するための形態】
【0019】
既存のクラスタコンピューティング技術では、クラスタ100内のあるサーバa
iによってもともと処理されたデータが、外部サーバ190によってデータが処理された後、同一サーバa
iによって取り扱われることを可能にするために、a
iと外部サーバ190との間の連続的ネットワーク接続は、データ伝送のために維持される必要がある。この実施は、サーバのリソースを占有し、実質的にクラスタサーバa
0、a
1、…a
i、…及びa
nと外部サーバ190との両方の処理性能を低減させる。
【0020】
以下、初めに、クラスタデータ処理方法及びシステムが、共通クラスタシステムの構造図である
図1をここでも参照して例示される。開示されるクラスタデータ処理方法及びシステムと既存のクラスタコンピューティング技術との間の差異は、後述される実装にある。
【0021】
本開示は、クラスタ100から外部サーバ190へ送信される一意の識別子を設定する新しい方法を記述する。本方法は、一意の識別子に制御情報を追加し、一意の識別子を制御識別子記録に拡張する。制御情報は、各データ又は一式の複数データの特定の要件に従って、クラスタサーバ(a
0、a
1、…a
i、…又はa
n)によって生成されるそのデータ又は一式の複数データ内に指定される。制御識別子記録は、クラスタサーバによって送信されるオリジナルデータを解析し、その識別子及び制御特性を維持する。原則として、識別子及び制御特性は、外部サーバ190によって処理されたデータに見られる制御識別子記録と、クラスタサーバa
0、a
1、…a
i、…又はa
nによって送信されたオリジナルデータ内の制御識別子記録との間に認識可能な対応がある限り、維持することができる。しかしながら、これを実装するための直接的方法の1つは、制御識別子記録を変更しないまま保持することである。すなわち、処理されたデータ内の制御識別子記録は、クラスタサーバによって送信されたオリジナルデータに見られる制御識別子記録と同一である。本開示による制御識別子記録は、一意の識別子及び制御情報の両方を有するため、制御識別子記録が変更されないことは、一意の識別子及び制御情報の両方が変更されないまま保持されることを意味する。本開示では、例示的な実施形態を、制御識別子記録が変更されずに使用されるという前提で例示する。
【0022】
外部サーバ190によってデータが処理されるとき、制御識別子記録が変更されないままであるため、クラスタ100は、制御識別子記録内の制御情報に従って、外部サーバ190から受信したデータをルーティングすることができる。これによって、データは、クラスタ内の関連(又は指定)サーバによって処理され、従ってクラスタ100と外部サーバ190との間のデータ処理を改善することが可能となる。
【0023】
クラスタデータ処理方法及びシステムを、以下の図面及び例示的な実施形態を使用して、さらに詳細に説明する。
【0024】
図2は、本開示による、方法の例示的実施形態を示すフローチャートである。例示的な実施形態は、以下のように、
図2を参照して詳述される。本記述では、プロセスが記述される順番は、制限として解釈されることを意図しておらず、任意の数の記述されるプロセスブロックを任意の順番で組み合わせて、本方法又は代替方法を実装することができる。
【0025】
ブロック210では、クラスタ100内のサーバは、既定のルールに従って、制御識別子記録を生成する。既存の技術におけるように、クラスタから外部サーバ190へ送信されるデータの各セットは、他のデータから自身を区別するための一意の識別子を含む。一実施形態では、この一意の識別子は、データが外部サーバ190によって処理され、クラスタ100に返送される間を通して、変更されないままである。一意の識別子の本特徴を利用することによって、本開示は、制御情報を追加し、一意の識別子を制御識別子記録に拡張する。具体的には、例示的な一実施形態では、制御識別子記録は、一意の識別子及び制御情報を含む。開示される方法を実施する際に、一意の識別子を生成するルールは、データ識別子が使用される限り、必要性に基づいて、任意の好適な方法で、ユーザによって定義することができる。制御情報は、続いて、クラスタ190及び/又はクラスタ100において、データがどのように処理されるかを制御するために使用される。例えば、制御情報は、データを処理するために使用するのが望ましいクラスタ内のサーバの位置情報を含むことができる。
【0026】
しかしながら、制御情報内にサーバ位置情報を含めるステップは、制御識別子記録に制御情報を実装するための例示的な方法の1つでしかないことに留意されたい。当業者は、各自のサービスの必要性に応じて、制御情報内に他のコンテンツを設定することができる。例えば、制御情報は、データ処理のために使用されるプログラムのバージョンに関連する情報を有することができる。いくつかのクラスタ内の異なるサーバによって実行されるプログラムのバージョンは、異なってもよい。この場合、データ処理は、一定の互換性のあるプログラム又は関連バージョンのプログラムを有するサーバによって実行されることが必要とされる場合がある。したがって、データのために必要とされるプログラムバージョンを含む制御情報を設定することができる。別の実施例では、データが、指定の時間内にサーバによって処理されなければならない場合、制御情報は、データを処理するために選択されるサーバによって充足される必要がある処理時間を含むように設定することができる。
【0027】
ブロック220では、第1のデータを処理したサーバは、外部サーバ190へ第1のデータを送信する。コンピューティングデータ自体に加え、第1のデータは、ブロック210で生成された制御識別子記録を含む。外部サーバ190によって処理されるコンピューティングデータ及び制御識別子記録は結合され、第1のデータを形成し、外部サーバ190へ送信される。
【0028】
好ましい一実施形態では、一意の識別子を制御識別子記録に拡張する際、開示される方法は、一意の識別子のオリジナルデータ構造を変更しない。外部サーバ190に送信される第1のデータに関し、そのデータ構造及びインターフェースルールは、その意味論の適合性、一貫性、及び完全性が維持されるように、既存の技術において見られるものから変更されない。さらに、外部サーバ190のもともとの処理ルールを修正する必要がない。クラスタ100内のデータの制御要件が変化する場合、制御識別子記録内の制御情報のみ、変化に適合させるために変更する必要がある。これは、本開示によるクラスタデータ処理システムを変更することによって生じるコストを大幅に削減する。
【0029】
ブロック230では、クラスタ100は、外部サーバ190から第2のデータを受信する。第2のデータは、外部サーバ190によって第1のデータを処理することによって得られ、外部サーバ190からクラスタ100へ返送される。第2のデータは、第1のデータの制御識別子記録に基づき、それに対応する制御識別子記録を含む。一実施形態では、第2のデータ内の制御識別子記録は、第1のデータの制御識別子記録と等しい。例示目的のため、外部サーバ190は、クラスタ100とデータ相互作用を実行するように選択されるデバイス又はシステムである。しかしながら、別個のコンピューティングデバイスを使用して、外部サーバ190によって生成される第2のデータをクラスタ100に伝えてもよいことが考えられる。また、外部サーバ190は、クラスタ自体であってもよいことを理解されたい。開示される方法は、外部サーバ190の形態について、もしくは外部サーバ190、あるいは任意の他の外部デバイス又はシステムによって、第1のデータを処理する方法について、何ら制限を有しない。
【0030】
クラスタ100は、クラスタ100及びそのサーバの物理的見地に基づくある選択ストラテジーに従って、次のサービスを提供する、クラスタ100内のサーバを選択するために使用される負荷バランシングデバイス110をさらに有する。選択ストラテジーは、例えば、ランダム選択、又はサーバの現在のネットワーク接続に基づく選択等とすることができる。負荷バランシングデバイス110は、サーバから離れた特殊ハードウェア、又はクラスタ100内のサーバのうちの1つに配置されるデバイスであってもよい。本明細書で開示される方法を実装する際に、特殊ハードウェアを使用して、負荷バランシングを実行するかどうかは、実装者の自由裁量によって行われる。
【0031】
ブロック240では、クラスタ100は、第2のデータから、その中に含まれる制御情報を含む制御識別子記録を解析する。一実施形態では、例えば、第2のデータを受信後、負荷バランシングデバイス110は、クラスタ100内のサーバを選択し、選択されたサーバへ第2のデータを送信する。第2のデータを受信したサーバは、既定のルールに従って、制御識別子記録から、一意の識別子及び制御情報を解析する。
【0032】
ブロック250では、クラスタ100は、第2のデータから、含まれる制御識別子記録内の制御情報に設定されるルールに従って、第2のデータをルーティングする。再ルーティングは、第2のデータの制御識別子記録を解析したクラスタ内の同一サーバによって実行され得る。最適には、制御情報は、クラスタ100内のサーバの位置を記述するサーバ位置情報を有することができる。制御情報内のサーバ位置情報に従って、好適なサーバが選択され、次いで、第2のデータが、選択されたサーバへ送信される。本明細書に記述される方法を実装する際、ルールに従って第2のデータを適切にルーティングするために、自分自身の実際的な必要性に従って、制御情報のコンテンツ及びルールを設定することができることを理解されたい。例えば、サーバによって提供されるサービスのバージョン及び/又は必要処理時間に従って、サーバを選択するためのルールを設定することができる。本開示は、制御情報のコンテンツ及びルールの設定方法について、何ら制限を課さない。
【0033】
クラスタ100は、選択に応じて、ルーティングユニットを使用して、第2のデータをクラスタ内の適切なサーバにルーティングすることができる。ルーティングユニットは、サーバから離れた独立型ハードウェア、又はクラスタ内のサーバのうちの1つ以上に配置されるデバイスのいずれかとすることができる。例示的な本実施形態では、クラスタ内の任意のサーバを、第2のデータをルーティングするために使用することができる。外部サーバ190からの第2のデータの受信に応じて、負荷バランシングデバイス110は、クラスタ内のサーバをランダムに選択し、ルーティングされるサーバへ第2のデータを送信することができる。
【0034】
ブロック260では、故障保護のための任意選択のステップが実行される。制御情報内のサーバ位置情報に従って、クラスタ100は、(例えば、負荷バランシングデバイス110を使用して)選択されたサーバが機能しているかどうかを判断する。選択されたサーバが機能していない場合、既定のルール及びストラテジーに基づいて、代替サーバが選択され、次いで、処理のための代替サーバへ第2のデータが送信される。
【0035】
さらに、一意の識別子及び制御情報に加えて、特定のサービスの必要性に従って、制御識別子記録に設定される他のコンテンツが存在し得る。本開示は、制御識別子記録内でそのようなコンテンツを設定するために、何ら制限を有していない。例えば、制御識別子記録内のデータを暗号化し、かつそれに署名し、データの安全性を向上することができる。
【0036】
制御識別子記録クラスタの例示的な使用は、後述される。実施例は、制御識別子記録が発注情報を含む商取引において見られる。
【0037】
クラスタ100は、データグラムをサーバ190へ送信し、アカウントID「customerAccountId」を有するユーザアカウントから$100を引き落とすようにサーバ190に要求する。データグラムは、以下の形態とすることができる。
<orderId>12345876298708765635553223</orderId>
<customerAccountId>87634293882173710987</customerAccountId>
<requesterId>0987658932</requesterId >
<product>supermarket shopping</product>
<price> 100.00</price>
<createDate>2007−04−19 12:01 </createDate>
上述の実施例では、「orderId」に関する第1行目は、本開示に記述される方法で使用可能な制御識別子記録である。サーバ190によるデータグラムのコンテンツの修正又は否認を回避するために、データグラムのコンテンツは、暗号化されたコンテンツの要約(例えば、ハッシュ和又はハッシュ値)を得るために、既定のアルゴリズムに基づいて暗号化されてもよく、次いで、この要約は、制御識別子記録に入れられる。本実施例では、orderId(8708765635553223)の最後の16桁は、現在のデータグラムのコンテンツの要約である。トランザクションにエラーが生じていないかどうかを確かめるために、サーバ190によって受信されるデータグラムのコンテンツは、テスト要約を得るためのものと同一のアルゴリズムを使用して暗号化される。テスト要約は、制御識別子記録内のもともとの要約と比較される。それらが同一ではない場合、データグラムは、サーバ190へ送信された後に修正されていると判断される。したがって、暗号化によって、データの安全性が改善される。
【0038】
本開示の第2の例示的な実施形態では、第2のデータの受信に応じて、負荷バランシングデバイスによって選択されるサーバは、第2のデータをルーティングミドルウェアへ伝送する。次いで、ルーティングミドルウェアは、第2のデータに含まれる制御情報に従って、本データをルーティングする。ルーティングミドルウェアは、独立サーバ、クラスタ内の専用サーバ、又はクラスタ内のサーバのうちの1つとすることができる。第1の例示的な実施形態と比較して、第2の例示的な実施形態におけるクラスタ内のサーバは、データルーティングに関与しない。代わりに、データルーティングは、ルーティングミドルウェアによって実行される。したがって、各サーバのルーティングサービスの保守が回避されるため、本実施形態は、保守の複雑性を低減することができる。第2の例示的な実施形態のもう1つの態様は、第1の例示的な実施形態のものに類似しているため、ここでは繰り返さない。
【0039】
さらに別の例示的な実施形態では、負荷バランシングデバイス及びルーティングミドルウェアの機能性は、単一集積デバイス上で実現することができる。この場合、外部サーバ190から返送されるデータの受信に応じて、集積デバイスは、負荷バランシングを考慮し、全体として、データの関連制御情報のルールを制御し、データの処理を完了するためのクラスタ内のサーバを選択することができる。上述の例示的な実施形態のさらなる詳細は、
図4−5を参照して後述される。
【0040】
クラスタデータ処理方法は、上述されている。以下では、アプリケーション環境を伴う実践的実施例を使用して、本方法の実装についてさらに説明する。
【0041】
図3は、本開示によるアプリケーション環境を伴う本方法の例示的な実施形態を示すフローチャートである。ここに例示される実践的実施例では、クラスタ100は、支払要求をサーバ190へ送信する。本要求の受信に応じて、サーバ190は、支払要求に指定される発注番号に従って、支払を完了し、支払結果を返送する。詳細は、以下に記述される。
【0042】
ブロック301aでは、クラスタ100内のサーバ(例えば、サーバa
1)は、外部サーバ190への接続要求を送信する。外部サーバ190が応答する場合、ネットワーク接続が、サーバa
1とサーバ190との間で確立される。続いて、サーバa
1は、要求データグラムをサーバ190へ送信する。
【0043】
サーバa
1からサーバ190へ送信される要求データグラムのコンテンツを以下に示す。
<orderId>A111123</orderId>
<customerAccountId>87634293882173710987</customerAccountId>
<requesterId>0987658932</requesterId>
<product>supermarket shopping</product>
<price> 100.00</price>
<createDate>2007−04−19 12:01 </createDate>
【0044】
上述の要求データグラムでは、<orderId>A111123</orderId>は、現在のデータグラムの制御識別子記録である。A1は、発注を処理したサーバ(a
1)名を識別する制御情報であって、11123は、発注番号を指定する発注の一意の識別子である。
【0045】
ブロック301bでは、サーバa
1は、データ伝送完了後、サーバ190とのネットワーク接続を中断する。
【0046】
ブロック302では、外部サーバ190は、受信したデータグラムを処理し、処理結果を生成する。本実施例では、外部サーバ190は、顧客アカウント87634293882173710987から$100.00の支払を行うことを要求され、次いで、処理結果を生成する。処理結果のフォーマットは、以下のようになる。
<orderId>A111123</orderId>
<result>payment successful</result>
【0047】
上述のように、処理結果は、クラスタサーバa
1から受信したもともとの要求データグラムに含まれる制御識別子記録と等しい制御識別子記録<orderId>A111123</orderId>を含む。外部サーバ190は、クラスタ100へ返送される処理結果を準備する。制御識別子記録<orderId>A111123</orderId>は、サーバ190の返送されたメッセージ内に含まれる。
【0048】
ブロック303では、外部サーバ190は、負荷バランシングデバイス110に新しいネットワーク接続を要求し、ネットワーク接続の確立に応じて、負荷バランシングデバイス110へ処理結果を返送する。データ伝送が完了後、サーバ190は、負荷バランシングデバイス110とのネットワーク接続を中断する。
【0049】
ブロック304では、サーバ190からの処理結果データの受信に応じて、負荷バランシングデバイス110は、クラスタ100内のルーティングサーバa
iをランダムに選択し、外部サーバ190から、選択されたルーティングサーバa
iへ受信したデータを伝送する。
【0050】
ブロック305では、外部サーバ190からデータを受信後、選択されたルーティングサーバa
iは、ルーティングプログラムを起動し、制御識別子記録(本実施例では、<orderId>A111123</orderId>の値を有する)を解析し、標的サーバの位置情報を得る。本実施例では、サーバ位置情報の値は、サーバa
1を表すA1であって、サーバa
1がデータのさらなる処理のための所望の標的サーバであることを意味する。次いで、ルーティングサーバa
iは、外部サーバ190から受信したデータをサーバa
1へ送信し、さらに処理する。
【0051】
クラスタデータ処理方法を、上記の例示的な実施形態を使用して記述した。本開示の別の態様は、クラスタデータ処理システムであって、そのさらなる詳細を後述する。
【0052】
図4は、本開示による、例示的なクラスタデータ処理システムを示す。クラスタデータ処理システム400は、負荷バランシングデバイス410と、そのうちの1つのみが、クラスタ内の全サーバ420を表すものとして具体的に例示されるサーバ420とを含む。
【0053】
各サーバ420は、制御識別子記録を含む第1のデータを外部コンピューティングデバイス(例えば、外部サーバ190)へ送信するために使用される送信ユニット421を有する。制御識別子記録は、第1のデータに対応する一意の識別子及び制御情報を含む。
【0054】
負荷バランシングデバイス410は、外部コンピューティングデバイスから第2のデータを受信する。第2のデータは、第1のデータと同一の制御識別子記録及び対応する制御情報を含む。
【0055】
また、各サーバ420は、負荷バランシングデバイス410から送信される第2のデータを受信するために使用される受信ユニット422を有する。各サーバ420は、第2のデータに含まれる制御情報に従って、サーバ420の中から適切な標的サーバへ第2のデータをルーティングするために使用されるルーティングユニット423をさらに有する。
【0056】
送信ユニット421によって送信される第1のデータに関して、制御識別子記録内の制御情報は、第1のデータを生成した特定のサーバ420の位置情報を含むことができる。また、負荷バランシングデバイス410によって外部から受信される第2のデータは、同一制御識別子記録を含む。また、対応して、本制御識別子記録の制御情報もまた、第1のデータを生成した特定のサーバ420の位置情報を含む。
【0057】
負荷バランシングデバイス410が、第2のデータを送信する方法に応じて、負荷バランシングデバイス410から第2のデータを受信するサーバは、第1のデータを最初に生成したサーバと同一でなくてもよい。
図4に示される例示的な実施形態では、受信サーバは、一実施例では第1のデータを最初に生成したサーバである、所望の標的サーバへ第2のデータをさらにルーティングするように適合される。具体的には、サーバ420が、負荷バランシングデバイス410から第2のデータを受信後、ルーティングユニット423は、制御識別子記録に含まれる制御情報に指定されるサーバ位置情報に対応するサーバへ、第2のデータを伝送する。
【0058】
さらに、ルーティングユニット423はまた、故障検出ユニット4231を含むことができる。故障検出ユニット4231は、それぞれのサーバ420が機能しているかどうかを確認するために使用される。機能していない場合、サーバ420の中から代替サーバが、既定のルーティングルールに従って選択され、第2のデータは、処理のために該代替サーバへ伝送される。
【0059】
図5は、本開示による、別の例示的なクラスタデータ処理システムを示す。クラスタデータ処理システム500は、負荷バランシングデバイス510、サーバ520、及びルーティングミドルウェア530を含む。サーバ520の1つのみが、クラスタ内の全サーバ520を表すものとして具体的に例示される。
【0060】
クラスタデータ処理システム500は、
図4に示されるクラスタデータ処理システム400の代替設計である。クラスタデータ処理システム500は、ルーティングユニットの構成である一態様において、クラスタデータ処理システム400と異なる。クラスタデータ処理システム500内のサーバに各々配置される複数のルーティングユニットを有する代わりに、別個のルーティングデバイス530がクラスタ500内に設定され、同一クラスタ500内の各サーバ520と接続する。負荷バランシングデバイス510は、ルーティングユニット530へ第2のデータを送信し、次いで、制御情報に従って、所望の標的サーバ520へ第2のデータを伝送する。ルーティングデバイス530は、独立型ルーティングミドルウェアとすることができる。
【0061】
代替として、ルーティングデバイス530は、サーバ520、あるいはホスティングサーバ内に含まれるものの中から1つ又は少数のホスティングサーバにのみ接続されるルーティングユニットであってもよい。これは、1つ又はいくつかのサーバ520のみが、接続されている、あるいはルーティングユニットをホスティングするという点で、依然としてクラスタデータ処理システム400とは異なる。ホスティングサーバが、負荷バランシングデバイス510から第2のデータを受信後、ルーティングユニットへ第2のデータを送信する。次いで、ルーティングユニットは、第2のデータに含まれる制御情報に従って、処理のための所望の標的サーバへ本第2のデータを伝送する。クラスタデータ処理システム500の他の態様は、クラスタデータ処理システム400のものと類似しているため、ここでは繰り返さない。
【0062】
クラスタデータ処理方法及びその対応するシステムが、上記において詳述されてきた。本明細書で論じられる潜在的効果及び利点は、添付の請求項の範囲の制限又は制約として解釈されるべきではないことを理解されたい。実施例は、本開示の原理及び例示的な実装方法を実証するための例示にすぎない。
【0063】
本主題を、構造特徴及び/又は方法論的作用に特定して記述してきたが、添付の請求項に定義される主題は、必ずしも、記述される特定の特徴又は作用に制限されないことを理解されたい。むしろ、特定の特徴及び作用は、請求項を実装する例示的な形態として開示される。