(57)【特許請求の範囲】
【請求項１】
問い合わせ条件を含むサービス問い合わせリクエストを生成することと、
前記問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストを取得することと、
上位ランクである事前設定された数の失敗したサーバアドレスの失敗したサーバアドレスリストを取得することであって、前記事前設定された数は、隔離される失敗したサーバの最大数を表し、前記最大数は、失敗したサーバの実際の数以下である、ことと、
前記失敗したサーバアドレスリストを前記第１のサーバアドレスリストから削除して第２のサーバアドレスリストを獲得することと、
前記第２のサーバアドレスリストからターゲットサーバアドレスを選択することと、
前記ターゲットサーバアドレスに対して前記ターゲットサービスの呼び出しを開始することと
を含む方法。
【請求項２】
前記失敗したサーバアドレスリストを前記第１のサーバアドレスリストから削除して第２のサーバアドレスリストを獲得することが、
前記失敗したサーバアドレスリスト内の１つまたは複数のサーバアドレスを前記第１のサーバアドレスリストから削除することと、
前記第１のサーバアドレスリスト内の１つまたは複数の残りのサーバアドレスを前記第２のサーバアドレスリストのために使用することと
を含む、請求項１に記載の方法。
【請求項３】
前記失敗したサーバアドレスリストを取得する前に、失敗データベースを事前に設定することをさらに含み、前記失敗データベースは、１つまたは複数の失敗したサーバアドレスと、これに対応する失敗回数の統計的な数字との関連する関係性を記憶する、請求項１に記載の方法。
【請求項４】
前記失敗したサーバアドレスリストを取得することが、前記失敗データベースから前記第１のサーバアドレスリストと合致する前記１つまたは複数の失敗したサーバアドレスを取得することを含む、請求項３に記載の方法。
【請求項５】
前記失敗したサーバアドレスリストを取得することがさらに、
２つ以上の失敗したサーバアドレスが前記第１のサーバアドレスリストと合致したと判定することと、
前記２つ以上の失敗したサーバアドレスを、そのそれぞれの失敗回数の統計的な数字に従ってソートすることと、
前記ソートにおいて上位ランクである事前設定された数の失敗したサーバアドレスを前記失敗したサーバアドレスリストに編成することと
を含む、請求項４に記載の方法。
【請求項６】
前記ターゲットサービスの呼び出しが失敗したと判定することと、
前記ターゲットサーバアドレスを失敗したサーバアドレスとして決定することと、
前記失敗したサーバアドレスが前記失敗データベース内に存在すると判定することと、
前記失敗したサーバアドレスに対応する失敗回数の統計的な数字を事前設定された閾値の分だけ増加することと
をさらに含む、請求項３に記載の方法。
【請求項７】
前記ターゲットサービスの前記呼び出しが失敗したと判定することと、
前記ターゲットサーバアドレスを失敗したサーバアドレスとして決定することと、
前記失敗したサーバアドレスが前記失敗データベース内に存在しないと判定することと、
前記失敗したサーバアドレスを前記失敗データベースに加えることと、
これに対応する失敗回数の統計的な数字を事前設定された最初の値に設定することと、
前記失敗したサーバアドレスを更新することと
をさらに含む、請求項６に記載の方法。
【請求項８】
前記ターゲットサービスの前記呼び出しの前記失敗が以下の
事前設定された閾値を超える応答タイムアウト、及び
ターゲットサーバのスレッドプールのビジー度のうちの少なくとも１つを含む、請求項７に記載の方法。
【請求項９】
前記失敗データベース内の前記失敗したサーバアドレスの各々に関してタイマーをそれぞれ設定することと、
前記タイマーが切れたとき、前記これに対応する失敗したサーバアドレスに対応する前記失敗回数の統計的な数字をゼロにリセットすることと
をさらに含む、請求項３に記載の方法。
【請求項１０】
前記失敗したサーバアドレスリストを取得することが、
事前設定された時間内でのクラスタ内でこれまで失敗したことのあるサーバの情報を取得する失敗情報取得リクエストを生成することと、
前記失敗情報取得リクエストをリモートサーバに送信し、前記リモートサーバが前記失敗したサーバのアドレス情報のレコードを記憶することと、
前記失敗情報取得リクエストに関して前記リモートサーバによって戻された前記失敗したサーバアドレスリストを受け取ることと
を含む、請求項１に記載の方法。
【請求項１１】
前記第２のサーバアドレスリストから前記ターゲットサーバアドレスを選択することが、前記第２のサーバアドレスリストから前記ターゲットサーバアドレスをランダムに選択することを含む、請求項１に記載の方法。
【請求項１２】
問い合わせ条件を含むサービス問い合わせリクエストを生成するリクエスト生成モジュールと、
前記問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストを取得する第１のアドレス取得モジュールと、
上位ランクである事前設定された数の失敗したサーバアドレスの失敗したサーバアドレスリストを取得する失敗アドレス取得モジュールであって、前記事前設定された数は、隔離される失敗したサーバの最大数を表し、前記最大数は、失敗したサーバの実際の数以下である、失敗アドレス取得モジュールと、
前記第１のサーバアドレスリストから前記失敗したサーバアドレスリストを削除して第２のサーバアドレスリストを獲得する第２のアドレス取得モジュールと、
ターゲットサーバアドレスを前記第２のサーバアドレスリストから選択するアドレス選択モジュールと、
前記ターゲットサーバアドレスに対して前記ターゲットサービスの呼び出しを開始するサービス呼び出しモジュールと
を備える装置。
【請求項１３】
前記第２のアドレス取得モジュールはさらに、
前記第１のサーバアドレスリストから前記失敗したサーバアドレスリスト内の１つまたは複数のサーバアドレスを削除し、
前記第１のサーバアドレスリストにおける１つまたは複数の残りのサーバアドレスを前記第２のサーバアドレスリストのために使用する、請求項１２に記載の装置。
【請求項１４】
１つまたは複数の失敗したサーバアドレスと、これに対応する失敗回数の統計的な数字との関連する関係性を記憶する失敗データベースを事前設定するデータベース事前設定モジュールをさらに備える、請求項１２に記載の装置。
【請求項１５】
前記失敗アドレス取得モジュールが、
前記第１のサーバアドレスリストと合致する前記１つまたは複数の失敗したサーバアドレスを前記失敗データベースから取得することを含む、前記失敗したサーバアドレスリストを取得するアドレス合致サブモジュールを含む、請求項１４に記載の装置。
【請求項１６】
前記失敗アドレス取得モジュールがさらに、
２つ以上の失敗したサーバアドレスが前記第１のサーバアドレスリストと合致したことを判定し、前記２つ以上の失敗したサーバアドレスをそれぞれの失敗回数の統計的な数字に従ってソートするアドレスソートサブモジュールと、
前記ソートにおいて上位ランクである事前設定された数の失敗したサーバアドレスを前記失敗したサーバアドレスリストに編成するリスト編成サブモジュールと
を含む、請求項１５に記載の装置。
【請求項１７】
前記ターゲットサービスの呼び出しが失敗したことを判定し、前記ターゲットサーバアドレスを失敗したサーバアドレスとして決定する決定モジュールと、
前記失敗したサーバアドレスが失敗データベース内に存在すると判定する判断モジュールと、
前記失敗したサーバアドレスに対応する失敗回数の統計的な数字を事前設定された閾値の分だけ増加する第１の計算モジュールと
をさらに備える、請求項１２に記載の装置。
【請求項１８】
前記ターゲットサービスの前記呼び出しが失敗したことを判定し、前記ターゲットサーバアドレスを失敗したサーバアドレスとして決定する決定モジュールと、
前記失敗したサーバアドレスが失敗データベース内に存在しないと判定する判断モジュールと、
前記失敗したサーバアドレスを前記失敗データベースに追加し、これに対応する失敗回数の統計的な数字を事前設定された最初の値に設定する第２の計算モジュールと、
前記失敗したサーバアドレスリストを更新するリスト更新モジュールと
をさらに備える、請求項１２に記載の装置。
【請求項１９】
前記失敗したアドレス取得モジュールが、
事前設定された時間内でのクラスタ内でこれまで失敗したことのあるサーバの情報を取得する失敗情報取得リクエストを生成する失敗リクエスト生成サブモジュールと、
前記失敗情報取得リクエストをリモートサーバに送信し、前記リモートサーバが、前記失敗したサーバのアドレス情報のレコードを記憶する失敗リクエスト送信サブモジュールと、
前記失敗情報取得リクエストに関して前記リモートサーバによって戻された前記失敗したサーバアドレスリストを受け取る失敗情報受信モジュールと
を含む、請求項１２に記載の装置。
【請求項２０】
問い合わせ条件を含むサービス問い合わせリクエストを生成することと、
前記問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストを取得することと、
上位ランクである事前設定された数の失敗したサーバアドレスの失敗したサーバアドレスリストを取得することであって、前記事前設定された数は、隔離される失敗したサーバの最大数を表し、前記最大数は、失敗したサーバの実際の数以下である、ことと、
前記失敗したサーバアドレスリストを前記第１のサーバアドレスリストから削除して第２のサーバアドレスリストを獲得することと、
前記第２のサーバアドレスリストからターゲットサーバアドレスを選択することと、
前記ターゲットサーバアドレスに対して前記ターゲットサービスの呼び出しを開始することと
を含む工程を行うために、１つまたは複数のプロセッサによって実行可能なコンピュータ実行可能命令をそこに格納する１つまたは複数のメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連特許出願に対する相互参照
本出願は、「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｓｅｒｖｉｃｅ  Ａｄｄｒｅｓｓｉｎｇ  ｕｎｄｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｅｎｖｉｒｏｎｍｅｎｔ」と題する、２０１４年１１月１８日に出願された中国特許出願第２０１４１０６５９２５６．３号に対して外国優先権を主張し、これはその全体において参照により本明細書に組み込まれる。
【０００２】
本開示は、データアドレッシングの技術分野に関し、より詳細には分散環境におけるサービスアドレッシング方法及び分散環境におけるサービスアドレッシング装置に関する。
【背景技術】
【０００３】
情報産業の発展に伴い、様々な種類のオペレーティングシステム、アプリケーションソフトウェア、システムソフトウェア、及びアプリケーションインフラストラクチャーが互いにより一層混ざり合うことで、広範に利用されるサービス指向アーキテクチャ（ＳＯＡ）技術を生み出す。
【０００４】
ＳＯＡはコンポーネントモデルであり、これは、これらのサービス間において明確に定義されたインターフェース及び契約を介してアプリケーションの異なる機能ユニット（サービスと呼ばれる）を互いに関連付ける。外部にサービスを提供するアプリケーションは、サービスプロバイダと呼ばれ、他のアプリケーションによって提供されるサービスを利用するアプリケーションはサービスコンシューマと呼ばれる。分散環境において、一部の顧客指向オンラインショッピングモールが数千のサービスプロバイダと、さらに多数のサービスコンシューマを所有するように、多数のサービスコンシューマと、サービスプロバイダが存在しており、そういった場合にはクラスタ環境が形成される。
【０００５】
システムにおける継続的なサービスの増加に伴い、システム全体におけるサービスの従属性は次第に複合的なネットワークチャート現象をなすようになり、このような場合、一元化されたサービスアドレッシングサイトに対する要望が極めて明白になってくるため、サービス記録センターが生じることになる。通常、サービスプロバイダは、氏名、インターフェース、属性及び他のメタ情報と同様に、サービスプロバイダによって提供されるサービスアドレス情報をサービス記録センターに均等に記録する必要がある。その後、サービス記録センターは、各々のサービスプロバイダのサービス情報をリストまたは他の形態でサービスコンシューマに提供することで、サービスコンシューマは、このサービス情報のリストに従って所望のサービスプロバイダを見つけ、これによって対応するサービスを提供するようにサービスプロバイダにリクエストすることができる。
【０００６】
しかしながらクラスタ環境では、サービスコンシューマがサービス記録センターを介して獲得するターゲットサービスが２つ以上ある場合もあり、特定のサーバに障害が生じ、通常通りにサービスを提供することができない場合、このようなサーバにあたるリクエストは実行が不成功に終わることになる。高度の並行処理の場合には、サービスコンシューマが、失敗したサーバを特定することができず、効果的な隔離手段を適宜採ることができない場合、多くのサービスの呼び出しの失敗が起こり、これによりシステムのアベイラビリティに悪影響を与えることになる。クラスターの規模が大きくなり、出現する失敗が大きくなるのに伴い、失敗に関する有効な隔離法に対する要望が増えている。
【０００７】
現在、失敗隔離機能をサポートするサービスアドレッシング方法には主として、
より低い負荷を有するサーバを選択するための負荷ベースのアドレッシング方法が含まれるが、そのようなアドレッシング方法は、サービス呼び出しが行われる毎にサービスプロバイダ側の負荷条件を感知する必要があるため、その負荷に対するリアルタイムの監視に対するサービスプロバイダの負担を高め、リアルタイムの負荷データを取得することをサービスコンシューマに要求することで、多量の演算処理とネットワーク送信リソースを占めることになり、
より下位の並行処理を利用するサーバを選択する並行処理ベースのアドレッシング方法が含まれるが、そのようなアドレッシング方法は、サービス呼び出しが行われる毎に各々のサービスプロバイダの並行する呼び出し量に対するリアルタイムの統計を行うことをサービスコンシューマに要求し、これもまた多量の演算処理を必要とすることになり、
より高い（または特有のアルゴリズムに応じてより少ない）重みサーブを有するサーバを選択する重みベースのアドレッシング方法が含まれるが、これは統合されたアプローチであり、特定の式に従って重みを計算するため、これもまた各々の呼び出しに関する演算処理を必要とする。
【０００８】
各々のサービス呼び出しに関する上記のアドレッシング方法は全て、これに対応する情報収集及び演算処理の実行を要求するため、とりわけ高度の並行処理かつ呼び出されるサービス及びサービスプロバイダのアドレスが多数ある場合の演算処理において高いコストを有する。呼び出しの成功率が比較的高い環境において、多くの演算プロセスは必須ではない。
【０００９】
したがって当業者にとって現在の解決すべき差し迫った要求である技術的問題は、分散環境でサービスアドレッシングメカニズムを提供し、サービス呼び出しの効率を改善することである。
【００１０】
本概説は、詳細な記載において以下でさらに記載される簡素化された形態における概念の選択を紹介するために提供される。本概説は、主張される主題の全ての重要な機構または必須の機構を特定することは意図されず、主張される主題の範囲を決定する際の補助として単独で利用されることも意図されていない。用語「技術（複数可）または技術的解決法（複数可）」は、例えば、上記の文脈によって及び本開示を通して認められるような装置（複数可）、システム（複数可）、方法（複数可）及び／またはコンピュータ可読命令を指す場合がある。
【００１１】
本開示の技術によって解決すべき技術的問題は、サービス呼び出しの効率を改善するために分散環境におけるサービスアドレッシング方法を提供することである。
【００１２】
したがって本開示はさらに、上記の方法の実施及び利用を確実にするための分散環境におけるサービスアドレッシング装置を提供する。
【００１３】
上記の問題を解決するために、本開示は分散環境におけるサービスアドレッシング方法を開示しており、これは以下の工程、
問い合わせ条件を含むサービス問い合わせリクエストを生成することと、
問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストを取得することと、
失敗したサーバアドレスリストを取得することと、
失敗したサーバアドレスリストを第１のサーバアドレスリストから削除して第２のサーバアドレスリストを獲得することと、
第２のサーバアドレスリストからターゲットサーバアドレスを選択することと、
該ターゲットサーバアドレスに対してターゲットサービスの呼び出しを開始することとを含む。
【００１４】
例えば失敗したサーバアドレスリストを取得する前に、方法はさらに失敗データベースを事前に設定することを含み、この失敗データベースは、１つまたは複数の失敗したサーバアドレスと、これに対応する失敗回数の統計的な数字との関連する関係性を記憶する。
【００１５】
例えば失敗したサーバアドレスリストを取得する工程は、
失敗データベースから第１のサーバアドレスリストと合致する失敗したサーバアドレスを取得することと、
２つ以上の失敗したサーバアドレスが合致した場合、２つ以上の失敗したサーバアドレスを失敗回数の統計的な数字に従ってソートすることと、
ソートにおいて上位ランクである事前設定された数の失敗したサーバアドレスを、失敗したサーバアドレスリストに編成することとを含む。
【００１６】
例えば、方法はさらに
ターゲットサービスの呼び出しが失敗した場合、このターゲットサーバアドレスを失敗したサーバアドレスとして決定することと、
失敗したサーバアドレスが失敗データベース内に存在するかどうかを判定することと、
この判定の結果が肯定的である場合、失敗したサーバアドレスに対応する失敗回数の統計的な数字を事前設定された閾値だけ増加することと、
この判定の結果が否定的である場合、失敗したサーバアドレスを失敗データベースに加え、これに対応する失敗回数の統計的な数字を事前設定された最初の値に設定することと、
失敗したサーバアドレスを更新することと、
更新された失敗したサーバアドレスリストに関して、失敗したサーバアドレスリストを第１のサーバアドレスリストから削除して第２のサーバアドレスリストを取得する工程に戻ることとを含む。
【００１７】
例えばターゲットサービスの呼び出しが失敗したケースは、以下の、ターゲットサーバのスレッドプールのビジー度が事前設定された閾値を超えるような応答タイムアウト及びビジーターゲットサーバスレッドプールのうちの少なくとも１つを含む。
【００１８】
例えば方法はさらに、
失敗データベース内の失敗したサーバアドレスの各々に関してタイマーをそれぞれ設定することと、
タイマーが切れたとき、これに対応する失敗したサーバアドレスに対応する失敗回数の統計的な数字をゼロにリセットすることとを含む。
【００１９】
例えば失敗したサーバアドレスリストを取得する工程は、
失敗情報取得リクエストを生成し、該失敗情報取得リクエストを使用して事前設定された時間内でのクラスタ内でこれまで失敗したことのあるサーバに対する情報を取得することと、
失敗情報取得リクエストをリモートサーバに送信し、リモートサーバが、クラスタ内でこれまで失敗したことのある失敗したサーバのアドレス情報のレコードを保持することと、
失敗情報取得リクエストに関してリモートサーバによって戻された失敗したサーバアドレスリストを受け取ることとを含む。
【００２０】
例えば第２のサーバアドレスリストからターゲットサーバアドレスを選択する工程は、第２のサーバアドレスリストからターゲットサーバアドレスをランダムに選択することを含む。
【００２１】
本開示はさらに、分散環境におけるサービスアドレッシング装置を提供し、これは、
問い合わせ条件を含むサービス問い合わせリクエストを生成するリクエスト生成モジュールと、
問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストを取得する第１のアドレス取得モジュールと、
失敗したサーバアドレスリストを取得する失敗アドレス取得モジュールと、
第１のサーバアドレスリスト内の失敗したサーバアドレスリストを削除して第２のサーバアドレスリストを獲得する第２のアドレス取得モジュールと、
ターゲットサーバアドレスを第２のサーバアドレスリストから選択するアドレス選択モジュールと、
ターゲットサーバアドレスに対してターゲットサービスの呼び出しを開始するサービス呼び出しモジュールとを含む。
【００２２】
例えば、装置はさらに、１つまたは複数の失敗したサーバアドレスと、これに対応する失敗回数の統計的な数字との関連する関係性を記憶する失敗データベースを事前に設定するデータベース事前設定モジュールとを含む。
【００２３】
例えば失敗アドレス取得モジュールは、
第１のサーバアドレスリストと合致する失敗したサーバアドレスを失敗データベースから取得するアドレス合致サブモジュールと、
２つ以上の失敗したサーバアドレスが合致した場合、２つ以上の失敗したサーバアドレスを失敗回数の統計的な数字に従ってソートするアドレスソートサブモジュールと、
ソートにおいて上位ランクである事前設定された数の失敗したサーバアドレスを、失敗したサーバアドレスリストに編成するリスト編成サブモジュールとを含む。
【００２４】
例えば装置はさらに、
ターゲットサービスの呼び出しが失敗した場合、このターゲットサーバアドレスを失敗したサーバアドレスとして決定する決定モジュールと、
失敗したサーバアドレスが失敗データベース内に存在するかどうかを判断する判定モジュールと、
判断モジュールが失敗したサーバアドレスが失敗データベース内に存在すると判定した場合、失敗したサーバアドレスに対応する失敗回数の統計的な数字を事前設定された閾値の分だけ増加する第１の計算モジュールと、
判断モジュールが失敗したサーバアドレスが失敗データベース内に存在しないと判定した場合、失敗したサーバアドレスを失敗データベースに追加し、これに対応する失敗回数の統計的な数字を事前設定された最初の値に設定する第２の計算モジュールと、
失敗したサーバアドレスリストを更新するリスト更新モジュールと、
更新後の失敗したサーバアドレスリストに関して第２のアドレス取得モジュールの実行を起動する起動モジュールとを含む。
【００２５】
例えばターゲットサービスの呼び出しが失敗したケースは、少なくとも以下の、応答タイムアウト及びビジーターゲットサーバスレッドプールのうちの１つを含む。
【００２６】
例えば装置はさらに、
失敗データベースにおける失敗したサーバアドレスの各々に関してタイマーをそれぞれ設定するタイマーモジュールと、
タイマーが切れたとき、これに対応する失敗したサーバアドレスに対応する失敗回数の統計的な数字をゼロにリセットする、ゼロリセットモジュールとを含む。
【００２７】
例えば失敗アドレス取得モジュールは、
失敗情報取得リクエストを生成し、該失敗情報取得リクエスを使用して事前設定された時間内でのクラスタ内でこれまで失敗したことのあるサーバの情報を取得する失敗情報取得リクエスト生成サブモジュールと、
失敗情報取得リクエストをリモートサーバに送信し、リモートサーバが、クラスタ内でこれまで失敗したことのある失敗したサーバのアドレス情報のレコードを記憶する失敗リクエスト送信サブモジュールと、
失敗情報取得リクエストに関してリモートサーバによって戻された失敗したサーバアドレスリストを受け取る失敗情報受信サブモジュールとを含む。
【００２８】
例えばアドレス選択モジュールは、第２のサーバアドレスリストからターゲットサーバアドレスをランダムに選択するランダム選択サブモジュールを含む。
【００２９】
従来の技術と比べて、本開示の技術は少なくとも以下の利点を有する。
【００３０】
本開示の技術は、大規模の高度の並行処理される分散サービス呼び出しのシナリオにおいて呼び出しの失敗回数の統計に基づいたアドレッシング方法を提供し、これはアドレッシングにおいて、より最近の呼び出しの失敗回数を有する失敗したサーバアドレスを現在獲得される第１のサーバアドレスリストから削除して第２のサーバアドレスリストを獲得し、その後ターゲットサービスの呼び出しのためのターゲットサーバアドレスを第２のサーバアドレスリストからランダムに選択する。呼び出しが失敗したケースに関してのみ統計的な分析を行うそのようなアドレッシング方法は、各々のサービス呼び出しに関する余分なリアルタイムの計算を回避し、極めて効率のよいサービスアドレッシングを達成することで、低コストでクラスタ内での効率的なローカルな障害の隔離を達成する。
【図面の簡単な説明】
【００３１】
【図１】本開示の第１の例の実施形態による一例の分散環境におけるサービスアドレッシング方法のフローチャートである。
【図２】本開示の第２の例の実施形態による一例の分散環境におけるサービスアドレッシング方法のフローチャートである。
【図３】本開示の第３の例の実施形態による一例の分散環境におけるサービスアドレッシング方法のフローチャートである。
【図４】本開示の一例の例の実施形態による一例の分散環境におけるサービスアドレッシング装置の構造的線図である。
【発明を実施するための形態】
【００３２】
本開示の上記の目的、特徴及び利点をより明白にかつ理解し易くするために、本開示をさらに、添付の図面及び一例の実施形態を参照して以下に詳細に記載する。
【００３３】
図１は、以下の工程を含み得る、本開示の第１の一例の実施形態による一例の分散環境におけるサービスアドレッシング方法のフローチャートを示す。
【００３４】
１０２において、問い合わせ条件を含むサービス問い合わせリクエストが生成される。
【００３５】
例えば本開示の一例の実施形態は、ＳＯＡアーキテクチャにおいて使用される。サービスプロバイダがサービス記録センターにおいてサービス記述を公表した後、サービス記録センターが記録を作成する。サービスコンシューマが、サービス記録センターにおいて公表されたサービス記述を検索する。例えばサービスコンシューマは、必要なサービスを検索するために問い合わせ条件を含むサービス問い合わせリクエストを生成し、サービス問い合わせリクエストをサービス記録センターに送る。本明細書では、問い合わせ条件には、サービスの種類、サービスの品質保証、安全確認などが含まれ得る。
【００３６】
１０４において、問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストが取得される。
【００３７】
サービス記録センターは、サービス問い合わせリクエストを受け取った後、問い合わせ条件に合致するターゲットサービスを見つけるために、問い合わせ条件に従って公表されたサービス記述内を検索する。
【００３８】
クラスター環境では、２つ以上のサービスアドレスがターゲットサービスを提供するため、サービス記録センターは、ターゲットサービスをリストの形態で（すなわち第１のサーバアドレスリスト）サービスコンシューマに提供するサーバアドレスを提示する。
【００３９】
例えば第１のサーバアドレスリストには、サーバアドレス識別子（すなわちサービスのアクセスパス）、サービス呼び出しのパラメータ、転送プロトコル、セキュリティ要件などが含まれる。
【００４０】
１０６において、失敗したサーバアドレスリストが取得される。
【００４１】
失敗したサーバアドレスは、これに対応する失敗回数の統計的な数字を有しており、この失敗回数の統計的な数字を使用して、事前設定された期間内での対応する失敗したサーバの失敗回数の数字に対して統計を採る。よって失敗したサーバアドレスリストは、失敗したサーバアドレスが第１のサーバアドレスリストから特定された後、失敗回数の統計的な数字のソートにおいて上位ランクである、事前設定された数の失敗したサーバアドレスにより構成されたリストを含む。
【００４２】
例えば１０６における工程の前に、方法はさらに、失敗データベースを事前に設定することを含む場合があり、この失敗データベースは、１つまたは複数の失敗したサーバアドレスと、これに対応する失敗回数の統計的な数字との関連する関係性を記憶する。
【００４３】
失敗データベースは、サービスコンシューマのメモリに設定され、失敗したサーバの情報を記憶し、失敗したサーバの障害の統計的な数字に対して統計を採ることができる。失敗したサーバは、サービス呼び出しにおいて失敗したサーバである（すなわちサービスプロバイダ）。呼び出しの失敗は、以下の状況、呼び出しのタイムアウト、サーバ側によって投じられた例外、サーバ側のビジースレッドプール、基準を外れた通信レイヤ、サーバ側の実行の拒絶などのうちの少なくとも１つであり得る。サーバが、停止するなどのスロータイプの障害を有する場合、一般的な障害の理由には、呼び出しのタイムアウト、サーバ側のビジースレッドプールなどが含まれる。例えばサーバによって投じられた例外がサーバ自体に関する問題ではなく、サーバが依拠する基礎となる記憶装置によって生じた場合、そのような状況における呼び出しの失敗は、サーバの障害のカテゴリには属さない。
【００４４】
例えば失敗データベースが失敗したサーバの統計的な数字を記憶し、失敗回数をデータレコードとして記憶するフォームは、<１９２．１６８．０．１:１５>などの、失敗したサーバアドレスの識別子と失敗回数の統計的な数字との対応する関係性であって良く、この場合１９２．１６８．０．１は、失敗したサーバアドレスの識別子であり、１５は失敗回数の統計的な数字である。
【００４５】
例えば１つの失敗したサーバが最初に失敗データベースに加えられる際、失敗回数の統計的な数字は、事前設定された最初の値であって良く、事前設定される最初の値は、１または他の数値であって良い。
【００４６】
例えば１０６における作業は、以下のサブ工程を含む場合がある。
【００４７】
第１のサブ工程において、第１のサーバアドレスリストと合致する失敗したサーバアドレスが失敗データベースから取得される。
【００４８】
第１のサーバアドレスリストが取得された後、第１のサーバアドレスリストに合致する失敗したサーバアドレスが失敗データベースから取得される。例えば失敗データベース内の各々のデータレコードは、第１のサーバアドレスリスト内をトラバースされる。データレコードが第１のサーバアドレスリスト内に見つかった場合、それは、そのデータレコードが第１のサーバアドレスリストにおけるデータと合致したことを示しており、上記のプロセスは、第１のサーバアドレスリストに合致する全ての失敗したサーバアドレスが見つかるまで繰り返される。見つかった失敗したサーバアドレスの数字は、０、１またはそれ以上であり得る。
【００４９】
第２のサブ工程において、２つ以上の失敗したサーバアドレスが合致した場合、失敗回数の統計的な数字に従って２つ以上の失敗したサーバアドレスがソートされる。
【００５０】
２つ以上の失敗したサーバアドレスが合致した場合、２つ以上の失敗したサーバアドレスは各々の失敗したサーバアドレスに対応する失敗回数の統計的な数字に従ってソートされ、失敗回数の統計的な数字に従って昇順または降順でソートされる。例えば失敗したサーバアドレスは、[<１９２．１６８．０．１:１５>，<１９２．１６８．０．３:１３>，．．．，<１９２．１６８．０．１８:３>，．．．，<１９２．１６８．０．１１１:１>]などの降順でソートされる。
【００５１】
第３のサブ工程において、ソートにおいて上位ランクである事前設定された数の失敗したサーバアドレスは、失敗したサーバアドレスリストに編成される。
【００５２】
降順が利用される場合、ソートにおいて列の先頭における上位ランクである、事前設定された数の失敗したサーバアドレスは、獲得され失敗したサーバアドレスに編成される（これはｕｎｓｔａｂｌｅＵｒｌｓとして印が付けられる場合もある）。これに対応して、昇順では、ソートにおいて列の最後における上位ランクである、事前設定された数の失敗したサーバアドレスは、獲得され失敗したサーバアドレスリストに編成される。本明細書では、一部の例外ケースにおいてあまりに多くの失敗したサーバが隔離されることで、残りのサーバがパンク状態になるのを回避するために、事前設定された数字の人的機能は、最大でもどのくらいの失敗したサーバが隔離されるべきかを表すべきであり、これは要求に応じて設定された閾値であって良い。例えばサービスの設計及び実行は、目標のアベイラビリティを保証し、このアベイラビリティはそのようなシステムにおいて、大規模な商業ＳＯＡにおいて９９．９９%を上回ることが常に要求されるため、サービス呼び出しの大半は無事に達成され、わずかなサーバしか失敗しない。１つのコンピュータにしか失敗が生じない可能性が高い。事前設定される数字は、１、２または他の小さい数字である。例えば上記に挙げた例に関して、事前設定される数字が２の場合、ｕｎｓｔａｂｌｅＵｒｌｓは[１９２．１６８．０．１および１９２．１６８．０．３]であり、事前設定される数字が１の場合、ｕｎｓｔａｂｌｅＵｒｌｓは[１９２．１６８．０．１]である。
【００５３】
１０８において、失敗したサーバアドレスリストが第１のサーバアドレスリストから削除されて第２のサーバアドレスリストを獲得する。
【００５４】
失敗したサーバアドレスリストが取得される際、失敗したサーバアドレスリストは第１のサーバアドレスリストに通される、すなわち失敗したサーバアドレスリストのアドレスが第１のサーバアドレスリストから削除され、失敗したサーバを隔離するために残りのサーバアドレスが第２のサーバアドレスリストとしてリストにされる。
【００５５】
１１０において、第２のサーバアドレスリストからターゲットサーバアドレスが選択される。
【００５６】
例えば失敗したサーバアドレスが特定され第２のサーバアドレスリストから隔離され、サービスを提供するサーバは、通常統一された仕様内にある。すなわちクラスタ内では、各々のサーバは、互いと基本的に同一のサービス能力を有する。したがって第２のサーバアドレスリストの中でターゲットサーバアドレスをランダムに選択するランダムアドレッシング法が使用されて良く、これはいかなる計画的な計算や選択も実行する必要がないため、アドレッシングプロセスを簡素化すると同時に、計算におけるデータの量が減少することで、サーバ（サービスプロバイダ及びサービスコンシューマ）のデータ処理プレッシャを低下させ、その結果アドレッシングの効率が改善される。
【００５７】
１１２において、ターゲットサーバアドレスに対してターゲットサービスの呼び出しが開始される。
【００５８】
ターゲットサーバが選択された後、ターゲットサーバアドレスに対してターゲットサービスの呼び出しを開始することができる。この時点で、ターゲットサーバがサービスの呼び出しにおいて失敗した場合、このターゲットサーバアドレスは失敗したサーバアドレスとして決定される。失敗したサーバアドレスが失敗データベースに存在するかどうかがさらに判定され、決定の結果がはいである場合、失敗したサーバアドレスに対応する失敗回数の統計的な数字が事前設定された閾値の分だけ増加され、そうでない場合、失敗したサーバアドレスは失敗データベースに加えられ、対応する失敗回数の統計的な数字が、事前設定された最初の値として設定される。本明細書では、事前設定された閾値は、事前設定された増加マージンであって良い（例えば事前設定された回数を増加させる、または１だけ増加させるなど）。例えば元の失敗データベースにおけるサービス呼び出し失敗データが[<１９２．１６８．０．１:９>，<１９２．１６８．０．３:６>]であり、１９２．１６８．０．３の呼び出しが失敗すると、その結果、その組み合わせにおいて、サービス呼び出し失敗データは、 [<１９２．１６８．０．１:９>，<１９２．１６８．０．３:７>]に変更される。
【００５９】
失敗データベースにおける失敗回数の統計的な数字が変更され、これは失敗データベースにおける失敗したサーバのソートに影響を及ぼす可能性があるため、失敗したサーバアドレスリストは、ソート結果に応じて更新される必要がある。更新された失敗したサーバアドレスリストに関して、方法は、１０８における工程に戻って、ターゲットサーバに対してターゲットサービスの呼び出しを再試行し実行し、ターゲットサービスの呼び出しが成功するまで上記の失敗したサーバアドレスリストの更新及びターゲットサーバの再選択のプロセスを繰り返すことによってターゲットサーバを選択する。本開示の一例の実施形態は、サービスコンシューマが再試行することを可能にするようなやり方でターゲットサーバを選択することによってサービス呼び出しの成功率を高める。
【００６０】
加えて、本開示の一例の実施形態において、失敗データベースにおける各々のデータレコードに関して、すなわち各々の失敗したサーバアドレスに関してタイマーを設定することができ、タイマーが切れると、対応する失敗したサーバアドレスに対応する失敗回数の統計的な数字がゼロにリセットされる。失敗回数の統計的な数字を周期的にゼロにリセットすることによって、失敗したサーバのサービス能力が回復された後はサーバアドレスは正常に呼び出される。
【００６１】
本開示の一例の実施形態は、アドレッシングにおいて、より最近の呼び出しの失敗回数を有する失敗したサーバアドレスリストを現在得られる第１のサーバアドレスリストから削除して第２のサーバアドレスリストを取得し、その後第２のサーバアドレスリストからターゲットサービスの呼び出しに関するターゲットサーバアドレスをランダムに選択する、大規模の高度に並行処理される分散サービス呼び出しシナリオにおける呼び出しの失敗回数の統計学に基づいたアドレッシング方法を提供する。呼び出しが失敗した場合に関してのみ統計的な分析を行うそのようなアドレッシング方法は、各々のサービス呼び出しに関する余分なリアルタイムの計算を回避し、非常に効率的なサービスアドレッシングを達成することにより、クラスタにおける低コストでの部分的なまたはローカルな障害の隔離を達成する。
【００６２】
図２は、以下の工程を含み得る、本開示の第２の例の実施形態による分散環境における一例のサービスアドレッシング方法のフローチャートを示す。
【００６３】
２０２において、サービスコンシューマが失敗データベースを事前に設定する。
【００６４】
本明細書では、失敗データベースは、１つまたは複数の失敗したサーバアドレスと、これに対応する失敗回数の統計的な数字との関連する関係性を記憶する。
【００６５】
この失敗データベースにおいて、失敗したサーバにおける失敗回数の統計的な数字を周期的にリセットするために各々の失敗したサーバアドレスに関してタイマーが設定されるため、失敗したサーバは通常状態に回復すると、正常に呼び出されることになる。
【００６６】
２０４において、サービスコンシューマが、サービス問い合わせリクエストを生成し、問い合わせリクエストをサービス記録センターに送る。サービス問い合わせリクエストは問い合わせ条件を含む。
【００６７】
本明細書では、問い合わせ条件は、サービスの種類、サービスの品質保証、安全確認などがでも良い。
【００６８】
２０６において、サービスコンシューマが、サービス記録センターから、問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストを取得する。
【００６９】
２０８において、サービスコンシューマが、失敗データベースから第１のサーバアドレスリストに合致する失敗したサーバアドレスを取得する。
【００７０】
２１０において、２つ以上の失敗したサーバアドレスが合致した場合、失敗回数の統計的な数字に従って２つ以上の失敗したサーバアドレスがソートされる。
【００７１】
２１２において、サービスコンシューマが、ソートにおいて上位ランクである事前設定された数の失敗したサーバアドレスを、失敗したサーバアドレスリストに編成する。
【００７２】
２１４において、サービスコンシューマが、失敗したサーバアドレスリストにおけるアドレスを第１のサーバアドレスリストから削除して第２のサーバアドレスリストを獲得する。
【００７３】
２１６において、サービスコンシューマが、第２のサーバアドレスリストからターゲットサーバアドレスをランダムに選択し、ターゲットサーバアドレスに対してターゲットサービスの呼び出しを開始する。
【００７４】
２１８において、サービスコンシューマが、ターゲットサービスの呼び出しが成功したかどうかを判定し、判定の結果がはいである場合、プロセスを終わらせ、その結果がいいえである場合、２２０における工程を実行する。
【００７５】
２２０において、サービスコンシューマが、失敗したサーバアドレスが失敗データベース内に存在するかどうかを判断し、判断の結果がはいである場合、２２２における工程を実行し、その結果がいいえである場合、２２４における工程を実行する。
【００７６】
２２２において、失敗したサーバアドレスに対応する失敗回数の統計的な数字が、事前設定された閾値の分だけ増加され、方法は、元に戻り２０８において工程を進める。
【００７７】
２２４において、失敗したサーバアドレスが失敗データベースに加えられ、これに対応する失敗回数の統計的な数字が事前設定された最初の値として設定され、方法は元に戻り２０８において工程を進める。
【００７８】
図２に示される一例の方法実施形態は、図１に示される方法実施形態とある程度同じであるため、簡素化されて記載されており、その関連する部分は、第１の例の方法実施形態の一部において記載を参照する場合がある。
【００７９】
図３は、本開示の第３の例の実施形態による分散環境における一例のサービスアドレッシング方法のフローチャートを示しており、これは以下の工程を含んで良い。
【００８０】
３０２において、サービス問い合わせリクエストが生成される。サービス問い合わせリクエストは問い合わせ条件を含む。
【００８１】
サービスコンシューマは、所望のサービスを検索するための問い合わせ条件を含むサービス問い合わせリクエストを生成し、サービス問い合わせリクエストをサービス記録センターに送信しても良い。本明細書では、問い合わせ条件は、サービスの種類、サービスの品質保証、安全確認などが含まれても良い。
【００８２】
３０４において、問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストが取得される。
【００８３】
サービスコンシューマが、サービス記録センターから、問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストを取得する。例えばサービス記録センターは、サービス問い合わせリクエストを受け取った後、問い合わせ条件に合致するターゲットサービスを見つけるために、この問い合わせ条件に従って公表されたサービス記述内を検索する。
【００８４】
クラスタ環境では、２つ以上のサービスアドレスがターゲットサービスを提供する場合もあるため、サービス記録センターは、ターゲットサービスをリスト（すなわち第１のサーバアドレスリスト）の形態でサービスコンシューマに提供するサーバアドレスを提示する場合もある。
【００８５】
例えば第１のサーバアドレスリストには、サーバアドレス識別子（すなわちサービスのアクセスパス）、サービス呼び出しのパラメータ、転送プロトコル、セキュリティ要件などが含まれる場合がある。
【００８６】
３０６において、失敗情報取得リクエストが生成される。この失敗情報取得リクエストを使用して、事前設定された時間内でこれまでクラスタ内で失敗したサーバに対する情報を取得する。
【００８７】
サービスコンシューマが、失敗情報取得リクエストを生成する。この失敗情報取得リクエストを使用して、サーバアドレス情報、識別子情報、パス情報などの事前設定された時間内でクラスタ内で失敗したサーバに対する情報を取得する。失敗情報取得リクエストには、ターゲットサービス識別子が含まれる。
【００８８】
本明細書では、事前設定された時間は、要求に応じて設定された時間であって良く、例えば一日、一週間などであって良い。
【００８９】
３０２及び３０６における工程は同時にまたは非同期的に行われて良いことに留意されたい。例えば３０６における工程が行われる前に、第１のサーバアドレスリストを獲得する３０２における工程が最初に行われる。本開示の一例の実施形態は、３０２及び３０６における工程の順序を制限していない。
【００９０】
３０８において、失敗情報取得リクエストがリモートサーバに送られる。リモートサーバは、クラスタ内で失敗したサーバのアドレス情報のレコードを保持する。
【００９１】
３１０において、失敗情報取得リクエストに関してリモートサーバによって戻された失敗したサーバアドレスリストを受け取る。
【００９２】
失敗情報取得リクエストを生成した後、サービスコンシューマは、失敗情報取得リクエストをリモートサーバに送ることができ、リモートサーバは、クラスタ内で失敗したサーバのアドレス情報のレコードを保持する。例えばサービスコンシューマがサービスプロバイダに対するサービスの呼び出しに失敗した場合、サービスコンシューマは、サービスプロバイダアドレス（すなわち失敗したサーバアドレス）、呼び出されたサービスの識別子、呼び出し時間、失敗の原因（呼び出しのタイムアウト、サーバ側によって投じられた例外、サーバ側のビジースレッドプール、基準を外れた通信レイヤ、サーバ側の実行の拒絶など）の呼び出し失敗情報をリモートサーバに送ることができる。リモートサーバはこのとき、呼び出し失敗情報を記録し、呼び出しに失敗したサーバの失敗回数の統計的な数字に対して統計を採り、<１９２．１６８．０．１:１５>などの、失敗したサーバアドレスと、これに対応する失敗回数の統計的な数字との関連する関係性を生成する。例えばリモートサーバにおいて、各々の失敗したサーバに関して失敗回数の統計的な数字を計算するためにコンテナが設定される場合もある。確実なことには、呼び出し失敗情報は、サービスコンシューマによってリモートサーバに提供されて良く、またサービスプロバイダによってリモートサーバに能動的に提供される場合もあり、これは本開示のこの一例の実施形態において限定される必要はない。
【００９３】
例えば呼び出し失敗情報を受け取る際、リモートサーバはまず、呼び出し失敗情報に対応する失敗したサーバアドレスがローカルに記録されたかどうかを探す。そうでない場合、リモートサーバは、呼び出し失敗情報を記録し、失敗回数の統計的な数字を事前設定された最初の値に設定し、この事前設定された値は１または他の数値である。呼び出し失敗情報に対応する失敗したサーバアドレスがローカルに記録された場合、失敗回数の統計的な数字は、事前設定された閾値だけ、例えば１だけ増加される。
【００９４】
リモートサーバにおいて、２つ以上の失敗したサーバアドレスが合致した場合、失敗回数の統計的な数字に従って２つ以上の失敗したサーバアドレスがソートされ、失敗回数の統計的な数字に従って昇順または降順でソートされて良い。例えば失敗したサーバアドレスは、[<１９２．１６８．０．１:１５>，<１９２．１６８．０．３:１３>，．．．，<１９２．１６８．０．１８:３>，．．．，<１９２．１６８．０．１１１:１>]などの降順でソートされて良い。
【００９５】
リモートサーバは、失敗情報取得リクエストを受け取った後、ソートにおいて上位ランクである事前設定された数の失敗したサーバアドレスを、失敗したサーバアドレスリストに編成し、失敗したサーバアドレスリストをサービスコンシューマに戻すことができる。
【００９６】
加えてリモートサーバにおいて、各々の失敗したサーバアドレスに関してタイマーを設定することができ、タイマーが切れると、対応する失敗したサーバアドレスに対応する失敗回数の統計的な数字がゼロにリセットされる。失敗したサーバアドレスの失敗回数の統計的な数字を周期的にゼロにリセットすることによって、失敗したサーバのサービス能力が回復された後はサーバアドレスは正常に呼び出される。
【００９７】
３１２において、失敗したサーバアドレスリストを第１のサーバアドレスリストから削除して第２のサーバアドレスリストを獲得する。
【００９８】
例えば、失敗したサーバアドレスリストを受け取った後、サービスコンシューマは、失敗したサーバアドレスリストにおける各々の失敗したサーバアドレスを第１のサーバアドレスリストと合致させる。失敗したサーバアドレスが第１のサーバアドレスリストの中に見つかった場合、サービスコンシューマは、失敗したサーバアドレスを第１のサーバアドレスリストから削除し、失敗したサーバアドレスリストにおける全ての失敗したサーバアドレスが合致するまで上記のプロセスが繰り返されることで、失敗したサーバアドレスが削除された第１のサーバアドレスリストが第２のサーバアドレスリストになる。
【００９９】
３１４において、ターゲットサーバアドレスが第２のサーバアドレスリストから選択される。
【０１００】
３１６において、ターゲットサーバアドレスに対してターゲットサービスの呼び出しが開始される。
【０１０１】
図１及び図２における実施形態は、失敗したサーバアドレスをサービスコンシューマにおいてローカルに維持する、すなわち失敗したサーバアドレスリストをサービスコンシューマからローカルに獲得するが、この一例の実施形態は、失敗したサーバアドレスをリモートサーバ内に維持する、すなわち失敗したサーバアドレスリストをリモートサーバから獲得する点において、本開示のこの一例の実施形態は、図１または図２における一例の実施形態と異なっている。失敗したサーバアドレスをリモートサーバ内に維持することによって得られる利点は、サービスコンシューマのローカルな記憶プレッシャを軽減させ、サービスコンシューマのデータ処理効率を高め、さらにサービスコンシューマの働きを改善することである。一方、特定された失敗したサーバはまた、失敗したサーバアドレスを全てのサービスコンシューマにおいて維持する面倒を避けるために、失敗したサーバアドレスが全てのサービスコンシューマによって共有されることで、サービスコンシューマによる失敗したサーバアドレスを取得する効率を高めることができる。
【０１０２】
図３に示される一例の方法実施形態は、図１及び図２に示される一例の方法実施形態とある程度同じであるため、簡潔に記載されており、その関連する部分は、他の一例の方法実施形態の一部における記載を参照する場合がある。
【０１０３】
一例の方法実施形態は、簡潔にする目的で、一連の動作の組み合わせとして表現されるが、本開示は、本開示に従うように記載される動作の順序に限定されものではなく、一部の工程は他の順序または同時に行われる場合もあることを当業者は知るべきである。次に当業者はまた、明細書に記載される実施形態は例であり、記載される行動の一部は、本開示に必須ではないことも知るべきである。
【０１０４】
図４は、本開示による分散環境におけるサービスアドレッシング装置４００の構造図を示す。
【０１０５】
図４に示されるように、装置４００は、プロセッサ４０２（複数可）またはデータ処理ユニット（複数可）と、メモリ４０４とを含んで良い。装置４００はさらに、１つまたは複数の入／出力インターフェース（複数可）４０６と、１つまたは複数のネットワークインターフェース（複数可）４０８とを含んで良い。メモリ４０４は、コンピュータ可読媒体の一例である。
【０１０６】
メモリ４０４は、
問い合わせ条件を有するサービス問い合わせリクエストを生成するリクエスト生成モジュール４１０と、
問い合わせ条件に一致するターゲットサービスの第１のサーバアドレスリストを取得する第１のアドレス取得モジュール４１２と、
失敗したサーバアドレスリストを取得する失敗アドレス取得モジュール４１４であって、失敗したサーバアドレスが、これに対応する失敗回数の統計的な数字を有し、失敗したサーバアドレスリストは、第１のサーバアドレスリストから特定され、失敗回数の統計的な数字のソートにおいて上位ランクである事前設定された数の失敗したサーバアドレスにより構成されたリストである、失敗アドレス取得モジュール４１４と、
失敗したサーバアドレスリスト内のアドレスを第１のサーバアドレスリストから削除して第２のサーバアドレスリストを獲得する第２のアドレス取得モジュール４１６と、
ターゲットサーバアドレスを第２のサーバアドレスリストから選択するアドレス選択モジュール４１８と、
ターゲットサーバアドレスに対してターゲットサービスの呼び出しを開始するサービス呼び出しモジュール４２０とを含めた複数のモジュールまたはユニットを中に格納することができる。
【０１０７】
例えば本開示の実施形態の装置はさらに、メモリに格納された、失敗データベースを事前に設定するデータベース事前設定モジュール（図４には示さない）を含む場合もある。失敗データベースは、１つまたは複数の失敗したサーバアドレスと、これに対応する失敗回数の統計的な数字との関連する関係性を記憶する。
【０１０８】
例えば失敗アドレス取得モジュール４１４は、
第１のサーバアドレスリストに合致する失敗したサーバアドレスを失敗データベースから取得するアドレス合致サブモジュールと、
２つ以上の失敗したサーバアドレスが合致した場合、２つ以上の失敗したサーバアドレスを失敗回数の統計的な数字に従ってソートするアドレスソートサブモジュールと、
ソートにおいて上位ランクである事前設定された数の失敗したサーバアドレスを、失敗したサーバアドレスリストに編成するリスト編成サブモジュールを含むサブモジュール（図４には示さない）を含む場合もある。
【０１０９】
例えば、装置はさらに、メモリに格納された以下のモジュール（図４には示さない）、
ターゲットサービスの呼び出しが失敗した場合、ターゲットサーバアドレスを失敗したサーバアドレスとして決定する決定モジュールと、
失敗したサーバアドレスが失敗データベース内に存在するかどうかを判断するために使用される判定モジュールと、
失敗したサーバアドレスが失敗データベース内に存在するかどうかを判断するために使用される判断モジュールと、
判断モジュールが失敗したサーバアドレスが失敗データベース内に存在すると判定した場合、事前設定された閾値の分だけ失敗したサーバアドレスに対応する失敗回数の統計的な数字を増加する第１の計算モジュールと、
判断モジュールが失敗したサーバアドレスが失敗データベース内に存在しないと判定した場合、失敗したサーバアドレスを失敗データベースに追加し、これに対応する失敗回数の統計的な数字を事前設定された最初の値に設定する第２の計算モジュールと、
失敗したサーバアドレスリストを更新するリスト更新モジュールと、
更新後の失敗したサーバアドレスリストに関して第２のアドレス取得モジュールの実行を起動する起動モジュールとを含む。
【０１１０】
例えばターゲットサービスの呼び出しが失敗したケースは、以下の応答のタイムアウト及びビジーターゲットサーバスレッドプールのうちの少なくとも１つを含む。
【０１１１】
例えば装置はさらに、メモリに格納された以下のモジュール（図４には示さない）、失敗データベースにおける失敗したサーバアドレスの各々に関してタイマーをそれぞれ設定するタイマーモジュールと、
タイマーが切れたとき、対応する失敗したサーバアドレスに対応する失敗回数の統計的な数字をゼロにリセットするゼロにリセットする、ゼロリセットモジュールとを含む場合もある。
【０１１２】
例えば失敗アドレス取得モジュール４１４は、  事前設定された時間内でクラスタ内でこれまで失敗したことのあるサーバの情報を取得するのに使用される失敗情報取得リクエストを生成する失敗リクエスト生成サブモジュールと、
失敗情報取得リクエストをリモートサーバに送り、該リモートサーバが、クラスタ内でこれまで失敗したことのある失敗したサーバのアドレス情報のレコードを記憶する失敗リクエスト送信サブモジュールと、
失敗情報取得リクエストに関してリモートサーバによって戻された失敗したサーバアドレスを受け取る失敗情報受信サブモジュールとを含むサブモジュール（図４には示さない）を含む場合もある。
【０１１３】
例えばアドレス選択モジュール４１８は、第２のサーバアドレスリストからターゲットサーバアドレスをランダムに選択するランダム選択サブモジュール（図示せず）を含む場合がある。
【０１１４】
図４に示される一例の装置実施形態は、上述した一例の方法実施形態に記載されるものと同様の動作または工程を実施するため、簡潔に記載されており、その関連する部分は、一例の方法実施形態の対応する一部における記載を参照する場合がある。
【０１１５】
本開示における各々の一例の実施形態は、進歩的なやり方で記載されており、他の一例の実施形態との違いを強調している。一例の実施形態の同一または同様の部分を互いに参照する場合もある。
【０１１６】
当業者は、本開示の実施形態が、方法、システムまたはコンピュータのプログラミング製品であり得ることを理解すべきである。したがって本開示は、ハードウェア、ソフトウェアまたはその両方の組み合わせによって実装されて良い。加えて本開示は、コンピュータ可読媒体（これに限定するものではないがディスク、ＣＤ−ＲＯＭ、光ディスクなどを含めた）に実装され得るコンピュータ実行可能命令を含む１つまたは複数のコンピュータプログラムの形態であって良い。
【０１１７】
標準的な構成において、本開示において記載されるようなサーバ、ターミナルまたは近接場デバイスなどのコンピューティングデバイスは、１つまたは複数の中央処理装置（ＣＰＵ）と、１つまたは複数の入／出力インターフェースと、１つまたは複数のネットワークインターフェースと、メモリとを含んで良い。メモリは、コンピュータ可読媒体において、例えば非永続的メモリ、ランダムアクセスメモリ（ＲＡＭ）及び／または読出し専用メモリ（ＲＯＭ）及びフラッシュランダムアクセスメモリ（フラッシュ  ＲＡＭ）などの不揮発性メモリを含む場合がある。メモリは、コンピュータ可読媒体の一例である。コンピュータ可読媒体には、情報の記憶を実施するのに何らかの方法または技術を利用し得る永続的及び比永続的、可搬式及び非可搬式媒体が含まれる。情報は、コンピュータ可読命令、データ構造、ソフトウェアモジュールまたは任意データであって良い。コンピュータ記憶媒体の例には、これに限定するものではないが相変化メモリ（ＰＣＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他のタイプのＲＡＭ、ＲＯＭ、電気的に消去可能なプログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、内部記憶装置、 ＣＤ-ＲＯＭ、ＤＶＤ、光メモリ、磁気テープ、磁気ディスク、任意の他の磁気記憶装置、またはコンピューティングデバイスによってアクセス可能な情報を記憶することができる任意の他の非通信媒体が含まれて良い。本明細書で定義されるように、コンピュータ可読媒体は、変調されたデータ信号及び搬送波などの一次的な媒体は含まない。
【０１１８】
本開示が、本開示の実施形態の方法、デバイス（システム）及びコンピュータプログラムのフローチャート及び／またはブロック図を参照することによって記載される。フローチャート及び／またはブロック図の各々のフロー及び／またはブロック及び／またはその組み合わせは、コンピュータ実行可能命令によって実施され得ることを理解されたい。このようなコンピュータ実行可能命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサまたは機械を生成する他のプログラマブルデータプロセッサに対して提供することができるため、コンピュータまたは他のプログラマブルデータプロセッサによって動作する命令を通してフローチャートの１つまたは複数のフローならびに／もしくはブロック図の１つまたは複数のブロックを実施するデバイスを生成することができる。
【０１１９】
コンピュータ実行可能命令はまた、コンピュータまたは他のプログラマブルデータプロセッサに特定の方法で動作するように命令することで、コンピュータ可読記憶装置に記憶される命令が命令デバイスを含む製品を生成する他のコンピュータ可読媒体に記憶される場合もあり、この命令デバイスが、フローチャートの１つまたは複数のフローならびに／もしくはブロック図の１つまたは複数のブロックにおいて特有の機能を果たす。
【０１２０】
コンピュータ実行可能命令はまた、コンピュータまたは他のプログラマブルデータプロセッサにロードされることで、コンピュータまたは他のプログラマブルデータプロセッサが一連の動作ステップを行うことでコンピュータによって実施されるプロセスを生成する場合もある。したがってコンピュータまたは他のプログラマブルデータプロセッサにおいて行われる命令は、フローチャートの１つまたは複数のフローならびに／もしくはブロック図の１つまたは複数のブロックにおいて特有の機能を果たすためのステップを提供することができる。
【０１２１】
本開示の一例の実施形態を記載してきたが、当業者は、基本的な本発明の概念を習得すれば、これらの一例の実施形態に対して追加の代替形態及び修正形態を作成することができる。したがって添付の特許請求の範囲は、この一例の実施形態を含むように説明されることが意図されており、全ての代替形態及び修正形態は、本開示の実施形態の範囲内にある。
【０１２２】
最後に、この論説において、第１及び第２などの用語は、要素や動作を別の要素や動作と区別するためにのみ使用されており、そのような実際の関係や順番がこれらの要素または動作において存在することは必ずしも要求しない、またはそれを示唆するものではないことにさらに留意されたい。さらに用語「ｃｏｍｐｒｉｓｅ」、「ｉｎｃｌｕｄｅ」またはそれらの任意の他の変形は、非排他的な包含を網羅することが意図されており、そのため一連の必須要素を有するプロセス、方法、オブジェクトまたは端末装置は、これらの必須要素のみ有するのではなく、明白に列記されない他の必須要素も有する、あるいはプロセス、方法、オブジェクトまたは端末装置に固有の必須要素もさらに有する。より限定するのではなく、「ｃｏｍｐｒｉｓｉｎｇ  ａ．．．」という言い回しによって定義される必須要素は、この必須要素を有するプロセス、方法、オブジェクトまたは端末装置において他の同一の必須要素をさらに含むことを排除するものではない。
【０１２３】
上記の記載は、本開示によって提供される分散環境におけるサービスアドレッシング方法及びサービスアドレッシング装置の詳細な紹介を提供する。本開示は、本開示の原理及び実施を図示するための一例の実施例を適用する。上記の一例の実施形態は、本開示の方法及びその中心概念の理解を助けるために例示されており、一方では、当業者は、本開示の概念に従って、詳細な実施及び適用される範囲の変更を行うこともできる。よって本明細書の記載は、本開示の対する限定として理解されるべきではない。
【図１】
0006700266.tif 000002
【図２】
0006700266.tif 000003
【図３】
0006700266.tif 000004
【図４】
0006700266.tif 000005