(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-25
(45)【発行日】2022-03-07
(54)【発明の名称】サービス間通信のエンドポイント抽象化
(51)【国際特許分類】
G06F 9/54 20060101AFI20220228BHJP
H04L 45/00 20220101ALI20220228BHJP
【FI】
G06F9/54 E
H04L45/00
(21)【出願番号】P 2019545279
(86)(22)【出願日】2017-12-28
(86)【国際出願番号】 US2017068781
(87)【国際公開番号】W WO2018151797
(87)【国際公開日】2018-08-23
【審査請求日】2020-12-15
(32)【優先日】2017-02-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】303059369
【氏名又は名称】ホーム ボックス オフィス, インコーポレイテッド
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100103034
【氏名又は名称】野河 信久
(74)【代理人】
【識別番号】100179062
【氏名又は名称】井上 正
(74)【代理人】
【識別番号】100199565
【氏名又は名称】飯野 茂
(74)【代理人】
【識別番号】100153051
【氏名又は名称】河野 直樹
(74)【代理人】
【識別番号】100162570
【氏名又は名称】金子 早苗
(72)【発明者】
【氏名】ブラッドショー、デクスター・ポール
(72)【発明者】
【氏名】ステイマージョン、ジェフリー
(72)【発明者】
【氏名】ゼン、ジンジャン
【審査官】漆原 孝治
(56)【参考文献】
【文献】国際公開第2014/098185(WO,A1)
【文献】米国特許出願公開第2009/0328054(US,A1)
【文献】特表2006-523905(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/54
H04L 45/00
(57)【特許請求の範囲】
【請求項1】
方法であって、
サブスクライバサービスとプロキシサーバを有するサブスクライバサーバにおいて、 第1サービス要求をサブスクライバサービスから前記プロキシサーバに送信することと、前記サービス要求はパブリッシャサービスに対応するアイデンティティ情報に関連付けられており、
前記第1サービス要求を前記パブリッシャサービスに通信することと、前記通信することは、前記プロキシサーバを介して通信することを含み、前記プロキシサーバは、前記パブリッシャサービスと通信するためにネットワーク通信データを含む可変構成データを使用し、
前記パブリッシャサービスから前記第1サービス要求に対する第1応答を受信することと、
前記ネットワーク通信データへの変更を示す情報を取得することと、
前記ネットワーク通信データへの前記変更を示す前記情報に基づいて、前記可変構成データを更新構成データに更新することと、
第2サービス要求をサブスクライバサービスから前記プロキシサーバに送信することと、前記サービス要求は前記パブリッシャサービスに対応するアイデンティティ情報に関連付けられており、
前記第2サービス要求を前記パブリッシャサービスに通信することと、前記通信することは、前記プロキシサーバを介して通信することを含み、前記プロキシサーバは、前記パブリッシャサービスと通信するために前記更新構成データを使用し、
前記パブリッシャサービスからの前記第2サービス要求に対する第2応答を受信すること、
とを具備する方法。
【請求項2】
前記第2サービス要求を前記パブリッシャサービスに通信することは、前記サブスクライバサービスのコードを変更することなく行われ、ここにおいて、前記プロキシサーバは前記パブリッシャサービスと通信するために、前記更新構成データを使用する、請求項1に記載の方法。
【請求項3】
前記ネットワーク通信データへの変更を示す前記情報を取得することは、通信ポリシー、通信方法、プロトコル、又は実装に対応する変更データを受信することを含む、請求項1に記載の方法。
【請求項4】
前記ネットワーク通信データへの変更を示す前記情報を取得することは、ネットワーク状態データの変更に対応する変更データを受信することを含む、請求項1に記載の方法。
【請求項5】
前記第1サービス要求を前記パブリッシャサービスに通信することは、ミドルウェアを介して通信することをさらに含む、請求項1に記載の方法。
【請求項6】
前記ネットワーク通信データへの変更を示す前記情報を取得することは、ミドルウェアの動作若しくは実装の変更、又はミドルウェアの動作及び実装の変更に対応する変更データを受信することを含む、請求項5に記載の方法。
【請求項7】
ネットワーク状態データの変化を検出すること、及び、前記変化の検出に基づいて、前記ミドルウェアの動作若しくは実装、又はその両方を変更することをさらに含む、請求項6に記載の方法。
【請求項8】
リポジトリから前記ミドルウェアの動作若しくは実装、又はその両方を制御することと、及び、前記リポジトリにおいて前記ネットワーク通信データへの変更を示す前記情報を提供することをさらに含む、請求項6に記載の方法。
【請求項9】
システムであって、
パブリッシャサービスに結合されたリポジトリと、
登録されたパブリッシャサービス及び前記登録されたパブリッシャサービス各々
と通信するために使用する通信データを含む、前記リポジトリの情報を保持するデータストアと、
前記リポジトリに結合された状態検出ロジッ
ク、前記状態検出ロジックは、状態変化の検出に基づいて少なくとも1つのパブリッシャサービスが使用する
前記通信データを変更し、
と、
サブスクライバサービスに結合された前記リポジト
リ、監視のため
にサブスクライバサービスが前記リポジトリに登録し
たパブリッシャサービスの
前記通信データへの変更に従って、情報を前記サブスクライバサービスに通信することを含む、
と、
を具備する
システム。
【請求項10】
パブリッシャサービスの
前記通信データへの前記変更は、プロトコル、永続キューイング、一度だけの通信、少なくとも一度の通信、リモートプロシージャコール通信、同期/非同期イベントメッセージング、ライトウェイトメッセージ指向ミドルウェア、メッセージバッチ処理、メッセージキャッシュ、サブスクライバとパブリッシャ間のケイパビリティベース認証と承認、トランザクション通信、又はセキュリティプロトコルの少なくとも1つへの変更を含む、請求項9に記載のシステム。
【請求項11】
前記サブスクライバサービスは、前記パブリッシャサービスの
前記通信データへの前記変更が前記リポジトリを介して通信されるまで、
前記通信データの第1セットを使用し、前記パブリッシャサービスの
前記通信データへの前記変更が前記リポジトリを介して通信された後は、
前記通信データの第2セットを使用するように構成される、請求項9に記載のシステム。
【請求項12】
前記状態検出ロジックは、パブリッシャサービスを介して前記リポジトリに結合される、請求項9に記載のシステム。
【請求項13】
前記状態検出ロジックは、ミドルウェアを介して前記リポジトリに結合される、請求項9に記載のシステム。
【請求項14】
前記サブスクライバサービスは、前記パブリッシャサービスの
前記通信データへの前記変更が前記リポジトリを介して通信されるまで、第1パブリッシャサービスとして、前記パブリッシャサービスと通信するために
前記通信データの第1セットを使用し、前記第1パブリッシャサービスの前記通信データへの前記変更が前記リポジトリを介して通信された後は、第2の異なるパブリッシャサービスを使用するように構成される、請求項9に記載のシステム。
【請求項15】
実行時にステップを実行する機械実行可能命令を有する1又は複数の機械可読記憶媒体であって、
プロキシサーバを介して、サブスクライバサービスとパブリッシャサービスとの間でサービスリクエストの第1セットと対応する応答を通信することと、前記通信することは、前記プロキシサーバにおいて、前記パブリッシャサービスと通信するためにネットワーク通信データの第1セットを使用することを含み、
前記ネットワーク通信データの第1セットへの変更に基づいて、前記ネットワーク通信データの第1セットを更新ネットワーク通信データに更新することと、
前記プロキシサーバを介してサブスクライバサービスと前記パブリッシャサービス間でサービスリクエストの第2セットと対応する応答を通信することと、を備え、前記通信することは、前記プロキシサーバにおいて、前記パブリッシャサービスと通信するために前記更新ネットワーク通信データを使用することを含む、
1又は複数の機械可読記憶媒体。
【請求項16】
前記ネットワーク通信データの第1セットへの前記変更につい
てデータストアを監視することを含むさらなる命令を有する、請求項15に記載の1又は複数の機械可読記憶媒体。
【請求項17】
前記ネットワーク通信データの第1セットへの変更に基づいて、前記ネットワーク通信データの第1セットを更新ネットワーク通信データに更新することは、前記サブスクライバサービスのコードを変更せず、通信プロトコル、永続キューイング、一度だけの通信、少なくとも一度の通信、リモートプロシージャコール通信、同期/非同期イベントメッセージング、ライトウェイトメッセージ指向ミドルウェア、メッセージバッチ処理、メッセージキャッシュ、サブスクライバとパブリッシャ間のケイパビリティベース認証と承認、トランザクション通信、又はセキュリティプロトコルの少なくとも1つを更新することを含む、請求項15に記載の1又は複数の機械可読記憶媒体。
【請求項18】
前記パブリッシャサービスにサービスリクエストの前記第1セットを通信することは、ミドルウェアを介して通信することをさらに含む、請求項15に記載の1又は複数の機械可読記憶媒体。
【請求項19】
前記ネットワーク通信データの第1セットへの変更に基づいて、前記ネットワーク通信データの第1セットを更新ネットワーク通信データに更新することは、ミドルウェアの動作の変更に基づいて更新することを含む、請求項18に記載の1又は複数の機械可読記憶媒体。
【請求項20】
前記ネットワーク通信データの第1セットへの変更に基づいて、前記ネットワーク通信データの第1セットを更新ネットワーク通信データに更新することは、前記パブリッシャサービスによる変更に基づいて更新することを含む、請求項15に記載の1又は複数の機械可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[0001] 分散コンピューティングシステムでは、サブスクライバサービスは、パブリッシャサービスと呼ばれる別のサービスの使用を欲するサービス/ネットワークアプリケーションを含み、サブスクライバサービスが望むいくつかの機能をエクスポートする。大規模な分散システムでのサービスディスカバリは、一般に、サブスクライビングサービスを公開サービスの正しいバージョンにマッチングさせることを目的としている。
【背景技術】
【0002】
[0002] マッチングされると、同時期の(contemporary)サブスクライバサービスとパブリッシャサービスは静的な方法で通信する。サービス通信ポリシー、メソッド、及び/又は実装(例えば、バージョン)の変更等、通信関連の変更が必要な場合は、サブスクライバサービス及び/又はパブリッシャサービスコードについてのコード変更が必要である。
【発明の概要】
【0003】
[0003] 本概要では、以下の詳細な説明でさらに説明される代表的な概念の内容を簡略化された形で説明する。本概要は、請求された(claimed)主題の主要な特徴又は本質的な特徴を特定することを意図しておらず、請求された主題の範囲を制限するいかなる方法での使用を意図していない。
【0004】
[0004] 簡潔に言えば、ここで説明する技術の1又は複数の態様は、動的な通信変更を可能にするパブリッシャサービス及びサブスクライバサービス通信で使用される抽象化及びデータモデルを対象とする。1又は複数の態様は、プロキシサーバを介してサブスクライバサービスとパブリッシャサービスとの間でサービス要求の第1セットとその応答を通信することを含み、プロキシサーバにおいて、ネットワーク通信データの第1セットを使用してパブリッシャサービスと通信することを含む。ネットワーク通信データの第1セットに対する変更に基づいて、ネットワーク通信データの第1セットは更新ネットワーク通信データに更新される。サービス要求の第2のセットとその応答は、プロキシサーバを介してサブスクライバサービスとパブリッシャサービス間で通信され、プロキシサーバにおいて、更新ネットワーク通信データを使用してパブリッシャサービスと通信する。
【0005】
[0005] 他の利点は、図面と併せて以下の詳細な説明において理解され得る。
【0006】
[0006] ここで説明する技術は、例として示されており、添付の図面に限定されない。図面では、同様の参照番号は同様の要素を示す。
【図面の簡単な説明】
【0007】
[0007]
【
図1】
図1は、1又は複数の実装例による、再構成可能なデータへの変更に基づいて通信が変更され(modified)得るパブリッシャサービス/サブスクライバサービス環境の例示的なブロック図である。 [0008]
【
図2】
図2は、1又は複数の実装例による、パブリッシャサービスと通信するための可変構成データを使用するサブスクライバサービスの例示的なブロック図である。 [0009]
【
図3】
図3は、1又は複数の実装例による、新たなパブリッシャサービスが異なる通信関連データを有する場合を含めて、依然として作動中である場合に、サブスクライバサービスが、パブリッシャサービスを変更する方法の例示的なブロック図である。 [0010]
【
図4】
図4は、1又は複数の実装例による、サブスクライバサーバの通信を動的に変更するために、ネットワーク状態の変化に対応するような、状態検出を使用する方法の例示的なブロック図である。 [0011]
【
図5】
図5は、1又は複数の実装例による、パブリッシャサービスが異なる通信関連データを有する場合を含めて、依然として作動中である場合に、パブリッシャサービスが、通信データを変更する方法の例示的なブロック図である。 [0012]
【
図6】
図6は、1又は複数の実装例による、ミドルウェアが存在する場合を含めて、ネットワーク通信を動的に変更するために、ネットワーク状態の変化に対応するような、状態検出を使用する方法の例示的なブロック図である。 [0013]
【
図7A】
図7Aは、1又は複数の実装例による、状態変化が検出されたときにキーバリューストアを介して通信パラメータを変更するために実行され得る例示的なステップを示すフロー図である。 [0014]
【
図7B】
図7Bは、1又は複数の実装例による、ネットワーク状態の変化が発生したときにキーバリューストアを介して通信パラメータを変更するために実行され得る例示的なステップを示すフロー図である。 [0015]
【
図8】
図8は、1又は複数の実装例による、通信データを変更するためにサブスクライバサービスのサイドキックプロセスによって実行され得る例示的なステップを示すフロー図である。 [0016]
【
図9】
図9は、ここで説明される主題の態様が組み込まれ得るコンピューティング環境例を表すブロック図である。
【発明を実施するための形態】
【0008】
[0017] ここで説明する技術の様々な態様は、一般に、サブスクライバサービスとパブリッシャサービスとの間の通信に使用される通信メカニズム及びポリシーを抽象化することに向けられている。この抽象化により、パブリッシャサービスとのサブスクライバサービス通信は、サブスクライバ及び/又はパブリッシャサービスコードを通信ポリシー、パラメータ、プロトコル、及び実装に関連させることなく、抽象化された名前で行うことができる。サブスクライバは、ターゲットパブリッシャと通信するための「方法」及び/又は最適な「方法」ではなく、「どのような(what)」サービスを欲するかを問い合わせることで、パブリッシャのサービスを要求できる。これは、基礎となる動的に構成されたデータ(本出願の譲受人に譲渡され、その全体が参照により本明細書に組み込まれる米国特許出願第15/291,816号に記載されている)及びエンドポイント抽象化の実装に委ねられる。
【0009】
[0018] 抽象化により、ネットワーク及び/又は通信エンティティを最適化することを含め、通信パラメータ及び/又はネットワークへの変更を透過的及び/又は動的に行うことがさらに可能となる。例えば、基礎となるネットワーク通信ポリシーと、キャッシュやバッチ処理等の最適化は、サブスクライバサービスコード又はパブリッシャサービスコードを変更せずに変更され得る。同様に、永続キューイング等の通信メカニズムは、事実上任意の基準に従って、永続キューのサイズを確立するだけでなく、選択的にオン又はオフにされ得る。
【0010】
[0019] 前述の米国特許出願第15/291,816号に記載され、一般的に基づく、1又は複数の実装において、構成ファイルに保持されているパラメータデータは、(静的構成を介してコールを行う代わりに)パブリッシャサービスへのサブスクライバサービスのコールを行うために使用される。このような可変パラメータデータを使用した結果、サブスクライバサービスの観点から、パブリッシャサービスは、サブスクライバサービスコードがサービス要求を行う名称(アイデンティティ)に抽象化されたエンドポイントになる。その結果、サブスクライバサービスコードは、基礎となる通信データや、通信に必要な他のポリシー、プロトコル、又は実装を知る必要がない。このようにして、通信パラメータデータとパブリッシャサービス、及び他のネットワークエンティティ(ミドルウェア、キャッシュ等)に対して透過的な変更を行うことができ、その結果サブスクライバサービスのコードを変更することなく、通信(ポリシーや他の操作等)が変更される。
【0011】
[0020] (前述の米国特許出願第15/291,816号に記載されているように)サブスクライバサーバは、動的に構成可能な通信パラメータを使用してサブスクライバサービスに代わって通信するプロキシサーバで構成される。動的構成ファイルデータを使用すると、表1に記載されているものを含め、クライアントに対して透過的なポリシー、メソッド、実装を含む「ネットワーク通信データ」が使用できる。
【表1】
【0012】
[0021] 例えば、パブリッシャサービスに関連する状態変化を検出し(おそらくネットワーク状態変化のようなものの検出に応答して、パブリッシャサービスによってなされた変化であり得る)、状態変化がリポジトリに示されている場合、サブスクライバサービスによって使用される構成情報は、状態変化に基づいて、変更された構成情報に動的かつリアルタイムで変更され得る。変更された構成情報は、プロキシサーバとパブリッシャサービス間の通信に使用され、パブリッシャサービスのコード又はサブスクライバサービスのコードの変更を伴わず変更が行われる。
【0013】
[0022] 同様に、パブリッシャ、サブスクライバ、ミドルウェア、及び/又は、リポジトリのエンティティによって検出されるかどうかにかかわらず、高遅延条件等のネットワーク状態変化が検出され得る。これが発生した時、例えば、パブリッシャサービスとサブスクライバサービスの通信を高速化するために、メッセージキャッシュがオンにされてもよい。
【0014】
[0023] 本明細書の例はいずれも非限定的である。例えば、いくつかの例では、ある特徴とケイパビリティを備えたプロキシサーバとサイドキックプロセスを参照している。ただし、ここで説明する技術は、コンポーネントの特定の構成に依存せず、特注(custom-written)コンポーネントを含む、適切なコンポーネント又はコンポーネントのセットを使用できる。従って、ここで説明される実施形態、態様、概念、構造、機能、又は例のいずれも非限定的であり、本技術は、データ通信及びデータ処理において一般的に利益及び利点を提供する様々な方法で使用され得る。
【0015】
[0024]
図1の実装例に一般的に表されるように、例示されたパブリッシャサーバ102(1)~102(n)は各々、パブリッシャサービス104(1)~104(n)として示される、いくつかのサービス機能をエクスポートするパブリッシャサービスをそれぞれ含む。典型的なシナリオでは、数千のパブリッシャサービス(及び数千のサブスクライバサービス)が存在する場合がある。サービスは早期に失敗する可能性があり、一時的、揮発性、及び/又は動的であり得る。サーバ及び/又はサービスは、同じ仮想マシン及び/又は物理マシンで共有テナント化(co-tenanted)してもよい。ここで、プロセス、スレッド、コルーチン、コンテナ等が存在しうるため、仮想マシンは配備(deployment)の最小単位である場合とそうでない場合がある。サービスの複数のバージョンの複数のインスタンスは、同時に実行され得る。配備されたサービスへの地域間アクセス及びマルチデータセンタが存在し得る。1又は複数の実装において、ワークロードのピークに対応する自動スケーリングをサポートするための迅速な配備と、サービスインスタンス間の統合ロードバランシングが利用可能である。
【0016】
[0025] ここで説明されるように、パブリッシャサーバ102(1)~102(n)の各々は、パブリッシャサイドキックプロセス106(1)~106(n)として示される、パブリッシャサイドキックプロセスとして実行するパブリッシャサービスレジストレーションコンポーネントをそれぞれ含む。パブリッシャサイドキックプロセス106(1)~106(n)の各々は、ヘルスチェック関連操作等の他の操作を実行するとともに、リポジトリ108へのサービス登録を提供する。
【0017】
[0026] 一般に、リポジトリ108は、パブリッシャサービスの登録を維持するデータベース110を含む高可用性の分散リポジトリである。ここで説明されるように、リポジトリ108は、更に、登録されたパブリッシャサービス104(1)~104(n)に関連する変更について監視され得るキーバリューストア112(又は複数のキーバリューストア)を含むサービスレジストリを含むか又は結合される。1又は複数の実装において、リポジトリは、従来理解されているようなデータベースではなく、その代わりにキーバリューストア112を含む。いくつかのリポジトリは、データの整理に階層ファイルシステムを使用するが、他のリポジトリは、アイテムへのディレクトリパスをキーとして格納することにより、フラットキーバリューストアで階層をシミュレートしてもよい。
【0018】
[0027] データベース108及び/又はキーバリューストア112は、パブリッシャサイドキックプロセス106(1)~106(n)によって更新され得る。データベース110及び/又はキーバリューストア112を含むリポジトリ108は、管理者、自動化プロセス等の外部構成ソース114によって構成/更新/実装されてもよい。リポジトリ108を更新する別の方法は、待ち時間等を含む現在のネットワーク状態データ等の状態情報115を用いるものである。当然のことながら、任意の状態データを使用して、時刻、強化されたセキュリティ運用状態等を含む、任意のパブリッシャ又はパブリッシャのグループが任意のサブスクライバ又はサブスクライバのグループと通信する方法を変更し得る。
【0019】
[0028]
図1は、サブスクライバサービスプロセス118、サブスクライバサイドキックプロセス120、及びプロキシサーバ122を含むサブスクライバサーバ116を示す。ここで説明するように、サブスクライバサービスプロセス118は、
図1にパブリッシャサービス104(1)として例示される、発見されたパブリッシャサービスと通信するために構成ファイル124(及び/又はプロキシサーバ122によるメモリ内アクセスを含む他の適切なデータ構造)を使用する、プロキシサーバ122を通じてサービスコールを行う。複数のプロキシサーバ及び/又は複数の構成ファイルが存在し得る。
【0020】
[0029] ここで説明される技術は、サービスパブリッシャが他のサービスへのサブスクライバになること、及びその逆を可能にする。これにより、例えばサービスAがサービスBを呼び出し、サービスBがサービスCを呼び出し、サービスCがサービスDを呼び出すといった、サービス間コールの連鎖が可能となる。
【0021】
[0030]
図1に例示される環境におけるサービスディスカバリは、一般に、最新の分散アーキテクチャのサービスディスカバリパターンに従い得る。しかし、例えば、パブリッシャケーパビリティをサブスクライバにより望ましいものに一致させるために、パブリッシャサイドキックプロセス(例えば、106(1))は強化型汎用サービス登録を提供し、サブスクライバサイドキックプロセス120は、強化型サービスディスカバリを提供し得る。パブリッシャサイドキックプロセス(例えば、106(1))及びサブスクライバサイドキックプロセス120は、ヘルスチェックにも携わる。それにより、一般に、システムから不健全な、及び/又は通信しないパブリッシャサービスを削除する。リポジトリ108は、アプリケーションの帯域外でのサービスディスカバリを処理する。サービスディスカバリコンポーネントは、周知のポートでマシン上でローカルに実行される。サービスディスカバリは、ディスカバリサービスパブリッシャバインディングを見つけることを要せず抽象化される。
【0022】
[0031]
図2の実装例に一般的に表されるように、一旦、発見され通信されると、操作中、サブスクライバサービスは、発見されたパブリッシャサービスのアイデンティティ(名称)に向けられた要求を提供する。プロキシサーバ222は、適切な構成データ224を使用して、パブリッシャにサービスコールしを行う。(サービスコールの例には、/whoareyou、/version、/trouble、/clearSkies、/setDelay?ms = ...、/shutdown...等のリクエストが含まれる。)このようにして、サブスクライバサービス218は、パブリッシャサービスのアイデンティティ以外の情報を必要としない。
【0023】
[0032]
図2は、例えば、それぞれが関連する構成データのセットを有するといった、複数のプロキシサーバを有するケーパビリティを示す。例えば、同じパブリッシャサービスの複数のインスタンスのために、2つ以上のプロキシサーバが同じ構成データのセットを共有することが可能である。また、例えば、アイデンティティ1に関連付けられた要求は構成データセット1を使用し、アイデンティティ2に関連付けられた要求は構成データセット2を使用するというように、1つのプロキシサーバが、関連する構成データの複数のセットを有することも可能である。
【0024】
[0033] 一般に、サブスクライバサイドキックプロセスは、プロキシサーバによってアクセスされるメモリ等に構成データを書き込む。この方法では、動的な変更は許可されるが、変更が書き込まれているときに、プロキシサーバが一貫性のないデータを使用しないように、すべての変更はトランザクショナルである必要があり得る。
【0025】
[0034]
図3は、パブリッシャサーバ302(1)及びそのサービス304(1)がダウンしたとき(状態変化の一種である)、サブスクライバサービス318が重大な中断なく動作を継続できるという1つの状態を示す。この例では、サブスクライバサイドキックプロセス320がヘルスチェック処理に携わっており、パブリッシャサービスが失敗したことを認識、又は、例えばリポジトリを介してその失敗が通知されたとする。この場合、サブスクライバサイドキックプロセスは、例えば、パブリッシャサービス304(2)とパブリッシャサーバ304(1)といった、代替パブリッシャサービスに対し、問い合わせをする。
【0026】
[0035] 例えば、パブリッシャサービス304(2)が異なるバージョンであるか、異なるプロトコルを使用するか、又は表1に記載された他の通信パラメータを実質的に使用するとする。サブスクライバサービス318がパブリッシャサービス304(2)の通信パラメータを使用できる場合、構成データ324が更新され、要求が代替パブリッシャサーバに送信される。サブスクライバコードに組み込まれた簡単な変更である、アイデンティティのみの変更でもよく、又は、サブスクライバサーバ316内のエンティティを介してアイデンティティを再マッピングしてもよい。例えば、プロキシサーバは、特に逆の指示がない限り、NAME2をNAME1要求に代用するように指示されてもよい。
【0027】
[0036] このようにして、異なる通信パラメータを有する完全に新しいパブリッシャサービスが、(再マッピングにより同じ結果とならない限り、おそらく名称変更をサブスクライバサービスに通知する以外に)サブスクライバサービスコードへの変更なしに透過的に使用され得る。しかし、すべてのパブリッシャサービスを使用できるわけではない。例えば、パブリッシャサービスが1回だけの通信セマンティクスを有し、サブスクライバサービスが少なくとも1回の通信が必要とする場合、サブスクライバサイドキックプロセスはそのパブリッシャを代替として選択しない。
【0028】
[0037]
図4は、サブスクライバコードへの変更がされず、異なる通信データが使用される結果となる変更の別の例を示している。
図4の例では、高遅延状態等のネットワーク状態が変更されたとする。ルール/変更ロジック440は、この状態で1又は複数のキーバリューエントリを書き込むか又は更新してもよい。例えば、あるパブリッシャエンティティは、キャッシュ及び/又はバッチ処理を有効にして、高遅延に対処し得る。その場合、そのようなパブリッシャは、この1又は複数の変更を行うよう通知され得る。あるいは、キャッシュ及び/又はバッチ処理を使用する新しいパブリッシャが、少なくともいくつかのサブスクライバのために他のパブリッシャサービスの置換を開始してもよい。
【0029】
[0038]
図5に示すように、パブリッシャサービス504は、少なくともいくつかの可変構成データ525を有してもよく、プロキシサーバ507を使用してもよい。別の方法としては、そのような変更を容易にするためにパブリッシャサービスコードを作成することであるが、コードではなくデータを変更することには既知の利点があり、データ駆動型の動作と挙動が知られている。
【0030】
[0039] ある変更は、サブスクライバサービス構成データに反映される必要はない。例えば、パブリッシャサービスがキャッシュを有効にしているかどうかは、サブスクライバサービスとは無関係であり得る。しかし、基本的に、パブリッシャへのそのような変更はそのパブリッシャサービスの失敗であると考え、サブスクライバサイドキックプロセスは、変更について知ることを必要としてもよく、変更を許可しないことを選択してもよい。例えば、特定のサブスクライバサービスシナリオでは古いデータが受け入れられない等の理由で、サブスクライバサービスがキャッシュを許可できない場合、そのサブスクライバサービスはパブリッシャをキャッシュで使用できない。従って、サブスクライバサイドキックプロセスは、キャッシュを使用しないか、又はキャッシュをバイパスできるパブリッシャサービスを要求し、キャッシュを使用するように変更されたすべてのパブリッシャサービスからサブスクライバサービスを分離する必要がある。さらに別の方法としては、サブスクライバサービスがキャッシュを許可できるが、サブスクライバサービスが制御する一定の時間フレーム内でキャッシュを更新するようパブリッシャサービスに指示すること、及び/又は返されたキャッシュデータに有効期限のタイムスタンプを提供する必要があり、それにより、サブスクライバサービスはデータを使用できるかどうかを決定できる。
【0031】
[0040]
図6は、ネットワークの変更により、サブスクライバとパブリッシャの動作が変更される可能性のある別のシナリオを示す。この例では、ミドルウェア660はサブスクライバサーバ616とパブリッシャサーバ602の間に存在する。ネットワーク状態データ又は、場合によっては手動の再構成等を使用して、キャッシュ662を使用するかどうか等、ミドルウェア660の動作を変更できる。さらに、サブスクライバサーバ616(及び場合によってはパブリッシャサーバ602のパブリッシャサービス)はそのような変更について知る必要があり得るため、情報はキーバリューストア112に書き込まれてもよい。ミドルウェアは何らかの方法でリポジトリに通知する必要がある。別の方法としては、リポジトリはミドルウェアの動作の制御を行ってもよい。例えば、状態変化により、リポジトリがミドルウェアでキャッシュをオンにするとともに、サイドキックモニタリング等を介してサブスクライバ(又はパブリッシャ)に変更を通知する。
【0032】
[0041] ミドルウェア660及びその利用可能な機能は、単一のソフトウェアコンポーネントに限定されない。その代わりに、複数のミドルウェア実装オプションが存在してもよく、図示されているミドルウェア660は、通信挙動の変更に関与する可能性がある任意の数のライブラリ及び/又はサービスを含んでもよい。このようなオプションから選択することは、サブスクライバ又はパブリッシャの実装に依存しないが、選択は構成データを介して明示されるポリシー選択である。
【0033】
[0042]
図7Aは、検出された状態変化に対応する変更を行うためにパブリッシャ又はリポジトリによって行われ得る例示的なステップを示している。
図7Aにおいて、ステップ702で状態変化が検出される。ステップ704で、状態変化をキーバリューストアに書き込む必要があるとルール等が決定した場合、ステップ706で適切な変化情報を書き込む。従って、例えば、(サブスクライバからの要求であり得る検出されたなんらかの状態変化又はその他の状態変化を介して)パブリッシャがトランザクションメッセージング(transactional messaging)をオンにしたい場合、ステップ706はこの変化をキーバリューストアに書き込み、それによって、このパブリッシャサービスの任意のサブスクライバは通知を受け、適切なアクションを実行してもよい。ステップ704では、状態変化を無視できる。例えば、パブリッシャ又はリポジトリは、ネットワークの待ち時間が長いが、アクションを実行するのに十分なほど長くないことを示す状態変化を受け取り得る。
【0034】
[0043]
図7Bは、例えばミドルウェア又はパブリッシャによって要求された、ネットワーク構成の変更に対応する変更を行うためにリポジトリによって実行され得る例示的なステップを示す。例えば、
図6のミドルウェア660が上記のようにキャッシュをオンにする等、ネットワーク構成になんらかの変更を加えることを要求したとする。ステップ712は、この変更が許可されているかどうかを判断し、許可されている場合、関連する1又は複数のレコードにおいてキーバリューストアを変更して、それらのレコードの変更を監視するために登録されたリスナー(サブスクライバ及び/又はパブリッシャ)を更新する。ステップ716は、関連する1又は複数のネットワークエンティティにネットワーク変更を行うよう指示する。
【0035】
[0044]
図8は、パブリッシャインスタンスが発見されるステップ802から始まる、サブスクライバサイドキックプロセスによって取られ得る例示的なステップを示すフロー図である。ステップ804は、パブリッシャサービスインスタンスに関連する構成データの変更を監視するために登録することを表す。ステップ806は、プロキシサーバにインスタンスの使用を開始するよう指示すること、例えば、インスタンスを負荷分散ローテーションに追加することを表す。
【0036】
[0045] ステップ808は、サブスクライバのシャットダウンを検出することを表す。これが発生した場合、ステップ820で監視をキャンセルしてもよい。
【0037】
[0046] ステップ810は、1又は複数の実装において、リポジトリからの(ステップ810からの「分岐/ループ」ではなく)イベント/通知である変更通知の評価を表す。変更が発生した場合、ステップ812は、変更データの取得を表す(これは、別個の読み取り動作であってもよく、通知の一部として含まれてもよい)。
【0038】
[0047] ステップ814で評価されるように、変更が許可されるものである場合、ステップ816は構成変更を行い、プロキシサーバ/ロードバランサはここで説明されるように使用を開始する。そうでない場合、サブスクライバはパブリッシャの使用を停止し(ステップ818)、ステップ820でこのパブリッシャの監視をキャンセルする。
<コンピューティングデバイスの例>
【0039】
[0048] ここで説明される技術は、プログラム及びプロセスを実行することができる任意のデバイス又はデバイス(マシン)のセットに適用することができる。従って、物理マシン及び/又は仮想マシン、パーソナルコンピュータ、ラップトップ、ハンドヘルド、ポータブル、その他のコンピューティングデバイスを含むサーバ、及び携帯電話、タブレット/スレートコンピュータ、ゲーム/エンターテイメントコンソール等を含む様々種類のコンピューティングオブジェクトが、ここに例示されるものを含む様々な実装に関連して使用され得る。従って、
図9を参照して以下に説明する汎用コンピューティングメカニズムは、コンピューティングデバイスの一例にすぎない。
【0040】
[0049] 実装は、デバイス又はオブジェクトのサービスの開発者が使用するために、オペレーティングシステムを介して部分的に実装でき、及び/又はここで説明する様々な実装の1又は複数の機能的態様を実行するために動作するアプリケーションソフトウェア内に含めることができる。ソフトウェアは、クライアントワークステーション、サーバ又は他のデバイス等の1又は複数のコンピュータによって実行されるプログラムモジュール等のコンピュータ実行可能命令の一般的なコンテキストで記述してもよい。当業者は、コンピュータシステムがデータを通信するために使用できる様々な構成及びプロトコルを有し、そのため、特定の構成又はプロトコルに限定されないことを理解するであろう。
【0041】
[0050] 従って、
図9は、ここで説明する実装の1又は複数の態様を実装できる適切なコンピューティングシステム環境900の例を示しているが、上述のように、コンピューティングシステム環境900は適切なコンピューティング環境の一例に過ぎず、使用又は機能の範囲に関する制限を意図していない。さらに、コンピューティングシステム環境900は、例示的なコンピューティングシステム環境900に示されているコンポーネントのいずれか1つ又は組み合わせに関連する依存性を有すると解釈されることを意図していない。
【0042】
[0051]
図9を参照すると、1又は複数の実装を実現するための例示的なデバイスは、コンピュータ910の形態の汎用コンピューティングデバイスを含む。コンピュータ910のコンポーネントは、処理ユニット920、システムメモリ930、及びシステムメモリを含む様々なシステムコンポーネントを処理ユニット920に結合するシステムバス922が含まれるが、これらに限定されない。
【0043】
[0052] コンピュータ910は、通常、様々なマシン(例えば、コンピュータ)可読媒体を含み、コンピュータ910等のマシンによってアクセスできる任意の利用可能な媒体であってもよい。システムメモリ930は、読み取り専用メモリ(ROM)及び/又はランダムアクセスメモリ(RAM)等の揮発性及び/又は不揮発性メモリ、及びハードドライブ媒体、光学記憶媒体、フラッシュ媒体等の形態のコンピュータ記憶媒体を含んでもよい。限定ではなく例示として、システムメモリ930は、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、及びプログラムデータを含んでもよい。
【0044】
[0053] ユーザは、1又は複数の入力デバイス940を介してコマンド及び情報をコンピュータ910に入力することができる。モニタ又は他のタイプのディスプレイデバイスも、出力インタフェース950等のインタフェースを介してシステムバス922に接続される。モニタに加えて、コンピュータには、出力インタフェース950を介して接続できるスピーカーやプリンター等の他の周辺出力デバイスを含めることもできる。
【0045】
[0054] コンピュータ910は、リモートコンピュータ970等の1又は複数の他のリモートコンピュータへの論理接続(logical connections)を使用して、ネットワーク環境又は分散環境で動作することができる。リモートコンピュータ970は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス又は他の一般的なネットワークノード、又は他の任意のリモートメディアコンサンプションデバイス又は送信デバイスであってもよく、コンピュータ910に対して上記の要素のいずれか又はすべてを含んでもよい。
図9に示される論理接続は、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)等のネットワーク972を含むが、他のネットワーク/バスを含んでもよい。このようなネットワーク環境は、家庭、オフィス、企業全体のコンピュータネットワーク、イントラネット、及びインターネットにおいて一般的である。
【0046】
[0055] 上述のように、様々なコンピューティングデバイス及びネットワークアーキテクチャに関連して実装例を説明したが、基礎となる概念は、そのような技術を実装することが望ましいネットワークシステム及びコンピューティングデバイス又はシステムに適用できる。
【0047】
[0056] また、例えば、適切なAPI、ツールキット、ドライバコード、オペレーティングシステム、制御、スタンドアロン又はダウンロード可能なソフトウェアオブジェクト等の同一又は類似の機能を実装する複数の方法があり、それらは、アプリケーション及びサービスについて、ここで示された技術の利点を利用可能にする。従って、ここに記載された実装は、API(又は他のソフトウェアオブジェクト)の観点から、及び、ここに記載された1又は複数の実装を実装するソフトウェア又はハードウェアオブジェクトの観点から検討される。従って、ここで説明する様々な実装は、全体がソフトウェアであるだけでなく、全体がハードウェア、一部がハードウェア、一部がソフトウェアの態様が可能である。
【0048】
[0057] 「例」という語は、ここでは、例、事例、又は例示の意味で使用される。念のため、ここで開示される主題は、そのような例によって限定されない。また、ここで「例」として説明される態様又は設計は、必ずしも他の態様又は設計よりも好ましい又は有利であると解釈されるものではなく、当業者に知られている同等の例示的な構造及び技術を除外することを意味しない。さらに、「含む(includes)」、「有する(has)」、「含む(contains)」等の用語が使用される限り、疑義を避けるために、そのような用語は、請求項で使用される場合、追加要素又は他の要素を排除することなく、オープンな移行語として使用される「具備する(comprising)」という用語と同様の方法で包括的であることを意図している。
【0049】
[0058] 上述のように、本明細書で説明される様々な技術は、ハードウェア又はソフトウェア、又は適切な場合には両方の組み合わせに関連して実装され得る。ここで使用される「コンポーネント」、「モジュール」、「システム」等の用語は、同様に、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、又は実行中のソフトウェアのいずれかのコンピュータ関連エンティティを指すことを意図している。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び/又はコンピュータであり得るが、これらに限定されない。例として、コンピュータ上で実行されているアプリケーションとコンピュータの両方がコンポーネントになり得る。1又は複数のコンポーネントがプロセス及び/又は実行スレッド内に存在し、コンポーネントは1つのコンピュータにローカライズされ、及び/又は2つ以上のコンピュータ間で分散され得る。
【0050】
[0059] 前述のシステムは、いくつかのコンポーネント間の相互作用に関して説明された。そのようなシステム及びコンポーネントは、これらのコンポーネント又は指定されたサブコンポーネント、指定されたコンポーネント又はサブコンポーネントの一部、及び/又は追加のコンポーネントを、前述の様々な順列及び組み合わせに従って含むことができる。サブコンポーネントは、親コンポーネント(階層)に含まれるのではなく、他のコンポーネントと通信可能に結合されたコンポーネントとして実装することもできる。さらに、1又は複数のコンポーネントを組み合わせて、集約機能を提供する単一コンポーネントに統合し、又は、いくつかの個別のサブコンポーネントに分割してもよく、統合された機能を提供するために、管理レイヤー等の任意の1又は複数の中間層を提供し、通信可能にサブコンポーネントに結合してもよい。ここに記載される任意のコンポーネントは、ここには具体的に記載されていないが当業者に一般的に知られているような1又は複数の他のコンポーネントとも相互作用し得る。
【0051】
[0060] ここで説明される例示的なシステムを考慮して、説明された主題に従って実装され得る方法は、様々な図のフローチャート/フロー図を参照して理解できる。説明の簡略化のため、方法は一連のブロックとして示され説明されているが、いくつかのブロックは、ここで示され、説明されているものとは異なる順序で及び/又は他のブロックと同時に発生し得るため、様々な実装がブロックの順序によって制限されないことが理解できる。フローチャート/フロー図を介して非順次、又は分岐フローが示されている場合、同一又は類似の結果を達成する様々な他の分岐、フローパス、及びブロックの順序を実装できることが理解できる。さらに、いくつかの図示されたブロックは、ここで説明された方法を実装するにあたってのオプションである。
<結論>
【0052】
[0061] 本発明は、様々な修正及び代替構成が可能であるが、その特定の例示的な実装が図面に示されており、上記で詳細に説明されてきた。しかし、本発明を開示された特定の形態に限定する意図はなく、本発明の精神及び範囲内にあるすべての修正、代替構造、及び等価物を網羅する。
【0053】
[0062] ここで説明する様々な実装に加えて、それらを逸脱しない範囲において、対応する実装の同一又は同等の機能を実行するために、他の同様の実装を使用することができ、又は説明した実装に修正及び追加を行うことができる。さらに、複数の処理チップ又は複数のデバイスは、ここで説明される1又は複数の機能の性能を共有することができ、同様に、記憶装置は複数のデバイスに渡って実行され得る。従って、本発明は、単一の実装に限定されるものではなく、添付の特許請求の範囲による領域、精神、及び範囲で解釈される。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
方法であって、
サブスクライバサービスとプロキシサーバを有するサブスクライバサーバにおいて、 第1サービス要求をサブスクライバサービスから前記プロキシサーバに送信することと、前記サービス要求はパブリッシャサービスに対応するアイデンティティ情報に関連付けられており、
前記第1サービス要求を前記パブリッシャサービスに通信することと、前記通信することは、前記プロキシサーバを介して通信することを含み、前記プロキシサーバは、前記パブリッシャサービスと通信するためにネットワーク通信データを含む可変構成データを使用し、
前記パブリッシャサービスから前記第1サービス要求に対する第1応答を受信することと、
前記ネットワーク通信データへの変更を示す情報を取得することと、
前記ネットワーク通信データへの前記変更を示す前記情報に基づいて、前記可変構成データを更新構成データに更新することと、
第2サービス要求をサブスクライバサービスから前記プロキシサーバに送信することと、前記サービス要求は前記パブリッシャサービスに対応するアイデンティティ情報に関連付けられており、
前記第2サービス要求を前記パブリッシャサービスに通信することと、前記通信することは、前記プロキシサーバを介して通信することを含み、前記プロキシサーバは、前記パブリッシャサービスと通信するために前記更新構成データを使用し、
前記パブリッシャサービスからの前記第2サービス要求に対する第2応答を受信すること、
とを具備する方法。
[C2]
前記第2サービス要求を前記パブリッシャサービスに通信することは、前記サブスクライバサービスのコードを変更することなく行われ、ここにおいて、前記プロキシサーバは前記パブリッシャサービスと通信するために、前記更新構成データを使用する、C1に記載の方法。
[C3]
前記ネットワーク通信データへの変更を示す前記情報を取得することは、通信ポリシー、通信方法、プロトコル、又は実装に対応する変更データを受信することを含む、C1に記載の方法。
[C4]
前記ネットワーク通信データへの変更を示す前記情報を取得することは、ネットワーク状態データの変更に対応する変更データを受信することを含む、C1に記載の方法。
[C5]
前記第1サービス要求を前記パブリッシャサービスに通信することは、ミドルウェアを介して通信することをさらに含む、C1に記載の方法。
[C6]
前記ネットワーク通信データへの変更を示す前記情報を取得することは、ミドルウェアの動作若しくは実装の変更、又はミドルウェアの動作及び実装の変更に対応する変更データを受信することを含む、C5に記載の方法。
[C7]
ネットワーク状態データの変化を検出すること、及び、前記変化の検出に基づいて、前記ミドルウェアの動作若しくは実装、又はその両方を変更することをさらに含む、C6に記載の方法。
[C8]
リポジトリから前記ミドルウェアの動作若しくは実装、又はその両方を制御することと、及び、前記リポジトリにおいて前記ネットワーク通信データへの変更を示す前記情報を提供することをさらに含む、C6に記載の方法。
[C9]
システムであって、
パブリッシャサービスに結合されたリポジトリと、
登録されたパブリッシャサービス及び前記登録されたパブリッシャサービス各々の通信データを含む、前記リポジトリの情報を保持するデータストアと、
前記リポジトリに結合された状態検出ロジックと、前記状態検出ロジックは、状態変化の検出に基づいて少なくとも1つのパブリッシャサービスが使用する通信データを変更し、
サブスクライバサービスに結合された前記リポジトリとを具備し、監視のためサブスクライバサービスが前記リポジトリに登録した、パブリッシャサービスの通信データへの変更に従って、情報を前記サブスクライバサービスに通信することを含む、
システム。
[C10]
パブリッシャサービスの通信データへの前記変更は、プロトコル、永続キューイング、一度だけの通信、少なくとも一度の通信、リモートプロシージャコール通信、同期/非同期イベントメッセージング、ライトウェイトメッセージ指向ミドルウェア、メッセージバッチ処理、メッセージキャッシュ、サブスクライバとパブリッシャ間のケイパビリティベース認証と承認、トランザクション通信、又はセキュリティプロトコルの少なくとも1つへの変更を含む、C9に記載のシステム。
[C11]
前記サブスクライバサービスは、前記パブリッシャサービスの通信データへの前記変更が前記リポジトリを介して通信されるまで、通信データの第1セットを使用し、前記パブリッシャサービスの通信データへの前記変更が前記リポジトリを介して通信された後は、通信データの第2セットを使用するように構成される、C9に記載のシステム。
[C12]
前記状態検出ロジックは、パブリッシャサービスを介して前記リポジトリに結合される、C9に記載のシステム。
[C13]
前記状態検出ロジックは、ミドルウェアを介して前記リポジトリに結合される、C9に記載のシステム。
[C14]
前記サブスクライバサービスは、前記パブリッシャサービスの通信データへの前記変更が前記リポジトリを介して通信されるまで、第1パブリッシャサービスとして、前記パブリッシャサービスと通信するために通信データの第1セットを使用し、前記第1パブリッシャサービスの前記通信データへの前記変更が前記リポジトリを介して通信された後は、第2の異なるパブリッシャサービスを使用するように構成される、C9に記載のシステム。
[C15]
実行時にステップを実行する機械実行可能命令を有する1又は複数の機械可読記憶媒体であって、
プロキシサーバを介して、サブスクライバサービスとパブリッシャサービスとの間でサービスリクエストの第1セットと対応する応答を通信することと、前記通信することは、前記プロキシサーバにおいて、前記パブリッシャサービスと通信するためにネットワーク通信データの第1セットを使用することを含み、
前記ネットワーク通信データの第1セットへの変更に基づいて、前記ネットワーク通信データの第1セットを更新ネットワーク通信データに更新することと、
前記プロキシサーバを介してサブスクライバサービスと前記パブリッシャサービス間でサービスリクエストの第2セットと対応する応答を通信することと、を備え、前記通信することは、前記プロキシサーバにおいて、前記パブリッシャサービスと通信するために前記更新ネットワーク通信データを使用することを含む、
1又は複数の機械可読記憶媒体。
[C16]
前記ネットワーク通信データの第1セットへの前記変更について前記データストアを監視することを含むさらなる命令を有する、C15に記載の1又は複数の機械可読記憶媒体。
[C17]
前記ネットワーク通信データの第1セットへの変更に基づいて、前記ネットワーク通信データの第1セットを更新ネットワーク通信データに更新することは、前記サブスクライバサービスのコードを変更せず、通信プロトコル、永続キューイング、一度だけの通信、少なくとも一度の通信、リモートプロシージャコール通信、同期/非同期イベントメッセージング、ライトウェイトメッセージ指向ミドルウェア、メッセージバッチ処理、メッセージキャッシュ、サブスクライバとパブリッシャ間のケイパビリティベース認証と承認、トランザクション通信、又はセキュリティプロトコルの少なくとも1つを更新することを含む、C15に記載の1又は複数の機械可読記憶媒体。
[C18]
前記パブリッシャサービスにサービスリクエストの前記第1セットを通信することは、ミドルウェアを介して通信することをさらに含む、C15に記載の1又は複数の機械可読記憶媒体。
[C19]
前記ネットワーク通信データの第1セットへの変更に基づいて、前記ネットワーク通信データの第1セットを更新ネットワーク通信データに更新することは、ミドルウェアの動作の変更に基づいて更新することを含む、C18に記載の1又は複数の機械可読記憶媒体。
[C20]
前記ネットワーク通信データの第1セットへの変更に基づいて、前記ネットワーク通信データの第1セットを更新ネットワーク通信データに更新することは、前記パブリッシャサービスによる変更に基づいて更新することを含む、C15に記載の1又は複数の機械可読記憶媒体。