(57)【要約】【課題】  異なる処理環境に応じて動的に耐障害性に関する設定を変更可能な高信頼メッセージ通信システムを提供することを目的とする。【解決手段】  高信頼メッセージ通信システム１０の通信サブシステム１２は、ネットワークリンク、インターネットプロトコルおよびトランスポートプロトコルのそれぞれに関し、異なるリンクもしくはプロトコルに対応した通信処理を実行可能な構成要素を含んでいる。また、信頼性サブシステム１４は、メッセージの履歴の記録処理、障害の検出処理、前記障害の外部装置への通知処理および前記障害からの回復処理をそれぞれ実行可能な構成要素を含んでいる。制御モジュール１６は、アプリケーション１８から入力される入力変数群に基づき、通信サブシステム１２および信頼性サブシステム１４の構成および各構成要素の設定を動的に変更する。【選択図】      図１
2004192642.tif 000002
【特許請求の範囲】
【請求項１】
複数のネットワークリンク、複数のインターネットプロトコルおよび複数のトランスポートプロトコルのうち、少なくとも１つを用いて通信網を介したメッセージの通信処理を行うための構成を備え、当該構成を変更可能な通信サブシステムと、
前記メッセージの履歴の記録処理、障害の検出処理、前記通信網を介した前記障害の外部装置への通知処理および前記障害からの回復処理の少なくとも１の処理を行うための構成を備え、当該構成を変更可能な信頼性サブシステムと、
１以上の入力変数に基づき、前記通信サブシステムおよび前記信頼性サブシステムの構成を変更する制御モジュールと
を備えることを特徴とするメッセージ通信システム。
【請求項２】
制御モジュール、通信サブシステムおよび信頼性サブシステムを有するメッセージ通信システムにおいて、
前記制御モジュールが、１以上の入力変数に基づき、前記信頼性サブシステムに含まれる、メッセージの履歴の記録処理を行う構成要素、障害の検出処理を行う構成要素、通信網を介した前記障害の外部装置への通知処理を行う構成要素および前記障害からの回復処理を行う構成要素の組み合わせのうち、前記メッセージ通信システムにおいて使用する構成要素の組み合わせを選択する選択処理と、
前記制御モジュールが、前記通信サブシステムに含まれる、複数のネットワークリンク、複数のインターネットプロトコルおよび複数のトランスポートプロトコルのうち、少なくとも１つを用いて前記通信網を介したメッセージの通信処理を行うための構成要素と、前記信頼性サブシステムに含まれる、前記選択処理において選択された構成要素の組み合わせとを含む実行用プログラムを生成する生成処理と、
前記制御モジュールが、前記実行用プログラムに含まれる構成要素の設定を行う設定処理と、
前記制御モジュールが、１以上の入力変数に基づき、前記実行用プログラムに含まれる構成要素の間のメッセージの通信経路を決定する決定処理と
を備えることを特徴とするメッセージ通信システムの設定変更方法。
【請求項３】
コンピュータに、データリンク層における接続制御を実行させるプログラムであるデータリンク層モジュールと、前記コンピュータにネットワーク層における接続制御を実行させるプログラムであるネットワーク層モジュールと、前記コンピュータにトランスポート層のおける接続制御を実行させるプログラムであるトランスポート層モジュールとを含む通信サブシステムと、
前記コンピュータに、通信網を介して通信されるメッセージの履歴の記録を行わせるプログラムである履歴管理モジュールと、前記コンピュータに、前記通信網を介したメッセージの通信に関する障害の検出を行わせるプログラムである障害検出モジュールと、前記コンピュータに、前記前記通信網を介したメッセージの通信に関する障害の発生を外部装置へ通知させるプログラムである通知管理モジュールと、前記コンピュータに、前記通信網を介したメッセージの通信に関する障害からの回復処理を行わせるプログラムである回復管理モジュールとを含む信頼性サブシステムと、
を備え、
前記コンピュータに、
外部から入力される１以上の入力変数に基づき、前記信頼性サブシステムに含まれる前記履歴管理モジュール、前記障害検出モジュール、前記通知管理モジュールおよび前記回復管理モジュールの組み合わせのうち、１の組み合わせを選択する選択処理と、
前記通信サブシステムに含まれる前記データリンク層モジュール、前記ネットワーク層モジュールおよび前記トランスポート層モジュールと、前記信頼性サブシステムに含まれる前記履歴管理モジュール、前記障害検出モジュール、前記通知管理モジュールおよび前記回復管理モジュールのうち、前記選択処理において選択された組み合わせに含まれるものとを含む実行用プログラムであるインスタンスを生成する生成処理と、
を実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、耐障害性の高い情報処理システムに関し、より具体的には、動的に設定を変更することにより、耐障害性のレベルを調整可能な信頼性の高い情報処理システムに関する。
【背景技術】
【０００２】
アプリケーションプログラム（以下、「アプリケーション」と呼ぶ）に従った処理が失敗なく完了するためには、情報処理システムに含まれる重要な構成要素のいずれにも障害が発生しないことが必要である。分散情報処理システムに含まれる重要な構成要素としては、例えば、アプリケーションに含まれる処理手順そのもの、それらの処理手順に従った処理を実行する装置、すなわち、クライアント装置（以下、「クライアント」と呼ぶ）やサーバ装置（以下、「サーバ」と呼ぶ）等、そしてそれら装置間で利用される通信手順等が挙げられる。しかしながら、これらの構成要素のいずれも、処理の実行中に障害を発生させる可能性を有している。そのような障害には、ユーザにとって、単に不便さを感じさせるだけの軽微なものから、甚大な経済的損失をもたらす深刻なものまで様々な程度のものがある。従って、それぞれのユーザの視点に立ったシステムの信頼性の向上が望まれている。ここで、信頼性とは、処理を停止することなく継続的に運転することができる、というシステムの属性のことをいう。全ての構成要素から障害を完全に取り除くことは不可能であるため、それぞれのユーザの視点に立ってシステムの信頼性を高めるには、それらの障害をユーザに意識させない仕組みを構築する必要がある。そのような、障害があっても処理を停止することなくユーザに対しサービスの提供を継続するシステムの能力のことを、耐障害性と呼ぶ。
【０００３】
メッセージ通信システムは、分散情報処理システムにおいて、高い信頼性を要求されるアプリケーション、例えばWebサービス、RPC（Remote Procedure Call）、電子商取引における取引手続等の処理において、特に重要な役割を果たしている通信の仕組みである。メッセージ通信システムにおいては、アプリケーションは、アプリケーションごとに特定される配信規則、例えば最大１回、最低１回、もしくはちょうど１回、といった規則に従いメッセージの受け渡しを行うことにより、他のアプリケーションとの間でデータ通信を行う。
【０００４】
以下、耐障害性を備えたメッセージ通信システムとは、たとえクライアントおよびサーバ等の装置やネットワークに障害があっても、特定の配信規則に従い、メッセージを確実に配信することを保証するシステムをいい、そのような耐障害性を備えたメッセージ通信システムを「高信頼メッセージ通信システム」と呼ぶ。高信頼メッセージ通信システムを実現するためには、メッセージ通信システムに、様々な種類の障害に関する対障害性を備えさせる必要がある。すなわち、高信頼メッセージ通信システムは、異なる種類の障害を検出し、それぞれの障害を修復するための異なる耐障害性の仕組みを備えている必要がある。ところで、高信頼性メッセージ通信システムは、非同期処理、すなわちネットワークを介したメッセージの送受信を任意のタイミングで実行可能な処理方式を採用してもよい。端末間の直接的なメッセージ通信、待ち行列サーバ等の中央処理装置を介したメッセージ通信のいずれであっても、非同期処理によれば、たとえいずれかの装置が一時的に利用不可能となっても互いに接続された装置間で通信を行うことができる。
【０００５】
一般的にシステムは、何らかの冗長性を備えることにより耐障害性を実現する。例えば、システムは、アプリケーションの状態を示すデータを定期的に不揮発性記憶装置に記憶することにより、アプリケーションに障害が発生した場合に、そのアプリケーションの修復を可能とする。調査によれば、耐障害性のレベル、すなわちシステムがどの程度の確率で障害から回復可能か、またシステムがどの程度の迅速さで障害から回復可能であるか、とうことと、システムが障害なく処理を行っている際のパフォーマンスとの間には、明らかなトレードオフの関係があることが知られている。このトレードオフの関係は、耐障害性の仕組みに応じて、それを実現するために要するメッセージの履歴の記録処理、障害の検出処理、障害からの回復処理等の処理の負荷がそれぞれ異なる結果、生ずるものである。従って、高信頼メッセージ通信システムにどの程度の耐障害性とパフォーマンスを備えさせるかは、アプリケーションにより自由に変化させることが望ましい。また、耐障害性とパフォーマンスのバランスは、必要に応じて、同じアプリケーションの実行中に変更可能とし、かつアプリケーションごとに異ならせることが望ましい。
【０００６】
さらに、高信頼メッセージ通信システムは、非常に高い異質性を持つネットワーク、すなわち、様々な種類のアプリケーション、サービス、装置等が混在するネットワーク環境において処理を実行可能であることが要求される。例えば、無線ネットワーク環境においては、通信に利用されるネットワーク自体が変化したり、ネットワークの状態が変化したりする。すなわち、利用されるネットワークによっては、頻繁に接続の切断が生じたり、データ転送速度が送信と受信で異なったり、予想困難なデータ転送の遅れや損失が発生したりする。さらに、無線ネットワーク環境において、実行されるアプリケーションに応じて実現されるサービスの性質が異なり、その結果、信頼性や耐障害性に関し要求される内容も様々に異なる。また、無線ネットワーク環境には、通常、異なる処理能力、許容負荷量、記憶容量およびバッテリー持続時間等を有する異質な装置が含まれている。
【０００７】
従来、分散情報処理システムにおいて広く採用されてきた高信頼メッセージ通信システムは、主として静的な高信頼メッセージ通信システムであった。そのような静的な高信頼メッセージ通信システムは、異質な要素を含むネットワーク環境において様々な変化に対応することが不可能である。すなわち、既存の高信頼メッセージ通信システムは、例えば異質な無線ネットワーク環境等において用いられるように最適化のなされていない固定的なトランスポート層の通信プロトコル、例えばTCP(Transport Control Protocol)等を用いているので、そのような環境で高い耐障害性を実現するには一定の限界があった。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上述した状況に鑑み、異なる処理環境に応じて動的に耐障害性に関する設定を変更可能な、改善された高信頼メッセージ通信システムを提供することを目的としている。
【課題を解決するための手段】
【０００９】
上述した課題を実現するため、本発明は、複数のネットワークリンク、複数のインターネットプロトコルおよび複数のトランスポートプロトコルのうち、少なくとも１つを用いて通信網を介したメッセージの通信処理を行うための構成を備え、当該構成を変更可能な通信サブシステムと、前記メッセージの履歴の記録処理、障害の検出処理、前記通信網を介した前記障害の外部装置への通知処理および前記障害からの回復処理の少なくとも１の処理を行うための構成を備え、当該構成を変更可能な信頼性サブシステムと、１以上の入力変数に基づき、前記通信サブシステムおよび前記信頼性サブシステムの構成を変更する制御モジュールとを備えることを特徴とするメッセージ通信システムを提供する。
【００１０】
また、本発明は、制御モジュール、通信サブシステムおよび信頼性サブシステムを有するメッセージ通信システムにおいて、前記制御モジュールが、１以上の入力変数に基づき、前記信頼性サブシステムに含まれる、メッセージの履歴の記録処理を行う構成要素、障害の検出処理を行う構成要素、通信網を介した前記障害の外部装置への通知処理を行う構成要素および前記障害からの回復処理を行う構成要素の組み合わせのうち、前記メッセージ通信システムにおいて使用する構成要素の組み合わせを選択する選択処理と、前記制御モジュールが、前記通信サブシステムに含まれる、複数のネットワークリンク、複数のインターネットプロトコルおよび複数のトランスポートプロトコルのうち、少なくとも１つを用いて前記通信網を介したメッセージの通信処理を行うための構成要素と、前記信頼性サブシステムに含まれる、前記選択処理において選択された構成要素の組み合わせとを含む実行用プログラムを生成する生成処理と、前記制御モジュールが、前記実行用プログラムに含まれる構成要素の設定を行う設定処理と、前記制御モジュールが、１以上の入力変数に基づき、前記実行用プログラムに含まれる構成要素の間のメッセージの通信経路を決定する決定処理とを備えることを特徴とするメッセージ通信システムの設定変更方法を提供する。
【００１１】
さらに、本発明は、コンピュータに、データリンク層における接続制御を実行させるプログラムであるデータリンク層モジュールと、前記コンピュータにネットワーク層における接続制御を実行させるプログラムであるネットワーク層モジュールと、前記コンピュータにトランスポート層のおける接続制御を実行させるプログラムであるトランスポート層モジュールとを含む通信サブシステムと、前記コンピュータに、通信網を介して通信されるメッセージの履歴の記録を行わせるプログラムである履歴管理モジュールと、前記コンピュータに、前記通信網を介したメッセージの通信に関する障害の検出を行わせるプログラムである障害検出モジュールと、前記コンピュータに、前記前記通信網を介したメッセージの通信に関する障害の発生を外部装置へ通知させるプログラムである通知管理モジュールと、前記コンピュータに、前記通信網を介したメッセージの通信に関する障害からの回復処理を行わせるプログラムである回復管理モジュールとを含む信頼性サブシステムと、を備え、前記コンピュータに、外部から入力される１以上の入力変数に基づき、前記信頼性サブシステムに含まれる前記履歴管理モジュール、前記障害検出モジュール、前記通知管理モジュールおよび前記回復管理モジュールの組み合わせのうち、１の組み合わせを選択する選択処理と、前記通信サブシステムに含まれる前記データリンク層モジュール、前記ネットワーク層モジュールおよび前記トランスポート層モジュールと、前記信頼性サブシステムに含まれる前記履歴管理モジュール、前記障害検出モジュール、前記通知管理モジュールおよび前記回復管理モジュールのうち、前記選択処理において選択された組み合わせに含まれるものとを含む実行用プログラムであるインスタンスを生成する生成処理と、を実行させることを特徴とするプログラムを提供する。
【発明の効果】
【００１２】
本発明に係るメッセージ通信システム、設定変更方法およびプログラムによれば、メッセージ通信システムに含まれる構成要素およびその設定が処理環境もしくは通信環境に応じて自律的に変更されるため、異なる処理環境もしくは通信環境に応じた耐障害性およびパフォーマンスを備える高信頼メッセージ通信システムが容易に構築される。
【発明を実施するための最良の形態】
【００１３】
［１．構成］
以下、本発明の好ましい実施形態の詳細を説明する。図１は、本発明に係る設定変更可能な高信頼メッセージ通信システム１０を示す図である。高信頼メッセージ通信システム１０は、機能的に分類された複数のコンポーネントに含まれるソフトウェア群に従った処理を行うことにより、高い信頼性のメッセージ通信サービスを提供する。より具体的には、高信頼メッセージ通信システム１０は、通信サブシステム１２、信頼性サブシステム１４および制御モジュール１６を備えている。また、高信頼メッセージ通信システム１０は、制御モジュール１６がＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）群２０を介した処理を行うことにより、アプリケーション１８との間でデータのやりとりを行う。
【００１４】
アプリケーション１８は、高信頼メッセージ通信システム１０を介して、遠隔地に配置された他の構成要素との間でデータ通信を行うことができる。例えば、図２は、高信頼メッセージ通信システム１０が分散情報処理システムに導入された場合のシステムを示した図である。分散情報処理システムにおいては、通信ネットワークを介して相互に接続された一群の情報処理装置が協調性をもって同じアプリケーションを実行する。図２に示すように、本実施形態に係る分散情報処理システム２１は、クライアント２４およびサーバ２６と、それらが接続されたアクセスネットワーク２２を含んでいる。クライアント側のアプリケーション１８ｃは、例えばクライアント２４においてデータ内容の表示を行うＷｅｂブラウザであり、クライアント２４において動作する高信頼メッセージ通信システム１０ｃとの間でデータのやりとりを行う。サーバ側のアプリケーション１８ｓは、例えばサーバ２６においてデータの記憶および抽出を管理するデータベースエンジンであり、サーバ２６において動作する高信頼メッセージ通信システム１０ｓとの間でデータのやりとりを行う。クライアント側のアプリケーション１８ｃおよびサーバ側のアプリケーション１８ｓは、それぞれ高信頼メッセージ通信システム１０ｃおよび高信頼メッセージ通信システム１０ｓを介して、アクセスネットワーク２２を通じてメッセージの送信および受信を行うことにより、互いに通信を行うことができる。また、クライアント２４およびサーバ２６は、それぞれ不揮発性記憶装置２８および不揮発性記憶装置３０を備えており、高信頼メッセージ通信システム１０ｃおよび高信頼メッセージ通信システム１０ｓはそれらの不揮発性記憶装置を用いて、送受信されるメッセージの履歴データを記憶することができる。
【００１５】
なお、図２に示される分散情報処理システム２１は、本実施形態の特徴を説明するための例示的なクライアントサーバシステムであり、本実施形態に採用可能なシステムは分散情報処理システム２１に限定されないことは言うまでもない。すなわち、本発明に係る設定変更可能な高信頼メッセージ通信システムは、他の形態の分散情報処理システムにおいても実施可能である。例えば、複数のクライアントが図１に示した高信頼メッセージ通信システム１０を介して、ピアツーピアもしくはアドホックと呼ばれるクライアント間が直接通信を行うモードにより互いに通信を行ったり、複数のサーバが同じく高信頼メッセージ通信システム１０を介して互いに通信を行うことによりバックエンド処理を行ったりするようにシステムが構成されてもよい。
【００１６】
詳細は後述するが、図１に示した高信頼メッセージ通信システム１０は、以下の設定を動的に変更することができる。
（ｉ）通信サブシステム１２および信頼性サブシステム１４に含まれる構成要素の選択に関する設定。
（ｉｉ）選択された構成要素の動作の詳細に関する設定。
（ｉｉｉ）選択された構成要素の間におけるメッセージの通信経路に関する設定。
このように設定変更が可能であるため、高信頼メッセージ通信システム１０は、リアルタイムに自律的にシステムに変更を加えることにより、異なるタイプのアプリケーション、ネットワークおよび装置に対応することができる。
【００１７】
［１．１．通信サブシステム］
上述したように、図１に示した高信頼メッセージ通信システム１０は通信サブシステム１２を含んでいる。通信サブシステム１２は、データを終端間で確実に受け渡すための管理を行うサブシステムである。例えば、図２に示されるように、高信頼メッセージ通信システム１０ｃおよび高信頼メッセージ通信システム１０ｓは、クライアント２４とサーバ２６との間のデータの受け渡しを管理している。図２に示されるように、通信サブシステム１２は、データリンク層モジュール４０、ネットワーク層モジュール４２およびトランスポート層モジュール４４を構成要素として含んでいる。
【００１８】
データリンク層モジュール４０は、例えば、図２に示したアクセスネットワーク２２に採用される、様々なタイプの物理的なネットワークリンクを介したデータの送受信を可能とするための、アクセス経路を提供する。すなわち、データリンク層モジュール４０は、データを、ネットワークに応じた特定の形式に従ってパケット化する。そして、データリンク層モジュール４０は、ネットワーク層モジュール４２に対し、例えば、有線ＬＡＮ（Ｌｏｃａｌ  Ａｃｃｅｓｓ  Ｎｅｔｗｏｒｋ）、移動通信網、ＢｌｕｅｔｏｏｔｈやＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、ＩＥＥＥ８０２．１１ｂもしくはＷｉ−Ｆｉ等の規格に従った無線ＬＡＮ、そしてＧＰＲＳ（Ｇｅｎｅｒａｌ  Ｐａｃｋｅｔ  Ｒａｄｉｏ  Ｓｅｒｖｉｃｅ）携帯電話網といった様々なタイプのアクセスネットワークに対し、統一的なインタフェースを提供する。
【００１９】
ネットワーク層モジュール４２は、複数のネットワークが相互に接続されて一群のネットワークを構成しているインターネットを介したデータの移動を管理する。より具体的には、ネットワーク層モジュール４２は、データ送信元の装置およびデータ送信先の装置の間に配置された物理的に異なる種類の複数のネットワークどうしが、データの送受信を行うことを可能とする仕組みを提供する。図２に示されるアクセスネットワーク２２は、例えば、ＩＥＥＥ８０２．１１ｂに準拠した無線ＬＡＮや第３世代移動体通信システムの１つであるＵＭＴＳ（Ｕｎｉｖｅｒｓａｌ  Ｍｏｂｉｌｅ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｙｓｔｅｍ）といった異なるアクセス技術によるネットワークを同時に含んでいる場合がある。ネットワーク層モジュール４２は、例えば、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）に従い、ＩＰアドレスの仕組みを用いて、それぞれのデータパケットをいずれのネットワークノードを介して転送するかを決定する。ＩＰは、アプリケーションが受け渡しを行うメッセージ（以下、「アプリケーションメッセージ」と呼ぶ）を、データグラムと呼ばれる、より小さく管理のしやすいデータパケットに分割もしくは断片化することにより、小さいサイズのデータパケットしか取り扱うことができないネットワークを介したデータの送受信を可能とする。データグラムは送信先のノードにおいて再度組み立てられ、アプリケーションメッセージが再構成される。ネットワーク層モジュール４２は、さらに、ＩＣＭＰ（Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）等の通信プロトコルに従い、エラー処理等の各種制御を可能とする仕組みを提供する。なお、ネットワーク層モジュール４２には、ＩＰの代わりに、例えばＮｏｖｅｌｌ社のＮｅｔＷａｒｅで用いられているＩＰＸ（Ｓｅｑｕｅｎｃｅｄ  Ｐａｃｋｅｔ  ｅＸｃｈａｎｇｅ）等の他の種類の通信プロトコルが採用されてもよいことは言うまでもない。
【００２０】
トランスポート層モジュール４４は、アプリケーション１８と高信頼メッセージ通信システム１０との間におけるデータの流れを管理する。例えば、ネットワークの通信帯域幅が狭い場合、トランスポート層モジュール４４はデータの転送速度を遅くするとともに、データ内容を確認することにより、データが正しく送受信されるよう管理する。そして、データの送受信エラーやデータの損失が検出された場合、トランスポート層モジュール４４はそのデータの再送信を送信元に要求する。トランスポート層モジュール４４は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）、ＳＣＴＰ（Ｓｔｒｅａｍｉｎｇ  Ｃｏｎｔｒｏｌ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｐｒｏｔｏｃｏｌ）、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）、ＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、そして信頼性の高いメッセージ通信を可能とするＨＴＴＰＲ（ＨＴＴＰ  Ｒｅｌｉａｂｌｅ）等の様々な通信プロトコルを扱うことができる。
【００２１】
［１．２．信頼性サブシステム］
信頼性サブシステム１４は、ネットワークや装置、アプリケーション等に障害が発生した場合に、通信サブシステム１２がそれらの障害に対し高い耐障害性を備えることを可能とするための仕組みを提供する。信頼性サブシステム１４は、履歴管理モジュール４６、障害検出モジュール４８、通知管理モジュール５０および回復管理モジュール５２を備えている。
【００２２】
［１．２．１．履歴管理モジュール］
履歴管理モジュール４６は、システムが正常に動作している間に送受信されるメッセージの履歴を管理する。例えば、図２に示される高信頼メッセージ通信システム１０ｃの履歴管理モジュール４６は、サーバ２６から受信したメッセージの履歴をクライアント２４の不揮発性記憶装置２８に記憶し、一方、高信頼メッセージ通信システム１０ｓの履歴管理モジュール４６は、クライアント２４から受信したメッセージの履歴をサーバ２６の不揮発性記憶装置３０に記憶する。
【００２３】
上述したように、耐障害性を高めるためには、システムに冗長性を持たせる必要があり、メッセージの履歴を記憶することはその冗長性の１つである。履歴管理モジュール４６は、様々な種類の履歴取得の仕組みや処理方法を採用することができる。例えば、図２に示されるクライアント２４およびサーバ２６のいずれにも、履歴の記憶を行うメッセージの方向に関し、送信されるメッセージのみ、受信されるメッセージのみ、それらのメッセージの両方、といった選択肢を持たせることができる。また、クライアント２４には、メッセージの履歴を取得するタイミングに関し、例えばメッセージの送信前、メッセージの送信後、もしくは任意のタイミング、といった選択肢を持たせることができる。同様に、サーバ２６にも、受信したメッセージをアプリケーションに受け渡す前、受け渡した後、もしくは任意のタイミング、といった選択肢を持たせることができる。
【００２４】
それぞれの履歴取得の仕組みに応じて、耐障害性とシステムのパフォーマンスとの間のトレードオフの関係が異なり、あらゆる種類のアプリケーションに対し最適な成果をもたらすような履歴取得の仕組みは存在しない。そこで、履歴管理モジュール４６は、アプリケーション１８に応じて異なる耐障害性とパフォーマンスに関する要求を満足するために、制御モジュール１６の指示に従い、リアルタイムにメッセージの履歴取得の仕組みを動的に切り換えることができる。なお、この履歴取得の仕組みを動的に切り換える動作に関しては、詳細を後述する。
【００２５】
［１．２．２．障害検出モジュール］
図１に示される障害検出モジュール４８は、アプリケーションの処理における障害、クライアントおよびサーバの装置に関する障害、ネットワークにおける障害、データの伝送における障害といった、異なる分類に属する障害をそれぞれ検出する。障害検出モジュール４８により適したタイミングで正確な障害の検出が行われる結果、障害からのスムーズな回復が可能となる。
【００２６】
上述したように、障害検出モジュール４８はアプリケーションの処理における障害を検出することができる。例えば、障害検出モジュール４８はオペレーティングシステムが管理するプロセステーブルに応じて、アプリケーション１８の各プロセスに対し定期的に応答要求を送信することにより、アプリケーション１８が処理を停止もしくは所定の時間内に応答できない状態にあることを判断する。障害検出モジュール４８は、アプリケーション１８のそのような状態を発見すると、アプリケーション１８の処理における障害が発生したものと判断し、制御モジュール１６に対し、そのアプリケーション１８の障害を通知するための信号を送出する。制御モジュール１６は、その信号を受け取ると、通知管理モジュール５０および回復管理モジュール５２に対し、アプリケーション１８の障害をユーザに対し認識させないための処理を行うように指示する。その障害をユーザに対し認識させないための処理に関しては、詳細を後述する。
【００２７】
また、障害検出モジュール４８は、同じ装置内および外部の装置における障害を検出することもできる。ただし、高信頼メッセージ通信システム１０が動作している装置内における障害がその装置によって検出されるためには、いったん、その装置が再起動される必要がある。例えば、図２において、高信頼メッセージ通信システム１０ｃの障害検出モジュール４８が、同じ装置、すなわちクライアント２４において障害が発生していることを検出するためには、クライアント２４が再起動され、クライアント２４の通信相手であるサーバ２６等からクライアント２４に対し、クライアント２４において発生していた障害が通知される必要がある。サーバ２６は、クライアント２４に対し定期的に応答要求を送信し、それに対する応答時間が所定値を超過するか否かを判定することにより、クライアント２４における障害の有無を判断することができる。同様に、高信頼メッセージ通信システム１０ｃの障害検出モジュール４８は、外部の装置であるサーバ２６に対し定期的に応答要求を送信することにより、サーバ２６の処理が停止したり、所定時間内に応答できなかったりした場合、サーバ２６の障害を検出することができる。また、高信頼メッセージ通信システム１０ｓは、クライアント２４等の外部の装置における障害に加え、応答時間が所定値を超過するか否かの簡単な判定を行うことにより、サーバ２６が再起動された際、同じ装置、すなわちサーバ２６において発生した障害を検出することができる。
【００２８】
さらに、障害検出モジュール４８は、ネットワークリンクにおける障害を検出することもできる。具体的には、障害検出モジュール４８は、高信頼メッセージ通信システム１０のネットワークリンクが、ポーリングされた応答要求に対し応答を停止しているか、もしくは所定の時間内に応答を行わないような場合、その状態を検出することができる。また、障害検出モジュール４８は、例えば、ネットワークリンクにおけるデータパケットの損失率やデータ転送遅延時間が予め定められた閾値を超える場合に、そのネットワークリンクにおける障害を検出するように構成してもよい。なお、この閾値はネットワークのタイプに応じて変更可能としてもよく、またシステム管理者により設定されるようにしてもよい。
【００２９】
さらに、障害検出モジュール４８は、トランスポート層モジュール４４における障害を検出することもできる。ネットワークリンクからは正常に応答が返ってくるが、トランスポート層モジュール４４における通信プロトコルによって許容できないデータ通信が行われた場合、トランスポート層モジュール４４における障害が発生したと判断される。例えば、ネットワークリンクにおいては、所定の閾値を超える信号の強度が得られているが、データ転送遅延時間やデータ再送数などが所定の閾値を超えるような場合、障害検出モジュール４８はそれをトランスポート層モジュール４４における障害として検出する。
【００３０】
［１．２．３．通知管理モジュール］
通知管理モジュール５０は、障害検出モジュール４８と協働し、外部の構成要素に対して、アプリケーション１８に障害が発生したことを通知する。制御モジュール１６は、障害検出モジュール４８から、アプリケーション１８に障害が発生したことを示す通知を受け取ると、通知管理モジュール５０に対し、特定の外部の構成要素に対し、その障害を一斉に通知するように指示する。例えば、図２において、サーバ２６の高信頼メッセージ通信システム１０ｓに含まれる通知管理モジュール５０は、クライアント２４の高信頼メッセージ通信システム１０ｃに対し、アプリケーション１８ｓに障害が発生したことを通知することができる。なお、詳細は後述するが、アプリケーション１８のそれぞれは、自らに発生した障害の通知先として、特定の外部の構成要素を指定することができる。
【００３１】
さらに、通知管理モジュール５０は、外部の構成要素に対し、障害検出モジュール４８がネットワークリンクに関する障害もしくはトランスポートレイヤにおける障害を検出したことを通知することもできる。そのような通知がなされると、回復管理モジュール５２により、問題のネットワークリンクに関する障害もしくはトランスポートレイヤにおける障害の回復処理が行われる。
【００３２】
［１．２．４．回復管理モジュール］
図１に示される回復管理モジュール５２は、様々なタイプの障害からシステムを回復する処理を行う。回復管理モジュール５２は、検出された障害のタイプおよび履歴管理モジュール４６において採用されている履歴取得の仕組みに応じて、様々な障害回復の仕組みを用いる。そのような様々な障害回復の仕組みを用いることにより、回復管理モジュール５２は、アプリケーションの処理における様々な障害からシステムを回復することができる。具体的に説明すると、まず、回復管理モジュール５２は、同じ装置内において実行されるアプリケーションの処理に障害が発生した場合、その後、そのアプリケーションに対し送信されてきた全てのメッセージを、アプリケーションの再起動後に、確実にそのアプリケーションに対して引き渡す。同様に、回復管理モジュール５２は、外部の装置内において実行されるアプリケーションの処理に障害が発生した場合、その後、そのアプリケーションに対して送信された全てのメッセージを、そのアプリケーションの再起動後に、確実にそのアプリケーションに対して引き渡す。例えば、図２において、クライアント側のアプリケーション１８ｃに障害が発生した場合、高信頼メッセージ通信システム１０ｃの回復管理モジュール５２は、高信頼メッセージ通信システム１０ｃの履歴管理モジュール４６に対し、その後、アプリケーション１８ｃに対して送信されてくるメッセージを順次記憶し、アプリケーション１８ｃが再起動した際に記憶したメッセージをアプリケーション１８ｃに対し確実に引き渡すように要求する。また、サーバ側のアプリケーション１８ｓに障害が発生した場合、高信頼メッセージ通信システム１０ｃの回復管理モジュール５２は、高信頼メッセージ通信システム１０ｃの履歴管理モジュール４６に対し、その後、アプリケーション１８ｓに対してクライアント２４から送信されるメッセージを順次記憶し、アプリケーション１８ｓが再起動した際に記憶したメッセージをアプリケーション１８ｓに対し確実に引き渡すように要求する。
【００３３】
なお、サーバ側のアプリケーション１８ｓに障害が発生した場合、サーバ２６の高信頼メッセージ通信システム１０ｓに含まれる回復管理モジュール５２は、クライアント側のアプリケーション１８ｃに対し、アプリケーション１８ｓからの要求に応じて同様のサービスを提供可能な、サーバ側のアプリケーションを実行している代替サーバを通知するようにしてもよい。また、クライアント２４の高信頼メッセージ通信システム１０ｃに含まれる回復管理モジュール５２は、サーバ側のアプリケーション１８ｓに障害が発生した旨の通知を受信した場合に、代替サーバを検索するようにしてもよい。
【００３４】
回復管理モジュール５２は、装置における障害からの回復処理を行うこともできる。具体的には、回復管理モジュール５２は、同じ装置に障害が発生した場合、その装置が障害の発生前の状態に復旧した時点で、その装置内で実行されているアプリケーションに対し、障害発生中に外部から送信されてきたメッセージを確実に引き渡す。同様に、回復管理モジュール５２は、外部の装置に障害が発生した場合、その外部の装置が障害の発生前の状態に復旧した時点で、その装置内で実行されているアプリケーションに対し、障害発生中に同じ装置から送信されたメッセージを確実に引き渡す。
【００３５】
例えば、図２において、クライアント２４に障害が発生した場合、高信頼メッセージ通信システム１０ｃの回復管理モジュール５２は、クライアント２４が障害の発生前の状態に復旧し、クライアント側のアプリケーション１８ｃが再起動した際に、アプリケーション１８ｃに対し送信されてきた全てのメッセージを確実に引き渡す。同様に、高信頼メッセージ通信システム１０ｓの回復管理モジュール５２は、クライアント２４が障害の発生前の状態に復旧し、クライアント側のアプリケーション１８ｃが再起動した際に、サーバ２６からアプリケーション１８ｃに対し送信された全てのメッセージをアプリケーション１８ｃに確実に引き渡す。一方、図２において、サーバ２６に障害が発生した場合、サーバ２６が障害の発生前の状態に復旧し、サーバ側のアプリケーション１８ｓが再起動した際に、高信頼メッセージ通信システム１０ｓの回復管理モジュール５２は、アプリケーション１８ｓに対し送信されてきた全てのメッセージをアプリケーション１８ｓに確実に引き渡し、また、高信頼メッセージ通信システム１０ｃの回復管理モジュール５２は、クライアント２４からアプリケーション１８ｓに対し送信された全てのメッセージをアプリケーション１８ｓに確実に引き渡す。
【００３６】
なお、サーバ２６に障害が発生した場合、クライアント２４の高信頼メッセージ通信システム１０ｃに含まれる回復管理モジュール５２が、アクセスネットワーク２２に接続されている装置の中から、障害が発生したサーバ２６と同様のサービスを引き続き提供可能な代替サーバを検索可能な構成としてもよい。その場合、高信頼メッセージ通信システム１０ｃはクライアント２４から送信されるメッセージを、サーバ２６にではなく、新たに検索された代替サーバに対し送信する。
【００３７】
さらに、回復管理モジュール５２は、ネットワークリンクに関する障害からの回復処理を行うこともできる。具体的には、障害検出モジュール４８によりネットワークリンクに関する障害が検出された場合、回復管理モジュール５２は通信相手の構成要素との通信を行うための他のアクセスネットワークを選択する。なお、新たなアクセスネットワークの選択のための基準は、システム管理者が設定することができる。
【００３８】
さらに、障害検出モジュール４８によりトランスポートレイヤにおける障害が検出された場合、回復管理モジュール５２は、そのトランスポートレイヤにおける障害からの回復処理として、トランスポート層モジュール４４において利用可能な他の通信プロトコルを選択する。なお、新たな通信プロトコルの選択のための基準は、システム管理者が設定することができる。
【００３９】
［１．２．５．制御モジュール］
制御モジュール１６は、高信頼メッセージ通信システム１０がアプリケーション１８との間でデータの受け渡しを行うためのインタフェースとしての役割を果たす。一般的に、制御モジュール１６は、アプリケーション１８に対し一連の基本的なＡＰＩ群２０を提供し、アプリケーション１８はそのＡＰＩ群２０を介することにより、高信頼メッセージ通信システム１０との間でデータのやりとりを行うことができる。具体的には、ＡＰＩ群２０を介して、アプリケーション１８は高信頼メッセージ通信システム１０に対し、様々な変数を入力することができる。この場合、入力される変数（以下、「入力変数」と呼ぶ）は、それぞれ、高信頼メッセージ通信システム１０のパフォーマンスおよび耐障害性に関する選択肢を示している。詳細は後述するが、アプリケーション１８は、高信頼メッセージ通信システム１０のパフォーマンスおよび耐障害性について、様々なレベルおよびその適応単位に関する選択肢の中から適当なものを指定することができる。ここで、適応単位とは、例えば、メッセージ単位やメッセージタイプ単位等である。さらに、同じ特定のアプリケーションであっても、ユーザによって、耐障害性およびパフォーマンスに関する要求が異なる。従って、アプリケーションのそれぞれは、現在のユーザの識別情報に応じて、すなわち個々のユーザ毎に、異なる入力変数を入力可能としてもよい。
【００４０】
以下に示す表１は、図１に示されるアプリケーション１８が高信頼メッセージ通信システム１０に対し指定可能な信頼性に関する選択肢を示している。
【表１】
2004192642.tif 000003
【００４１】
表１において、「ローカルアプリケーション」は、アプリケーション１８であり、また「ローカル装置」は、アプリケーション１８を実行する装置、すなわちクライアントもしくはサーバである。「リモート装置」は、ネットワークを介してローカル装置と相互接続されている外部の装置である。「リモートアプリケーション」は、リモート装置において実行され、ローカルアプリケーションにより要求されるサービスを提供するアプリケーションである。「履歴サーバ」は、メッセージの履歴を記憶するために設けられた専用のリモート装置である。なお、表１および以下に示す表において、「Ｘ」で示される選択肢は、その選択肢に対し定められた所定範囲の値の中から、特定の値が選択可能であることを示す。
【００４２】
表１に示されるように、例えば、アプリケーション１８は、高信頼メッセージ通信システム１０により検出されるべき障害として、ローカルアプリケーションおよびリモートアプリケーションに関する障害、ローカル装置およびリモート装置に関する障害、ネットワーク、すなわちネットワークリンクおよびトランスポートレイヤに関する障害といった様々なタイプの障害を選択することができる。また、アプリケーション１８は、高信頼メッセージ通信システム１０がそれぞれのタイプの障害に関し、その発生を外部の構成要素に通知すべきか否か、またいずれの通知先に通知すべきか、を指定することができる。さらに、アプリケーション１８は、ローカルアプリケーションおよびリモートアプリケーションに関する障害、ローカル装置およびリモート装置に関する障害、ネットワーク、すなわちネットワークリンクおよびトランスポートレイヤに関する障害のそれぞれに関し、障害からの回復処理を要求するか否かを選択することができる。さらに、アプリケーション１８は、ローカル装置、リモート装置および履歴サーバのそれぞれに対し、メッセージの履歴を記録するように要求することができる。なお、履歴サーバは、ネットワークを介して送受信されるメッセージの履歴を集中的に記録するサーバである。
【００４３】
さらに、アプリケーション１８は、表１に示した信頼性に関する選択肢の内容を、メッセージごとに、もしくはメッセージのタイプごとに指定することができる。具体的には、アプリケーション１８は、メッセージごとに、もしくはメッセージのタイプごとに、高信頼メッセージ通信システム１０が回復処理や障害検出処理等を行う際の選択肢を個別に指定することができる。
【００４４】
以下に示す式（１）〜（５）は、アプリケーション１８が、表１に示される信頼性に関する選択肢に応じた入力変数を高信頼メッセージ通信システム１０に対し指定する際に用いられるＡＰＩを例示したものである。
（数１）
RELIABILITYPARAMS{
FAILUREDETECTIONPARAMS failureDetectionPARAMS;
NOTIFICATIONPARAMS notificationPARAMS;
LOGGINGPARAMS loggingPARAMS;
RECOVERYPARAMS recoveryPARAMS;
}
・・・式（１）
（数２）
FAILUREDETECTIONPARAMS{
BOOL localAppFailure;
BOOL remoteAppFailure;
BOOL localDeviceFailure;
BOOL remoteDeviceFailure;
BOOL linkFailure;
BOOL transportFailure;
}
・・・式（２）
（数３）
NOTIFICATIONPARAMS{
BOOL localAppFailure;
BOOL remoteAppFailure;
BOOL localDeviceFailure;
BOOL remoteDeviceFailure;
BOOL linkFailure;
BOOL transportFailure;
Destination notificationDestination;
}
・・・式（３）
（数４）
LOGGINGPARAMS{
BOOL localLog;
BOOL remoteLog;
BOOL dualLog;
Destination additionalLogDestination;
}
・・・式（４）
（数５）
RECOVERYPARAMS{
BOOL localAppFailure;
BOOL localDeviceFailure;
BOOL remoteAppFailure;
BOOL remoteDeviceFailure;
BOOL linkFailure;
BOOL transportFailure;
}
・・・式（５）
【００４５】
以下に示す表２は、アプリケーション１８が高信頼メッセージ通信システム１０に対し指定可能なパフォーマンスに関する選択肢を示している。
【表２】
2004192642.tif 000004
【００４６】
表２に示されるように、例えば、アプリケーション１８は、アプリケーション１８のユーザインタフェースにおける待ち時間の平均値Ｍ（Ｔ）および分散Ｖ（Ｔ）の閾値を指定することができる。待ち時間は、アプリケーション１８が処理要求を行った後、システムがその処理要求に対する応答を返してくるまでの時間間隔の実測値である。従って、Ｍ（Ｔ）およびＶ（Ｔ）の閾値は、システムがユーザの要求を満たす際に課される応答時間の条件を示している。さらに、アプリケーション１８はメッセージごとに、もしくはメッセージのタイプごとに、待ち時間の平均値および分散の閾値を指定することができる。
【００４７】
以下に示す式（６）は、アプリケーション１８が、上述したパフォーマンスに関する選択肢に応じた入力変数を高信頼メッセージ通信システム１０に対し指定する際に用いられるＡＰＩを例示したものである。
（数６）
PERFORMANCEPARAMS{
long WaitTimeThreshold;
long WaitTimeVariance;
}
・・・式（６）
【００４８】
以下に示す表３は、アプリケーション１８が高信頼メッセージ通信システム１０に対し変更指示を行うことが可能なネットワークスタックに関する選択肢を示している。
【表３】
2004192642.tif 000005
【００４９】
表３に示されるように、例えば、アプリケーション１８は、同じ装置において動作する高信頼メッセージ通信システム１０に関し、データリンク層モジュール４０においてアクセスされるネットワークリンクのタイプ、ネットワーク層モジュール４２において用いられるレイヤ３プロトコル、そしてトランスポート層モジュール４４において用いられるトランスポートプロトコルをそれぞれ指定することができる。そして、アプリケーション１８は、メッセージごとに、もしくはメッセージのタイプごとに、これらのネットワークスタックに関する選択肢を指定することができる。
【００５０】
以下に示す式（７）〜（１０）は、アプリケーション１８が、上述したネットワークスタックに関する選択肢に応じた入力変数を高信頼メッセージ通信システム１０に対し指定する際に用いられるＡＰＩを例示したものである。
（数７）
COMMPARAMS{
TRANSPORTPARAMS transportPARAMS;
L3PARAMS l3PARAMS;
LINKPARAMS linkPARAMS;
}
・・・式（７）
（数８）
TRANSPORTPARAMS{
tProtocol primaryTransportProtocol;
tProtocol alternateTransportProtocol;
BOOL autoSwitchTransport;
}
・・・式（８）
（数９）
L3PARAMS{
L3Protocol primaryInternetLayerProtocol;
L3Protocol alternateInternetLayerProtocol;
BOOL autoSwitchInternet;
}
・・・式（９）
（数１０）
LINKPARAMS{
accessNetwork primaryLink;
accessNetwork alternateLink;
BOOL autoSwitchLink;
}
・・・式（１０）
【００５１】
なお、上記の式（８）〜（１０）に含まれる「ａｕｔｏＳｗｉｔｃｈ」は、高信頼メッセージ通信システム１０が、必要に応じて、指定されているトランスポートプロトコル、インターネットプロトコルおよびネットワークリンクから他のものへ切り換えることを、アプリケーション１８が許可することを示す入力変数である。
【００５２】
以下に示す表４は、アプリケーション１８が高信頼メッセージ通信システム１０に対し指定可能なメッセージ配信に関する選択肢を示している。
【表４】
2004192642.tif 000006
【００５３】
表４に示されるように、例えば、アプリケーション１８は高信頼メッセージ通信システム１０に対し、メッセージの配信を、最低１回、最大１回もしくはちょうど１回、行うように要求することができる。また、アプリケーション１８は、メッセージごとに、もしくはメッセージのタイプごとに、異なるメッセージ配信に関する選択肢を指定することができる。
【００５４】
以下に示す表５は、アプリケーション１８が高信頼メッセージ通信システム１０に対し指定可能な同期に関する選択肢を示している。
【表５】
2004192642.tif 000007
【００５５】
表５に示されるように、例えば、アプリケーション１８は、高信頼メッセージ通信システム１０が非同期もしくは同期のいずれのモードで動作するかを選択することができる。また、アプリケーション１８は、メッセージごとに、もしくはメッセージのタイプごとに、これらの同期に関する選択肢を指定することができる。
【００５６】
以下に示す式（１１）は、アプリケーション１８が、上述したメッセージ配信および同期に関する選択肢に応じた入力変数を高信頼メッセージ通信システム１０に対し指定する際に用いられるＡＰＩを例示したものである。
（数１１）
DELIVERYPARAMS{
BOOL AsyncOperation;
deliverySemantics Semantics;
}
・・・式（１１）
【００５７】
アプリケーション１８が、式（１）〜（１１）に例示したＡＰＩを用いて高信頼メッセージ通信システム１０の設定を変更する場合、例えば、以下の式（１２）〜（１５）に示す制御用のＡＰＩが用いられる。
（数１２）
reliabilityPARAMS getReliabilityOptions(configType)
int setReliabilityOptions(configType, reliabilityPARAMS)
・・・式（１２）
（数１３）
commPARAMS getCommOptions(configType)
int setCommOptions(configType, commPARAMS)
・・・式（１３）
（数１４）
deliveryPARAMS getDeliveryOptions(configType)
int setDeliveryOptions(configType, deliveryPARAMS)
・・・式（１４）
（数１５）
configType{
MessageType perMessageType;
Message perMessage;
}
・・・式（１５）
【００５８】
上記の式（１２）〜（１４）に含まれる「ｇｅｔ」メソッドの呼び出しは、アプリケーション１８が高信頼メッセージ通信システム１０に対し現在設定されているパフォーマンスおよび耐障害性に関する入力変数の値を取り出す場合に用いられ、一方、「ｓｅｔ」メソッドの呼び出しは、アプリケーション１８が高信頼メッセージ通信システム１０に対し新たな入力変数の値を指定する場合に用いられる。
【００５９】
また、アプリケーション１８は、以下の式（１６）に示す「ｓｅｎｄＭｅｓｓａｇｅ」メソッドの呼び出しを行うことにより、高信頼メッセージ通信システム１０に対しメッセージの送出を要求することができる。また、アプリケーション１８は、以下の式（１７）に示す「ｒｅｃｖＭｅｓｓａｇｅ」メソッドの呼び出しを行うことにより、高信頼メッセージ通信システム１０に対し、高信頼メッセージ通信システム１０が受信したメッセージの引き渡しを要求することができる。
（数１６）
int sendMessage(Destination msgDest,
Message outBuffer,
RELIABILITYPARAMS reliabilityPARAMS optional,
COMMPARAMS commPARAMS optional,
DELIVERYPARAMS deliveryPARAMS optional)
・・・式（１６）
（数１７）
int recvMessage(Source from optional,
Message outBuffer,
RELIABILITYPARAMS reliabilityPARAMS optional,
COMMPARAMS commPARAMS optional,
DELIVERYPARAMS deliveryPARAMS optional)
・・・式（１７）
【００６０】
［１．２．６．設定変更性］
ＡＰＩ群２０により、高信頼メッセージ通信システム１０は、高い柔軟性をもって、設定変更が可能となる。制御モジュール１６は、アプリケーション１８により指定された信頼性、パフォーマンス、通信網、同期およびメッセージ配信に関する選択肢に基づき、高信頼メッセージ通信システム１０を実行するためのインスタンスを生成し、そのインスタンスにより要求に応じた処理を実行する。具体的には、制御モジュール１６は、アプリケーション１８により指定された耐障害性およびパフォーマンスの選択肢に基づき、通信サブシステム１２および信頼性サブシステム１４の構成要素を選択し、その選択に応じて、具体的な高信頼メッセージ通信システム１０のインスタンスを生成する。
【００６１】
図３には、図２に示したアプリケーション１８ｃが、表１に示した信頼性に関する選択肢に応じて入力する入力変数群６０ｃの内容が例示されている。入力変数群６０ｃにより、アプリケーション１８ｃは、ローカルアプリケーション（クライアント側のアプリケーション１８ｃ）、リモートアプリケーション（サーバ側のアプリケーション１８ｓ）、ローカル装置（クライアント２４）、リモート装置（サーバ２６）、そしてネットワーク（アクセスネットワーク２２）におけるネットワークリンクおよびトランスポートレイヤの障害に関し、障害検出処理および回復処理を行うように指示している。また、入力変数群６０ｃにより、アプリケーション１８ｃはローカル装置（クライアント２４）ではメッセージの履歴の記録を行うが、リモート装置（サーバ２６）ではメッセージの履歴の記録を行わないことを指示している。さらに、アプリケーション１８ｃは、高信頼メッセージ通信システム１０ｃにより検出された障害を外部の構成要素のいずれにも通知しないように指示している。これらの入力変数群６０ｃに基づき、高信頼メッセージ通信システム１０ｃの制御モジュール１６ｃは、高信頼メッセージ通信システム１０ｃの実行用インスタンス６２ｃを図３に示すように選択的に生成する。この場合、アプリケーション１８ｃは信頼性に関する選択肢として、障害の通知処理を行うことを選択していないため、高信頼メッセージ通信システム１０ｃの通知管理モジュール５０のインスタンスは生成されず、従って、実行用インスタンス６２ｃには通知管理モジュール５０のインスタンスは含まれていない。
【００６２】
図４は、高信頼メッセージ通信システム１０ｃの実行用インスタンスが生成される他の例として、実行用インスタンス７２ｃが生成される様子を示している。図４に示す例において、アプリケーション１８ｃは障害検出処理および障害の通知処理を行うように指定している一方、回復処理およびメッセージの履歴の記録は行わないように指定している。従って、高信頼メッセージ通信システム１０ｃの制御モジュール１６ｃは、高信頼メッセージ通信システム１０ｃのインスタンスとして、通知管理モジュール５０ｃおよび障害検出モジュール４８ｃを生成する。しかしながら、高信頼メッセージ通信システム１０ｃの回復管理モジュール５２および履歴管理モジュール４６のインスタンスは生成されず、従って、実行用インスタンス７２ｃにはそれらのインスタンスが含まれていない。
【００６３】
他の例として、例えば、クライアント側のアプリケーション１８ｃ（図２参照）は、表２に示したパフォーマンスに関する選択肢に従い、予め定められた待ち時間の平均値Ｍ（Ｔ）の閾値を上回る待ち時間が発生することを許可しないように指示することもできる。同時に、アプリケーション１８ｃは、例えばアクセスネットワーク２２、クライアント２４もしくはサーバ２６に障害が発生してもメッセージ配信が確実に行われたことを確認するために、表１に示した選択肢のうち適するものを選択することにより、クライアント２４およびサーバ２６においてメッセージの履歴の記録を行うように指定することもできる。この場合、クライアント２４は、アプリケーション１８ｃにとっての待ち時間の平均値が予め定められたＭ（Ｔ）の閾値を超えていると判定した場合、例えば、要求されている耐障害性に関する処理を一部犠牲にして、待ち時間の平均値の低下を試みるようにしてもよい。具体的には、例えば、クライアント２４が、サーバ２６におけるメッセージの履歴の記録に要するコストがクライアント２４におけるコストよりも小さいと判断した場合、高信頼メッセージ通信システム１０ｃの制御モジュール１６ｃは、アプリケーション１８ｃにより指定されたクライアント２４におけるメッセージの履歴の記録に関する選択を無視し、サーバ２６における高信頼メッセージ通信システム１０ｓの実行用インスタンスにのみ、履歴管理モジュール４６を含めるようにする。クライアント２４において、履歴管理モジュール４６のインスタンスを生成することを行わないことにより、制御モジュール１６ｃはクライアント２４を用いたユーザからの処理要求に対する応答に要する応答時間を全体的に低減することができ、その結果、待ち時間の平均値を低減することができる。
【００６４】
上記の例は、高信頼メッセージ通信システム１０の仕組みが、表１および表２に示した耐障害性およびパフォーマンスに関する選択肢に対しアプリケーションにより指定された入力変数群に基づき、制御モジュール１６に対し、高信頼メッセージ通信システムの実行用インスタンスに含める様々な構成要素を選択可能としている様子を示したものである。
【００６５】
さらに、いったん、高信頼メッセージ通信システム１０の構成要素として選択されたもののインスタンスが生成された後であっても、パフォーマンスおよび耐障害性に関する指定された選択肢に基づき、制御モジュール１６（図１参照）はこれらの構成要素に対する設定を変更することができる。具体的には、制御モジュール１６は、どの通信プロトコルや処理方法を、生成された構成要素のインスタンスにおいて実行させるかを決定することができる。また、制御モジュール１６は、アプリケーション１８により指定された入力変数群に基づき、１以上の構成要素のインスタンスが実行中に、異なる処理方法や通信プロトコルの間の切り換えを動的に行うことができる。
【００６６】
例えば、制御モジュール１６は、アプリケーション１８が表２に示したパフォーマンスに関する選択肢として指定した待ち時間の平均値および分散の閾値に応じて、異なるメッセージ履歴の記録の仕組みを選択し、選択した仕組みに応じた処理を履歴管理モジュール４６に実行させることができる。なお、そのような処理方法等の動的な切り換え処理に関しては、本願発明者により２００２年９月１３日付にて米国特許庁に対し出願されている特許出願「耐障害性の仕組みの動的切り換え方法（ＭＥＴＨＯＤ  ＦＯＲ  ＤＹＮＡＭＩＣＡＬＬＹ  ＳＷＩＴＣＨＩＮＧ  ＦＡＵＬＴ  ＴＯＬＥＲＡＮＣＥ  ＳＣＨＥＭＥＳ）」（代理人整理番号１０７４５／１３３）に詳しい記載がさなれている。
【００６７】
同様に、制御モジュール１６は、アプリケーション１８により指定された、ネットワーク、メッセージ配信および同期に関する選択肢に応じて、トランスポート層モジュール４４に対し異なるトランスポートプロトコルを選択したり、データリンク層モジュール４０に対し異なるネットワークリンクを選択したりすることができる。さらに、アプリケーション１８がトランスポートプロトコルの指定を行えないような場合、制御モジュール１６は、指定されたネットワークリンクの種類に応じて、トランスポート層モジュール４４に対し適するプロトコルを選択するようにしてもよい。上記のような動作を行う代わりに、アプリケーション１８は、完全に独立した通信の仕組みを構築し、送信したいデータ、データの送信先、メッセージ配信の仕組み、信頼性および様々な種類の障害に対する耐障害性のみを指定することができるように構成してもよい。その場合、適するトランスポートプロトコルおよびアクセスネットワークの選択は、指定された信頼性およびメッセージ配信に応じて、高信頼メッセージ通信システム１０により選択されるように構成すればよい。
【００６８】
さらに、システムの動作環境が変化した場合、制御モジュール１６は、予め定められた一連の基準に基づき、高信頼メッセージ通信システム１０のパフォーマンスおよび信頼性の程度を最適化するように、通信サブシステム１２に対し、トランスポートプロトコルもしくはアクセスネットワークの変更を指示するように構成してもよい。例えば、データリンク層モジュール４０において現在採用されているネットワークリンクが変更された場合、制御モジュール１６は予め定められている一連の基準もしくは規則を検査し、トランスポート層モジュール４４において何らかの設定変更を行うか否かを判断する。そのような基準としては、例えば、無線ネットワークリンクにおいてＴＣＰによるパフォーマンスが好ましくない、とか、ＳＭＳ（Ｓｈｏｒｔ  Ｍｅｓｓａｇｅ  Ｓｅｒｖｉｃｅ）プロトコルが携帯電話網におけるネットワークリンクとして適している、といった内容を示すものが考えられる。
【００６９】
上述した仕組みにより、高信頼メッセージ通信システム１０は、アプリケーション１８に対し、ネットワークレイヤおよびトランスポートレイヤにおける個別的なインタフェースを提供することができる。従来の通信システムにおいては、アプリケーションが独自に適すると思われるトランスポートプロトコルを選択して用いる必要があったが、本実施形態に係る高信頼メッセージ通信システム１０（図１参照）により、アプリケーション１８はそのような通信の仕組みに全く左右されなくなる。従って、アプリケーション１８は、様々なネットワークレイヤおよびトランスポートレイヤのプロトコルを用いて、様々な種類のネットワークレイヤおよびトランスポートレイヤを介したデータの通信および管理を行うことができるようになる。
【００７０】
すなわち、高信頼メッセージ通信システム１０は、アプリケーション１８により指定された入力変数群に基づき、ＡＰＩ群２０を用いて、自らのシステムに設定変更を加えることができる。具体的には、制御モジュール１６は、信頼性サブシステム１４の構成要素の中から選択したものを含む実行用インスタンスを生成し、さらに、信頼性サブシステム１４および通信サブシステム１２に対し、様々な処理方法および通信プロトコルを設定することができる。制御モジュール１６は、アプリケーション１８に対し、耐障害性、ネットワークリンク、通信プロトコル等の切り換えを透過的に行うことができる。高信頼メッセージ通信システム１０の実行用インスタンスに含まれる構成要素は、制御モジュール１６により、アプリケーションに応じて個々に設定されるため、高信頼メッセージ通信システム１０においては、実質的な機能に関するプログラムコードと、実質的な機能に関係のないプログラムコードとの区別が可能となる。すなわち、信頼性サブシステム１４および通信サブシステム１２は様々な耐障害性及びパフォーマンスに関する方針に従った通信環境を実現するために、実質的な機能に関する仕組みを備えており、その方針を決定する制御モジュール１６とは区別される。
【００７１】
高信頼メッセージ通信システム１０の実行用インスタンスとして、信頼性サブシステム１４および通信サブシステム１２に含まれる構成要素のいずれを選択し構成するかを決定することに加えて、制御モジュール１６は、高信頼メッセージ通信システム１０の実行用インスタンスに含まれる構成要素間でやりとりされるメッセージの通信経路の決定および指示を行うようにしてもよい。例えば、図５に例示されるように、制御モジュール１６は、データリンク層モジュール４０により受信されたメッセージ（ステップ１００）を、ネットワーク層モジュール４２（ステップ１０１）、トランスポート層モジュール４４（ステップ１０２）を経由して履歴管理モジュール４６に引き渡す（ステップ１０３）ように、それらの構成要素に要求する。履歴管理モジュール４６は、ステップ１０３において受け取ったメッセージに関する履歴を記録する。その後、制御モジュール１６は、履歴管理モジュール４６からメッセージを受け取り（ステップ１０４）、ＡＰＩ群２０を介して（ステップ１０５）、アプリケーション１８に対し受け取ったメッセージを引き渡す（ステップ１０６）。
【００７２】
上記の例の代わりに、例えば、図６に例示されるように、制御モジュール１６は、データリンク層モジュール４０により受信されたメッセージ（ステップ１１０）を、ネットワーク層モジュール４２（ステップ１１１）およびトランスポート層モジュール４４（ステップ１１２）を介して制御モジュール１６に引き渡す（ステップ１１３）ように要求するようにしてもよい。制御モジュール１６は、受け取ったメッセージを履歴の記録のために履歴管理モジュール４６に対し送出する（ステップ１１６）前に、そのメッセージを、ＡＰＩ群２０を介して（ステップ１１４）、アプリケーション１８に引き渡す（ステップ１１５）。同様に、例えば、図７に例示されるように、制御モジュール１６は、データリンク層モジュール４０により受信されたメッセージ（ステップ１２０）をまず履歴管理モジュール４６に引き渡し（ステップ１２１）、その後、ネットワーク層モジュール４２（ステップ１２２）、トランスポート層モジュール４４（ステップ１２３）を経由して制御モジュール１６に引き渡す（ステップ１２４）ように要求するようにしてもよい。その後、制御モジュール１６はＡＰＩ群２０を介して（ステップ１２５）、受け取ったメッセージをアプリケーション１８に引き渡す（ステップ１２６）。
【００７３】
制御モジュール１６（図１参照）は、通信サブシステム１２および信頼性サブシステム１４に含まれる構成要素が実行する処理の間の調整を行うようにしてもよい。例えば、制御モジュール１６は高信頼メッセージ通信システム１０の構成要素間でやりとりされる全てのメッセージの調整を行う役割を果たし、異なる構成要素間のメッセージは、必ず制御モジュール１６を介して行われるようにしてもよい。すなわち、その場合、高信頼メッセージ通信システム１０の構成要素間のあらゆる通信は必ず制御モジュール１６を通過することとなる。また、上記の方法に代えて、制御モジュール１６は、異なる構成要素間で直接通信を行うことができるように、高信頼メッセージ通信システム１０の他の構成要素のいずれかに対し、その調整の役割を行わせるようにしてもよい。その場合、制御モジュール１６はその調整の監視役として機能し、高信頼メッセージ通信システム１０の設定変更を行う場合以外には、他の構成要素に対する処理は行わない。
【００７４】
上述したように、例えば障害検出モジュール４８は、制御モジュール１６に対し、アプリケーション１８に障害が発生したことを通知することができる。制御モジュール１６は、障害検出モジュール４８からその通知を受け取ると、通知管理モジュール５０に対しアプリケーションによる処理における障害を通信網における外部の構成要素に対し通知するように命令し、また、回復管理モジュール５２に対しローカル装置に送られてくるメッセージおよびローカル装置から送信されるメッセージが確実に配信されるための処理を行うように命令する。また、上記の方法に代えて、高信頼メッセージ通信システム１０において、障害検出モジュール４８が通知管理モジュール５０および回復管理モジュール５２と直接通信を行うことにより、アプリケーション１８の障害を顕在化しないようにする構成としてもよい。
【００７５】
上述した実施形態は、本発明を説明するために例示した実施形態の一例であって、本発明の技術的特徴を限定するものではない。すなわち、本実施形態に対しては、本発明の技術的思想の範囲内において、様々な変形もしくは変更を加えることができる。
【図面の簡単な説明】
【００７６】
【図１】本発明の実施形態に係る設定変更可能な高信頼メッセージ通信システムの構成を示す図である。
【図２】本発明の実施形態に係る高信頼メッセージ通信システムが分散情報処理システムに導入された場合のシステムを示す図である。
【図３】本発明の実施形態に係るアプリケーションが入力する入力変数群に応じて高信頼メッセージ通信システムの実行用インスタンスが生成される様子を例示する図である。
【図４】本発明の実施形態に係るアプリケーションが入力する入力変数群に応じて高信頼メッセージ通信システムの実行用インスタンスが生成される様子を例示する図である。
【図５】本発明の実施形態に係る高信頼メッセージ通信システムの構成要素間のメッセージの通信経路を例示する図である。
【図６】本発明の実施形態に係る高信頼メッセージ通信システムの構成要素間のメッセージの通信経路を例示する図である。
【図７】本発明の実施形態に係る高信頼メッセージ通信システムの構成要素間のメッセージの通信経路を例示する図である。
【符号の説明】
【００７７】
１０…高信頼メッセージ通信システム、１２…通信サブシステム、１４…信頼性サブシステム、１６…制御モジュール、１８…アプリケーション、２０…ＡＰＩ群、２１…分散情報処理システム、２２…アクセスネットワーク、２４…クライアント、２６…サーバ、２８・３０…不揮発性記憶装置、４０…データリンク層モジュール、４２…ネットワーク層モジュール、４４…トランスポート層モジュール、４６…履歴管理モジュール、４８…障害検出モジュール、５０…通知管理モジュール、５２…回復管理モジュール、６０…入力変数群、６２・７２…実行用インスタンス。
【図１】
2004192642.tif 000008
【図２】
2004192642.tif 000009
【図３】
2004192642.tif 000010
【図４】
2004192642.tif 000011
【図５】
2004192642.tif 000012
【図６】
2004192642.tif 000013
【図７】
2004192642.tif 000014