(58)【調査した分野】(Int.Cl.,DB名)
前記1つ以上の識別規則は、前記コンピュータネットワークの独立リソースを識別するための1つ以上の識別規則と、前記コンピュータネットワークの従属リソースを識別するための1つ以上の識別規則とを含む、請求項5に記載の媒体。
前記1つ以上の識別規則は、前記コンピュータネットワークのリソースの構成階層に関する収容規則と、前記コンピュータネットワークのホスティングするリソース及びホスティングされるリソースの有効な組み合わせに関するホスティング規則とを含む、請求項5に記載の媒体。
前記1つ以上の調整規則は、前記リソースに関する前記記録の前記データソースの最後の更新の期間に関し、且つ前記データソースが前記期間の少なくとも一部に基づいて権威があるか否かに関する1つ以上の調整規則を含む、請求項7に記載の媒体。
前記1つ以上の識別規則は、前記コンピュータネットワークの独立リソースを識別するための1つ以上の識別規則と、前記コンピュータネットワークの従属リソースを識別するための1つ以上の識別規則とを含む、請求項13に記載の方法。
前記1つ以上の識別規則は、前記コンピュータネットワークのリソースの構成階層に関する収容規則と、前記コンピュータネットワークのホスティングするリソース及びホスティングされるリソースの有効な組み合わせに関するホスティング規則とを含む、請求項13に記載の方法。
【発明を実施するための形態】
【0010】
ネットワークリソースを示すデータは、(例えば、CI記録の生成又は更新により)CMDB等のデータベース内に追加される前に識別され得る。例えば、冗長性を防止し、矛盾を減らすためには、CMDB内に重複したCI記録を含まないことが望ましいかもしれない。発見プロセス中にCIをユニークに識別する能力は、重複した記録のエントリを避けるために使用され得る。しかしながら、予め定義された単一の属性値に基づいてCIをユニークに識別できないことがあり得る。更に、CI記録に関して更新リクエストが受信されるデータソースを監視することが望ましいことがある。例えば、特定のCI属性についての情報は、その内の1つが他よりもより信頼性がある多数のソースから受信されるかもしれない。受信されたデータのどれがCI属性に対して権威があるかを判定のためのシステムなしでは、CI記録中に格納された情報は、信頼性が少ないソースからの情報で更新されるかもしれない。したがって、実装において、より高くランク付けされたソースから受信されたデータが、より低くランク付けされたソースから受信されたデータと比較して権威があるとみなされ得るように、CI属性に対するデータのソースはランク付けされ得る。実装において、後で受信されたデータと比較して権威があるとみなされたCI記録中の情報は、(例えば、後に受信されたデータがより低くランク付けされたソースからのものである場合には)更新されないであろう。しかしながら、例えば、データソースがオフラインにされているため、CI記録を更新するために権威あるデータソースがもはや使用されず又は利用可能でない場合、基礎をなす属性が実際に変化する場合であってもCI記録は不都合に更新されないことがある。
【0011】
本開示の実装は、CI記録への及びCI記録に対するネットワークリソース情報の識別及び調整のためのシステム及び方法を記述する。実装において、識別規則は、例えば、データの重複を防止するために、リソースに対する記録がコンピュータネットワークのデータソース内に格納されているか否かを判定するために使用され得る。データソースは、例えば、識別動作の手動の評価を排除するために、CMDB内にCI記録を示すデータを格納するために最近最も使用されていない(least-recently-used)ポリシーにより管理されたキャッシュであり得る。実装において、調整規則は、その他のデータソースと比較した優先度、及びリソースを更新するための最後のリクエストがデータソースから受信されてからの期間に基づいて、コンピュータネットワークのリソース(例えば、CMDB内のCI記録又はCI記録の属性)を更新するためのリクエストのデータソースがリソースに対して権威があるか否かを判定するために使用され得る。
【0012】
実装において、リソースは、基盤リソース(例えば、スイッチ、ルータ、サーバ、モデム、プロセッサ、入出力インタフェース、メモリ又はストレージ、電源、生体リーダ、媒体リーダ等のハードウェアコンポーネント)及び/又は適用リソース(例えば、プラットフォームアプリケーション、モジュール、ルーチン、ファームウェアプロセス、及び基盤リソースにより又は基盤リソースに接続して実行可能なその他の命令等のソフトウェアコンポーネント)を称し得る。リソースは、文書、モデル、計画、ソケット、仮想マシン等のコンピューティング機構をも称し得る。実装において、リソースは、該当する場合は、前述したものの物理的及び/又は仮想的実装を称し得る。本開示は、時には、例えば、リソースの幾つかの使用に対する“基盤リソース”又は“適用リソース”に特に言及するが、開示は“リソース”に単に言及するにすぎず、内容が特に示さない限り、前述のタイプのリソースの何れかを称し得る。
【0013】
幾つかの実装をより詳細に記述するために、本開示の実装に使用可能なハードウェア構造及び相互接続の例がまず言及される。
図1は、分散又はクラウドコンピューティングシステム100のブロック図である。本明細書中の句“クラウドコンピューティングシステム”の使用は、任意の形式の分散コンピューティングシステムの代用であり、この句は、単に言及を容易にするために使用される。クラウドコンピューティングシステム100は、顧客110を含む任意の数の顧客を有し得る。各顧客110は、クライアント112等のクライアントを有し得る。クライアント112の各々は、多数のコンピューティングデバイスを含むコンピューティングシステムの形式、又は例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、及びデスクトップコンピュータ等の単一のコンピューティングデバイスの形式であり得る。顧客110及びクライアント112は例示にすぎず、クラウドコンピューティングシステムは、異なる数の顧客又はクライアントを有し得、又は異なる構成の顧客又はクライアントを有し得る。例えば、数百又は数千の顧客があり得、各顧客は任意の数のクライアントを有し得る。
【0014】
クラウドコンピューティングシステム100は、データセンタ120を含む任意の数のデータセンタを含み得る。各データセンタ120は、サーバ122等のサーバを有し得る。各データセンタ120は、サーバが設置される異なる地理的位置中の設備を表し得る。サーバ122の各々は、多数のコンピューティングデバイスを含むコンピューティングシステムの形式、又は例えば、デスクトップコンピュータ、サーバコンピュータ、及び仮想マシン等の単一のコンピューティングデバイスの形式であり得る。データセンタ120及びサーバ122は例示にすぎず、クラウドコンピューティングシステムは、異なる数のデータセンタ及びサーバを有し得、又は異なる構成のデータセンタ及びサーバを有し得る。例えば、数十のデータセンタがあり得、各データセンタは数百又は任意の数のサーバを有し得る。
【0015】
クライアント112及びサーバ122はネットワーク130に接続するように構成され得る。特定の顧客に対するクライアントは、共通の接続ポイント116、又は異なる接続ポイント、例えば無線接続ポイント118及び有線接続ポイント119を介してネットワーク130に接続し得る。共通の又は異なる接続ポイントの任意の組み合わせが存在し得、有線及び無線の接続ポイントの任意の組み合わせも存在し得る。ネットワーク130は、例えばインターネットであり得る。ネットワーク130はまた、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、仮想プライベートネットワーク(VPN)、又は任意のクライアント112及びサーバ122間でデータを転送するその他の任意の手段であり得、又はそれらを含み得る。ネットワーク130、データセンタ120、及び/又は図示されないブロックは、ルータ、スイッチ、ロードバランサ及び/又はその他のネットワークデバイス等のネットワークハードウェアを含み得る。
【0016】
クラウドコンピューティングシステム100のその他の実装も可能である。例えば、図示されるクライアント及びサーバ以外のデバイスがシステム100に含まれ得る。実装では、1つ以上の付加的なサーバは、クラウド基盤のサーバ及び/又はクライアントが監視され、制御され、及び/又は構成されるクラウド基盤制御として動作し得る。例えば、本明細書に記述される技術の幾つか又は全ては、そうしたクラウド基盤制御サーバ上で動作し得る。代替的に、又は付加的に、本明細書に記述される技術の幾つか又は全ては、サーバ122等のサーバ上で動作し得る。
【0017】
図2は、
図1に示したようなコンピューティングシステム100のクライアント112又はサーバデバイス122等のコンピューティングデバイス200の内部構成の実装のブロック図であり、コンピューティングシステムの基盤制御サーバを含む。前述したように、クライアント112又はサーバ122は、多数のコンピューティングユニットを含むコンピューティングシステムの形式、又は単一のコンピューティングユニット、例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータ、及びサーバコンピュータ等の形式をとり得る。
【0018】
コンピューティングデバイス200は、
図2に説明したように、複数のコンポーネントを含み得る。CPU(又はプロセッサ)202は、マイクロプロセッサ等の中央処理装置であり得、単一の又は多数のプロセシングコアを各々有する単一の又は多数のプロセッサを含み得る。或いは、CPU202は、既存の又は今後開発される情報を操作又は処理可能な別のタイプのデバイス又は多数のデバイスを含み得る。多数の処理デバイスが存在する場合、それらは、無線でのネットワーク化を含む、ハードワイヤード化又はネットワーク化を含む任意の方法で相互接続され得る。したがって、CPU202の動作は、ローカルエリア若しくはその他のネットワークに渡って又は直接結合され得る多数のマシンに渡って分散され得る。CPU202は、汎用プロセッサ又は専用プロセッサであり得る。
【0019】
ランダムアクセスメモリ(RAM)204は、メモリとして使用される任意の適切な一時的ストレージデバイスであり得る。RAM204は、CPU202によるアクセスのための実行可能命令及びデータを含み得る。RAM204は、典型的には、DDR SDRAM等の1つ以上のDRAMを含む。或いは、RAM204は、既存の又は今後開発されるCPU202による処理のためのデータを格納可能な別のタイプのデバイス又は多数のデバイスを含み得る。CPU202は、RAM204中のデータをバス212を介してアクセス及び操作し得る。CPU202は、データ及び命令についての動作のためのローカルな高速メモリの形式としてのキャッシュ220を利用し得る。
【0020】
ストレージ206は、リードオンリーメモリ(ROM)、ディスクドライブ、ソリッドステートドライブ、フラッシュメモリ、相変化メモリ(PCM)、又はある継続期間、好ましくは電源喪失の場合にデータを維持するように設計された任意の形式の不揮発性メモリの形式であり得る。ストレージ206は、実行可能命令206Aとアプリケーションファイル/データ206Bをその他のデータと共に含み得る。実行可能命令206Aは、例えば、(RAMベースの実行可能命令204A及びアプリケーションファイル/データ204Bと共に)RAM204中に全体的又は部分的にロードするための、CPU202により実行されるオペレーションシステム及び1つ以上のアプリケーションプログラムを含み得る。実行可能命令206Aは、本明細書に記述される様々な機能を実行するように設計されたプログラム可能モジュール若しくはアルゴリズム、機能的プログラム、コード、及びコードセグメント中に組織化され得る。オペレーティングシステムは、例えば、Microsoft Windows(登録商標)、Mac OS X(登録商標)、又はLinux(登録商標)オペレーティングシステムであり得、又は、スマートフォン若しくはタブレットデバイス等の小型のデバイス、又はメインフレームコンピュータ等の大型デバイス用のオペレーティングシステムであり得る。アプリケーションプログラムは、例えば、ウェブブラウザ、ウェブサーバ、及び/又はデータベースサーバを含み得る。アプリケーションファイル206Bは、例えば、ユーザファイル、データベースカタログ、及び構成情報を含み得る。実装では、ストレージ206は、本明細書に記述される発見技術を実行するための命令を含む。ストレージ206は、1つ又は多数のデバイスを含み得、ソリッドステート又は磁気等の1つ以上のタイプのストレージを利用し得る。
【0021】
コンピューティングデバイス200は、有線通信コンポーネント又は無線通信コンポーネント290を有し得るネットワーク通信ユニット208及びインタフェース230等の1つ以上の入出力デバイスをも含み得、それらはバス212を介してCPU202に結合され得る。ネットワーク通信ユニット208は、イーサネット又はTCP/IP等のデバイス間の通信を果たすための様々な標準ネットワークプロトコルの何れかを利用し得る。インタフェース230は、イーサネット、電力線通信(PLC)、WiFi、赤外線、GPRS/GSM、CDMA等を利用する1つ以上の送受信機を含み得る。
【0022】
ユーザインタフェース210は、表示装置、(マウス、タッチパッド、又はタッチスクリーン等の)位置入力デバイス、キーボード、又はその他の形式のユーザ入出力デバイスを含み得る。ユーザインタフェース210は、バス212を介してプロセッサ202に結合され得る。ユーザがクライアント若しくはサーバをプログラムでき又は使用できるようにするその他の出力デバイスが表示装置210に加えて又は表示装置210に代えて提供され得る。出力デバイスが表示装置であるか又は表示装置を含む場合、表示装置は、OLEDディスプレイ等、液晶ディスプレイ(LCD)又は陰極線管(CRT)若しくは発光ダイオード(LED)ディスプレイによることを含む様々な方法で実装され得る。
【0023】
クライアント及びサーバ200の内部構成又はアーキテクチャのその他の実装も可能である。例えば、サーバは表示装置210を省いてもよい。RAM204又はストレージ206は、ネットワークベースのメモリ、又はクライアント若しくはサーバの動作を実行する多数のマシン中のメモリ等、多数のマシンに渡って分散され得る。単一のバスとしてここでは図示されるが、バス212は、様々なブリッジ、コントローラ、及び/又はアダプタを通じて相互に接続され得る多数のバスから構成され得る。コンピューティングデバイス200は、デバイス200自体又はデバイス200の周辺環境を監視する任意の数のセンサ及び検出器を含み得、又はそれは、GPS又はその他のタイプの位置デバイス等の位置識別ユニット260を含み得る。コンピューティングデバイス200は、ユニットが自己充足の方法で動作し得るように、電池等の電源270をも含み得る。これらは、バス212を介してCPU/プロセッサ202と通信し得る。
【0024】
図3は、高可用性処理システムの実装のブロック図である。説明される分散コンピューティングシステム300は、例えば、
図1のデータセンタ120及びネットワーク130の実装であり得る。広くは、システム300は、ロードバランサ304A〜304B及び2つのデータセンタ305、318を含む。ロードバランサ304A〜304Bは、ネットワーク130により図示された電気通信ネットワークに結合される。ロードバランサ304A〜304Bはリバースプロキシロードバランサをも含み得る。
【0025】
データセンタ305はプライマリデータベース310を含み、データセンタ318はセカンダリデータベース316を含む。データセンタ305、318は、セカンダリデータベース316がプライマリデータベース310の正確な又は実質的に正確なミラーを提供し得るような方法で動作する。ライン320は、データセンタ305と318との間の論理的境界を図的に強調するために使用される。意図されたアプリケーションに応じて、データベース310、316は、例えば、リレーショナルデータベース管理システム(RDBMS)、オブジェクトデータベース、XMLデータベース、又はフラットファイル等を使用して実装され得る。実装において、データセンタ305、318は、顧客のコンピュータネットワークのリソースにアクセスするためのクライアントリクエストを処理するための物理的ハードウェアサーバ(例えば、
図1のデータセンタ120のサーバ122)上に実装されたウェブサーバ(例えば、Apacheインスタレーション)を含む。
【0026】
実装に応じてより多数又はより少数であり得るが、各データセンタは、2つのアプリケーションノード306、308、312、314を含み得る。アプリケーションノードは、処理スレッド、仮想マシンインスタンス化、又は遠隔に位置するクライアントの代わりにプログラムを実行し、関連するデータをそうしたクライアントとネットワーク130を介して交換するデータセンタのその他のコンピューティング機構を使用して実装され得る。これらのプログラムの実行に関連して、データベース310及び316がこの役割を果たすと共に、データを格納及び検索するための機会がアプリケーションノードに対して生じる。実装において、アプリケーションノードの各々は、該アプリケーションノードと同じデータセンタに該データベースが設置されるか否かに関係なく、単一のプライマリデータベースに接続する。例えば、プライマリデータベースは読み出し/書き込みであり得、セカンダリデータベースは、プライマリデータベースからの変化をミラーリングするように読み出しのみであるように構成され得る。システム300へのリクエストは、まず、プライマリデータベースのデータセンタ中のアプリケーションノードにルーティングされ得、その他のデータセンタが続く。フェイルオーバの状況では、(プライマリデータベースになる)セカンダリデータベースをミラーリングするために以前のプライマリデータベースが切り替えられると共に、セカンダリデータベースは読み出し/書き込みになり得る。この状況では、各アプリケーションノードは、破線により示されるようにセカンダリデータベース(現プライマリデータベース)を指し示すように構成され得る。実装において、プライマリデータベース310及び/又はセカンダリデータベース316は、データベースサーバカタログ、例えば、MySQLカタログであり得る。
【0027】
上述したように、各データベース305、318は、その自身のロードバランサ304A〜304Bを有し得る。各ロードバランサは、そのデータセンタ内に設置された個別のサーバ及び処理ノードにトラフィックを向けるように構成され得る。プロキシサービスに関して、一実施形態では、ロードバランサ304A〜304Bは、ネットワーク130を介した遠隔のクライアントへの単一のインターネット配信サービスを提供するように構成され、ここで、このサービスは、データセンタ305、318のコンピュータ化されたサーバから構成されるサーバファームにより現に提供される。コンポーネント304A〜304Bはまた、遠隔のクライアントからデータセンタ305、318へのリクエストを調整し、データセンタの内部構成をマスキングすることによってクライアントアクセスを簡易化する。コンポーネント304A〜304Bは、直接又はDNSを介して構成されるようにクライアントを処理ノードへ向けることによってこれらの機能をサービスし得る。ロードバランサ304A〜304Bはスティッキーセッション用に構成され得る。スティッキーセッションと共に、クライアントからのリクエストは、クライアントセッションの期間中、同じアプリケーションノード306、308へ転送され得る。
【0028】
負荷分散に関して、コンポーネント304A〜304Bは、フェイラーとして予め定義された多数の列挙された条件の内の1つをプライマリデータセンタ305が経験した場合にセカンダリデータセンタにトラフィックを向けるように構成され得る。コンポーネント304A〜304Bの負荷分散機能は、別個のコンポーネントとして又は単一のコンポーネントとして提供され得る。
【0029】
分散コンピューティングシステム300は、マルチテナントな又はシングルテナントなアーキテクチャを使用してコンピュータネットワークのリソースを配分し得る。マルチテナントなアーキテクチャの下では、アプリケーション、データベース及び/又はその他のアプリケーションサーバのインスタレーション又はインスタンス化は、多数の顧客の間で共有され得る。例えば、ウェブサーバ(例えば、単一のApacheインスタレーション)、アプリケーションサーバ(例えば、単一のJava仮想マシン)、及び/又は単一のデータベースサーバカタログ(例えば、単一のMySQLカタログ)は、多数の顧客からのリクエストを処理し得る。このアーキテクチャの実装において、アプリケーション及び/又はデータベースサーバソフトウェアは、システムを使用して様々な顧客のデータとその他の情報とを区別し得、分離し得る。
【0030】
シングルテナントな基盤では、別個のウェブサーバ、アプリケーションサーバ、及び/又はデータベースサーバが顧客インスタンス毎に供給され得る。実装では、各顧客は、その専用のウェブサーバにアクセスし、その専用のアプリケーションサーバを使用して処理されたそのトランザクションを有し、その専用のデータベースサーバ及び又はカタログ中に格納されたそのデータを有するであろう。物理的ハードウェアサーバは、ウェブ、アプリケーション、及び/又はデータベースサーバの多数のインスタレーション又はインスタンス化が同じ物理的サーバ上にインストールされ得るように共有され得る。各インスタレーションは、RAM、ストレージ、及びCPUサイクル等の物理的サーバリソースのある一定部分に配分され得る。
【0031】
実装において、顧客インスタンスは、多数のウェブサーバインスタンス、多数のアプリケーションサーバインスタンス、及び多数のデータベースサーバインスタンスを含む。サーバインスタンスは、異なる物理的サーバ上に設置され得、異なる物理的サーバのリソースを、他の顧客インスタンスと関連付けられた複数のその他のサーバインスタンスと共有し得る。所定のクラウドコンピューティングシステムでは、顧客インスタンスの異なる実装が異なる顧客インスタンスに対して同時に使用され得る。顧客インスタンスのその他の構成及び実装も使用され得る。例えば、実装において、ウェブサーバ及びアプリケーションサーバの機能は、(多数のユニットが存在し得る内の)単一のユニットとして扱われ、各ユニットは個別の物理的サーバ上にインストールされる。
【0032】
開示の幾つかの動作上の側面は、
図4〜
図7を参照しながらここで記述される。
図4は、コンピュータネットワーク内のネットワークリソースを示すデータを処理するための実装に使用されるシステム400の図である。ネットワークリソースの識別及び調整を含む処理は、コンピュータネットワークのネットワークリソース(例えば、CI)の記録が追加されたデータベース(例えば、CMDB)を含む(例えば、
図3のアプリケーションノード306、308及びデータベース310等のアプリケーションノード及びデータベースを介して実装された)クラウドコンピューティングインスタンスを実行するサーバによって実行され得る。実装において、識別及び調整の機能は、識別規則、調整規則、又は重複排除タスク等により支持され得る。一般的に、実装において、識別は、CMDB中にCIが既に存在するか否か、又はそれがCMDBに追加しなければならない新たに発見されたCIであるか否かを判定するためにCIをユニークに識別する処理を称し得、調整は、指定された権威あるデータソースがCIテーブル及び属性レベルでCMDBに書き込みできるようにすることによりCI及びCI属性を調整する処理を称し得る。実装において、CMDBは、(例えば、CMDBに対して実行される挿入及び更新動作を使用して)記録が処理されるのと同時に更新され得る。実装において、識別及び調整動作のためのCMDB(及びセカンダリデータベース又はデータウェアハウス)外のステージング領域の必要性は、例えば、CMDBの記録に頻繁に使用される格納用のキャッシュと関連して使用可能な識別規則と、データソースの権威を示すための調整規則との使用を通じて除去され得る。実装において、多数のデータソースが異なるCIを同時に更新できるようにするために楽観的ロックが使用され得る。CIを更新するための、楽観的ロック等の同時制御を使用するための実装が
図7を参照しながら以下で論じられる。
【0033】
実装において、CMDB内にCIを追加するために使用されるデータは、例えば、発見プロセス中にデータソース405から受信され得る。実装において、データソース405は、コンピュータネットワークのネットワークリソースの条件(例えば、ネットワークの存在、ネットワーク内の接続関係、リソースの状態又は属性、配備されたサービス環境内の含有物等)を示すデータを通信し得る。実装において、データソース405により通信される条件は、ネットワークリソースの動作に関するネットワークリソースの物理的条件であり得る。例えば、物理的条件は、サーバコンピュータのCPUの温度、ハードウェアデバイス上のアプリケーションの設置状態、ルータ、スイッチ、若しくはその他のネットワークデバイスを通じたネットワーク接続の損失等であり得る。実装において、任意の数のデータソース405は、例えば、データがCMDB425に入力する前に、データソース405から受信されたデータを処理するためにAPIレイヤ410と通信し得る。データソース405は、例えば、データ、例えば、カンマ区切り値(CSV)を含むデータ、水平な発見ルーチンの性能に応じて生成されたデータ、コンテクストな発見ルーチンの性能に応じて生成されたデータ、コンピューティングネットワークの外側のシステム(例えば、第三者のシステム)により又は該システム上で実行される発見プロセスの性能に応じて生成されたデータ、又はコンピュータネットワークへの入力として手動で入力されたデータ等を通信するためのマシン(例えば、適用リソース、又は適用リソース上で動作する基盤リソース)を含み得る。実装において、データソース405は、データを更新するためのリクエストがそれから受信される前に、又はそれから受信された更新リクエストがシステム400により処理され得る前に、システム400に登録され得る。
【0034】
実装において、APIレイヤ410は、CMDB425内にデータが格納されるか否か、及びどのように格納されるかを判定するための識別モジュール415及び調整モジュール420による処理のためにデータソース405から受信されたデータとインタフェースで接続する。そうだとして、実装において、例えば、APIレイヤ410により実装される識別及び調整APIは、データソース405から受信されたデータがCMDB中に格納される前に、識別及び調整の規則を実施するために利用され得る。例えば、発見ルーチン(例えば、コンピューティングネットワーク基盤のリソース上の水平又はコンテクストな発見を実行するための命令)は、例えば、CMDB425中の適用可能なCIを識別するために使用可能なCI間の関係性を示すためのビジネスメタデータ規則を適用する識別APIを呼び出し得る。
【0035】
実装において、識別モジュール415は、例えば、ネットワークリソースに対する記録がコンピュータネットワーク内に既に存在するか否かを検出し、存在しない場合には、例えばCMDB425内に記録を生成することによってネットワークリソースを識別するための命令を含み得る。CI等のネットワークリソース情報の識別のための実装は、
図5に関して以下で論じられる。実装において、調整モジュール420は、ネットワークリソースを調整する、例えば、データが受信されるデータソース(例えば、データソース405)がリソースに対して権威があるか否かに基づいてネットワークリソースに対する記録を更新又は生成するための命令を含み得る。CI等のネットワークリソース情報の調整のための実装は、
図6に関して以下で論じられる。一般的に、そして実装において、識別モジュール415は、不適切な又は重複したデータがCMDB425内に格納されることを防ぐために使用され得、調整モジュール420は、データに対して権威がないデータソースによりCMDB425内のデータが更新されることを防ぐために使用され得る。
【0036】
実装において、識別及び調整プロセス中にインスタンスが重複したCIに遭遇した場合、それは、CIに対するデータを更新又は生成しなくてもよい。代わりに、インスタンスは、重複したCIのセットを再調査のために重複排除タスク中にグループ化し得る。重複排除タスクは、それらが解決されるまで重複したCIを追跡するために利用され得る。重複排除タスクは、全ての重複したCIと識別プロセス中に使用された内部ペイロードとのリストを含む、重複についての細部を提供し得る。タスク中の重複した各CIとCIが重複することを判定するために使用されたデータとの細部の再調査が実行され得る。重複したCIが従属CIである場合、その後、従属関係及び任意の関連する修飾子チェーンの細部が調査され得る。従属CIがルックアップテーブルを有する場合、その後、個別のルックアップテーブルの細部が調査され得る。
【0037】
重複したCIのセットの処理は、システム性能及びセット中の重複したCIの数に依存し得る。実装において、セット中の重複したCIの構成可能数が少ない(例えば、デフォルトにより5)場合、その後、識別プロセスは、重複したCIの1つを整合する記録として選び取り得、それを更新し得る。セット中に5つ以上の重複したCIがある場合、その後、識別プロセスは、エラーを報告し得、該CIを更新又は挿入しなくてもよい。何れの場合にも、重複排除タスクが作り出され得る。
【0038】
実装において、CMDB425は、コンピューティングシステム100等のコンピューティングネットワークのネットワークリソースの記録を示すデータ(例えば、CI)を含む構成管理データベースである。実装において、CMDB425は、ネットワークリソースの記録の間の関係性を示すデータをも含み得る。例えば、該データは、CMDB425のCI間の従属性を示し得、該従属性は、
図5に関して以下で論じられるように、識別プロセス中にCIをユニークに識別するために使用され得る。
【0039】
図5は、ネットワークリソースの識別の実装に使用されるソフトウェアコンポーネントのブロック
図500である。実装において、ネットワークリソースの識別に使用されるコンポーネントは、
図4の識別モジュール415中に含まれる。実装において、ネットワークリソース、例えばCIを示すデータは、データソース(例えば、
図4のデータソース405)から受信され得、識別APIを通じて処理され得、識別APIは、CIデータがCMDB中に格納される前に識別を実施するために使用され得る。識別APIは、例えば、データソースがデータをCMDBへ直接通信することを防ぐことによって、データの整合性を保持しCMDBに矛盾が導かれないようにするために使用され得る。実装において、識別APIは、
図4のAPIレイヤ410の一部として含まれる。
【0040】
幾つかのリソース(例えば、ハードウェアリソース)に対するCIは、CIの属性値に基づいて識別され得る。例えば、サーバコンピュータのMACアドレス及びIPアドレスは、該ハードウェアリソースをユニークに識別する。実装において、それらの属性値に基づき識別され得るCIは、独立CIと称され得る。しかしながら、その他のタイプのCIは、単にそれらの属性値によるだけでなく、CMDB中のその他のCIとのそれらの関係性によってもユニークに識別され得る。例えば、インストールされた文書処理ソフトウェアのコピー等、ソフトウェアリソースをユニークに識別するために、ソフトウェアがインストールされるハードウェアリソースが考慮に入れられ得る。別の例として、Tomcat等のアプリケーションサーバは、そのインストールディレクトリとそれがホスティングされるハードウェアリソース(例えば、サーバコンピュータ)とに基づいてユニークに識別され得る。実装において、CMDB中のその他のCIとのそれらの関係性に基づいて識別され得るCIは、従属CIと称され得る。
【0041】
実装において、例えば、データソース(例えば、
図4のデータソース405)から受信されたデータがCMDB内に新たなCIを生成するために使用される場合、該CIがCMDB中に既に存在するか否かがまず判定されるべきである。データソースを含む通信マシンにより実行される様々な動作(例えば、発見プロセス)は、データが処理のために提示される前にCIの異なる側面にアクセスし得るので、CIのユニーク性を判定するためには属性の異なる組み合わせが考慮されなければならない。処理のために(例えば、CMDB内に生成されたCIの記録を有するために)新たなCIが提示される場合、該処理を実行するシステムは、例えば、提示されたCIの属性を、様々な識別規則により考慮される属性の組み合わせと比較することによって、CIがCMDB中に既にあるか否か判定するための識別規則のリストを通じて実行し得る。例えば、ハードウェアタイプの新たなCIを提示された場合、システムは、該ハードウェアに対応する規則のセットをCIの属性に順次適用し得、シリアル番号、IPアドレス、MACアドレス、ハードウェアリソースの名前等の、各規則に関連付けられたテーブルに対して属性を示す値を使用してデータベースのクエリを実行し得る。クエリに応答して、整合するCIがデータベース中に見つかった場合、提示されたCIは新しくないと判定され得、それ故、該CIに対する記録はCMDB内に生成されないが、整合するCIが見つからない場合、システムはCMDB内にCIを生成し得る。
【0042】
識別エンジン505は、例えば、識別規則を使用して、様々なタイプのCIをユニークに識別するように構成されたモジュール又はルーチンのセットであり得る。実装において、識別規則は、CIをユニークに識別する属性を特定する1つ以上の識別エントリを含み得る。これらの識別規則は、CIのクラスに適用し得、異なる優先度を有する1つ以上の識別エントリを含み得る。各識別エントリは、特定の優先度を有するユニークな属性セットを定義し得る。最高の優先度を最強の識別エントリに与える強力な識別規則が作り出され得る。実装において、CMDB中の各テーブルは、1つ以上の識別規則と関連付けられ得る。
【0043】
識別プロセス及び識別規則は、CI、それ故対応するネットワークリソースをユニークに識別するために使用され得るCIの標準属性値の指定されたセットであるユニーク属性等の、様々な属性を利用し得る。ユニーク属性は、同じテーブル又は派生するテーブルからのものであり得る。従属CIを識別するためのステップは、独立CIを識別するためのステップとは異なり得る。これは、従属CIに対する識別規則と独立CIに対する識別規則との違いに反映され得る。
【0044】
実装において、独立識別規則は、例えば、ハードウェアリソースのMACアドレス及びIPアドレスに基づいて独立CIを識別するための規則であり得る。実装において、識別規則は、探索(lookup)ベースの識別アプローチを使用するようにも構成され得る。探索ベースの識別は、属性に対する値のセットを有する所定のCIに対する属性テーブルを参照し得る。例えば、仮想サーバのCIがシリアル番号の属性のセットとネットワークアダプタの属性のセットとを有する場合、CIの識別は、該CIに対するシリアル番号テーブル及びネットワークアダプタテーブル中の値を探索することにより行われ得る。
【0045】
実装において、従属識別規則は、従属CIに関するCIをまず識別することによって従属CIを識別するための規則であり得る。CIは、1つ以上のCIへの従属性を有し得る。従属CIは親CIへの従属性を有し得、その親CIは別のCIへの従属性を有し得る。CIとその従属CIとの関係性タイプは、識別プロセス内でも使用され得る。従属CIの識別プロセスの支援のために、CMDB規則のメタデータは、例えば、ビスネスサービスのコンテクスト中に、CIタイプ及び関係性タイプの従属構造を定義することを追加し得る。実装において、CMDB規則のメタデータはメタデータキャッシュ515内に格納され得る。実装において、メタデータキャッシュ515は、例えば、識別エンジン505により使用される識別規則が変化する度にリフレッシュされ得る。実装において、従属CI(例えば、データソースから受信されたデータ)の識別のために使用されるペイロードは、修飾子チェーンとの関係性を含み得る。そうした関係性に対して、整合する親/子ペアがある場合、システムは、ペイロード中の修飾子チェーンをデータベース中のCIの修飾子チェーンと比較し得る。違いがある場合、データベース中の修飾子チェーンは、その関係性に対するペイロード中の修飾子チェーンと整合させるために更新され得る。
【0046】
実装において、従属CIは、典型的には他のどのCIが従属CIをホスティングするか、さもなければ収容する(contain)かを、別のCIのコンテクストで識別され得る。例えば、所定のサービス内で使用される数千のWARファイルがあり得るので、それ自身によるWARファイルはユニークではない。しかしながら、各個別のWARファイルのユニーク性は、それがホスティング又は配備されるコンテクストに依存するので、アプリケーションサーバXによりホスティングされる又はアプリケーションサーバXに配備されるWARファイルは、アプリケーションサーバYによりホスティングされる又はアプリケーションサーバYに配備されるWARファイルと比較してユニークであり得る。実装において、データソースから受信されたデータは、CIに対する従属性についてのコンテクストな情報を含み得る。
【0047】
(例えば、識別エンジン505により使用され、メタデータキャッシュ515内にCMDB規則のメタデータとして格納される)識別規則により定義される従属性は、従属CIを識別する場合に使用され得る。この情報は、CIの識別の順序を定義し、且つペイロード中のCIと個別の従属CIとを整合することを補助し得る。新たなCIタイプが定義された後、新たなCIタイプがCMDB中の既存のタイプとどのように関係するかを特定するメタデータ規則が定義される。CMDB規則のメタデータは、2つのCIタイプ間の関係性タイプを記述するホスティング規則及び収容(containment)規則を含み得る。規則の各セットは、CIの異なる観点からのデータをモデル化し得る。実装において、収容規則は、CIの構成階層を表し得、各収容規則は、その他のどのCIが所定のCIにより収容されるかを記述する。例えば、収容規則は、Tomcat CIがWARファイルCIを収容することを示すために使用され得る。実装において、ホスティング規則は、ビジネス定義中のCIの配置を表し得、各ホスティング規則は、CIに対応するリソースが実行するリソースを記述する。例えば、ホスティング規則は、ソフトウェアリソースCIがハードウェアリソースCI上で実行することを示すために使用され得る。ホスティング規則中に及び収容規則中に同じ関係性タイプが使用され得る。関係性が使用されるコンテクストは、収容規則とホスティング規則とを区別するために利用され得、インスタンス上で作動されているプラグインは、どのホスティング及び収容の規則がデフォルトにより利用可能であるかを判定するために利用され得る。
【0048】
ホスティング規則は、サービス定義においてホスティングするCIとホスティングされるCIとのペアに対する有効な組み合わせを表すために使用され得る。実装において、ホスティング規則は、1レベルの深さであり得る規則の平坦なセットであり得、リソース、典型的には物理的又は仮想的なハードウェアに対して作り出され得る。各ホスティング規則は、2つのCIタイプの間の独立型の規則であり得、サービス定義においてそれがホスティングし得又はホスティングされ得るCIタイプと別の有効なCIタイプとの間の関係性を特定し得る。ホスティング規則は、親CIタイプ、関係性タイプ、及び子CIタイプを含み得る。例えば、ホスティング規則は、特定のアプリケーションタイプが特定のハードウェアタイプ上で実行することを特定し得る。CIが多数のリソース(Windows及びLinux等)上にホスティングされる場合、それがホスティングされ得る各リソースを有するCIに対して別個のホスティング規則が作り出され得る。
【0049】
CIの識別中、関連性があるCIのペアは、少なくとも1つのホスティング規則を一般的に充足し得る。ホスティング規則はCMDB中に格納され得る。ホスティング規則は、CIに対応するネットワークリソースを何の上で実行するかを記述するために使用され得る。ホスティング規則は、ビジネス発見プロセス中に従属CIを正確に識別することを補助し得る。発見ルーチンは、ビジネスメタデータ規則を適用する識別APIを呼び出し得る。
【0050】
一群の収容規則は、CIタイプに対する収容階層を表し得る。各規則は、サービス定義にそれが含み得る又は含まれ得るCIタイプと別の有効なCIタイプとの間の関係性を特定し得る。該規則は、グループの最高レベル(ルート)の親であるCIタイプと、収容規則グループ中で相互に繋がれ得る。収容規則は、例えば、サーバ上で実行するソフトウェアを記述するために、論理的コンセプトとして見なされ得、論理的CIを表し得る。データがCIタイプ中に流れる又はCIタイプから流れることを指定するために、該CIタイプに対する規則にエンドポイントが追加され得る。エンドポイントの後に子規則が追加されるべきではない。収容規則はCMDB中に格納され得る。収容規則は、所定のCIによりどのCIが収容されるかを記述するために使用され得る。収容規則は、ビジネス発見プロセス中に従属CIを正しく識別するのを補助するために使用され得る。
【0051】
識別プロセスが計算的でデータ集約型であるとすると、例えば、性能を向上し、識別プロセスに対して必要なデータベースクエリの数を削減するために、CI、CIの関係性、及び/又は識別規則を示すデータを格納及び維持するために1つ以上のキャッシュが使用され得る。実装において、CMDBキャッシュ510は、頻繁に使用されるCIとそれらに関連付けられた関係性をキャッシングするための(例えば、LRUエージングポリシーにより管理された)最近最も使用されていない(LRU)キャッシュであり得る。例えば、識別APIを使用して処理されているデータに応じて、識別エンジン505は、処理されるデータと関連付けられた全てのCIの記録を検索するためにCMDBキャッシュ510と通信し得る。実装において、識別エンジン505が検索リクエストを通信する時にCMDBキャッシュ510内にCIが存在しない場合、CMDBキャッシュ510は、(例えば、最も長い期間、識別エンジン505又はCMDBにより使用されていないCIを示すデータを削除することによって)そのLRUポリシーの下でデータを排除し得る。データの排除に応じて、CMDBキャッシュ510は、リクエストされたCIデータをCMDBから検索し得、該データを含むためにそれ自身をリフレッシュし得る。実装において、CI間の関係性が変化(例えば、追加、除去、又は修正)される場合、CMDBキャッシュ510は、例えば、データを削除しその位置に新たなデータを追加することに代えて、その中に格納されたデータをリフレッシュし得る。例えば、変化を示すデータは、(例えば、変化に基づいてCMDBを再構築するための命令を使用して)CMDBキャッシュ510に渡ってブロードキャストされ得、それは、その他のCIへのその他の変化をもたらし得る。CMDBキャッシュ510中に格納されたCIの状態は、もたらされたCIの変化に基づいて、該当する場合はその後更新され得る。
【0052】
CI及びそれらの関係性を識別するための識別エンジン505と関連付けられてその他のキャッシュが使用され得る。実装において、識別エンジン505は、メタデータキャッシュ515と通信し得、それは、上で論じられたように、CI及びそれらの関係性を識別するために使用される識別規則を示すデータを格納し得る。メタデータキャッシュ515は、変化している格納された識別規則データの何れかへの変化に応じてリフレッシュし得る。識別エンジン505は、それ故、CIをユニークに識別し、それに応じたCMDBの更新のために所定のCIがユニークであるか重複するかを判定するために、CMDBキャッシュ510及びメタデータキャッシュ515の両方を使用し得る。
【0053】
識別モジュール415による動作の性能に応じて、処理されているデータは、調整モジュール420に通信され得る。
図6は、ネットワークリソース調整の実装に使用されるソフトウェアコンポーネントのブロック
図600である。実装において、ネットワークリソース調整のために使用されるコンポーネントは、
図4の調整モジュール420中に含まれる。実装において、調整のために処理されるデータは、調整APIを通じて処理され得、調整APIは、CIデータがCMDB中に格納される前に調整を実施するために使用され得る。調整APIは、例えば、データソースがCMDBに直接データを通信することを防ぐことによって、CMDB内のデータの整合性を保持するために使用され得る。実装において、調整APIは、
図4のAPIレイヤ410の一部として含まれ得る。実装において、
図5に関して上で論じた調整API及び識別APIは、APIレイヤ410を含む単一のAPI内に含まれ得る。
【0054】
調整エンジン605は、例えば、調整規則を使用して、様々なタイプのCI又はCI属性を更新するための(例えば、データソース405から受信された)リクエストを処理するように構成されたモジュール又はルーチンのセットであり得る。実装において、調整規則は、所定のCI又はCI属性を更新するためにデータが使用され得るその他のデータソースと比較してデータソースの信頼性(優先度又は権威とも称される)を定義し得る。前述したことにもかかわらず、権威があるデータソースの品質は、該データソースから受信されたデータが必ず正しく、正確であり、信頼され、信頼性があり、又は真であるという意味では必ずしもないことを理解すべきである。むしろ、権威があるデータソースの品質は、データを更新する目的のために該データソースがその他のデータソースよりも権威がある(信頼性がある、又は優先度が高い)とみなされることを意味する。
【0055】
実装において、調整規則610は、どのデータソースがCI又はCI属性のセットを更新できるかを特定し得、それらは、親及び子のレベルで定義され得る。調整規則は、属性を更新するための権威があるデータソース毎に提供され得、属性の同じセットに対して多数の調整規則が存在し得る。調整規則は、データソースが所定のテーブルに対して更新するための権威があるとの属性を特定し得、権威がないデータソースが属性の値を上書きすることを防止し得る。CMDB中の同じCI又は同じCI属性を更新するための権威が多数のデータソースにある場合、それらが互いの更新を上書きするのを防ぐために多数のデータソースの各々に優先度が割り当てられ得る。この方法では、最も高い優先度を有するデータソースは、その他のデータソースがCIを更新できないようにCIに対して権威があり得る。実装において、CI属性がそれと関連付けられた値を有しない場合には、属性値を生成又は更新するために任意のデータソースが使用され得る。実装において、権威があるデータソースのCIへのマッピングを示すデータは、権威マッピングデータストア615中に格納され得る。実装において、権威マッピングデータストア615は、調整規則610の変化と共に更新されるテーブルであり得る。(例えば、データに対して最高の優先度を有し、それ故データに対して最も権威があるために)データソースが所定のデータに対して権威があるとの判定に応じて、調整エンジン605は、CMDB425と関連付けて処理するために、データを更新するためのリクエストを指示し得る。実装において、更新リクエストを処理することは、CMDB内のCIを更新するためにCIの特性にデータをコミットすることを含み得る。
【0056】
例えば、CIは、属性A、B、C、D、及びEを有し、ここで、データソース1は属性A、B、Cに対して優先度10を有し得、データソース2は属性D及びEに対して優先度20を有し得、ここで、優先度10は、優先度20よりも高く、それ故、より権威がある。データを処理するシステムが属性Aを更新するためのデータソース1からのリクエストを受信した場合、データソース1は属性Aに対して権威があるデータソースであるので該更新は処理される。しかしながら、属性Cを更新するためのデータソース2からのリクエストが受信された場合、システムは、データソース2は属性Cに対して権威があるデータソースではないと判定し得、該更新を処理し得ない。別に、属性Eを更新するためのリクエストがデータソース3から受信された場合、システムは、属性Eに対して権威があるデータソースがないと判定し得、該更新を処理し得、該処理は、属性Eに対して権威があるデータソースをデータソース3にすることを含み得る。更に、調整規則610は階層的であり得る。例えば、システムにおいて、CIタイプ“Linuxサーバ”は、タイプ“サーバ”であるCIのハードウェアタイプとして定義され得る。LinuxサーバCIに対するCI属性を更新するためのリクエストがデータソースから受信された場合、何れのデータソースもCIタイプLinuxサーバに対する権威がないが、その後、該リクエストは、例えば、CIタイプ“サーバ”に対して権威があるデータソースを使用して、階層の親レベルで処理され得る。
【0057】
しかしながら、実装において、データソースがCI又はCI属性に対して権威があるか否かを判定するために、CI又はCI属性へのデータソースの最後の更新の時期も使用され得る。実装において、調整規則610は、CI又はCIの属性に対してその他のデータソースと比較したデータソースの優先度だけでなく、例えば、データソースがデータに渡って最高の優先度を有する制限期間を定義することによって、データソースが権威を存続する期間をも定義する。実装において、この定義された期間は老化期間と称され得る。例えば、(例えば、データソースが廃止され、偶発的に終了し、電源が遮断される等されているために)データソースが老化期間内に権威がある何れのCI又はCI属性を更新していない場合、調整エンジン605は、権威の優先度を異なるデータソースに譲渡し得る。この方法では、調整エンジン605は、古いデータソースをデータに対する残余の権威から排除し得る。実装において、権威の優先度を譲渡することは、対応するデータを更新するための後続のリクエストを古いデータソースが通信するまで古いデータソースを無視することを意味し得る。実装において、権威の優先度を譲渡することは、属性に対する優先度を古いデータソースから除去することを意味し得る。
【0058】
老化期間を定義するための代替的実装も利用可能である。実装において、老化期間は、データソースがデータに渡って権威を存続する、日数等の特定期間を示す絶対的老化調整規則を使用して定義され得る。例えば、調整規則は、データソース1は10日間、CIタイプ“サーバ”に渡って権威を有することを提供し得る。“サーバ”CIに対するデータを更新するためのリクエストがデータソース1から受信される前に10日の期間が満了した場合、その後、別のデータソースはCIタイプ“サーバ”に対する権威があり得、又はデータソース1よりもデータに対する低い優先度を有する別のデータソースから受信されたデータを更新するためのリクエストは、例えば、データソース1のより高い優先度が無視されるのに起因して処理され得る。実装において、老化期間は、第2のデータソースと比較してデータに渡る権威が第1のデータソースに存続する期間を示す相対的老化調整規則を使用して定義され得る。例えば、データソース1が10日の期間内に更新リクエストを通信せず、データソース2が相対的老化調整規則で示された場合、その後、権威の優先度はデータソース1からデータソース2へ切り替えられ得る。実装において、老化期間は、例えば、権威時間を判定するために、CIに関するデータソースの信頼性を別のデータソースの信頼性と比較する比較ベースの老化調整規則を使用して定義され得る。例えば、現在時刻とデータソース1からの最後の更新時刻との差が、データソース1に対する老化期間の満了と、データソース1及び2の優先度の差との積よりも大きい場合、その後、データソース2から受信された更新リクエストが処理される。
【0059】
図7は、ネットワークリソースの識別及び調整の実装に使用される同時実行制御の
図700である。同時実行制御は、処理のために異なるCIを対象とする多数のデータソースを使用してCMDBの一部を同時に更新する能力を称し得る。実装において、同時実行制御の形式として楽観的ロックが使用され得、ここで、幾つかのCIは、現在の更新が処理される後まで、それらのCIに影響を及ぼすその他の更新が生じないようにロックされ得る。この方法での同時実行制御の使用は、別のステージング領域を必要とすることなく、更新がCMDB内でインラインにされ得るようにする。
【0060】
楽観的ロックを使用するための実装において、CIのグラフ及びCI間の関係性が入力として取られる。グラフは、CMDB(例えば、CMDB425)の全て又は一部の表示を含み得る。実装において、例えば、キャッシュ(例えば、CMDBキャッシュ510)に関して識別プロセスが生じた場合、グラフは、キャッシュ内に格納されたCIのセットの表示を含み得る。一貫性を保つため、しかしながら利用可能な実装を制限することなく、
図7の論考においてグラフを更に参照してCMDBに言及する。CMDB内のCIは、(例えば、識別規則を使用して判定された)CMDBにより又はCMDB中に示された関係性に基づいて独立CI又は従属CIに分類され得る。CIがそれらの従属性(又はその欠如)に基づいて分類された後、例えば、更新される(例えば、データソース405等のデータソースから受信された更新リクエスト内に示される)CIがCMDB内に既に存在するか否かを判定するために識別プロセスが実行され得る。実装において、更新されるCIが識別された後、識別プロセスは、CI(及び該当する場合はCMDB中のその他のCI)が更新の結果としてどのように変化するかを判定するために更新を前処理することを含み得る。実装において、前処理は、更新リクエストの処理中に変化されるCIの特性を判定するために、データソースから受信された更新リクエストをパースすることを含み得る。
【0061】
実装において、CIが識別され、更新が前処理された後、同時実行制御プロセスは、独立CIとして分類された全てのCIがCMDB内に既に存在するか否かをまず判定し得る。独立CIに対するCIがCMDB内に存在しない場合、CIは、悲観的ロックプロセスの一部として追加され得る。実装において、CMDB中に存在しない独立CIは、多数のデータソースが並行して動作することにより追加され得、それ故、悲観的ロックは、独立CIが追加される後までその他の何れの変化が生じることを防止するために、CMDBの全てのCI上にグローバルロックを置き得る。該ロックは、独立CIがCMDBに追加されると解除され得る。実装において、悲観的ロックプロセスは、(例えば、前処理から判定されると共に)作り出される又は更新されるCIへのインターリーブされた又は介在する変化を回避するためにCMDBの全て又は一部にグローバルロックを置くことを含む。
【0062】
実装において、CMDB中に全ての独立CIが存在すると一度判定されると、楽観的ロックプロセスは、例えば、CIに対するシステム識別子に基づいて、更新されるCIが従属する独立CIをロックし得る。実装において、記録毎に1つのロックが使用され得る。実装において、ロックは、記録に変化がなされ得るか否かを示すためのビット又はフラグであり得る。実装において、更新される従属CIは、その親CI上のロックによって保護され得、それは、ロックされる従属CIの必要性をも省き得る。
【0063】
実装において、識別プロセスが完了してからなされたCMDBへの幾つかの変化が検出され得る。例えば、独立CIに対するカウンタが変化した場合、別のデータソースが、介在する更新をなしたと判定し得、それは、更新されるデータが、もはやそれが識別された時と同じ状態にはないことを示し得る。実装において、独立CIに対するカウンタは、識別のために使用される1つ以上のCIの識別及びロックに近接する時間間隔内にCMDBに、介在する変化がなされたことを判定するために使用され得る。例えば、時間間隔は、CMDBの識別に近接する開始時間と、1つ以上の独立CIのロックに近接する終了時間とを含み得る。例えば、カウンタは、CMDBの識別に近接する時間の前、後、又はその時の独立CIの第1の状態と、ロックに近接する時間の前、後、又はその時の独立CIの第2の状態とを示し得る。この方法では、CMDBになされた変化は、識別、前処理、及び楽観的ロックのプロセスに渡って判定され得る。介在する変化が検出された場合、更新をコミットすることなくロックは独立CIから解除され得、更新されているデータが最新であることを確認するために、識別プロセス(及び識別プロセスの一部として含まれない限りにおいて、前処理)が繰り返され得る。例えば、介在する変化は、楽観的ロックに対して入力したグラフが異なる方法で再構築されるように、CMDB中のCI間の1つ以上の関係性を変化させている。しかしながら、(例えば、独立CIに対する最初及び現在の値が同じであるため)識別プロセスが完了してからCMDBに何ら変化がなされていないと再確認が示す場合、その後、データソースから受信された更新リクエストは、例えば、対応するネットワークリソース属性を更新するために、対応するCIにコミットされ得る。
【0064】
図700は、CMDB内で識別される6つのCIのグラフを示し、ここで、CI6は、独立CIを表し、CI1、2、3、4、及び5は従属CIを各々表す。例えば、独立CI6は、13のカウンタ値を有するLinuxサーバを表し得、従属CI4及び5は、CI6のLinuxサーバ上にホスティングされた(例えば、異なるマイクロサービスを容易にするような)異なるTomcatウェブサーバを表し得、従属CI1及び2はCI4のTomcat上で実行する異なるJavaウェブアプリケーションに対するウェブアプリケーションアーカイバ(WAR)ファイルを表し得、従属CI3は、CI5のTomcat上で実行するJavaウェブアプリケーションに対するWARファイルを表し得る。データソース1から受信されたLinuxサーバCI6の特性を更新するための第1の更新リクエストと、データソース2から受信されたTomcat CI5の特性を更新するための第2の更新リクエストとに基づいて同時更新が処理され得る。例えば、第1の更新リクエストは、LinuxサーバCI6上にインストールされる新たなオペレーティングシステム又はオペレーティングシステムパッチを示し得、第2の更新は、Tomcat CI5により使用される新たなポートを示し得る。第1の更新リクエストがCI6の特性を変化させ、第2の更新リクエストがCI5の特性を変化させることを判定するために、識別されたCI1〜CI6上で更新リクエスト毎の前処理が行われ得る。
【0065】
単一の独立CI(LinuxサーバCI6)が両更新リクエストを処理するために使用されるため、第1及び第2の更新リクエストは並列して処理できない。そうだとして、第1の更新リクエストは、その従属CI(例えば、第2の更新リクエストによって更新されるであろうCI5)に対する同時更新が第1の更新リクエストが完了する後まで処理されることを防ぐために、LinuxサーバCI6をロックし得る。LinuxサーバCI6にロックが置かれた後、そのカウンタは、CIが識別された時に読み出された同じ値がCMDB内のCIに対する現在のカウンタに依然として反映されているか否か判定するために再確認にされ得る。例えば、LinuxサーバCI6が識別された後であるがそれがロックされる前に、異なるデータソースから受信された第3の更新リクエストが処理された場合、LinuxサーバCI6に対するカウンタは、該CIが識別された時とは個なる値を反映し得る。LinuxサーバCI6が識別された時に読み出されたカウンタ値が現在反映されているカウンタ値と一致する場合、例えば、Linuxサーバのオペレーティングシステムを更新するために、第1の更新リクエストはLinuxサーバCI6にコミットされ得る。第1の更新リクエストが一度完了すると、第2の更新リクエストが処理され得るようにCI6上のロックは解除され得る。
【0066】
開示の更なる実装は
図8及び
図9を参照しながらここで記述される。本明細書に開示される実施形態と関連して記述される任意の方法、プロセス、又はアルゴリズムのステップ又は動作は、ハードウェア、ファームウェア、ハードウェアにより実行されるソフトウェア、回路、又はこれらの組み合わせで直接具体化され得る。広くは、
図8の方法800及び
図9の方法900は、
図1のコンピューティングシステム等のクラウドコンピューティングシステム中のネットワークリソースの識別及び調整のために夫々使用される。実装において、方法800及び/又は方法900は、
図1、
図2、及び
図3の装置等のマシン及びハードウェアを使用して実行され得る。実装において、方法800及び/又は方法900は、例えば、Javascript、C、又はその他のそうした命令のマシン可読のプログラムにより実行され得る。本開示の実装は上述の多数の機構を含み得る。
【0067】
説明を簡単にするために、方法800及び900は、一連の動作として図示及び記述される。しかしながら、本開示に従った動作は、様々な順序で及び/又は同時に生じ得る。また、本開示に従った動作は、本明細書に提示及び記述されないその他の動作と共に生じ得る。更に、開示された主題に従った方法を実装するために、説明される全ての動作が必要であるとは限られなくてもよい。
【0068】
図8は、ネットワークリソースの識別のための方法800の実装を示すフローチャートである。方法800は動作805で開始し、ここで、データソースからデータが受信され、該データはコンピュータネットワークのリソースに関する。実装では、データソースは、例えば、発見動作の性能に応じてデータを生成又はデータを受信するデータソースであり得、該データソースは、リソースに関して権威があり得、又は優先度を有し得る。実装において、リソースは、CMDBのCIと関連付けられ得、ここで、リソースの属性は、CIの特性と関連付けられ得る。
【0069】
実装において、動作805でのデータの受信に応答して、方法800は動作810に続き得、ここで、例えば、リソースの記録と関連付けられた従属関係に基づいて、リソースの記録がキャッシュ内に格納されているか否かが判定され得る。実装において、動作810は、最近最も使用されていない(least-recently-used)キャッシュ内に格納されたCIのリストを検索することと、収容及び/又はホスティングメタデータ規則を使用して、動作805で受信されたデータと関連付けられたCIに対する記録がキャッシュデータ内に既に含まれるか否かを判定することとを含み得る。例えば、識別規則は、CMDB内で対応するCIとCIの親又は子との1つ以上の従属性に基づいてCIが格納されるCMDB内の位置を示すために使用され得る。
【0070】
実装において、CIがキャッシュ内に格納されていないとの判定に応答して、従属関係データに基づいてキャッシュ内にCIが生成され得る。例えば、キャッシュと通信するCMDBに由来し得る、動作810で使用される従属関係データは、例えば、CMDB内で対応するCIを適用可能な親及び/又は子と関連付けるためのCIデータを生成するために使用され得る。実装において、CIがキャッシュ内に格納されている場合、CIは動作805で受信されたデータに基づいて更新され得る。実装において、キャッシュ内のCIを更新することは、CMDB内の対応するCIを更新することを含み得る。
【0071】
図9は、ネットワークリソースの調整のための方法900の実装を示すフローチャートである。方法900は動作905で開始し、ここで、方法800の動作805と同様に、データソースからデータが受信され、該データはコンピュータネットワークのリソースに関する。実装において、データソースは、例えば、発見動作の性能に応じてデータを生成し又はデータを受信するデータソースであり得、そのデータソースは、リソースに関して権威があり得、又は優先度を有し得る。実装において、データは、ネットワークリソースの属性に関連し得る。
【0072】
実装において、動作905でのデータの受信に応答して、方法900は動作910に続き得、ここで、例えば、データに関するデータソースの優先度とデータが受信された時間とに基づいて、動作905でデータが受信されたデータソースがリソースに対して権威があるか否かが判定され得る。例えば、調整規則は、登録されたその他の何れかのデータソースが該データソースよりも高い優先度を有するか否かを判定することによって、該データソースがリソースに対して権威があるか否かを判定するために使用され得る。優先度に基づいてデータソースがリソースに対して権威があると判定される場合、データソースがリソースに対する権威を存続する老化期間が、リソースを更新するための最後のリクエストがデータソースから受信されてから経過したか否かを判定し得る。
【0073】
実装において、データが受信されたデータソースがリソースに渡って権威があり、通信マシンが権威を存続する老化期間が経過していないとの判定に応答して、コンピュータネットワーク内のリソースの属性(例えば、CMDB内のCIの対応する特性)が動作905で受信されたデータに基づいて更新され得る。
【0074】
本明細書で記述される発明の全て又は一部の側面は、実行される場合に、本明細書に記述された個別の技術、アルゴリズム、及び/又は命令の何れかを実施するコンピュータプログラムを備えた一般用途コンピュータ/プロセッサを使用して実装され得る。付加的に又は代替的に、例えば、本明細書に記述された技術、アルゴリズム、又は命令の何れかを実施するための専用ハードウェアを含み得る特定用途コンピュータ/プロセッサが利用され得る。
【0075】
本明細書に記述されるようなコンピューティングデバイス(並びにその上に格納され及び/又はそれにより実行されるアルゴリズム、方法、命令等)の実装は、ハードウェア、ソフトウェア、又はそれらの任意の組み合わせで実現され得る。ハードウェアは、例えば、コンピュータ、知的財産(IP)コア、特定用途向け集積回路(ASIC)、プログラム可能ロジックアレイ、光プロセッサ、プログラム可能ロジックコントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタルシグナルプロセッサ、又は任意のその他の適切な回路を含み得る。請求項において、用語“プロセッサ”は、単独で又は組み合わせで、前述したハードウェアの何れかを包含するものとして理解されるべきである。
【0076】
例えば、1つ以上のコンピューティングデバイスは、本明細書で記述又は請求される1つ以上の動作又は複数の動作を実行するための特定目的のプロセッサとして構成されたフィールドプログラマブルゲートアレイ(FPGA)等のASIC又はプログラム可能ロジックアレイを含み得る。例示的FPGAは、FPGAに幾つかの機能を実行させるために個々に構成され及び/又は構成可能に相互接続され得るロジックブロック及びランダムアクセスメモリ(RAM)ブロックの一群を含み得る。幾つかのFPGAは、その他の一般又は特定目的ブロックをも含み得る。例示的FPGAは、VHSICハードウェア記述言語又はVerilog等のハードウェア記述言語(HDL)設計に基づきプログラムされ得る。
【0077】
本明細書の実施形態は、機能的ブロックコンポーネント及び様々な処理動作の観点で記述され得る。そうした機能的ブロックは、特定の機能を実行する任意の数のハードウェア及び/又はソフトウェアコンポーネントにより実現され得る。例えば、記述された実施形態は、1つ以上のマイクロプロセッサ又はその他の制御デバイスの制御の下で様々な機能を実施し得る、例えば、メモリ素子、処理素子、ロジック素子、及びルックアップテーブル等の様々な集積回路コンポーネントを用い得る。同様に、記述された実施形態の要素がソフトウェアプログラミング又はソフトウェア要素を使用して実装される場合、発明は、データ構造、オブジェクト、プロセス、ルーチン、又はその他のプログラミング要素の任意の組み合わせを用いて様々なアルゴリズムが実装されると共に、C、C++,Java、又はアセンブラ等の任意のプログラミング又はスクリプト言語を用いて実装され得る。機能的側面は、1つ以上のプロセッサ上で実行するアルゴリズムで実装され得る。更に、発明の実施形態は、電子機器構成、信号処理及び/又は制御、並びにデータ処理等に対する任意の数の従来技術を用い得る。用語“マシン”及び“要素(element)”は、広く非制限的に、機械的又は物理的実施形態に使用されるが、プロセッサ等と併せてソフトウェアルーチンを含み得る。
【0078】
上記の開示の実装又は実装の一部は、例えば、コンピュータ使用可能な又はコンピュータ可読の媒体からアクセス可能なコンピュータプログラム製品の形式をとり得る。コンピュータ使用可能な又はコンピュータ可読の媒体は、例えば、任意のプロセッサにより又は任意のプロセッサと接続して使用するためのプログラム又はデータを明白に含み得、格納し得、通信し得、又は搬送し得る任意のデバイスであり得る。該媒体は、例えば、電子、磁気、光学、電磁気、又は半導体デバイスであり得る。その他の適切な媒体も利用可能である。そうしたコンピュータ使用可能な又はコンピュータ可読の媒体は、非一時的メモリ又は媒体と称され得、RAM、又は時間と共に変化し得るその他の揮発性メモリ若しくはストレージデバイスを含み得る。本明細書に記述される装置のメモリは、別段の定めがない限り、装置により物理的に含まれなくてもよいが、装置により遠隔的にアクセスできるものであり、装置により物理的に含まれ得るその他のメモリと接触しなくてもよい。
【0079】
用語“例”は、例、実例、又は説明として提供される意味として本明細書で使用される。“例”として本明細書に記述される側面又は設計は、その他の側面又は設計に比べて好ましい又は有利であると必ずしも解釈されない。むしろ、用語“例”の使用は、具体的な様式の概念を提示することを意図する。この出願で使用されるように、用語“又は”は排他的な“又は”よりもむしろ包含的な“又は”を意味することを意図する。すなわち、別段の定めがない限り、又は文脈から明確でない限り、“XがA又はBを含む”は、自然の包含的な順列の何れかを意味することを意図する。言い換えれば、XがAを含むか、XがBを含むか、XがA及びBの両方を含む場合、“XがA又はBを含む”は前述の実例の何れかの下で満たされる。また、この出願及び添付の請求項で使用される冠詞“1つ(a)”及び“1つ(an)”は、単数形に向けられるべき別段の定めがない限り又は単数形に向けられることが文脈から明らかでない限り、“1つ以上”を意味すると一般的に解釈されるべきである。更に、全体を通した用語“実装”又は“一実装”の使用は、そうした記述がない限り同じ実施形態又は実装を意味することを意図しない。
【0080】
本明細書に示される又は記述される特定の実装は、発明の実例であり、何れかの方法で発明の範囲を限定することを意図しない。簡潔にするために、従来の電子機器、制御システム、ソフトウェア開発、及びシステムのその他の機能的側面(及びシステムの個別の動作コンポーネントのコンポーネント)は詳細には記述されないことがある。更に、提示された様々な図中に示された接続線又はコネクタは、様々な要素間の例示的な機能的関係及び/又は物理的若しくは論理的結合を表すことを意図する。多くの代替的又は追加的な機能的関係、物理的接続、又は論理的接続が実用デバイス中に存在し得る。更に、“不可欠な”又は“重要な”ものとして要素が特に記述されない限り、発明の実用にアイテム又はコンポーネントは何ら不可欠ではない。
【0081】
本明細書中の“含む(including)”、“含む(comprising)”、又は“有する(having)”並びにそれらの変形は、それらの後に羅列されたアイテム及びその均等物と共に追加のアイテムを包含する。別段の定め又は制限がない限り、用語“実装された(mounted)”、“接続された(connected)”、“支持された(supported)”、及び“結合された(coupled)”、並びにそれらの変形は、広く使用され、直接的及び間接的な実装、接続、支持、及び結合の両方を包含する。更に、“接続された”及び“結合された”は、物理的又は機械的な接続又は結合に限定されない。
【0082】
発明を記述する文脈での(特に、以下の請求項の文脈での)用語“a”、“an”、及び“the”の使用は、単数及び複数の両方をカバーするものと解釈されるべきである。更に、本明細書の値の範囲の列挙は、本明細書に別段示されない限り、範囲に入る別個の各値を個別に参照する短縮方法として役立つことを意図するにすぎず、別個の各値は、あたかも本明細書で個別に引用されたかのように明細書中に組み込まれる。最後に、本明細書に記述された全ての方法の動作は、本明細書に別段示されない限り、又は文脈に明らかに反しない限り、任意の適切な順序で実行可能である。本明細書で提供される一切の例又は例示的言語(例えば、“等(such as)”)は、発明をよりよく説明することを意図するにすぎず、請求されない限り、発明の範囲を限定しようとしない。
【0083】
本明細書で引用された、出版物、特許出願、及び特許を含む全ての参考文献は、あたかも参照により組み込まれ、その全体が本明細書に記述されるように各参考文献が個別に且つ具体的に示されたかのように、同じ範囲への参照によってこれにより組み込まれる。
【0084】
上述された実施形態は、本発明の理解を容易にし得るために記述され、本発明を限定しない。反対に、発明は、添付の請求項の範囲に含まれる様々な変更及び同等の配置をカバーすることを意図し、該範囲は、法の下で認められる全てのそうした変更及び同等の構造を包含するように最も広い解釈に一致すべきである。