(57)【要約】コンポーネント指向ハイブリッドクラウドオペレーティングシステム及びその通信方法を提供し、階層、オブジェクト及びメッセージモデルに基づきハイブリッドアーキテクチャを構築し、かつコンポーネント指向思想でコンポーネント及びそのプロセス環境を管理し、コンポーネント処理用クラスタに対して高効率ルーティング、読取り書込み分離及び負荷バランスを行い、クラウドオペレーティングシステムに対する開放性と互換性、疎結合及び拡張性の要求を満足し、既存のクラウドオペレーティングシステムの自主管理問題、コンポーネントのスケールアウト問題及び状態コンポーネントの高可用性問題を解決し、開放性と交換性、拡張性、疎結合のコンポーネント指向クラウドオペレーティングシステムアーキテクチャを完備させ、かつ通信方法によりクラウドオペレーティングシステムのスケーラビリティ及び高可用性を保障する。【選択図】図１
2015537307.tif 000002
【特許請求の範囲】
【請求項１】
コンポーネント指向ハイブリッドクラウドオペレーティングシステムであって、前記システムは、階層モデル、オブジェクトモデル及びメッセージモデルに基づいてハイブリッドアーキテクチャを構築し、かつ、構成コンポーネント及びその処理環境を管理するためにコンポーネント指向思想を適用し、これをベースに、前記システムは、コンポーネント処理用クラスタに対して高効率のルーティング、読取り書込み分離及び負荷バランスとを行い、クラウドオペレーティングシステムに対する開放性と互換性、疎結合と拡張性という要求を満足し、かつ、既存のクラウドオペレーティングシステムの自主管理問題、コンポーネントのスケールアウト問題及びステートフルコンポーネントの高可用性問題を解決し；
階層モデルの観点から、前記システムは、上から下にポータル層、論理層、アダプテーション層及び実装層に区分され、各層は相対的に独立し、各層において各々標準インタフェースを定義することによりシステムの開放性が強化され、かつ、各層に異なる機能を適応させることにより互換性が強化され；
オブジェクトモデルの観点から、前記クラウドオペレーティングシステムは、クラウドポータル、クラウド管理ポータル、クラウドリソース管理、監視管理、計量と課金、サービス承認、及び、権限と認証の各機能モジュールにより構成され、各機能モジュールは、Ｒｅｓｔメッセージベースの呼出しにより通信を行い、互いに自由に組合わされ、かつ、要求により分散され配置されることができ、要求により新規機能モジュールが付加価値として開発されることができ、かつ、プラットフォームの拡張性が論理層における異なる機能モジュール間での相互操作を実現することにより強化され；
最小形態でインストールされた前記クラウドオペレーティングシステムは、クラウドポータル、クラウド管理ポータル及びクラウドリソース管理の各機能モジュールのみにより構成され、これをベースに、監視、課金、承認又は他の機能モジュールは、要求によりカスタム化されて拡張され、Ｒｅｓｔメッセージベースの呼出しにより通信を行い、要求により分散され配置されかつ付加価値として開発され、前記システムの拡張性が論理層における異なる機能モジュール間での相互操作を実現することにより強化され、
メッセージベースの通信方法が非同期呼出しをサポートするために導入され、メッセージ通信インターフェースＪＭＳがＲｅｓｔメッセージを転送することによりシステムアーキテクチャをさらに疎結合とするために用いられ、これをベースに、コンポーネント指向設計が適用され、かつ、コンポーネント管理モジュールがコンポーネントのメタデータを管理するとともにコンポーネントの操作状態を監視することを担当し、
要求により拡張、分散及び配置を実現できるにも拘わらず、オブジェクトアーキテクチャは、ＲＰＣ（リモート・プロセス・コール）同期通信方法に属しており、送信端は、受信端からのリターンを待った後にのみ実行を継続でき、かつ、双方のプロセスが密に結合しているため、前記システムの拡大化と複雑化に伴い、コンポーネント間の連携関係が複雑過ぎるようになり、この問題に対し、オブジェクトアーキテクチャに基づいてメッセージベースの通信方法が導入され、メッセージ通信インターフェースＪＭＳを用いてＲｅｓｔメッセージを転送することにより、送信端と受信端のライフタイムを異ならせ、非同期呼出しをサポートし、かつ、前記システムアーキテクチャをさらに疎結合としており、ポータル層とクラウドリソース層の間における仮想マシンの少なくともターンオン、シャットダウン及びサスペンドの操作は、非同期方式にて実現され、ポータルが、コマンドを送信した後、応答を待つ必要がなくリターンすることができ、これにより、ユーザの相互動作効果を向上させ；
上記ハイブリッドアーキテクチャに基づく前記クラウドオペレーティングシステムは、開放性、互換性及び拡張性の要求を満足させることができ、これをベースに、コンポーネント指向設計思想に基づき、前記コンポーネント管理モジュールは、コンポーネントについてのメタデータ情報を管理することを担当し、少なくともログイン、削除、修正及びクエリの操作をサポートし、その場合、
１つのコンポーネントは、１つの三要素セットであり、ネーム、サービスセット、アクセスアドレス、及び、記述を含み；
１つのサービスは、１つの四要素セットであり、ネーム、タイプ、メッセージプロトコル、パラメタリスト、キーネーム、機能記述、及び、非機能記述を含み；
コンポーネントの記述及び管理に加えて、前記コンポーネント管理モジュールはさらに、その処理環境を監視し、コンポーネントのスケーラビリティ及び可用性を確保するための基本サービスを提供し、かつ、クラウドオペレーティングシステムの自主管理能力を完備させ、かつ、コンポーネントがログインした時、前記システムは、ユーザ名user、パスワードpsw、及び、固有のコンポーネントＩＤidを割当て、その後のコンポーネント処理用クラスタのアクセスのプロセスは、
１）処理用クラスタが、アドレスがurlであるシステムバスに対してアクセス要求を開始し、システムバスがアクセスノードのユーザ名、パスワード及びＩＤを認証し、認証が通ると、接続が確立され、そのコードは、
Connection = ConnectionFactory.createConnection(user,psw,url) であり；
２）書込み操作トピックを設定し、コンポーネントの各処理ノードが当該トピックから書込み操作をサブスクライブし、
write_topic = session.createTopic(id+"WRITE_TOPIC"); 
write_topic_consumer = session.createConsumer(write_topic);
３）コンポーネントがwriteTopicListenerのonMessage方法において書込み処理を実現し、かつシステムバスにログインし、
write_topic_consumer.setMessageListener(writeTopicListener); 
４）コンポーネントの処理ノード数mumに従って読取り操作の待ち行列セットを設定し、各処理ノードが１つの待ち行列に対応した読取り操作をサブスクライブし、
read_queue = session.createMultiQueue(num,id+"READ_QUEUE"); 
read_queue_consumer = session.createConsumer(read_queue);
５）readQueueListenerのonMessage方法において特定の読取り処理機能を実現し、かつシステムバスにログインし、
read_queue_consumer.setMessageListener(readQueueListener);
前記書込み読取り分離待ち行列セットに基づき、コンポーネント管理モジュールにおいて各コンポーネントのサービスタイプを区別し、サービスタイプを冪等又は非冪等に設定し、冪等操作はステートレス操作に属し、同一状態下で実行した結果が毎回同一であり、非冪等操作はステートフル操作に属し、同一状態下で実行した結果が毎回異なり、ルータは、サービスタイプによってルーティングを行い、非冪等操作は固有の書込み待ち行列に送信され、そして冪等操作は負荷バランスストラテジーによって別々の読取り待ち行列に送信され、
読取り操作の負荷バランスのプロセスは、
１）ノードの処理能力を計算し、
ノードiのＣＰＵクロック周波数、メモリ容量及びＩ／Ｏ帯域幅を各々Cｉ、Mｉ及びBｉとすると、クラスタの各種リソースはノードの各種リソースの総計であり、つまりC = ΣCｉ、M = ΣMｉ、B = ΣBｉであり、
ノードiのＣＰＵ重み付け値はWｉＣＰＵ = Cｉ/Cであり、メモリ容量重み付け値はWｉＲＡＭ = Mｉ/Mであり、Ｉ／Ｏ帯域幅重み付け値はWｉＩＯ = Bｉ/Bであり、
コンポーネントサービスに必要なリソース割合を、それぞれpＣＰＵ、pＲＡＭ、pＩＯとすると、ノードi の処理能力は、
Wｉ = pＣＰＵWｉＣＰＵ + pＲＡＭWｉＲＡＭ + pＩＯWｉＩＯであり、
２）書込み読取り操作の重み付け値によって各ノードの負荷を計算し、
読取り待ち行列Lｒの書込み待ち行列Lｗに対する書込み読取り操作のオーバーヘッド比率をaとすると、ノードiの負荷はLｉ = LＲｉ + aLＷであり、各ノードの負荷状態はSｉ = Lｉ/Wｉであり、
３）負荷が最も少ないノードを選択してルーティングを行い、
書込み操作をパイプライン処理で行うことにより、データ入力の効率を向上させ、そのプロセスでは、先ずノード1にデータが書き込まれ、６４KBのデータフラグメントが書き込まれた後、データを受信し続けると同時に、入力された６４KBのデータをノード2に転送し、ノード2からノードnまでは、ノードnに最後の６４KBを超えないデータフラグメントが書き込まれるまで、同じ方法でデータを受信しかつ転送し、
前記通信方法に基づいて、ノード監視モジュールはさらに、コンポーネントの処理ノードの参加、離脱、無効及び復帰というイベントを、コンポーネント管理モジュールに送信し、その場合、ノード参加イベントは、コンポーネントに処理ノードを追加することを指し、ノード離脱イベントは、コンポーネントから処理ノードを取り消すことを指し、ノード無効イベントは、コンポーネントの１つの処理ノードを使用不可とすることを指し、ノード復帰イベントは、コンポーネントの使用不可の処理ノードを復帰させて使用可とすることを指す、
コンポーネント指向ハイブリッドクラウドオペレーティングシステム。
【請求項２】
コンポーネント指向ハイブリッドクラウドオペレーティングシステムの通信方法であって、高可用性コンポーネントクラスタ通信と、スケールアウト型コンポーネンクラスタ通信とを含み、
前記高可用性コンポーネントクラスタ通信方法は、コンポーネント管理モジュールが各コンポーネントクラスタのために読取り書込み分離待ち行列セットを構築し、前記コンポーネント管理モジュールがさらにコンポーネントのサービスタイプを冪等又は非冪等に区別し、ルータがサービスタイプによってルーティングを行い、非冪等操作は固有の書込み待ち行列に送信され、冪等操作は負荷バランスストラテジーによって別々の読取り待ち行列に送信され、これをベースに、ノード監視モジュールが処理ノードの参加、離脱、無効及び復帰というイベントを前記コンポーネント管理モジュールに送信し、前記コンポーネント管理モジュールがさらに、ノードの変化イベントによって待ち行列の構造を調整し、この方法は、読取り書込みの分離及び負荷バランスによりステートフルなコンポーネントクラスタの通信性能を向上させ、ノードの変化によって待ち行列の構造を調整することによりコンポーネントの高可用性を確保し、前記コンポーネント管理モジュールはさらに、監視モジュールにより送信されたノードの変化イベントに基づいて待ち行列の構造を調整するものであり、このプロセスは、
１）ノードが参加する時、待ち行列セットにおいて当該ノードのために１つの読取り操作の待ち行列を設定し、当該ノードはその待ち行列から読取り操作をサブスクライブし、かつ当該書込みトピックから書込みトピックをサブスクライブし、
２）ノードが離脱する時、当該ノードに対応する読取り待ち行列を削除し、当該書込みトピックに対するサブスクリプションを閉じ、
３）ノードを無効化する時、当該ノードの読取り待ち行列に読取り要求を送信することを停止し、書込みトピックに当該ノードのための書込み操作を保存し、
４）ノードが復帰する時、書込みトピックにおける書込み操作を同期し、当該ノードに対応する読取り待ち行列に読取り操作の要求を送信するために復帰し、
ステートレスなクラスタの負荷バランス方法は、各ノードに対し完全な均衡方式で操作を分散するが、それはステートフル状態において処理結果の不一致をもたらすことになり、上記方法は、読取り書込み分離待ち行列を設定しかつノードの能力に関係して負荷をバランスさせることによりこの問題を回避でき、ステートフルのコンポーネントクラスタの通信性能を向上させ、さらに、ノード変化イベントによって待ち行列の構造を調整することによりステートフルのコンポーネントクラスタの高可用性を確保し、
スケールアウトしたコンポーネントにより構成されたクラスタの通信方法は、前記コンポーネント管理モジュールがノード数によってコンポーネントの各サービスのためにポリゴン形待ち行列の構造を確立し、Ｈａｓｈ値に従って二分探索によるルーティングを行い、アルゴリズムの効率は、キーワードのスケールより遙かに小さいＨａｓｈパケットの数によって決定され、ルーティングの効率を向上させ、さらに、ノード数が変化する場合、一部のノードデータ状態のみを調整すればよく、動的拡張の効率を向上させ、
上述した通信方法に基づき、初期化段階において、各ノードにより処理されるべき複数のＨａｓｈインターバルをノードの処理能力によって分割し、ルーティングテーブルを形成し、比率によるデータ状態の分散を実現し、負荷バランスを達成し、
前記コンポーネント管理モジュールは、ノード数によってコンポーネントの各サービスのためにポリゴン形待ち行列セットを設定し、各待ち行列は１つのＨａｓｈ値インターバルすなわちパケットに対応し、Ｈａｓｈ値に従って二分探索によるルーティングを行い、ルーティングアルゴリズムは、
１）キーのＨａｓｈ値hを計算し、
２）パケットの下限iを１に、パケットの上限jをパケット総数mに初期化し
３）繰返し、
４）中間パケットt = (i+j)/2を計算し、パケットtがhを含むか否かをチェックし、
５）hが現在のパケットの下限より小さい場合、上限jをj = t-1と更新し、
６）hが現在のパケットの上限より大きい場合、下限iをi = t+1と更新し、
７）それ以外の場合、インターバルが位置するノードに戻ってルーティングを行うものであり、
上述したアルゴリズムは、パケットをノードとして二分探索することに相当し、複雑度はO(log２n）であり、このアルゴリズムの効率は、パケットの数によって決定され、パケットの数がキーワードのスケールより遙かに小さいため、ルーティング効率を向上させ、加えて、パケットストラテジーが適用されるため、ノードの数が変化する場合は一部のパケットのキーワードスケール及びノードに対応するデータ状態のみを調整するだけでよく、動的拡張の効率を向上させる、
コンポーネント指向ハイブリッドクラウドオペレーティングシステムの通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウドコンピューティング分野に関し、特に、コンポーネント指向ハイブリッドクラウドオペレーティングシステムのアーキテクチャ及びその通信方法に関する。
【背景技術】
【０００２】
クラウドコンピューティングの出現に伴って、従来のデータセンタは急速にクラウドデータセンタに転換しつつある。データセンタの初期形態から発展形態への進化の４段階である、物理リソースの統合、アプリケーションと仮想化の連携、自動化管理、及び、データセンタ協調において、クラウドオペレーティングシステム（ＣＯＳ：Cloud Operating System）は重要な役割を果たしており、上位に対してはアプリケーションとのインタフェース、下位に対してはハードウェアの管理という中間機能を有し、大量の異種デバイスを、クラウドアプリケーションに動的にスケジューリングされるように論理リソースプールに融合させ、端末のためのサービスを実現する。
【０００３】
クラウドデータセンタ環境は、動的、不均質、大規模で単一ポイント、かつ容易に無効化されるという特徴を有する。従って、ＣＯＳは、広範かつ互換性のあるオープンアーキテクチャを適用する必要があり、サードパーティのソフトウェア及びハードウェアとの互換性を考慮するとともに二次的開発を考慮しつつ、完全な標準インタフェースＡＰＩを提供する必要がある。クラウドコンピューティング環境の機能に対する動的変更要求に関しては、ＣＯＳは、拡張可能なコンポーネントベースの設計を適用することが必要である。その設計とは、仮想化やリソーススケジューリング等の基本的なコンポーネントに基づいて、操作とメンテナンスの管理、計量と課金、セルフサービス等のコンポーネントの付加価値開発や、要求に応じた配置を簡便に行えるものである。加えて、ＣＯＳは、クラウドコンピューティングが追求する規模拡張とサービス持続の目的を達成するために、スケーラビリティと高可用性の設計を適用する必要もある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
クラウドデータセンタによるＣＯＳについての疎結合、拡張可能、スケーラビリティ及び高可用性の要求に関して、従来のＯＳの単一モジュールアーキテクチャを適用することは、ＣＯＳモジュール間の高効率の呼出しを実現するかもしれないが、結合が密であり、構造が複雑であり、かつシステムの拡張が難しい。階層化アーキテクチャを適用することは、各モジュール間の組織構造及び依存関係を明確として、ＣＯＳの信頼性、移植性及びメンテナンス性を向上させるかもしれないが、ソフトウェアのスタック階層が非常に深いためにカーネルが大きすぎる上、モジュール間の結合度が依然として比較的高く、分散処理環境の構築に適さない。また、上述したアーキテクチャに基づいたオープンソースソフトウェアＯｐｅｎＳｔａｃｋ及びＣｌｏｕｄＳｔａｃｋは、メッセージ待ち行列に基づく疎結合のクラウド管理アーキテクチャを構築するが、コンポーネント指向設計が欠落しており、コンポーネントのライフサイクルを制御できず、構成モジュールがそれ自体でスケーラビリティ及び高可用化方式を考慮する必要があり、このことは、それらのモジュールの開発と配置の負担及びランニングコストを増大させることになる。
【０００５】
高凝集性と疎結合性という原則に従い、コンポーネントに対する管理はＣＯＳレベルから強化すべきであり、かつ、その拡張性、スケーラビリティ及び高可用性が確保されるべきである。その場合に直面する主な問題点は、以下の通りである。
１．現在のクラウドオペレーティングシステムは、自己包含性が欠落しており、構成するコンポーネントを記述しかつ管理することができず、その処理環境を動的に監視することもできない。
２．コンポーネントに対する高可用性処理用クラスタに関して、従来の通信プロトコルは、コンポーネントのステートレスな仮定に基づいて設計され、読取り書込みの分離機構及び負荷バランスストラテジーが欠落し、かつ、ステートフルなコンポーネント処理用クラスタに対して高可用性及び高性能のサポートを実現できない。
３．コンポーネントに対するスケールアウト処理用クラスタに関して、従来のツリーベースのルーティングアルゴリズムの効率は、キーワードのスケール拡大による影響を受け、一方、Ｈａｓｈ（ハッシュ）ベースのルーティングアルゴリズムは、ノードが変化する時に大量のデータ移動をもたらすとともに、異なる機能をもつノードの負荷バランスのためのデータ分散方法が欠落している。
【０００６】
従って、ＣＯＳにおいて、コンポーネント及びその処理用クラスタに対する管理及び監視（スーパバイザ）の機構をいかにして提供するか、並びに、メッセージの高効率ルーティングと負荷バランスをいかにして実現するかは、ＣＯＳアーキテクチャにおいて早急に解決しなければならない課題となっている。
【０００７】
本発明の目的は、コンポーネント指向ハイブリッドクラウドオペレーティングシステムのアーキテクチャ及びその通信方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明の目的は以下の方法で実現される。
コンポーネント指向ハイブリッドクラウドオペレーティングシステムは、階層モデル、オブジェクトモデル及びメッセージモデルに基づいてハイブリッドアーキテクチャを構築し、かつ、構成コンポーネント及びその処理環境を管理するためにコンポーネント指向思想を適用し、これをベースに、コンポーネント処理用クラスタに対する高効率のルーティング、読取り書込み分離及び負荷バランスを行い、クラウドオペレーティングシステムに対する開放性と互換性、疎結合と拡張性という要求を満足し、かつ、既存のクラウドオペレーティングシステムの自主管理問題、コンポーネントのスケールアウト問題及びステートフルコンポーネントの高可用性問題を解決するものである。
【０００９】
階層モデルの観点から、上記システムは、上から下にポータル層、論理層、アダプテーション層及び実装層に区分され、各層は相対的に独立し、各層において標準インタフェースをそれぞれ定義することによりシステムの開放性が強化され、かつ、各層に異なる機能を適応させることにより互換性が強化される。
【００１０】
オブジェクトモデルの観点から、上記クラウドオペレーティングシステムは、クラウドポータル、クラウド管理ポータル、クラウドリソース管理、監視管理、計量と課金、サービス承認、及び、権限と認証のための複数の機能モジュールにより構成され、各機能モジュールは、Ｒｅｓｔメッセージベースの呼出しにより通信を行い、互いに自由に組合わされる。そして、要求により分散され配置されることができ、要求により新規モジュールが付加価値として開発されることができる。また、プラットフォームの拡張性は、論理層における異なるモジュール間での相互操作を実現することにより強化される。
さらに、実施形態においては、最小形態でインストールされた上記クラウドオペレーティングシステムは、クラウドポータル、クラウド管理ポータル及びクラウドリソース管理の各機能モジュールのみにより構成される。これをベースに、監視、課金、承認又は他の機能モジュールは、要求によりカスタム化されて拡張され、Ｒｅｓｔメッセージベースの呼出しにより通信を行い、要求により分散され配置されかつ付加価値として開発される。そして上記システムの拡張性は、論理層における異なる機能モジュール間での相互操作を実現することにより強化される。
メッセージベースの通信方法は、非同期呼出しをサポートするために導入され、メッセージ通信インターフェースＪＭＳがＲｅｓｔメッセージを転送することによりシステムアーキテクチャをさらに疎結合とするために用いられる。これをベースに、コンポーネント指向設計が適用され、かつ、コンポーネント管理ポータルがコンポーネントのメタデータを管理するとともにコンポーネントの操作状態を監視することを担当する。
【００１１】
要求により拡張、分散及び配置を実現できるにも拘わらず、オブジェクトアーキテクチャは、ＲＰＣ（リモート・プロセス・コール）同期通信方法に属しており、送信端は、受信端からのリターンを待った後にのみ実行を継続でき、かつ、双方のプロセスが密に結合しているため、上記システムの拡大化と複雑化に伴い、コンポーネント間の連携関係が複雑過ぎるようになる。この問題に対し、オブジェクトアーキテクチャに基づいてメッセージベースの通信方法が導入される。メッセージ通信インターフェースＪＭＳを用いてＲｅｓｔメッセージを転送することにより、送信端と受信端のライフタイムを異ならせ、非同期呼出しをサポートし、かつ、上記システムアーキテクチャをさらに疎結合としている。
そして実施形態においては、ポータル層とクラウドリソース層の間における仮想マシンのターンオン、シャットダウン、サスペンド等の操作は、非同期方式にて実現され、ポータルが、コマンドを送信した後、応答を待つ必要がなくリターンすることができる。これにより、ユーザの相互動作効果を向上させる。
【００１２】
上述したハイブリッドアーキテクチャに基づくクラウドオペレーティングシステムは、開放性、互換性及び拡張性の要求を満足させることができる。これをベースとして、コンポーネント指向設計思想に基づき、コンポーネント管理ポータルは、コンポーネントについてのメタデータ情報を管理することを担当し、ログイン、削除、修正及びクエリ等の操作をサポートする。
【００１３】
その場合、１つのコンポーネントは、１つの三要素セットであり、ネーム、サービスセット、アクセスアドレス、及び、記述を含む。
【００１４】
１つのサービスは、１つの四要素セットであり、ネーム、タイプ、メッセージプロトコル、パラメタリスト、キーネーム、機能記述、及び、非機能記述を含む。
【００１５】
コンポーネントの記述及び管理に加えて、コンポーネント管理モジュールはさらに、その処理環境を監視し、コンポーネントのスケーラビリティ及び可用性を確保するための基本サービスを提供し、かつ、クラウドオペレーティングシステムの自主管理能力を完備させる。そして、コンポーネントがログインした時、システムは、ユーザ名user、パスワードpsw、及び、固有のコンポーネントＩＤidを割当て、その後のコンポーネント処理用クラスタのアクセスのプロセスは、次の通りとなる。
【００１６】
１）処理用クラスタが、アドレスがurlであるシステムバスに対してアクセス要求を開始し、システムバスがアクセスノードのユーザ名、パスワード及びＩＤを認証し、認証が通ると、接続が確立される。そのコードは以下の通りである。
Connection = ConnectionFactory.createConnection(user,psw,url);
２）書込み操作トピックを設定し、コンポーネントの各処理ノードが当該トピックから書込み操作をサブスクライブする。
write_topic = session.createTopic(id+"WRITE_TOPIC"); 
write_topic_consumer = session.createConsumer(write_topic);
３）コンポーネントがwriteTopicListenerのonMessage方法において書込み処理を実現し、かつシステムバスにログインする。
write_topic_consumer.setMessageListener(writeTopicListener); 
４）コンポーネントの処理ノード数mumに従って読取り操作の待ち行列セットを設定し、各処理ノードが１つの待ち行列に対応した読取り操作をサブスクライブする。
read_queue = session.createMultiQueue(num,id+"READ_QUEUE"); 
read_queue_consumer = session.createConsumer(read_queue);
５）readQueueListenerのonMessage方法において特定の読取り処理機能を実現し、かつシステムバスにログインする。
read_queue_consumer.setMessageListener(readQueueListener);
【００１７】
上述した書込み読取り分離の待ち行列セットに基づき、コンポーネント管理モジュールにおいて各コンポーネントのサービスタイプを区別し、サービスタイプを冪等又は非冪等に設定する。冪等操作はステートレス操作に属し、同一状態下で実行した結果が毎回同一である。非冪等操作はステートフル操作に属し、同一状態下で実行した結果が毎回異なる。ルータは、サービスタイプによってルーティングを行い、非冪等操作は固有の書込み待ち行列に送信され、そして冪等操作は負荷バランスストラテジーによって別々の読取り待ち行列に送信される。
【００１８】
読取り操作の負荷バランスのプロセスは、以下の通りである。
１）ノードの処理能力を計算する。
ノードiのＣＰＵクロック周波数、メモリ容量及びＩ／Ｏ帯域幅を各々Cｉ、Mｉ及びBｉとすると、クラスタの各種リソースはノードの各種リソースの総計であり、つまりC = ΣCｉ、M = ΣMｉ、B = ΣBｉである。
ノードiのＣＰＵ重み付け値はWｉＣＰＵ = Cｉ/Cであり、メモリ容量重み付け値はWｉＲＡＭ = Mｉ/Mであり、Ｉ／Ｏ帯域幅重み付け値はWｉＩＯ = Bｉ/Bである。
コンポーネントサービスに必要なリソース割合を、それぞれpＣＰＵ、pＲＡＭ、pＩＯとすると、ノードi の処理能力は、
Wｉ = pＣＰＵWｉＣＰＵ + pＲＡＭWｉＲＡＭ + pＩＯWｉＩＯである。
２）書込み読取り操作の重み付け値によって各ノードの負荷を計算する。
読取り待ち行列Lｒの書込み待ち行列Lｗに対する書込み読取り操作のオーバーヘッド比率をaとすると、ノードiの負荷はLｉ = LＲｉ + aLＷであり、各ノードの負荷状態はSｉ = Lｉ/Wｉである。
３）負荷が最も少ないノードを選択してルーティングを行う。
書込み操作をパイプライン処理で行うことにより、データ入力の効率を向上させる。そのプロセスでは、先ずノード1にデータが書き込まれ、６４KBのデータフラグメントが書き込まれた後、データを受信し続けると同時に、入力された６４KBのデータをノード2に転送し、ノード2からノードnまでは、ノードnに最後の６４KBを超えないデータフラグメントが書き込まれるまで、同じ方法でデータを受信しかつ転送する。
【００１９】
上記通信方法に基づいて、ノード監視モジュールはさらに、コンポーネントの処理ノードの参加、離脱、無効及び復帰というイベントを、コンポーネント管理モジュールに送信し、その場合、ノード参加イベントは、コンポーネントに処理ノードを追加することを指す。ノード離脱イベントは、コンポーネントから処理ノードを取り消すことを指す。ノード無効イベントは、コンポーネントの１つの処理ノードを使用不可とすることを指す。ノード復帰イベントは、コンポーネントの使用不可の処理ノードを復帰させて使用可とすることを指す。
【００２０】
本発明の実施形態はまた、コンポーネント指向ハイブリッドクラウドオペレーティングシステムの通信方法を提供し、それは高可用性コンポーネントのクラスタ通信方法と、スケールアウトしたコンポーネントのクラスタ通信方法とを含む。
【００２１】
その場合、高可用性コンポーネントのクラスタ通信方法は、コンポーネント管理モジュールが各コンポーネントクラスタのために読取り書込み分離の待ち行列セットを構築し、コンポーネント管理モジュールがさらにコンポーネントのサービスタイプを冪等又は非冪等に区別し、ルータがサービスタイプによってルーティングを行い、非冪等操作は固有の書込み待ち行列に送信され、冪等操作は負荷バランスストラテジーによって別々の読取り待ち行列に送信される。そしてこれをベースに、ノード監視モジュールがコンポーネントの処理ノードの参加、離脱、無効及び復帰というイベントをコンポーネント管理モジュールに送信し、コンポーネント管理モジュールがさらに、ノードの変化イベントによって待ち行列の構造を調整する。
この方法は、読取り書込みの分離及び負荷バランスによりステートフルなコンポーネントクラスタの通信性能を向上させるとともに、ノードの変化によって待ち行列の構造を調整することによりコンポーネントの高可用性を確保する。コンポーネント管理モジュールはさらに、監視モジュールにより送信されたノードの変化イベントに基づいて待ち行列の構造を調整する。このプロセスは以下のとおりである。
【００２２】
１）ノードが参加する時、待ち行列セットにおいて当該ノードのために１つの読取り操作の待ち行列を設定し、当該ノードはその待ち行列から読取り操作をサブスクライブし、かつ当該書込みトピックから書込みトピックをサブスクライブする。
２）ノードが離脱する時、当該ノードに対応する読取り待ち行列を削除し、当該書込みトピックに対するサブスクリプションを閉じる。
３）ノードを無効化する時、当該ノードの読取り待ち行列に読取り要求を送信することを停止し、書込みトピックに当該ノードのための書込み操作を保存する。
４）ノードが復帰する時、書込みトピックにおける書込み操作を同期し、当該ノードに対応する読取り待ち行列に読取り操作の要求を送信するために復帰する。
【００２３】
ステートレスなクラスタの負荷バランス方法は、各ノードに対し完全な均衡方式で操作を分散するが、それはステートフル状態において処理結果の不一致をもたらすことになる。上記方法は、読取り書込み分離の待ち行列を設定しかつノードの能力に関係して負荷をバランスさせることによりこの問題を回避でき、ステートフルのコンポーネントクラスタの通信性能を向上させる。さらに、ノード変化イベントによって待ち行列の構造を調整することによりステートフルのコンポーネントクラスタの高可用性を確保する。
【００２４】
スケールアウトしたコンポーネントにより構成されたクラスタの通信方法は、コンポーネント管理モジュールが、ノード数によってコンポーネントの各サービスのためにポリゴン形待ち行列の構造を確立し、Ｈａｓｈ値に従って二分探索によるルーティングを行う。アルゴリズムの効率は、キーワードのスケールより遙かに小さいＨａｓｈパケットの数によって決定され、ルーティングの効率を向上させる。さらに、ノード数が変化する場合、一部のノードデータ状態のみを調整すればよく、動的拡張の効率を向上させる。
上述した通信方法に基づき、初期化段階において、各ノードにより処理されるべき複数のＨａｓｈインターバルをノードの処理能力によって分割し、ルーティングテーブルを形成し、比率によるデータ状態の分散を実現し、負荷バランスを達成する。
【００２５】
コンポーネント管理モジュールは、ノード数によってコンポーネントの各サービスのためにポリゴン形待ち行列セットを設定し、各待ち行列は１つのＨａｓｈ値インターバルすなわちパケットに対応し、Ｈａｓｈ値に従って二分探索によるルーティングを行う。ルーティングアルゴリズムは、以下の通りである。
１）キーのＨａｓｈ値hを計算する。
２）パケットの下限iを１に、パケットの上限jをパケット総数mに初期化する。
３）繰返す。
４）中間パケットt = (i+j)/2を計算し、パケットtがhを含むか否かをチェックする。
５）hが現在のパケットの下限より小さい場合、上限jをj = t-1と更新する。
６）hが現在のパケットの上限より大きい場合、下限iをi = t+1と更新する。
７）それ以外の場合、インターバルが位置するノードに戻ってルーティングを行う。
【００２６】
上述したアルゴリズムは、パケットをノードとして二分探索することに相当する。複雑度はO(log２n）である。このアルゴリズムの効率は、パケットの数によって決定される。パケットの数がキーワードのスケールより遙かに小さいため、ルーティング効率を向上させる。加えて、パケットストラテジーが適用されるため、ノードの数が変化する場合は一部のパケットのキーワードスケール及びノードに対応するデータ状態のみを調整するだけでよく、動的拡張の効率を向上させる。
【発明の効果】
【００２７】
本発明の有益な効果は以下の通りである。既存の技術に比べ、本発明で提供されたコンポーネント指向ハイブリッドアーキテクチャは、コンポーネント化されたクラウドオペレーティングシステムアーキテクチャを完全なものとする。そのクラウドオペレーティングシステムは、開放性と互換性、拡張性と疎結合、及び、スケーラビリティと高可用性を備えており、それらは、スケールアウトしたコンポーネントクラスタ及び高可用性クラスタの通信方法により確保される。
【図面の簡単な説明】
【００２８】
【図１】図１は、コンポーネント指向ハイブリッドＣＯＳアーキテクチャの構成図である。
【図１Ｃｏｎｔ．】図１Cont．（図１の続き）は、コンポーネント指向ハイブリッドＣＯＳアーキテクチャの構成図である。
【図２】図２は、ステートフルコンポーネントクラスタをサポートする高可用性通信アーキテクチャの構成図である。
【図３】図３は、読取り書込み分離待ち行列セットの構成図である。
【図４】図４は、データを書込み時のシーケンスを示す図である。
【図５】図５は、ノード状態の遷移を示す図である。
【図６】図６は、待ち行列の調整プロセスを示すフロー図である。
【図７】図７は、スケールアウトしたコンポーネント処理用クラスタの通信アーキテクチャの構成図である。
【図８】図８は、ポリゴン形待ち行列セットを備えたルーティングを示す概略構成図である。
【図９】図９は、ポリゴン形待ち行列セットを備えたルーティングアルゴリズムのプロセスを示すフロー図である。
【発明を実施するための形態】
【００２９】
図面及び実施例とともに、本発明の実施形態を以下に詳細に説明する。これにより、本発明が技術的課題を解決しかつ技術的効果を達成するためにいかにして技術手段を適用するのかについての実現プロセスを十分に理解できかつこれにより実施できる。矛盾を生じない限りにおいて、本明細書に開示に実施形態及びそれらの実施形態の多様な特徴は、いずれも開示される発明の保護範囲に含まれるものである。
【００３０】
［１］コンポーネント指向ハイブリッドクラウドオペレーティングシステムのアーキテクチャ
階層モデルの観点から、上記システムは、上から下にポータル層、論理層、アダプテーション層及び実装層に区分され、各層は相対的に独立し、各層において標準インタフェースをそれぞれ定義することによりシステムの開放性を強化し、かつ、各層に異なる機能を適応させることにより互換性を強化する。実施形態においては、ポータル層を取り除くことにより、ユーザインタフェースＵＩと機能論理の分離を実現でき、例えば、論理層が外部に対して統一標準のＲｅｓｔ  ＡＰＩを提供することによりポータルすなわちサードパーティの二次的開発をサポートする。また、論理的機能層を抽象化することにより、多様な具体的な機能実装における互換性を実現でき、例えば、クラウドリソース管理モジュールが、仮想化されたアダプタにより多様な仮想化されたインフラストラクチャをサポートする。監視管理モジュールは、アダプテーションフレームにより多様な監視プロトコルと互換性がある。プロセス管理モジュールは、プロセスエンジンにより異なる承認プロセスのカスタム化をサポートする。そして、課金管理及び権限と認証モジュールは、保存されたフックインタフェースによりプラグインアクセスをサポートする。
【００３１】
オブジェクトモデルの観点から、クラウドオペレーティングシステムは、クラウドポータル、クラウド管理ポータル、クラウドリソース管理、監視管理、計量と課金、サービス承認、権限と認証、等の機能モジュールにより構成されている。各機能コンポーネントがＲｅｓｔメッセージベースの呼出しにより通信を行い、自由に組合せることができ、要求により分散されかつ配置される。さらに、要求により新規モジュールを付加価値的に開発でき、論理層における異なるモジュール間で相互動作を実現することによりプラットフォームの拡張性を強化する。実施形態では、最小形態でインストールされたクラウドオペレーティングシステムは、クラウドポータル、クラウド管理ポータル及びクラウドリソース管理のモジュールのみから構成され、それに基づき、監視、課金、承認又は他のモジュールを、要求によりカスタム化し拡張してもよい。
【００３２】
要求により拡張、分散及び配置を実現できるにも拘わらず、オブジェクトアーキテクチャは、ＲＰＣ（リモート・プロセス・コール）同期通信方法に属しており、送信端は、受信端からの応答を待った後にのみ実行を継続することができ、かつ、双方のプロセスが密に結合しているため、システムの拡大化と複雑化に伴い、コンポーネント間の連携関係が複雑過ぎるようになる。この問題に対し、オブジェクトアーキテクチャに基づいてメッセージベースの通信方法を導入し、メッセージ通信インターフェースＪＭＳを使用してＲｅｓｔメッセージを転送することにより、送信端と受信端のライフタイムが異なっていてもよく、非同期呼出しをサポートし、かつ、システムアーキテクチャをさらに疎結合とする。実施形態において、ポータル層とクラウドリソース層の間における仮想マシンのターンオン、ターンオフ、サスペンド、ターンオフ等の操作は非同期方式により実現され、ポータルは、コマンドの送信後、応答を待つ必要がなくリターンできる。このことは、ユーザの相互動作効果を向上させる。
【００３３】
上述したハイブリッドアーキテクチャに基づくクラウドオペレーティングシステムは、開放性、互換性及び拡張性の要求を満足させることができる。これをベースとして、コンポーネント指向設計思想に基づき、コンポーネント管理ポータルは、コンポーネントについてのメタデータ情報を管理することを担当し、ログイン、削除、修正及びクエリ等の操作をサポートする。
【００３４】
この場合、１つのコンポーネントは、１つの三要素セット{ネーム、サービスセット、アクセスアドレス、記述}である。
１つのサービスは、１つの四要素セット{ネーム、タイプ、メッセージプロトコル、パラメタリスト、キーネーム、機能記述、及び、非機能記述}である。
【００３５】
コンポーネントに対する記述及び管理に加えて、コンポーネント管理モジュールはさらに、その処理環境を監視し、コンポーネントのスケーラビリティ及び可用性を確保するための基礎的サービスを提供し、クラウドオペレーティングシステムの自主管理能力を完備させる。
【００３６】
［２］高可用性コンポーネントのクラスタ通信方法
本発明による高可用性コンポーネントのクラスタの実施形態は、図２に示す通りである。これは、主に以下の各モジュールを含む。
【００３７】
コンポーネント管理モジュールは、コンポーネント情報に従って、コンポーネントのメッセージ待ち行列セットを設定し、削除し、かつ調整することを担当する。
【００３８】
メッセージルータは、ルーティング情報に従って、待ち行列セットにメッセージを分散することを担当する。
【００３９】
ノード監視モジュールは、コンポーネント処理用クラスタの各ノードの参加及び離脱を検出し、処理ノードについてのリソースコンフィギュレーション情報を獲得することを担う。
【００４０】
コンポーネント処理用クラスタは、コンポーネントの具体的なサービス機能を実現することを担当し、いくつかの処理ノードから構成されている。
【００４１】
コンポーネントクライアントは、コンポーネントサービスに対する使用要求を開始することを担当する。
【００４２】
上述したアーキテクチャに基づき、コンポーネントがログオンしたとき、システムは、コンポーネントに対してユーザ名user、パスワードpsw及び固有のコンポーネントＩＤidを割当てる。その後、コンポーネント処理用クラスタのアクセス過程は、次の通りとなる。
【００４３】
１）処理用クラスタは、アドレスがurlであるシステムバスに対してアクセス要求を開始し、システムバスがアクセスノードのユーザ名、パスワード及びＩＤを認証し、認証が通ると、接続が確立される。そのコードは以下の通りである。
Connection = ConnectionFactory.createConnection(user,psw,url);
【００４４】
２）書込み操作トピックを設定し、コンポーネントの各処理ノードが当該トピックから書込み操作をサブスクライブする。
write_topic = session.createTopic(id+"WRITE_TOPIC"); 
write_topic_consumer = session.createConsumer(write_topic);
【００４５】
３）コンポーネントがwriteTopicListenerのonMessage方法において書込み処理を実現し、かつシステムバスにログインする。
write_topic_consumer.setMessageListener(writeTopicListener); 
【００４６】
４）コンポーネントの処理ノード数mumに従って読取り操作の待ち行列セットを設定し、各処理ノードが１つの待ち行列に対応した読取り操作をサブスクライブする。
read_queue = session.createMultiQueue(num,id+"READ_QUEUE"); 
read_queue_consumer = session.createConsumer(read_queue);
【００４７】
５）readQueueListenerのonMessage方法において特定の読取り処理機能を実現し、かつシステムバスにログインする。
read_queue_consumer.setMessageListener(readQueueListener);
【００４８】
上述した書込み読取り分離待ち行列セットに基づき、コンポーネント管理モジュールにおいて各コンポーネントのサービスタイプを区別し、サービスタイプを冪等又は非冪等に設定する。冪等操作はステートレス操作に属し、同一状態下で実行した結果が毎回同一である。非冪等操作はステートフル操作に属し、同一状態下で実行した結果が毎回異なる。図３に示すように、ルータは、サービスタイプに従ってルーティングを行い、非冪等操作は固有の書込み待ち行列に送信され、そして冪等操作は負荷バランスストラテジーによって別々の読取り待ち行列に送信される。
【００４９】
その場合、読取り操作負荷バランスプロセスのフローは、次の通りである。
１）ノードの処理能力を計算する。
ノードiのＣＰＵクロック周波数、メモリ容量及びＩ／Ｏ帯域幅を各々Cｉ、Mｉ及びBｉとすると、クラスタの各種リソースはノードの各種リソースの総計である。つまりC = ΣCｉ、M = ΣMｉ、B = ΣBｉである。
そして、ノードiのＣＰＵ重み付け値はWｉＣＰＵ = Cｉ/Cであり、メモリ容量重み付け値はWｉＲＡＭ = Mｉ/Mであり、Ｉ／Ｏ帯域幅重み付け値はWｉＩＯ = Bｉ/Bである。
コンポーネントサービスに必要なリソース割合を、それぞれpＣＰＵ、pＲＡＭ、pＩＯとすると、ノードi の処理能力は、
Wｉ = pＣＰＵWｉＣＰＵ + pＲＡＭWｉＲＡＭ + pＩＯWｉＩＯである。
【００５０】
２）書込み読取り操作の重み付け値によって各ノードの負荷を計算する。
読取り待ち行列Lｒの書込み待ち行列Lｗに対する書込み読取り操作のオーバーヘッド比率をaとすると、ノードiの負荷はLｉ = LＲｉ + aLＷであり、各ノードの負荷状態はSｉ = Lｉ/Wｉである。
【００５１】
３）負荷が最も少ないノードを選択してルーティングを行う。
書込み操作をパイプライン処理で行うことにより、データ入力の効率を向上させる。図４に示すように、そのプロセスでは、先ずノード1にデータが書き込まれ、６４KBのデータフラグメントが書き込まれた後、データを受信し続けると同時に、入力された６４KBのデータをノード2に転送し、ノード2からノードnまでは、ノードnに最後の６４KBを超えないデータフラグメントが書き込まれるまで、同じ方法でデータを受信しかつ転送する。
【００５２】
上記通信方法に基づいて、ノード監視モジュールはさらに、コンポーネントの処理ノードの参加、離脱、無効及び復帰というイベントを、コンポーネント管理モジュールに送信する。ノードの状態遷移関係は、図５に示す通りである。その場合、ノード参加イベントは、コンポーネントに処理ノードを追加することを指す。ノード離脱イベントは、コンポーネントから処理ノードを取り消すことを指す。ノード無効イベントは、コンポーネントの１つの処理ノードを使用不可とすることを指す。ノード復帰イベントは、コンポーネントの使用不可の処理ノードを復帰させて使用可とすることを指す。
【００５３】
コンポーネント管理モジュールはさらに、監視モジュールにより送信されたノードの変化イベントに基づいて待ち行列の構造を調整する。このフローは図６に示す通りである。
１）ノードが参加する時、待ち行列セットにおいて当該ノードのために１つの読取り操作の待ち行列を設定し、当該ノードはその待ち行列から読取り操作をサブスクライブし、かつ当該書込みトピックから書込みトピックをサブスクライブする。
２）ノードが離脱する時、当該ノードに対応する読取り待ち行列を削除し、当該書込みトピックに対するサブスクリプションを閉じる。
３）ノードを無効化する時、当該ノードの読取り待ち行列に読取り要求を送信することを停止し、書込みトピックに当該ノードのための書込み操作を保存する。
４）ノードが復帰する時、書込みトピックにおける書込み操作を同期し、当該ノードに対応する読取り待ち行列に読取り操作の要求を送信するために復帰する。
【００５４】
ステートレスなクラスタの負荷バランス方法は、各ノードに対し完全な均衡方式で操作を分散するが、それはステートフル状態において処理結果の不一致をもたらすことになる。上記方法は、読取り書込み分離待ち行列を設定しかつノードの能力に関係して負荷をバランスさせることによりこの問題を回避でき、ステートフルのコンポーネントクラスタの通信性能を向上させる。さらに、ノード変化イベントによって待ち行列の構造を調整することによりステートフルのコンポーネントクラスタの高可用性を確保する。
【００５５】
［３］スケールアウトしたコンポーネントにより構成されたクラスタの通信方法
本発明の実施形態は、図７に示す通り、スケールアウトしたコンポーネントにより構成されたクラスタの通信方法を提供する。コンポーネント管理モジュールは、ノード数に従ってコンポーネントの各サービスのためにポリゴン形待ち行列の構造を確立する。各待ち行列は、１つのＨａｓｈ値インターバル（パケット）に対応する。そして、Ｈａｓｈ値に従って二分探索によるルーティングが行われる。ルーティングアルゴリズムは、図９に示す通りである。
【００５６】
１）キーのＨａｓｈ値hを計算する。
２）パケットの下限iを１に、パケットの上限jをパケット総数mに初期化する。
３）繰返す。
４）中間パケットt = (i+j)/2 を計算し、パケットtがhを含むか否かをチェックする。
５）hが現在のパケットの下限より小さい場合、上限jをj = t-1と更新する。
６）hが現在のパケットの上限より大きい場合、下限iをi = t+1と更新する。
７）それ以外の場合、インターバルが位置するノードに戻ってルーティングを行う。
【００５７】
上述したアルゴリズムは、パケットをノードとして二分探索することに相当する。複雑度はO(log２n）である。このアルゴリズムの効率は、パケットの数によって決定される。パケットの数がキーワードのスケールより遙かに小さいため、ルーティング効率を向上させる。加えて、パケットストラテジーが適用されるため、ノードの数が変化する場合、一部のパケットのキーワードスケール及びノードに対応するデータ状態のみを調整するだけでよく、動的拡張の効率を向上させる。
【００５８】
上記通信方法に基づき、本発明の実施形態は、データ状態の分散方法を提供する。初期化段階において、各ノードにより処理される必要のあるＨａｓｈインターバルが、ノード処理能力に従って分割される。ノード処理能力の計算方法は上述した通りである。この方法は、ノード処理能力に従って各ノードの待ち行列により処理される必要のあるＨａｓｈインターバルスケールを分割することができ、比率によってデータ状態を分散することができ、負荷バランスを達成できる。
【００５９】
本発明の他の特徴及び利点は、その後の明細書で説明されかつ一部は明細書から自明である。あるいは本発明を実行することにより理解されるであろう。本発明の目的及び他の利点は明細書、請求の範囲及び図面に示された構成により実現されかつ得ることができる。
【図１】
2015537307.tif 000003
【図１Ｃｏｎｔ．】
2015537307.tif 000004
【図２】
2015537307.tif 000005
【図３】
2015537307.tif 000006
【図４】
2015537307.tif 000007
【図５】
2015537307.tif 000008
【図６】
2015537307.tif 000009
【図７】
2015537307.tif 000010
【図８】
2015537307.tif 000011
【図９】
2015537307.tif 000012
【国際調査報告】
2015537307.tif 000013
2015537307.tif 000014
2015537307.tif 000015
2015537307.tif 000016