(57)【要約】ネットワークリソース情報の識別及び調整のためのシステム及び方法が本明細書に開示される。実装において、システムは、コンピュータネットワークのネットワークリソースの属性に関するデータを第１のデータソースから受信することによってネットワークリソースの記録を更新するためのデータソースから受信されたリクエストを処理することと、ここで、ネットワークリソースは構成管理データベースの構成アイテムと関連付けられ、構成アイテムは第２のソースからの属性に関するデータを含み、第１のデータソースの優先度、第２のデータソースの優先度、及び第２のデータソースの老化期間に基づいて第１のデータソースが属性に対して権威があることを判定することと、データに基づいて属性を更新することによってリクエストを処理することとをするためのメモリ中に格納された命令を含む。【選択図】図４
2019518271.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータネットワークのリソースに関する記録を更新するためのシステムであって、
プロセッサと、
ネットワークインタフェースと、
メモリと、
前記コンピュータネットワークの前記リソースに関する前記記録を格納する構成管理データベース（ＣＭＤＢ）と
を含み、前記メモリは、
前記ネットワークインタフェースと通信する第１のデータソースから、前記コンピュータネットワークのリソースであって、前記ＣＭＤＢの記録と関連付けられた前記リソースに関するデータを受信することと、
前記リソースに対する第２のデータソースの優先度と比較した前記第１のデータソースの優先度に基づいて前記第１のデータソースが前記リソースに対して権威があることを判定することと、
前記第１のデータソースからの前記データに基づいて前記ＣＭＤＢ中の前記リソースと関連付けられた前記記録を更新することと
を前記プロセッサにさせるための前記プロセッサにより実行可能な命令を含む、
システム。
【請求項２】
前記コンピュータネットワークの前記リソースに関する前記データは前記リソースの属性に関するデータを含む、請求項１に記載のシステム。
【請求項３】
前記メモリは、前記リソースの前記属性に対する前記第２のデータソースの優先度と比較した前記第１のデータソースの優先度に基づいて、前記第１のデータソースが前記リソースの前記属性に対して権威があることを判定することを前記プロセッサにさせるための前記プロセッサにより実行可能な命令を含む、請求項２に記載のシステム。
【請求項４】
前記メモリは、
前記ネットワークインタフェースと通信する前記第２のデータソースから前記コンピュータネットワークの前記リソースに関するデータを受信することと、
前記ＣＭＤＢ中の前記リソースと関連付けられた前記記録が前記第１のデータソースからの前記データに基づいて最後に更新されてからの期間に対する閾値を前記第１のデータソースが越えたことに基づいて前記第２のデータソースが前記リソースに対して権威があることを判定することと、
前記第２のデータソースからの前記データに基づいて前記ＣＭＤＢ中の前記リソースと関連付けられた前記記録を更新することと
を前記プロセッサにさせるための前記プロセッサにより実行可能な命令を含む、請求項１に記載のシステム。
【請求項５】
コンピュータネットワークのリソースに関するデータをデータソースから受信し、前記リソースが構成管理データベース（ＣＭＤＢ）中に格納された記録に関することを判定するように構成された識別モジュールと、
１つ以上のその他のデータソースと比較して前記データソースが前記リソースに対して権威がある場合に前記ＣＭＤＢ中に格納された前記記録を更新するように構成された調整モジュールと
を含むアプリケーションプログラミングインタフェース（ＡＰＩ）を１つ以上のハードウェアプロセッサに実装させるように構成された命令を含む非一時的有形のコンピュータ可読媒体。
【請求項６】
前記識別モジュールは、
前記データソースからの前記データの少なくとも一部に基づいて前記リソースの１つ以上の属性を識別するための１つ以上の識別規則を使用するように構成された識別エンジンと、
前記識別エンジンによる検索のための前記リソースに関する前記ＣＭＤＢからの前記記録を格納するように構成されたＣＭＤＢキャッシュと、
前記識別エンジンによる検索のための前記１つ以上の識別規則に関するデータを格納するように構成されたメタデータキャッシュと
を含む、請求項５に記載の媒体。
【請求項７】
前記調整モジュールは、
前記１つ以上のその他のデータソースと比較して前記データソースが前記リソースに対して権威があるか否かを判定するために使用される１つ以上の調整規則に少なくとも部分的に基づいて前記ＣＭＤＢ中に格納された前記記録を更新するための前記識別モジュールからのリクエストを処理するように構成された調整エンジンと、
前記１つ以上のその他のデータソースと比較して前記データソースが前記リソースに対して権威があるか否かを判定することに使用するための前記調整エンジンによる検索のために前記コンピュータネットワークのリソースへの権威があるデータソースのマッピングに関するデータを格納するように構成された権威マッピングストアと
を含む、請求項５に記載の媒体。
【請求項８】
前記１つ以上の識別規則は、前記リソースをユニークに識別する属性を特定する１つ以上の識別エントリを含む、請求項６に記載の媒体。
【請求項９】
前記１つ以上の識別規則は、前記コンピュータネットワークの独立リソースを識別するための１つ以上の識別規則と、前記コンピュータネットワークの従属リソースを識別するための１つ以上の識別規則とを含む、請求項６に記載の媒体。
【請求項１０】
前記１つ以上の識別規則は、前記コンピュータネットワークのリソースの構成階層に関する収容規則と、前記コンピュータネットワークのホスティングするリソース及びホスティングされるリソースの有効な組み合わせに関するホスティング規則とを含む、請求項６に記載の媒体。
【請求項１１】
前記１つ以上の調整規則は、前記リソース又は前記リソースの属性をどのデータソースが更新し得るかを特定する１つ以上の調整規則を含む、請求項７に記載の媒体。
【請求項１２】
前記１つ以上の調整規則は、前記リソースに関する前記記録の前記データソースの最後の更新の期間に関し、且つ前記データソースが前記期間の少なくとも一部に基づいて権威があるか否かに関する１つ以上の調整規則を含む、請求項７に記載の媒体。
【請求項１３】
コンピュータネットワークのリソースに関する記録を更新するための方法であって、
前記コンピュータネットワークのリソースであって、構成管理データベース（ＣＭＤＢ）中に格納された記録と関連付けられた前記リソースに関するデータを第１のデータソースから受信することと、
前記リソースに対する第２のデータソースの優先度と比較した前記第１のデータソースの優先度に基づいて前記第１のデータソースが前記リソースに対して権威があることを判定することと、
前記第１のデータソースからの前記データに基づいて前記ＣＭＤＢ中の前記リソースと関連付けられた前記記録を更新することと
を含む、方法。
【請求項１４】
前記コンピュータネットワークの前記リソースに関する前記データは、前記リソースの属性に関するデータを含む、請求項１３に記載の方法。
【請求項１５】
前記リソースの前記属性に対する前記第２のデータソースの優先度と比較した前記第１のデータソースの優先度に基づいて前記第１のデータソースが前記リソースの前記属性に対して権威があることを判定することを含む、請求項１４に記載の方法。
【請求項１６】
前記第２のデータソースから前記コンピュータネットワークの前記リソースに関するデータを受信することと、
前記ＣＭＤＢ中の前記リソースと関連付けられた前記記録が前記第１のデータソースからの前記データに基づいて最後に更新されてからの期間に対する閾値を前記第１のデータソースが越えたことに基づいて前記第２のデータソースが前記リソースに対して権威があることを判定することと、
前記第２のデータソースからの前記データに基づいて前記ＣＭＤＢ中の前記リソースと関連付けられた前記記録を更新することと
を含む、請求項１３に記載の方法。
【請求項１７】
構成管理データベース（ＣＭＤＢ）中に格納された記録を更新するための方法であって、
コンピュータネットワークのリソースに関するデータをデータソースから受信することと、
前記ＣＭＤＢ中に格納された前記記録に前記リソースが関することを判定することと、
１つ以上のその他のデータソースと比較して前記データソースが前記リソースに対して権威がある場合に前記ＣＭＤＢ中に格納された前記記録を更新することと
を含む、方法。
【請求項１８】
前記データソースからの前記データの少なくとも一部に基づいて前記リソースの１つ以上の属性を識別するための１つ以上の識別規則を使用することと、
前記ＣＭＤＢからの前記記録をＣＭＤＢキャッシュ中に格納することと、
前記１つ以上の識別規則に関するデータをメタデータキャッシュ中に格納することと
を含む、請求項１７に記載の方法。
【請求項１９】
前記１つ以上のその他のデータソースと比較して前記データソースが前記リソースに対して権威があるか否かを判定するために使用される１つ以上の調整規則に少なくとも部分的に基づいて前記ＣＭＤＢ中に格納された前記記録を更新するためのリクエストを処理することと、
前記１つ以上のその他のデータソースと比較して前記データソースが前記リソースに対して権威があるか否かを判定することに使用するために前記コンピュータネットワークのリソースへの権威があるデータソースのマッピングに関するデータを格納することと
を含む、請求項１７に記載の方法。
【請求項２０】
前記１つ以上の識別規則は、前記リソースをユニークに識別する属性を特定する１つ以上の識別エントリを含む、請求項１８に記載の方法。
【請求項２１】
前記１つ以上の識別規則は、前記コンピュータネットワークの独立リソースを識別するための１つ以上の識別規則と、前記コンピュータネットワークの従属リソースを識別するための１つ以上の識別規則とを含む、請求項１８に記載の方法。
【請求項２２】
前記１つ以上の識別規則は、前記コンピュータネットワークのリソースの構成階層に関する収容規則と、前記コンピュータネットワークのホスティングするリソース及びホスティングされるリソースの有効な組み合わせに関するホスティング規則とを含む、請求項１８に記載の方法。
【請求項２３】
前記１つ以上の調整規則は、前記リソース又は前記リソースの属性をどのデータソースが更新し得るかを特定する１つ以上の調整規則を含む、請求項１９に記載の方法。
【請求項２４】
前記１つ以上の調整規則は、前記リソースに関する前記記録の前記データソースの最後の更新の期間に関し、且つ前記データソースが前記期間の少なくとも一部に基づいて権威があるか否かに関する１つ以上の調整規則を含む、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１６年４月２６日出願の米国仮特許出願番号６２／３２７,５０８の優先権を主張し、その全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、概して、ネットワークリソース情報の識別及び調整のための技術及びデバイスに関する。
【背景技術】
【０００３】
ネットワークの発見は、ネットワーク上に存在するデバイスについてのデータを収集することを含み得る。各デバイスは、デバイスを完全に記述するための膨大なデータを必要とし得、更なる情報を発見する前にある一定の情報の発見が必要であり得、多段の発見プロセスをなすことが要望される。ネットワーク、ネットワーク内のデバイス、及びデバイス間の関係性に関する情報は、構成管理データベース（ＣＭＤＢ）中に格納され得、デバイス、ソフトウェア、及び関係性のデータを含む記録は、本明細書では構成アイテム（ＣＩ）と定義される。
【発明の概要】
【０００４】
ネットワークリソース情報の識別及び調整のためのシステム及び方法の実装が本明細書に開示される。
【０００５】
実装において、システムは、ネットワークリソースの記録を更新するための、データソースから受信されたリクエストを処理するために提供される。システムは、プロセッサ、ネットワークインタフェース、メモリ、及びコンピュータネットワークのネットワークリソースを表す構成アイテムを含む構成管理データベースを含み、ここで、メモリは、ネットワークインタフェースと通信する第１のデータソースからコンピュータネットワークのネットワークリソースの属性に関するデータを受信し、ここで、該ネットワークリソースは、構成管理データベースの構成アイテムであって、第２のソースからの属性に関するデータを含む構成アイテムと関連付けられ、第１のデータソースの優先度、第２のデータソースの優先度、及び第２のデータソースの老化（staleness）期間に基づいて第１のデータソースが属性に対して権威があることを判定し、該データに基づいて属性を更新することによってリクエストを処理するための、プロセッサにより実行可能な命令を含む。
【０００６】
実装において、システムは、ネットワークリソースの記録を更新するための、データソースから受信されたリクエストを処理するために提供される。システムは、プロセッサ、ネットワークインタフェース、メモリ、及びコンピュータネットワークのネットワークリソースを表す構成アイテムを含む構成管理データベースを含み、ここで、メモリは、構成管理データベースの構成アイテムにコミットするためのデータを含む第１の更新リクエストをネットワークインタフェースと通信するデータソースから受信し、該第１の更新リクエストと関連付けられた構成管理データベースの構成アイテムのグラフを識別し、ここで、該グラフは、独立構成アイテムを含み、独立構成アイテムをロックし、ここで、該ロックは、第２の更新リクエストがグラフの１つ以上の構成アイテムに関して処理されることを防止し、グラフの識別と独立構成アイテムのロックとの間の時間間隔内で独立構成アイテムの状態が変化しなかったという条件でグラフの構成情報にデータをコミットするための、プロセッサにより実行可能な命令を含む。
【０００７】
本開示のこれら及びその他の実装が、以下の詳細な記述、添付の請求項、及び添付の図面において開示される。
【０００８】
本明細書の記述は、幾つかの図面を通じて同様の参照番号が同様の部分を指す添付の図面を参照してなされる。
【図面の簡単な説明】
【０００９】
【図１】分散又はクラウドコンピューティングシステムのブロック図である。
【図２】図１に示したようなコンピューティングシステムのコンピューティングデバイス等のコンピューティングデバイスの内部構成の実装のブロック図である。
【図３】高可用性処理システムの実装のブロック図である。
【図４】ネットワークリソース情報の識別及び調整のためのシステムの実装の図である。
【図５】ネットワークリソースの識別の実装に使用されるソフトウェアコンポーネントのブロック図である。
【図６】ネットワークリソースの調整の実装に使用されるソフトウェアコンポーネントのブロック図である。
【図７】ネットワークリソースの識別及び調整の実装に使用される同時実行制御の図である。
【図８】ネットワークリソースの識別のための方法の実装のフローチャートである。
【図９】ネットワークリソースの調整のための方法の実装のフローチャートである。
【発明を実施するための形態】
【００１０】
ネットワークリソースを示すデータは、（例えば、ＣＩ記録の生成又は更新により）ＣＭＤＢ等のデータベース内に追加される前に識別され得る。例えば、冗長性を防止し、矛盾を減らすためには、ＣＭＤＢ内に重複したＣＩ記録を含まないことが望ましいかもしれない。発見プロセス中にＣＩをユニークに識別する能力は、重複した記録のエントリを避けるために使用され得る。しかしながら、予め定義された単一の属性値に基づいてＣＩをユニークに識別できないことがあり得る。更に、ＣＩ記録に関して更新リクエストが受信されるデータソースを監視することが望ましいことがある。例えば、特定のＣＩ属性についての情報は、その内の１つが他よりもより信頼性がある多数のソースから受信されるかもしれない。受信されたデータのどれがＣＩ属性に対して権威があるかを判定のためのシステムなしでは、ＣＩ記録中に格納された情報は、信頼性が少ないソースからの情報で更新されるかもしれない。したがって、実装において、より高くランク付けされたソースから受信されたデータが、より低くランク付けされたソースから受信されたデータと比較して権威があるとみなされ得るように、ＣＩ属性に対するデータのソースはランク付けされ得る。実装において、後で受信されたデータと比較して権威があるとみなされたＣＩ記録中の情報は、（例えば、後に受信されたデータがより低くランク付けされたソースからのものである場合には）更新されないであろう。しかしながら、例えば、データソースがオフラインにされているため、ＣＩ記録を更新するために権威あるデータソースがもはや使用されず又は利用可能でない場合、基礎をなす属性が実際に変化する場合であってもＣＩ記録は不都合に更新されないことがある。
【００１１】
本開示の実装は、ＣＩ記録への及びＣＩ記録に対するネットワークリソース情報の識別及び調整のためのシステム及び方法を記述する。実装において、識別規則は、例えば、データの重複を防止するために、リソースに対する記録がコンピュータネットワークのデータソース内に格納されているか否かを判定するために使用され得る。データソースは、例えば、識別動作の手動の評価を排除するために、ＣＭＤＢ内にＣＩ記録を示すデータを格納するために最近最も使用されていない（least-recently-used）ポリシーにより管理されたキャッシュであり得る。実装において、調整規則は、その他のデータソースと比較した優先度、及びリソースを更新するための最後のリクエストがデータソースから受信されてからの期間に基づいて、コンピュータネットワークのリソース（例えば、ＣＭＤＢ内のＣＩ記録又はＣＩ記録の属性）を更新するためのリクエストのデータソースがリソースに対して権威があるか否かを判定するために使用され得る。
【００１２】
実装において、リソースは、基盤リソース（例えば、スイッチ、ルータ、サーバ、モデム、プロセッサ、入出力インタフェース、メモリ又はストレージ、電源、生体リーダ、媒体リーダ等のハードウェアコンポーネント）及び／又は適用リソース（例えば、プラットフォームアプリケーション、モジュール、ルーチン、ファームウェアプロセス、及び基盤リソースにより又は基盤リソースに接続して実行可能なその他の命令等のソフトウェアコンポーネント）を称し得る。リソースは、文書、モデル、計画、ソケット、仮想マシン等のコンピューティング機構をも称し得る。実装において、リソースは、該当する場合は、前述したものの物理的及び／又は仮想的実装を称し得る。本開示は、時には、例えば、リソースの幾つかの使用に対する“基盤リソース”又は“適用リソース”に特に言及するが、開示は“リソース”に単に言及するにすぎず、内容が特に示さない限り、前述のタイプのリソースの何れかを称し得る。
【００１３】
幾つかの実装をより詳細に記述するために、本開示の実装に使用可能なハードウェア構造及び相互接続の例がまず言及される。図１は、分散又はクラウドコンピューティングシステム１００のブロック図である。本明細書中の句“クラウドコンピューティングシステム”の使用は、任意の形式の分散コンピューティングシステムの代用であり、この句は、単に言及を容易にするために使用される。クラウドコンピューティングシステム１００は、顧客１１０を含む任意の数の顧客を有し得る。各顧客１１０は、クライアント１１２等のクライアントを有し得る。クライアント１１２の各々は、多数のコンピューティングデバイスを含むコンピューティングシステムの形式、又は例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、及びデスクトップコンピュータ等の単一のコンピューティングデバイスの形式であり得る。顧客１１０及びクライアント１１２は例示にすぎず、クラウドコンピューティングシステムは、異なる数の顧客又はクライアントを有し得、又は異なる構成の顧客又はクライアントを有し得る。例えば、数百又は数千の顧客があり得、各顧客は任意の数のクライアントを有し得る。
【００１４】
クラウドコンピューティングシステム１００は、データセンタ１２０を含む任意の数のデータセンタを含み得る。各データセンタ１２０は、サーバ１２２等のサーバを有し得る。各データセンタ１２０は、サーバが設置される異なる地理的位置中の設備を表し得る。サーバ１２２の各々は、多数のコンピューティングデバイスを含むコンピューティングシステムの形式、又は例えば、デスクトップコンピュータ、サーバコンピュータ、及び仮想マシン等の単一のコンピューティングデバイスの形式であり得る。データセンタ１２０及びサーバ１２２は例示にすぎず、クラウドコンピューティングシステムは、異なる数のデータセンタ及びサーバを有し得、又は異なる構成のデータセンタ及びサーバを有し得る。例えば、数十のデータセンタがあり得、各データセンタは数百又は任意の数のサーバを有し得る。
【００１５】
クライアント１１２及びサーバ１２２はネットワーク１３０に接続するように構成され得る。特定の顧客に対するクライアントは、共通の接続ポイント１１６、又は異なる接続ポイント、例えば無線接続ポイント１１８及び有線接続ポイント１１９を介してネットワーク１３０に接続し得る。共通の又は異なる接続ポイントの任意の組み合わせが存在し得、有線及び無線の接続ポイントの任意の組み合わせも存在し得る。ネットワーク１３０は、例えばインターネットであり得る。ネットワーク１３０はまた、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、又は任意のクライアント１１２及びサーバ１２２間でデータを転送するその他の任意の手段であり得、又はそれらを含み得る。ネットワーク１３０、データセンタ１２０、及び／又は図示されないブロックは、ルータ、スイッチ、ロードバランサ及び／又はその他のネットワークデバイス等のネットワークハードウェアを含み得る。
【００１６】
クラウドコンピューティングシステム１００のその他の実装も可能である。例えば、図示されるクライアント及びサーバ以外のデバイスがシステム１００に含まれ得る。実装では、１つ以上の付加的なサーバは、クラウド基盤のサーバ及び／又はクライアントが監視され、制御され、及び／又は構成されるクラウド基盤制御として動作し得る。例えば、本明細書に記述される技術の幾つか又は全ては、そうしたクラウド基盤制御サーバ上で動作し得る。代替的に、又は付加的に、本明細書に記述される技術の幾つか又は全ては、サーバ１２２等のサーバ上で動作し得る。
【００１７】
図２は、図１に示したようなコンピューティングシステム１００のクライアント１１２又はサーバデバイス１２２等のコンピューティングデバイス２００の内部構成の実装のブロック図であり、コンピューティングシステムの基盤制御サーバを含む。前述したように、クライアント１１２又はサーバ１２２は、多数のコンピューティングユニットを含むコンピューティングシステムの形式、又は単一のコンピューティングユニット、例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータ、及びサーバコンピュータ等の形式をとり得る。
【００１８】
コンピューティングデバイス２００は、図２に説明したように、複数のコンポーネントを含み得る。ＣＰＵ（又はプロセッサ）２０２は、マイクロプロセッサ等の中央処理装置であり得、単一の又は多数のプロセシングコアを各々有する単一の又は多数のプロセッサを含み得る。或いは、ＣＰＵ２０２は、既存の又は今後開発される情報を操作又は処理可能な別のタイプのデバイス又は多数のデバイスを含み得る。多数の処理デバイスが存在する場合、それらは、無線でのネットワーク化を含む、ハードワイヤード化又はネットワーク化を含む任意の方法で相互接続され得る。したがって、ＣＰＵ２０２の動作は、ローカルエリア若しくはその他のネットワークに渡って又は直接結合され得る多数のマシンに渡って分散され得る。ＣＰＵ２０２は、汎用プロセッサ又は専用プロセッサであり得る。
【００１９】
ランダムアクセスメモリ（ＲＡＭ）２０４は、メモリとして使用される任意の適切な一時的ストレージデバイスであり得る。ＲＡＭ２０４は、ＣＰＵ２０２によるアクセスのための実行可能命令及びデータを含み得る。ＲＡＭ２０４は、典型的には、ＤＤＲ  ＳＤＲＡＭ等の１つ以上のＤＲＡＭを含む。或いは、ＲＡＭ２０４は、既存の又は今後開発されるＣＰＵ２０２による処理のためのデータを格納可能な別のタイプのデバイス又は多数のデバイスを含み得る。ＣＰＵ２０２は、ＲＡＭ２０４中のデータをバス２１２を介してアクセス及び操作し得る。ＣＰＵ２０２は、データ及び命令についての動作のためのローカルな高速メモリの形式としてのキャッシュ２２０を利用し得る。
【００２０】
ストレージ２０６は、リードオンリーメモリ（ＲＯＭ）、ディスクドライブ、ソリッドステートドライブ、フラッシュメモリ、相変化メモリ（ＰＣＭ）、又はある継続期間、好ましくは電源喪失の場合にデータを維持するように設計された任意の形式の不揮発性メモリの形式であり得る。ストレージ２０６は、実行可能命令２０６Ａとアプリケーションファイル／データ２０６Ｂをその他のデータと共に含み得る。実行可能命令２０６Ａは、例えば、（ＲＡＭベースの実行可能命令２０４Ａ及びアプリケーションファイル／データ２０４Ｂと共に）ＲＡＭ２０４中に全体的又は部分的にロードするための、ＣＰＵ２０２により実行されるオペレーションシステム及び１つ以上のアプリケーションプログラムを含み得る。実行可能命令２０６Ａは、本明細書に記述される様々な機能を実行するように設計されたプログラム可能モジュール若しくはアルゴリズム、機能的プログラム、コード、及びコードセグメント中に組織化され得る。オペレーティングシステムは、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃ  ＯＳ  Ｘ（登録商標）、又はＬｉｎｕｘ（登録商標）オペレーティングシステムであり得、又は、スマートフォン若しくはタブレットデバイス等の小型のデバイス、又はメインフレームコンピュータ等の大型デバイス用のオペレーティングシステムであり得る。アプリケーションプログラムは、例えば、ウェブブラウザ、ウェブサーバ、及び／又はデータベースサーバを含み得る。アプリケーションファイル２０６Ｂは、例えば、ユーザファイル、データベースカタログ、及び構成情報を含み得る。実装では、ストレージ２０６は、本明細書に記述される発見技術を実行するための命令を含む。ストレージ２０６は、１つ又は多数のデバイスを含み得、ソリッドステート又は磁気等の１つ以上のタイプのストレージを利用し得る。
【００２１】
コンピューティングデバイス２００は、有線通信コンポーネント又は無線通信コンポーネント２９０を有し得るネットワーク通信ユニット２０８及びインタフェース２３０等の１つ以上の入出力デバイスをも含み得、それらはバス２１２を介してＣＰＵ２０２に結合され得る。ネットワーク通信ユニット２０８は、イーサネット又はＴＣＰ／ＩＰ等のデバイス間の通信を果たすための様々な標準ネットワークプロトコルの何れかを利用し得る。インタフェース２３０は、イーサネット、電力線通信（ＰＬＣ）、ＷｉＦｉ、赤外線、ＧＰＲＳ／ＧＳＭ、ＣＤＭＡ等を利用する１つ以上の送受信機を含み得る。
【００２２】
ユーザインタフェース２１０は、表示装置、（マウス、タッチパッド、又はタッチスクリーン等の）位置入力デバイス、キーボード、又はその他の形式のユーザ入出力デバイスを含み得る。ユーザインタフェース２１０は、バス２１２を介してプロセッサ２０２に結合され得る。ユーザがクライアント若しくはサーバをプログラムでき又は使用できるようにするその他の出力デバイスが表示装置２１０に加えて又は表示装置２１０に代えて提供され得る。出力デバイスが表示装置であるか又は表示装置を含む場合、表示装置は、ＯＬＥＤディスプレイ等、液晶ディスプレイ（ＬＣＤ）又は陰極線管（ＣＲＴ）若しくは発光ダイオード（ＬＥＤ）ディスプレイによることを含む様々な方法で実装され得る。
【００２３】
クライアント及びサーバ２００の内部構成又はアーキテクチャのその他の実装も可能である。例えば、サーバは表示装置２１０を省いてもよい。ＲＡＭ２０４又はストレージ２０６は、ネットワークベースのメモリ、又はクライアント若しくはサーバの動作を実行する多数のマシン中のメモリ等、多数のマシンに渡って分散され得る。単一のバスとしてここでは図示されるが、バス２１２は、様々なブリッジ、コントローラ、及び／又はアダプタを通じて相互に接続され得る多数のバスから構成され得る。コンピューティングデバイス２００は、デバイス２００自体又はデバイス２００の周辺環境を監視する任意の数のセンサ及び検出器を含み得、又はそれは、ＧＰＳ又はその他のタイプの位置デバイス等の位置識別ユニット２６０を含み得る。コンピューティングデバイス２００は、ユニットが自己充足の方法で動作し得るように、電池等の電源２７０をも含み得る。これらは、バス２１２を介してＣＰＵ／プロセッサ２０２と通信し得る。
【００２４】
図３は、高可用性処理システムの実装のブロック図である。説明される分散コンピューティングシステム３００は、例えば、図１のデータセンタ１２０及びネットワーク１３０の実装であり得る。広くは、システム３００は、ロードバランサ３０４Ａ〜３０４Ｂ及び２つのデータセンタ３０５、３１８を含む。ロードバランサ３０４Ａ〜３０４Ｂは、ネットワーク１３０により図示された電気通信ネットワークに結合される。ロードバランサ３０４Ａ〜３０４Ｂはリバースプロキシロードバランサをも含み得る。
【００２５】
データセンタ３０５はプライマリデータベース３１０を含み、データセンタ３１８はセカンダリデータベース３１６を含む。データセンタ３０５、３１８は、セカンダリデータベース３１６がプライマリデータベース３１０の正確な又は実質的に正確なミラーを提供し得るような方法で動作する。ライン３２０は、データセンタ３０５と３１８との間の論理的境界を図的に強調するために使用される。意図されたアプリケーションに応じて、データベース３１０、３１６は、例えば、リレーショナルデータベース管理システム（ＲＤＢＭＳ）、オブジェクトデータベース、ＸＭＬデータベース、又はフラットファイル等を使用して実装され得る。実装において、データセンタ３０５、３１８は、顧客のコンピュータネットワークのリソースにアクセスするためのクライアントリクエストを処理するための物理的ハードウェアサーバ（例えば、図１のデータセンタ１２０のサーバ１２２）上に実装されたウェブサーバ（例えば、Ａｐａｃｈｅインスタレーション）を含む。
【００２６】
実装に応じてより多数又はより少数であり得るが、各データセンタは、２つのアプリケーションノード３０６、３０８、３１２、３１４を含み得る。アプリケーションノードは、処理スレッド、仮想マシンインスタンス化、又は遠隔に位置するクライアントの代わりにプログラムを実行し、関連するデータをそうしたクライアントとネットワーク１３０を介して交換するデータセンタのその他のコンピューティング機構を使用して実装され得る。これらのプログラムの実行に関連して、データベース３１０及び３１６がこの役割を果たすと共に、データを格納及び検索するための機会がアプリケーションノードに対して生じる。実装において、アプリケーションノードの各々は、該アプリケーションノードと同じデータセンタに該データベースが設置されるか否かに関係なく、単一のプライマリデータベースに接続する。例えば、プライマリデータベースは読み出し／書き込みであり得、セカンダリデータベースは、プライマリデータベースからの変化をミラーリングするように読み出しのみであるように構成され得る。システム３００へのリクエストは、まず、プライマリデータベースのデータセンタ中のアプリケーションノードにルーティングされ得、その他のデータセンタが続く。フェイルオーバの状況では、（プライマリデータベースになる）セカンダリデータベースをミラーリングするために以前のプライマリデータベースが切り替えられると共に、セカンダリデータベースは読み出し／書き込みになり得る。この状況では、各アプリケーションノードは、破線により示されるようにセカンダリデータベース（現プライマリデータベース）を指し示すように構成され得る。実装において、プライマリデータベース３１０及び／又はセカンダリデータベース３１６は、データベースサーバカタログ、例えば、ＭｙＳＱＬカタログであり得る。
【００２７】
上述したように、各データベース３０５、３１８は、その自身のロードバランサ３０４Ａ〜３０４Ｂを有し得る。各ロードバランサは、そのデータセンタ内に設置された個別のサーバ及び処理ノードにトラフィックを向けるように構成され得る。プロキシサービスに関して、一実施形態では、ロードバランサ３０４Ａ〜３０４Ｂは、ネットワーク１３０を介した遠隔のクライアントへの単一のインターネット配信サービスを提供するように構成され、ここで、このサービスは、データセンタ３０５、３１８のコンピュータ化されたサーバから構成されるサーバファームにより現に提供される。コンポーネント３０４Ａ〜３０４Ｂはまた、遠隔のクライアントからデータセンタ３０５、３１８へのリクエストを調整し、データセンタの内部構成をマスキングすることによってクライアントアクセスを簡易化する。コンポーネント３０４Ａ〜３０４Ｂは、直接又はＤＮＳを介して構成されるようにクライアントを処理ノードへ向けることによってこれらの機能をサービスし得る。ロードバランサ３０４Ａ〜３０４Ｂはスティッキーセッション用に構成され得る。スティッキーセッションと共に、クライアントからのリクエストは、クライアントセッションの期間中、同じアプリケーションノード３０６、３０８へ転送され得る。
【００２８】
負荷分散に関して、コンポーネント３０４Ａ〜３０４Ｂは、フェイラーとして予め定義された多数の列挙された条件の内の１つをプライマリデータセンタ３０５が経験した場合にセカンダリデータセンタにトラフィックを向けるように構成され得る。コンポーネント３０４Ａ〜３０４Ｂの負荷分散機能は、別個のコンポーネントとして又は単一のコンポーネントとして提供され得る。
【００２９】
分散コンピューティングシステム３００は、マルチテナントな又はシングルテナントなアーキテクチャを使用してコンピュータネットワークのリソースを配分し得る。マルチテナントなアーキテクチャの下では、アプリケーション、データベース及び／又はその他のアプリケーションサーバのインスタレーション又はインスタンス化は、多数の顧客の間で共有され得る。例えば、ウェブサーバ（例えば、単一のＡｐａｃｈｅインスタレーション）、アプリケーションサーバ（例えば、単一のＪａｖａ仮想マシン）、及び／又は単一のデータベースサーバカタログ（例えば、単一のＭｙＳＱＬカタログ）は、多数の顧客からのリクエストを処理し得る。このアーキテクチャの実装において、アプリケーション及び／又はデータベースサーバソフトウェアは、システムを使用して様々な顧客のデータとその他の情報とを区別し得、分離し得る。
【００３０】
シングルテナントな基盤では、別個のウェブサーバ、アプリケーションサーバ、及び／又はデータベースサーバが顧客インスタンス毎に供給され得る。実装では、各顧客は、その専用のウェブサーバにアクセスし、その専用のアプリケーションサーバを使用して処理されたそのトランザクションを有し、その専用のデータベースサーバ及び又はカタログ中に格納されたそのデータを有するであろう。物理的ハードウェアサーバは、ウェブ、アプリケーション、及び／又はデータベースサーバの多数のインスタレーション又はインスタンス化が同じ物理的サーバ上にインストールされ得るように共有され得る。各インスタレーションは、ＲＡＭ、ストレージ、及びＣＰＵサイクル等の物理的サーバリソースのある一定部分に配分され得る。
【００３１】
実装において、顧客インスタンスは、多数のウェブサーバインスタンス、多数のアプリケーションサーバインスタンス、及び多数のデータベースサーバインスタンスを含む。サーバインスタンスは、異なる物理的サーバ上に設置され得、異なる物理的サーバのリソースを、他の顧客インスタンスと関連付けられた複数のその他のサーバインスタンスと共有し得る。所定のクラウドコンピューティングシステムでは、顧客インスタンスの異なる実装が異なる顧客インスタンスに対して同時に使用され得る。顧客インスタンスのその他の構成及び実装も使用され得る。例えば、実装において、ウェブサーバ及びアプリケーションサーバの機能は、（多数のユニットが存在し得る内の）単一のユニットとして扱われ、各ユニットは個別の物理的サーバ上にインストールされる。
【００３２】
開示の幾つかの動作上の側面は、図４〜図７を参照しながらここで記述される。図４は、コンピュータネットワーク内のネットワークリソースを示すデータを処理するための実装に使用されるシステム４００の図である。ネットワークリソースの識別及び調整を含む処理は、コンピュータネットワークのネットワークリソース（例えば、ＣＩ）の記録が追加されたデータベース（例えば、ＣＭＤＢ）を含む（例えば、図３のアプリケーションノード３０６、３０８及びデータベース３１０等のアプリケーションノード及びデータベースを介して実装された）クラウドコンピューティングインスタンスを実行するサーバによって実行され得る。実装において、識別及び調整の機能は、識別規則、調整規則、又は重複排除タスク等により支持され得る。一般的に、実装において、識別は、ＣＭＤＢ中にＣＩが既に存在するか否か、又はそれがＣＭＤＢに追加しなければならない新たに発見されたＣＩであるか否かを判定するためにＣＩをユニークに識別する処理を称し得、調整は、指定された権威あるデータソースがＣＩテーブル及び属性レベルでＣＭＤＢに書き込みできるようにすることによりＣＩ及びＣＩ属性を調整する処理を称し得る。実装において、ＣＭＤＢは、（例えば、ＣＭＤＢに対して実行される挿入及び更新動作を使用して）記録が処理されるのと同時に更新され得る。実装において、識別及び調整動作のためのＣＭＤＢ（及びセカンダリデータベース又はデータウェアハウス）外のステージング領域の必要性は、例えば、ＣＭＤＢの記録に頻繁に使用される格納用のキャッシュと関連して使用可能な識別規則と、データソースの権威を示すための調整規則との使用を通じて除去され得る。実装において、多数のデータソースが異なるＣＩを同時に更新できるようにするために楽観的ロックが使用され得る。ＣＩを更新するための、楽観的ロック等の同時制御を使用するための実装が図７を参照しながら以下で論じられる。
【００３３】
実装において、ＣＭＤＢ内にＣＩを追加するために使用されるデータは、例えば、発見プロセス中にデータソース４０５から受信され得る。実装において、データソース４０５は、コンピュータネットワークのネットワークリソースの条件（例えば、ネットワークの存在、ネットワーク内の接続関係、リソースの状態又は属性、配備されたサービス環境内の含有物等）を示すデータを通信し得る。実装において、データソース４０５により通信される条件は、ネットワークリソースの動作に関するネットワークリソースの物理的条件であり得る。例えば、物理的条件は、サーバコンピュータのＣＰＵの温度、ハードウェアデバイス上のアプリケーションの設置状態、ルータ、スイッチ、若しくはその他のネットワークデバイスを通じたネットワーク接続の損失等であり得る。実装において、任意の数のデータソース４０５は、例えば、データがＣＭＤＢ４２５に入力する前に、データソース４０５から受信されたデータを処理するためにＡＰＩレイヤ４１０と通信し得る。データソース４０５は、例えば、データ、例えば、カンマ区切り値（ＣＳＶ）を含むデータ、水平な発見ルーチンの性能に応じて生成されたデータ、コンテクストな発見ルーチンの性能に応じて生成されたデータ、コンピューティングネットワークの外側のシステム（例えば、第三者のシステム）により又は該システム上で実行される発見プロセスの性能に応じて生成されたデータ、又はコンピュータネットワークへの入力として手動で入力されたデータ等を通信するためのマシン（例えば、適用リソース、又は適用リソース上で動作する基盤リソース）を含み得る。実装において、データソース４０５は、データを更新するためのリクエストがそれから受信される前に、又はそれから受信された更新リクエストがシステム４００により処理され得る前に、システム４００に登録され得る。
【００３４】
実装において、ＡＰＩレイヤ４１０は、ＣＭＤＢ４２５内にデータが格納されるか否か、及びどのように格納されるかを判定するための識別モジュール４１５及び調整モジュール４２０による処理のためにデータソース４０５から受信されたデータとインタフェースで接続する。そうだとして、実装において、例えば、ＡＰＩレイヤ４１０により実装される識別及び調整ＡＰＩは、データソース４０５から受信されたデータがＣＭＤＢ中に格納される前に、識別及び調整の規則を実施するために利用され得る。例えば、発見ルーチン（例えば、コンピューティングネットワーク基盤のリソース上の水平又はコンテクストな発見を実行するための命令）は、例えば、ＣＭＤＢ４２５中の適用可能なＣＩを識別するために使用可能なＣＩ間の関係性を示すためのビジネスメタデータ規則を適用する識別ＡＰＩを呼び出し得る。
【００３５】
実装において、識別モジュール４１５は、例えば、ネットワークリソースに対する記録がコンピュータネットワーク内に既に存在するか否かを検出し、存在しない場合には、例えばＣＭＤＢ４２５内に記録を生成することによってネットワークリソースを識別するための命令を含み得る。ＣＩ等のネットワークリソース情報の識別のための実装は、図５に関して以下で論じられる。実装において、調整モジュール４２０は、ネットワークリソースを調整する、例えば、データが受信されるデータソース（例えば、データソース４０５）がリソースに対して権威があるか否かに基づいてネットワークリソースに対する記録を更新又は生成するための命令を含み得る。ＣＩ等のネットワークリソース情報の調整のための実装は、図６に関して以下で論じられる。一般的に、そして実装において、識別モジュール４１５は、不適切な又は重複したデータがＣＭＤＢ４２５内に格納されることを防ぐために使用され得、調整モジュール４２０は、データに対して権威がないデータソースによりＣＭＤＢ４２５内のデータが更新されることを防ぐために使用され得る。
【００３６】
実装において、識別及び調整プロセス中にインスタンスが重複したＣＩに遭遇した場合、それは、ＣＩに対するデータを更新又は生成しなくてもよい。代わりに、インスタンスは、重複したＣＩのセットを再調査のために重複排除タスク中にグループ化し得る。重複排除タスクは、それらが解決されるまで重複したＣＩを追跡するために利用され得る。重複排除タスクは、全ての重複したＣＩと識別プロセス中に使用された内部ペイロードとのリストを含む、重複についての細部を提供し得る。タスク中の重複した各ＣＩとＣＩが重複することを判定するために使用されたデータとの細部の再調査が実行され得る。重複したＣＩが従属ＣＩである場合、その後、従属関係及び任意の関連する修飾子チェーンの細部が調査され得る。従属ＣＩがルックアップテーブルを有する場合、その後、個別のルックアップテーブルの細部が調査され得る。
【００３７】
重複したＣＩのセットの処理は、システム性能及びセット中の重複したＣＩの数に依存し得る。実装において、セット中の重複したＣＩの構成可能数が少ない（例えば、デフォルトにより５）場合、その後、識別プロセスは、重複したＣＩの１つを整合する記録として選び取り得、それを更新し得る。セット中に５つ以上の重複したＣＩがある場合、その後、識別プロセスは、エラーを報告し得、該ＣＩを更新又は挿入しなくてもよい。何れの場合にも、重複排除タスクが作り出され得る。
【００３８】
実装において、ＣＭＤＢ４２５は、コンピューティングシステム１００等のコンピューティングネットワークのネットワークリソースの記録を示すデータ（例えば、ＣＩ）を含む構成管理データベースである。実装において、ＣＭＤＢ４２５は、ネットワークリソースの記録の間の関係性を示すデータをも含み得る。例えば、該データは、ＣＭＤＢ４２５のＣＩ間の従属性を示し得、該従属性は、図５に関して以下で論じられるように、識別プロセス中にＣＩをユニークに識別するために使用され得る。
【００３９】
図５は、ネットワークリソースの識別の実装に使用されるソフトウェアコンポーネントのブロック図５００である。実装において、ネットワークリソースの識別に使用されるコンポーネントは、図４の識別モジュール４１５中に含まれる。実装において、ネットワークリソース、例えばＣＩを示すデータは、データソース（例えば、図４のデータソース４０５）から受信され得、識別ＡＰＩを通じて処理され得、識別ＡＰＩは、ＣＩデータがＣＭＤＢ中に格納される前に識別を実施するために使用され得る。識別ＡＰＩは、例えば、データソースがデータをＣＭＤＢへ直接通信することを防ぐことによって、データの整合性を保持しＣＭＤＢに矛盾が導かれないようにするために使用され得る。実装において、識別ＡＰＩは、図４のＡＰＩレイヤ４１０の一部として含まれる。
【００４０】
幾つかのリソース（例えば、ハードウェアリソース）に対するＣＩは、ＣＩの属性値に基づいて識別され得る。例えば、サーバコンピュータのＭＡＣアドレス及びＩＰアドレスは、該ハードウェアリソースをユニークに識別する。実装において、それらの属性値に基づき識別され得るＣＩは、独立ＣＩと称され得る。しかしながら、その他のタイプのＣＩは、単にそれらの属性値によるだけでなく、ＣＭＤＢ中のその他のＣＩとのそれらの関係性によってもユニークに識別され得る。例えば、インストールされた文書処理ソフトウェアのコピー等、ソフトウェアリソースをユニークに識別するために、ソフトウェアがインストールされるハードウェアリソースが考慮に入れられ得る。別の例として、Ｔｏｍｃａｔ等のアプリケーションサーバは、そのインストールディレクトリとそれがホスティングされるハードウェアリソース（例えば、サーバコンピュータ）とに基づいてユニークに識別され得る。実装において、ＣＭＤＢ中のその他のＣＩとのそれらの関係性に基づいて識別され得るＣＩは、従属ＣＩと称され得る。
【００４１】
実装において、例えば、データソース（例えば、図４のデータソース４０５）から受信されたデータがＣＭＤＢ内に新たなＣＩを生成するために使用される場合、該ＣＩがＣＭＤＢ中に既に存在するか否かがまず判定されるべきである。データソースを含む通信マシンにより実行される様々な動作（例えば、発見プロセス）は、データが処理のために提示される前にＣＩの異なる側面にアクセスし得るので、ＣＩのユニーク性を判定するためには属性の異なる組み合わせが考慮されなければならない。処理のために（例えば、ＣＭＤＢ内に生成されたＣＩの記録を有するために）新たなＣＩが提示される場合、該処理を実行するシステムは、例えば、提示されたＣＩの属性を、様々な識別規則により考慮される属性の組み合わせと比較することによって、ＣＩがＣＭＤＢ中に既にあるか否か判定するための識別規則のリストを通じて実行し得る。例えば、ハードウェアタイプの新たなＣＩを提示された場合、システムは、該ハードウェアに対応する規則のセットをＣＩの属性に順次適用し得、シリアル番号、ＩＰアドレス、ＭＡＣアドレス、ハードウェアリソースの名前等の、各規則に関連付けられたテーブルに対して属性を示す値を使用してデータベースのクエリを実行し得る。クエリに応答して、整合するＣＩがデータベース中に見つかった場合、提示されたＣＩは新しくないと判定され得、それ故、該ＣＩに対する記録はＣＭＤＢ内に生成されないが、整合するＣＩが見つからない場合、システムはＣＭＤＢ内にＣＩを生成し得る。
【００４２】
識別エンジン５０５は、例えば、識別規則を使用して、様々なタイプのＣＩをユニークに識別するように構成されたモジュール又はルーチンのセットであり得る。実装において、識別規則は、ＣＩをユニークに識別する属性を特定する１つ以上の識別エントリを含み得る。これらの識別規則は、ＣＩのクラスに適用し得、異なる優先度を有する１つ以上の識別エントリを含み得る。各識別エントリは、特定の優先度を有するユニークな属性セットを定義し得る。最高の優先度を最強の識別エントリに与える強力な識別規則が作り出され得る。実装において、ＣＭＤＢ中の各テーブルは、１つ以上の識別規則と関連付けられ得る。
【００４３】
識別プロセス及び識別規則は、ＣＩ、それ故対応するネットワークリソースをユニークに識別するために使用され得るＣＩの標準属性値の指定されたセットであるユニーク属性等の、様々な属性を利用し得る。ユニーク属性は、同じテーブル又は派生するテーブルからのものであり得る。従属ＣＩを識別するためのステップは、独立ＣＩを識別するためのステップとは異なり得る。これは、従属ＣＩに対する識別規則と独立ＣＩに対する識別規則との違いに反映され得る。
【００４４】
実装において、独立識別規則は、例えば、ハードウェアリソースのＭＡＣアドレス及びＩＰアドレスに基づいて独立ＣＩを識別するための規則であり得る。実装において、識別規則は、探索（lookup）ベースの識別アプローチを使用するようにも構成され得る。探索ベースの識別は、属性に対する値のセットを有する所定のＣＩに対する属性テーブルを参照し得る。例えば、仮想サーバのＣＩがシリアル番号の属性のセットとネットワークアダプタの属性のセットとを有する場合、ＣＩの識別は、該ＣＩに対するシリアル番号テーブル及びネットワークアダプタテーブル中の値を探索することにより行われ得る。
【００４５】
実装において、従属識別規則は、従属ＣＩに関するＣＩをまず識別することによって従属ＣＩを識別するための規則であり得る。ＣＩは、１つ以上のＣＩへの従属性を有し得る。従属ＣＩは親ＣＩへの従属性を有し得、その親ＣＩは別のＣＩへの従属性を有し得る。ＣＩとその従属ＣＩとの関係性タイプは、識別プロセス内でも使用され得る。従属ＣＩの識別プロセスの支援のために、ＣＭＤＢ規則のメタデータは、例えば、ビスネスサービスのコンテクスト中に、ＣＩタイプ及び関係性タイプの従属構造を定義することを追加し得る。実装において、ＣＭＤＢ規則のメタデータはメタデータキャッシュ５１５内に格納され得る。実装において、メタデータキャッシュ５１５は、例えば、識別エンジン５０５により使用される識別規則が変化する度にリフレッシュされ得る。実装において、従属ＣＩ（例えば、データソースから受信されたデータ）の識別のために使用されるペイロードは、修飾子チェーンとの関係性を含み得る。そうした関係性に対して、整合する親／子ペアがある場合、システムは、ペイロード中の修飾子チェーンをデータベース中のＣＩの修飾子チェーンと比較し得る。違いがある場合、データベース中の修飾子チェーンは、その関係性に対するペイロード中の修飾子チェーンと整合させるために更新され得る。
【００４６】
実装において、従属ＣＩは、典型的には他のどのＣＩが従属ＣＩをホスティングするか、さもなければ収容する（contain）かを、別のＣＩのコンテクストで識別され得る。例えば、所定のサービス内で使用される数千のＷＡＲファイルがあり得るので、それ自身によるＷＡＲファイルはユニークではない。しかしながら、各個別のＷＡＲファイルのユニーク性は、それがホスティング又は配備されるコンテクストに依存するので、アプリケーションサーバＸによりホスティングされる又はアプリケーションサーバＸに配備されるＷＡＲファイルは、アプリケーションサーバＹによりホスティングされる又はアプリケーションサーバＹに配備されるＷＡＲファイルと比較してユニークであり得る。実装において、データソースから受信されたデータは、ＣＩに対する従属性についてのコンテクストな情報を含み得る。
【００４７】
（例えば、識別エンジン５０５により使用され、メタデータキャッシュ５１５内にＣＭＤＢ規則のメタデータとして格納される）識別規則により定義される従属性は、従属ＣＩを識別する場合に使用され得る。この情報は、ＣＩの識別の順序を定義し、且つペイロード中のＣＩと個別の従属ＣＩとを整合することを補助し得る。新たなＣＩタイプが定義された後、新たなＣＩタイプがＣＭＤＢ中の既存のタイプとどのように関係するかを特定するメタデータ規則が定義される。ＣＭＤＢ規則のメタデータは、２つのＣＩタイプ間の関係性タイプを記述するホスティング規則及び収容（containment）規則を含み得る。規則の各セットは、ＣＩの異なる観点からのデータをモデル化し得る。実装において、収容規則は、ＣＩの構成階層を表し得、各収容規則は、その他のどのＣＩが所定のＣＩにより収容されるかを記述する。例えば、収容規則は、Ｔｏｍｃａｔ  ＣＩがＷＡＲファイルＣＩを収容することを示すために使用され得る。実装において、ホスティング規則は、ビジネス定義中のＣＩの配置を表し得、各ホスティング規則は、ＣＩに対応するリソースが実行するリソースを記述する。例えば、ホスティング規則は、ソフトウェアリソースＣＩがハードウェアリソースＣＩ上で実行することを示すために使用され得る。ホスティング規則中に及び収容規則中に同じ関係性タイプが使用され得る。関係性が使用されるコンテクストは、収容規則とホスティング規則とを区別するために利用され得、インスタンス上で作動されているプラグインは、どのホスティング及び収容の規則がデフォルトにより利用可能であるかを判定するために利用され得る。
【００４８】
ホスティング規則は、サービス定義においてホスティングするＣＩとホスティングされるＣＩとのペアに対する有効な組み合わせを表すために使用され得る。実装において、ホスティング規則は、１レベルの深さであり得る規則の平坦なセットであり得、リソース、典型的には物理的又は仮想的なハードウェアに対して作り出され得る。各ホスティング規則は、２つのＣＩタイプの間の独立型の規則であり得、サービス定義においてそれがホスティングし得又はホスティングされ得るＣＩタイプと別の有効なＣＩタイプとの間の関係性を特定し得る。ホスティング規則は、親ＣＩタイプ、関係性タイプ、及び子ＣＩタイプを含み得る。例えば、ホスティング規則は、特定のアプリケーションタイプが特定のハードウェアタイプ上で実行することを特定し得る。ＣＩが多数のリソース（Ｗｉｎｄｏｗｓ及びＬｉｎｕｘ等）上にホスティングされる場合、それがホスティングされ得る各リソースを有するＣＩに対して別個のホスティング規則が作り出され得る。
【００４９】
ＣＩの識別中、関連性があるＣＩのペアは、少なくとも１つのホスティング規則を一般的に充足し得る。ホスティング規則はＣＭＤＢ中に格納され得る。ホスティング規則は、ＣＩに対応するネットワークリソースを何の上で実行するかを記述するために使用され得る。ホスティング規則は、ビジネス発見プロセス中に従属ＣＩを正確に識別することを補助し得る。発見ルーチンは、ビジネスメタデータ規則を適用する識別ＡＰＩを呼び出し得る。
【００５０】
一群の収容規則は、ＣＩタイプに対する収容階層を表し得る。各規則は、サービス定義にそれが含み得る又は含まれ得るＣＩタイプと別の有効なＣＩタイプとの間の関係性を特定し得る。該規則は、グループの最高レベル（ルート）の親であるＣＩタイプと、収容規則グループ中で相互に繋がれ得る。収容規則は、例えば、サーバ上で実行するソフトウェアを記述するために、論理的コンセプトとして見なされ得、論理的ＣＩを表し得る。データがＣＩタイプ中に流れる又はＣＩタイプから流れることを指定するために、該ＣＩタイプに対する規則にエンドポイントが追加され得る。エンドポイントの後に子規則が追加されるべきではない。収容規則はＣＭＤＢ中に格納され得る。収容規則は、所定のＣＩによりどのＣＩが収容されるかを記述するために使用され得る。収容規則は、ビジネス発見プロセス中に従属ＣＩを正しく識別するのを補助するために使用され得る。
【００５１】
識別プロセスが計算的でデータ集約型であるとすると、例えば、性能を向上し、識別プロセスに対して必要なデータベースクエリの数を削減するために、ＣＩ、ＣＩの関係性、及び／又は識別規則を示すデータを格納及び維持するために１つ以上のキャッシュが使用され得る。実装において、ＣＭＤＢキャッシュ５１０は、頻繁に使用されるＣＩとそれらに関連付けられた関係性をキャッシングするための（例えば、ＬＲＵエージングポリシーにより管理された）最近最も使用されていない（ＬＲＵ）キャッシュであり得る。例えば、識別ＡＰＩを使用して処理されているデータに応じて、識別エンジン５０５は、処理されるデータと関連付けられた全てのＣＩの記録を検索するためにＣＭＤＢキャッシュ５１０と通信し得る。実装において、識別エンジン５０５が検索リクエストを通信する時にＣＭＤＢキャッシュ５１０内にＣＩが存在しない場合、ＣＭＤＢキャッシュ５１０は、（例えば、最も長い期間、識別エンジン５０５又はＣＭＤＢにより使用されていないＣＩを示すデータを削除することによって）そのＬＲＵポリシーの下でデータを排除し得る。データの排除に応じて、ＣＭＤＢキャッシュ５１０は、リクエストされたＣＩデータをＣＭＤＢから検索し得、該データを含むためにそれ自身をリフレッシュし得る。実装において、ＣＩ間の関係性が変化（例えば、追加、除去、又は修正）される場合、ＣＭＤＢキャッシュ５１０は、例えば、データを削除しその位置に新たなデータを追加することに代えて、その中に格納されたデータをリフレッシュし得る。例えば、変化を示すデータは、（例えば、変化に基づいてＣＭＤＢを再構築するための命令を使用して）ＣＭＤＢキャッシュ５１０に渡ってブロードキャストされ得、それは、その他のＣＩへのその他の変化をもたらし得る。ＣＭＤＢキャッシュ５１０中に格納されたＣＩの状態は、もたらされたＣＩの変化に基づいて、該当する場合はその後更新され得る。
【００５２】
ＣＩ及びそれらの関係性を識別するための識別エンジン５０５と関連付けられてその他のキャッシュが使用され得る。実装において、識別エンジン５０５は、メタデータキャッシュ５１５と通信し得、それは、上で論じられたように、ＣＩ及びそれらの関係性を識別するために使用される識別規則を示すデータを格納し得る。メタデータキャッシュ５１５は、変化している格納された識別規則データの何れかへの変化に応じてリフレッシュし得る。識別エンジン５０５は、それ故、ＣＩをユニークに識別し、それに応じたＣＭＤＢの更新のために所定のＣＩがユニークであるか重複するかを判定するために、ＣＭＤＢキャッシュ５１０及びメタデータキャッシュ５１５の両方を使用し得る。
【００５３】
識別モジュール４１５による動作の性能に応じて、処理されているデータは、調整モジュール４２０に通信され得る。図６は、ネットワークリソース調整の実装に使用されるソフトウェアコンポーネントのブロック図６００である。実装において、ネットワークリソース調整のために使用されるコンポーネントは、図４の調整モジュール４２０中に含まれる。実装において、調整のために処理されるデータは、調整ＡＰＩを通じて処理され得、調整ＡＰＩは、ＣＩデータがＣＭＤＢ中に格納される前に調整を実施するために使用され得る。調整ＡＰＩは、例えば、データソースがＣＭＤＢに直接データを通信することを防ぐことによって、ＣＭＤＢ内のデータの整合性を保持するために使用され得る。実装において、調整ＡＰＩは、図４のＡＰＩレイヤ４１０の一部として含まれ得る。実装において、図５に関して上で論じた調整ＡＰＩ及び識別ＡＰＩは、ＡＰＩレイヤ４１０を含む単一のＡＰＩ内に含まれ得る。
【００５４】
調整エンジン６０５は、例えば、調整規則を使用して、様々なタイプのＣＩ又はＣＩ属性を更新するための（例えば、データソース４０５から受信された）リクエストを処理するように構成されたモジュール又はルーチンのセットであり得る。実装において、調整規則は、所定のＣＩ又はＣＩ属性を更新するためにデータが使用され得るその他のデータソースと比較してデータソースの信頼性（優先度又は権威とも称される）を定義し得る。前述したことにもかかわらず、権威があるデータソースの品質は、該データソースから受信されたデータが必ず正しく、正確であり、信頼され、信頼性があり、又は真であるという意味では必ずしもないことを理解すべきである。むしろ、権威があるデータソースの品質は、データを更新する目的のために該データソースがその他のデータソースよりも権威がある（信頼性がある、又は優先度が高い）とみなされることを意味する。
【００５５】
実装において、調整規則６１０は、どのデータソースがＣＩ又はＣＩ属性のセットを更新できるかを特定し得、それらは、親及び子のレベルで定義され得る。調整規則は、属性を更新するための権威があるデータソース毎に提供され得、属性の同じセットに対して多数の調整規則が存在し得る。調整規則は、データソースが所定のテーブルに対して更新するための権威があるとの属性を特定し得、権威がないデータソースが属性の値を上書きすることを防止し得る。ＣＭＤＢ中の同じＣＩ又は同じＣＩ属性を更新するための権威が多数のデータソースにある場合、それらが互いの更新を上書きするのを防ぐために多数のデータソースの各々に優先度が割り当てられ得る。この方法では、最も高い優先度を有するデータソースは、その他のデータソースがＣＩを更新できないようにＣＩに対して権威があり得る。実装において、ＣＩ属性がそれと関連付けられた値を有しない場合には、属性値を生成又は更新するために任意のデータソースが使用され得る。実装において、権威があるデータソースのＣＩへのマッピングを示すデータは、権威マッピングデータストア６１５中に格納され得る。実装において、権威マッピングデータストア６１５は、調整規則６１０の変化と共に更新されるテーブルであり得る。（例えば、データに対して最高の優先度を有し、それ故データに対して最も権威があるために）データソースが所定のデータに対して権威があるとの判定に応じて、調整エンジン６０５は、ＣＭＤＢ４２５と関連付けて処理するために、データを更新するためのリクエストを指示し得る。実装において、更新リクエストを処理することは、ＣＭＤＢ内のＣＩを更新するためにＣＩの特性にデータをコミットすることを含み得る。
【００５６】
例えば、ＣＩは、属性Ａ、Ｂ、Ｃ、Ｄ、及びＥを有し、ここで、データソース１は属性Ａ、Ｂ、Ｃに対して優先度１０を有し得、データソース２は属性Ｄ及びＥに対して優先度２０を有し得、ここで、優先度１０は、優先度２０よりも高く、それ故、より権威がある。データを処理するシステムが属性Ａを更新するためのデータソース１からのリクエストを受信した場合、データソース１は属性Ａに対して権威があるデータソースであるので該更新は処理される。しかしながら、属性Ｃを更新するためのデータソース２からのリクエストが受信された場合、システムは、データソース２は属性Ｃに対して権威があるデータソースではないと判定し得、該更新を処理し得ない。別に、属性Ｅを更新するためのリクエストがデータソース３から受信された場合、システムは、属性Ｅに対して権威があるデータソースがないと判定し得、該更新を処理し得、該処理は、属性Ｅに対して権威があるデータソースをデータソース３にすることを含み得る。更に、調整規則６１０は階層的であり得る。例えば、システムにおいて、ＣＩタイプ“Ｌｉｎｕｘサーバ”は、タイプ“サーバ”であるＣＩのハードウェアタイプとして定義され得る。ＬｉｎｕｘサーバＣＩに対するＣＩ属性を更新するためのリクエストがデータソースから受信された場合、何れのデータソースもＣＩタイプＬｉｎｕｘサーバに対する権威がないが、その後、該リクエストは、例えば、ＣＩタイプ“サーバ”に対して権威があるデータソースを使用して、階層の親レベルで処理され得る。
【００５７】
しかしながら、実装において、データソースがＣＩ又はＣＩ属性に対して権威があるか否かを判定するために、ＣＩ又はＣＩ属性へのデータソースの最後の更新の時期も使用され得る。実装において、調整規則６１０は、ＣＩ又はＣＩの属性に対してその他のデータソースと比較したデータソースの優先度だけでなく、例えば、データソースがデータに渡って最高の優先度を有する制限期間を定義することによって、データソースが権威を存続する期間をも定義する。実装において、この定義された期間は老化期間と称され得る。例えば、（例えば、データソースが廃止され、偶発的に終了し、電源が遮断される等されているために）データソースが老化期間内に権威がある何れのＣＩ又はＣＩ属性を更新していない場合、調整エンジン６０５は、権威の優先度を異なるデータソースに譲渡し得る。この方法では、調整エンジン６０５は、古いデータソースをデータに対する残余の権威から排除し得る。実装において、権威の優先度を譲渡することは、対応するデータを更新するための後続のリクエストを古いデータソースが通信するまで古いデータソースを無視することを意味し得る。実装において、権威の優先度を譲渡することは、属性に対する優先度を古いデータソースから除去することを意味し得る。
【００５８】
老化期間を定義するための代替的実装も利用可能である。実装において、老化期間は、データソースがデータに渡って権威を存続する、日数等の特定期間を示す絶対的老化調整規則を使用して定義され得る。例えば、調整規則は、データソース１は１０日間、ＣＩタイプ“サーバ”に渡って権威を有することを提供し得る。“サーバ”ＣＩに対するデータを更新するためのリクエストがデータソース１から受信される前に１０日の期間が満了した場合、その後、別のデータソースはＣＩタイプ“サーバ”に対する権威があり得、又はデータソース１よりもデータに対する低い優先度を有する別のデータソースから受信されたデータを更新するためのリクエストは、例えば、データソース１のより高い優先度が無視されるのに起因して処理され得る。実装において、老化期間は、第２のデータソースと比較してデータに渡る権威が第１のデータソースに存続する期間を示す相対的老化調整規則を使用して定義され得る。例えば、データソース１が１０日の期間内に更新リクエストを通信せず、データソース２が相対的老化調整規則で示された場合、その後、権威の優先度はデータソース１からデータソース２へ切り替えられ得る。実装において、老化期間は、例えば、権威時間を判定するために、ＣＩに関するデータソースの信頼性を別のデータソースの信頼性と比較する比較ベースの老化調整規則を使用して定義され得る。例えば、現在時刻とデータソース１からの最後の更新時刻との差が、データソース１に対する老化期間の満了と、データソース１及び２の優先度の差との積よりも大きい場合、その後、データソース２から受信された更新リクエストが処理される。
【００５９】
図７は、ネットワークリソースの識別及び調整の実装に使用される同時実行制御の図７００である。同時実行制御は、処理のために異なるＣＩを対象とする多数のデータソースを使用してＣＭＤＢの一部を同時に更新する能力を称し得る。実装において、同時実行制御の形式として楽観的ロックが使用され得、ここで、幾つかのＣＩは、現在の更新が処理される後まで、それらのＣＩに影響を及ぼすその他の更新が生じないようにロックされ得る。この方法での同時実行制御の使用は、別のステージング領域を必要とすることなく、更新がＣＭＤＢ内でインラインにされ得るようにする。
【００６０】
楽観的ロックを使用するための実装において、ＣＩのグラフ及びＣＩ間の関係性が入力として取られる。グラフは、ＣＭＤＢ（例えば、ＣＭＤＢ４２５）の全て又は一部の表示を含み得る。実装において、例えば、キャッシュ（例えば、ＣＭＤＢキャッシュ５１０）に関して識別プロセスが生じた場合、グラフは、キャッシュ内に格納されたＣＩのセットの表示を含み得る。一貫性を保つため、しかしながら利用可能な実装を制限することなく、図７の論考においてグラフを更に参照してＣＭＤＢに言及する。ＣＭＤＢ内のＣＩは、（例えば、識別規則を使用して判定された）ＣＭＤＢにより又はＣＭＤＢ中に示された関係性に基づいて独立ＣＩ又は従属ＣＩに分類され得る。ＣＩがそれらの従属性（又はその欠如）に基づいて分類された後、例えば、更新される（例えば、データソース４０５等のデータソースから受信された更新リクエスト内に示される）ＣＩがＣＭＤＢ内に既に存在するか否かを判定するために識別プロセスが実行され得る。実装において、更新されるＣＩが識別された後、識別プロセスは、ＣＩ（及び該当する場合はＣＭＤＢ中のその他のＣＩ）が更新の結果としてどのように変化するかを判定するために更新を前処理することを含み得る。実装において、前処理は、更新リクエストの処理中に変化されるＣＩの特性を判定するために、データソースから受信された更新リクエストをパースすることを含み得る。
【００６１】
実装において、ＣＩが識別され、更新が前処理された後、同時実行制御プロセスは、独立ＣＩとして分類された全てのＣＩがＣＭＤＢ内に既に存在するか否かをまず判定し得る。独立ＣＩに対するＣＩがＣＭＤＢ内に存在しない場合、ＣＩは、悲観的ロックプロセスの一部として追加され得る。実装において、ＣＭＤＢ中に存在しない独立ＣＩは、多数のデータソースが並行して動作することにより追加され得、それ故、悲観的ロックは、独立ＣＩが追加される後までその他の何れの変化が生じることを防止するために、ＣＭＤＢの全てのＣＩ上にグローバルロックを置き得る。該ロックは、独立ＣＩがＣＭＤＢに追加されると解除され得る。実装において、悲観的ロックプロセスは、（例えば、前処理から判定されると共に）作り出される又は更新されるＣＩへのインターリーブされた又は介在する変化を回避するためにＣＭＤＢの全て又は一部にグローバルロックを置くことを含む。
【００６２】
実装において、ＣＭＤＢ中に全ての独立ＣＩが存在すると一度判定されると、楽観的ロックプロセスは、例えば、ＣＩに対するシステム識別子に基づいて、更新されるＣＩが従属する独立ＣＩをロックし得る。実装において、記録毎に１つのロックが使用され得る。実装において、ロックは、記録に変化がなされ得るか否かを示すためのビット又はフラグであり得る。実装において、更新される従属ＣＩは、その親ＣＩ上のロックによって保護され得、それは、ロックされる従属ＣＩの必要性をも省き得る。
【００６３】
実装において、識別プロセスが完了してからなされたＣＭＤＢへの幾つかの変化が検出され得る。例えば、独立ＣＩに対するカウンタが変化した場合、別のデータソースが、介在する更新をなしたと判定し得、それは、更新されるデータが、もはやそれが識別された時と同じ状態にはないことを示し得る。実装において、独立ＣＩに対するカウンタは、識別のために使用される１つ以上のＣＩの識別及びロックに近接する時間間隔内にＣＭＤＢに、介在する変化がなされたことを判定するために使用され得る。例えば、時間間隔は、ＣＭＤＢの識別に近接する開始時間と、１つ以上の独立ＣＩのロックに近接する終了時間とを含み得る。例えば、カウンタは、ＣＭＤＢの識別に近接する時間の前、後、又はその時の独立ＣＩの第１の状態と、ロックに近接する時間の前、後、又はその時の独立ＣＩの第２の状態とを示し得る。この方法では、ＣＭＤＢになされた変化は、識別、前処理、及び楽観的ロックのプロセスに渡って判定され得る。介在する変化が検出された場合、更新をコミットすることなくロックは独立ＣＩから解除され得、更新されているデータが最新であることを確認するために、識別プロセス（及び識別プロセスの一部として含まれない限りにおいて、前処理）が繰り返され得る。例えば、介在する変化は、楽観的ロックに対して入力したグラフが異なる方法で再構築されるように、ＣＭＤＢ中のＣＩ間の１つ以上の関係性を変化させている。しかしながら、（例えば、独立ＣＩに対する最初及び現在の値が同じであるため）識別プロセスが完了してからＣＭＤＢに何ら変化がなされていないと再確認が示す場合、その後、データソースから受信された更新リクエストは、例えば、対応するネットワークリソース属性を更新するために、対応するＣＩにコミットされ得る。
【００６４】
図７００は、ＣＭＤＢ内で識別される６つのＣＩのグラフを示し、ここで、ＣＩ６は、独立ＣＩを表し、ＣＩ１、２、３、４、及び５は従属ＣＩを各々表す。例えば、独立ＣＩ６は、１３のカウンタ値を有するＬｉｎｕｘサーバを表し得、従属ＣＩ４及び５は、ＣＩ６のＬｉｎｕｘサーバ上にホスティングされた（例えば、異なるマイクロサービスを容易にするような）異なるＴｏｍｃａｔウェブサーバを表し得、従属ＣＩ１及び２はＣＩ４のＴｏｍｃａｔ上で実行する異なるＪａｖａウェブアプリケーションに対するウェブアプリケーションアーカイバ（ＷＡＲ）ファイルを表し得、従属ＣＩ３は、ＣＩ５のＴｏｍｃａｔ上で実行するＪａｖａウェブアプリケーションに対するＷＡＲファイルを表し得る。データソース１から受信されたＬｉｎｕｘサーバＣＩ６の特性を更新するための第１の更新リクエストと、データソース２から受信されたＴｏｍｃａｔ  ＣＩ５の特性を更新するための第２の更新リクエストとに基づいて同時更新が処理され得る。例えば、第１の更新リクエストは、ＬｉｎｕｘサーバＣＩ６上にインストールされる新たなオペレーティングシステム又はオペレーティングシステムパッチを示し得、第２の更新は、Ｔｏｍｃａｔ  ＣＩ５により使用される新たなポートを示し得る。第１の更新リクエストがＣＩ６の特性を変化させ、第２の更新リクエストがＣＩ５の特性を変化させることを判定するために、識別されたＣＩ１〜ＣＩ６上で更新リクエスト毎の前処理が行われ得る。
【００６５】
単一の独立ＣＩ（ＬｉｎｕｘサーバＣＩ６）が両更新リクエストを処理するために使用されるため、第１及び第２の更新リクエストは並列して処理できない。そうだとして、第１の更新リクエストは、その従属ＣＩ（例えば、第２の更新リクエストによって更新されるであろうＣＩ５）に対する同時更新が第１の更新リクエストが完了する後まで処理されることを防ぐために、ＬｉｎｕｘサーバＣＩ６をロックし得る。ＬｉｎｕｘサーバＣＩ６にロックが置かれた後、そのカウンタは、ＣＩが識別された時に読み出された同じ値がＣＭＤＢ内のＣＩに対する現在のカウンタに依然として反映されているか否か判定するために再確認にされ得る。例えば、ＬｉｎｕｘサーバＣＩ６が識別された後であるがそれがロックされる前に、異なるデータソースから受信された第３の更新リクエストが処理された場合、ＬｉｎｕｘサーバＣＩ６に対するカウンタは、該ＣＩが識別された時とは個なる値を反映し得る。ＬｉｎｕｘサーバＣＩ６が識別された時に読み出されたカウンタ値が現在反映されているカウンタ値と一致する場合、例えば、Ｌｉｎｕｘサーバのオペレーティングシステムを更新するために、第１の更新リクエストはＬｉｎｕｘサーバＣＩ６にコミットされ得る。第１の更新リクエストが一度完了すると、第２の更新リクエストが処理され得るようにＣＩ６上のロックは解除され得る。
【００６６】
開示の更なる実装は図８及び図９を参照しながらここで記述される。本明細書に開示される実施形態と関連して記述される任意の方法、プロセス、又はアルゴリズムのステップ又は動作は、ハードウェア、ファームウェア、ハードウェアにより実行されるソフトウェア、回路、又はこれらの組み合わせで直接具体化され得る。広くは、図８の方法８００及び図９の方法９００は、図１のコンピューティングシステム等のクラウドコンピューティングシステム中のネットワークリソースの識別及び調整のために夫々使用される。実装において、方法８００及び／又は方法９００は、図１、図２、及び図３の装置等のマシン及びハードウェアを使用して実行され得る。実装において、方法８００及び／又は方法９００は、例えば、Ｊａｖａｓｃｒｉｐｔ、Ｃ、又はその他のそうした命令のマシン可読のプログラムにより実行され得る。本開示の実装は上述の多数の機構を含み得る。
【００６７】
説明を簡単にするために、方法８００及び９００は、一連の動作として図示及び記述される。しかしながら、本開示に従った動作は、様々な順序で及び／又は同時に生じ得る。また、本開示に従った動作は、本明細書に提示及び記述されないその他の動作と共に生じ得る。更に、開示された主題に従った方法を実装するために、説明される全ての動作が必要であるとは限られなくてもよい。
【００６８】
図８は、ネットワークリソースの識別のための方法８００の実装を示すフローチャートである。方法８００は動作８０５で開始し、ここで、データソースからデータが受信され、該データはコンピュータネットワークのリソースに関する。実装では、データソースは、例えば、発見動作の性能に応じてデータを生成又はデータを受信するデータソースであり得、該データソースは、リソースに関して権威があり得、又は優先度を有し得る。実装において、リソースは、ＣＭＤＢのＣＩと関連付けられ得、ここで、リソースの属性は、ＣＩの特性と関連付けられ得る。
【００６９】
実装において、動作８０５でのデータの受信に応答して、方法８００は動作８１０に続き得、ここで、例えば、リソースの記録と関連付けられた従属関係に基づいて、リソースの記録がキャッシュ内に格納されているか否かが判定され得る。実装において、動作８１０は、最近最も使用されていない（least-recently-used）キャッシュ内に格納されたＣＩのリストを検索することと、収容及び／又はホスティングメタデータ規則を使用して、動作８０５で受信されたデータと関連付けられたＣＩに対する記録がキャッシュデータ内に既に含まれるか否かを判定することとを含み得る。例えば、識別規則は、ＣＭＤＢ内で対応するＣＩとＣＩの親又は子との１つ以上の従属性に基づいてＣＩが格納されるＣＭＤＢ内の位置を示すために使用され得る。
【００７０】
実装において、ＣＩがキャッシュ内に格納されていないとの判定に応答して、従属関係データに基づいてキャッシュ内にＣＩが生成され得る。例えば、キャッシュと通信するＣＭＤＢに由来し得る、動作８１０で使用される従属関係データは、例えば、ＣＭＤＢ内で対応するＣＩを適用可能な親及び／又は子と関連付けるためのＣＩデータを生成するために使用され得る。実装において、ＣＩがキャッシュ内に格納されている場合、ＣＩは動作８０５で受信されたデータに基づいて更新され得る。実装において、キャッシュ内のＣＩを更新することは、ＣＭＤＢ内の対応するＣＩを更新することを含み得る。
【００７１】
図９は、ネットワークリソースの調整のための方法９００の実装を示すフローチャートである。方法９００は動作９０５で開始し、ここで、方法８００の動作８０５と同様に、データソースからデータが受信され、該データはコンピュータネットワークのリソースに関する。実装において、データソースは、例えば、発見動作の性能に応じてデータを生成し又はデータを受信するデータソースであり得、そのデータソースは、リソースに関して権威があり得、又は優先度を有し得る。実装において、データは、ネットワークリソースの属性に関連し得る。
【００７２】
実装において、動作９０５でのデータの受信に応答して、方法９００は動作９１０に続き得、ここで、例えば、データに関するデータソースの優先度とデータが受信された時間とに基づいて、動作９０５でデータが受信されたデータソースがリソースに対して権威があるか否かが判定され得る。例えば、調整規則は、登録されたその他の何れかのデータソースが該データソースよりも高い優先度を有するか否かを判定することによって、該データソースがリソースに対して権威があるか否かを判定するために使用され得る。優先度に基づいてデータソースがリソースに対して権威があると判定される場合、データソースがリソースに対する権威を存続する老化期間が、リソースを更新するための最後のリクエストがデータソースから受信されてから経過したか否かを判定し得る。
【００７３】
実装において、データが受信されたデータソースがリソースに渡って権威があり、通信マシンが権威を存続する老化期間が経過していないとの判定に応答して、コンピュータネットワーク内のリソースの属性（例えば、ＣＭＤＢ内のＣＩの対応する特性）が動作９０５で受信されたデータに基づいて更新され得る。
【００７４】
本明細書で記述される発明の全て又は一部の側面は、実行される場合に、本明細書に記述された個別の技術、アルゴリズム、及び／又は命令の何れかを実施するコンピュータプログラムを備えた一般用途コンピュータ／プロセッサを使用して実装され得る。付加的に又は代替的に、例えば、本明細書に記述された技術、アルゴリズム、又は命令の何れかを実施するための専用ハードウェアを含み得る特定用途コンピュータ／プロセッサが利用され得る。
【００７５】
本明細書に記述されるようなコンピューティングデバイス（並びにその上に格納され及び／又はそれにより実行されるアルゴリズム、方法、命令等）の実装は、ハードウェア、ソフトウェア、又はそれらの任意の組み合わせで実現され得る。ハードウェアは、例えば、コンピュータ、知的財産（ＩＰ）コア、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能ロジックアレイ、光プロセッサ、プログラム可能ロジックコントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタルシグナルプロセッサ、又は任意のその他の適切な回路を含み得る。請求項において、用語“プロセッサ”は、単独で又は組み合わせで、前述したハードウェアの何れかを包含するものとして理解されるべきである。
【００７６】
例えば、１つ以上のコンピューティングデバイスは、本明細書で記述又は請求される１つ以上の動作又は複数の動作を実行するための特定目的のプロセッサとして構成されたフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等のＡＳＩＣ又はプログラム可能ロジックアレイを含み得る。例示的ＦＰＧＡは、ＦＰＧＡに幾つかの機能を実行させるために個々に構成され及び／又は構成可能に相互接続され得るロジックブロック及びランダムアクセスメモリ（ＲＡＭ）ブロックの一群を含み得る。幾つかのＦＰＧＡは、その他の一般又は特定目的ブロックをも含み得る。例示的ＦＰＧＡは、ＶＨＳＩＣハードウェア記述言語又はＶｅｒｉｌｏｇ等のハードウェア記述言語（ＨＤＬ）設計に基づきプログラムされ得る。
【００７７】
本明細書の実施形態は、機能的ブロックコンポーネント及び様々な処理動作の観点で記述され得る。そうした機能的ブロックは、特定の機能を実行する任意の数のハードウェア及び／又はソフトウェアコンポーネントにより実現され得る。例えば、記述された実施形態は、１つ以上のマイクロプロセッサ又はその他の制御デバイスの制御の下で様々な機能を実施し得る、例えば、メモリ素子、処理素子、ロジック素子、及びルックアップテーブル等の様々な集積回路コンポーネントを用い得る。同様に、記述された実施形態の要素がソフトウェアプログラミング又はソフトウェア要素を使用して実装される場合、発明は、データ構造、オブジェクト、プロセス、ルーチン、又はその他のプログラミング要素の任意の組み合わせを用いて様々なアルゴリズムが実装されると共に、Ｃ、Ｃ＋＋，Ｊａｖａ、又はアセンブラ等の任意のプログラミング又はスクリプト言語を用いて実装され得る。機能的側面は、１つ以上のプロセッサ上で実行するアルゴリズムで実装され得る。更に、発明の実施形態は、電子機器構成、信号処理及び／又は制御、並びにデータ処理等に対する任意の数の従来技術を用い得る。用語“マシン”及び“要素（element）”は、広く非制限的に、機械的又は物理的実施形態に使用されるが、プロセッサ等と併せてソフトウェアルーチンを含み得る。
【００７８】
上記の開示の実装又は実装の一部は、例えば、コンピュータ使用可能な又はコンピュータ可読の媒体からアクセス可能なコンピュータプログラム製品の形式をとり得る。コンピュータ使用可能な又はコンピュータ可読の媒体は、例えば、任意のプロセッサにより又は任意のプロセッサと接続して使用するためのプログラム又はデータを明白に含み得、格納し得、通信し得、又は搬送し得る任意のデバイスであり得る。該媒体は、例えば、電子、磁気、光学、電磁気、又は半導体デバイスであり得る。その他の適切な媒体も利用可能である。そうしたコンピュータ使用可能な又はコンピュータ可読の媒体は、非一時的メモリ又は媒体と称され得、ＲＡＭ、又は時間と共に変化し得るその他の揮発性メモリ若しくはストレージデバイスを含み得る。本明細書に記述される装置のメモリは、別段の定めがない限り、装置により物理的に含まれなくてもよいが、装置により遠隔的にアクセスできるものであり、装置により物理的に含まれ得るその他のメモリと接触しなくてもよい。
【００７９】
用語“例”は、例、実例、又は説明として提供される意味として本明細書で使用される。“例”として本明細書に記述される側面又は設計は、その他の側面又は設計に比べて好ましい又は有利であると必ずしも解釈されない。むしろ、用語“例”の使用は、具体的な様式の概念を提示することを意図する。この出願で使用されるように、用語“又は”は排他的な“又は”よりもむしろ包含的な“又は”を意味することを意図する。すなわち、別段の定めがない限り、又は文脈から明確でない限り、“ＸがＡ又はＢを含む”は、自然の包含的な順列の何れかを意味することを意図する。言い換えれば、ＸがＡを含むか、ＸがＢを含むか、ＸがＡ及びＢの両方を含む場合、“ＸがＡ又はＢを含む”は前述の実例の何れかの下で満たされる。また、この出願及び添付の請求項で使用される冠詞“１つ（ａ）”及び“１つ（ａｎ）”は、単数形に向けられるべき別段の定めがない限り又は単数形に向けられることが文脈から明らかでない限り、“１つ以上”を意味すると一般的に解釈されるべきである。更に、全体を通した用語“実装”又は“一実装”の使用は、そうした記述がない限り同じ実施形態又は実装を意味することを意図しない。
【００８０】
本明細書に示される又は記述される特定の実装は、発明の実例であり、何れかの方法で発明の範囲を限定することを意図しない。簡潔にするために、従来の電子機器、制御システム、ソフトウェア開発、及びシステムのその他の機能的側面（及びシステムの個別の動作コンポーネントのコンポーネント）は詳細には記述されないことがある。更に、提示された様々な図中に示された接続線又はコネクタは、様々な要素間の例示的な機能的関係及び／又は物理的若しくは論理的結合を表すことを意図する。多くの代替的又は追加的な機能的関係、物理的接続、又は論理的接続が実用デバイス中に存在し得る。更に、“不可欠な”又は“重要な”ものとして要素が特に記述されない限り、発明の実用にアイテム又はコンポーネントは何ら不可欠ではない。
【００８１】
本明細書中の“含む（ｉｎｃｌｕｄｉｎｇ）”、“含む（ｃｏｍｐｒｉｓｉｎｇ）”、又は“有する（ｈａｖｉｎｇ）”並びにそれらの変形は、それらの後に羅列されたアイテム及びその均等物と共に追加のアイテムを包含する。別段の定め又は制限がない限り、用語“実装された（ｍｏｕｎｔｅｄ）”、“接続された（ｃｏｎｎｅｃｔｅｄ）”、“支持された（ｓｕｐｐｏｒｔｅｄ）”、及び“結合された（ｃｏｕｐｌｅｄ）”、並びにそれらの変形は、広く使用され、直接的及び間接的な実装、接続、支持、及び結合の両方を包含する。更に、“接続された”及び“結合された”は、物理的又は機械的な接続又は結合に限定されない。
【００８２】
発明を記述する文脈での（特に、以下の請求項の文脈での）用語“ａ”、“ａｎ”、及び“ｔｈｅ”の使用は、単数及び複数の両方をカバーするものと解釈されるべきである。更に、本明細書の値の範囲の列挙は、本明細書に別段示されない限り、範囲に入る別個の各値を個別に参照する短縮方法として役立つことを意図するにすぎず、別個の各値は、あたかも本明細書で個別に引用されたかのように明細書中に組み込まれる。最後に、本明細書に記述された全ての方法の動作は、本明細書に別段示されない限り、又は文脈に明らかに反しない限り、任意の適切な順序で実行可能である。本明細書で提供される一切の例又は例示的言語（例えば、“等（ｓｕｃｈ  ａｓ）”）は、発明をよりよく説明することを意図するにすぎず、請求されない限り、発明の範囲を限定しようとしない。
【００８３】
本明細書で引用された、出版物、特許出願、及び特許を含む全ての参考文献は、あたかも参照により組み込まれ、その全体が本明細書に記述されるように各参考文献が個別に且つ具体的に示されたかのように、同じ範囲への参照によってこれにより組み込まれる。
【００８４】
上述された実施形態は、本発明の理解を容易にし得るために記述され、本発明を限定しない。反対に、発明は、添付の請求項の範囲に含まれる様々な変更及び同等の配置をカバーすることを意図し、該範囲は、法の下で認められる全てのそうした変更及び同等の構造を包含するように最も広い解釈に一致すべきである。
【図１】
2019518271.tif 000003
【図２】
2019518271.tif 000004
【図３】
2019518271.tif 000005
【図４】
2019518271.tif 000006
【図５】
2019518271.tif 000007
【図６】
2019518271.tif 000008
【図７】
2019518271.tif 000009
【図８】
2019518271.tif 000010
【図９】
2019518271.tif 000011
【国際調査報告】
2019518271.tif 000012
2019518271.tif 000013