|
以下の節では、Oracle Tuxedo ATMI の構成要素と Oracle Tuxedo インフラストラクチャについて説明します。
以下の用語と概念は、Oracle Tuxedo システムと Oracle Tuxedo システム上にビルドするアプリケーションについて理解する上で重要です。
Oracle Tuxedo ドメイン (Oracle Tuxedo アプリケーションともいう) は、1 つのコンフィグレーション ファイルによって 1 つの単位として管理される、Tuxedo システム、クライアント、およびサーバ プロセスの集まりです。Tuxedo ドメインは、ネットワークで接続された多くのシステム プロセス、1 つまたは複数のアプリケーション クライアント プロセス、1 つまたは複数のアプリケーション サーバ プロセス、および 1 台または複数台のマシンで構成されます。Oracle Tuxedo ドメインは、ATMI サービス、CORBA オブジェクト、またはその両方を提供できます。
| 注意 : | Tuxedo ドメインは、Tuxedo アプリケーションと同義です。 |
各 Oracle Tuxedo ドメインは、コンフィグレーション ファイルによって制御されます。このファイルには、インストール時の設定に基づくパラメータが定義されています。テキスト形式のコンフィグレーション ファイルは UBBCONFIG と呼ばれますが、コンフィグレーション ファイルには任意の名前を付けることができます。ただし、そのファイルの内容が『Oracle Tuxedo のファイル形式とデータ記述方法』の「UBBCONFIG(5)」リファレンス ページで説明されている形式に準拠している場合に限ります。
バイナリ形式の UBBCONFIG ファイルは TUXCONFIG と呼ばれます。UBBCONFIG ファイルと同じように、TUXCONFIG ファイルにも任意の名前を付けることができます。実際の名前は、TUXCONFIG 環境変数で指定されたデバイス ファイル名またはシステム ファイル名です。
Oracle Tuxedo ドメインのマスタ マシン (またはマスタ ノード) は、そのドメインの UBBCONFIG ファイルを格納し、UBBCONFIG ファイルの RESOURCES セクションでマスタ マシンとして指定されているサーバ マシンです。Tuxedo ドメインの 1 つまたは複数のサーバ マシンの開始、停止、および管理はマスタ マシンから行います。
Tuxedo ドメインのマスタ マシンには、TUXCONFIG ファイルのマスタ コピーも配置されます。TUXCONFIG ファイルは、Tuxedo システムがマスタ マシンで起動されたときに Tuxedo ドメイン内の他のすべてのサーバ マシン (非マスタ マシン) に伝播されます。
Oracle Tuxedo システムでは、TUXCONFIG ファイルを使用して Tuxedo ドメインの各サーバ マシンで掲示板を設定します。Tuxedo サーバ プロセスは、アクティブになったときに自身のサービスの名前を掲示板で宣言します。掲示板の一部の情報はグローバルで、Tuxedo ドメイン内のすべてのサーバに伝達されます (特定のサービスを提供するすべてのサーバの名前と場所など)。それ以外の情報はローカルとなり、ローカル掲示板のみで表示されます (ローカル サーバの要求キューで待機しているクライアント要求の実際の数とタイプなど)。
掲示板は、Tuxedo ドメイン内部での位置とネームスペースの透過性を実現します。位置の透過性とは、Tuxedo クライアント プロセスとサーバ プロセスが Tuxedo ドメイン内部のリソース (ATMI サービス、CORBA C++ オブジェクト) の位置を認識する必要がないということです。ネームスペースの透過性とは、Tuxedo クライアント プロセスとサーバ プロセスが同じ命名規約 (およびネームスペース) を使用して Tuxedo ドメイン内のリソースを検索できるということです。
Oracle Tuxedo ATMI は、アプリケーション設計者がハードウェア プラットフォーム、データベース、およびオペレーティング システムを組み合わせる ATMI アプリケーションを開発するための一連のコア技術です。Oracle Tuxedo ATMI は、ハイエンドなオンライン トランザクション処理 (OLTP) システムの特長とメリット (スケーラビリティ、高性能、ミッション クリティカルな信頼性、オープン スタンダードのサポートなど) をすべて備えています。
Oracle Tuxedo ATMI の基盤となるのは、トランザクション処理 (TP) モニタと呼ばれる、定評があり、信頼性の高いトランザクション プロセッサです。次の図に示すように、トランザクション プロセッサは 3 層クライアント/サーバ アーキテクチャの一例です。このアーキテクチャでは、トランザクション プロセッサはフロントエンドの GUI とバックエンドのリソース マネージャの間のアプリケーション ロジックをサポートします。リソース マネージャとは、SQL データベース、メッセージ キュー、レガシー アプリケーションなどのバックエンド サービスです。

フロントエンド GUI とリソース マネージャ間の直接的な接続に割り込むことによって、トランザクション プロセッサは、数百、数千、あるいは数万のクライアントとアプリケーション プログラムおよびバックエンド リソースをリンクするすべてのトラフィックを制御します。トランザクション プロセッサを使用することで、グローバル (分散) トランザクションの正確な完了、ロード バランシングの実現、およびシステム全体のパフォーマンスの向上が保証されます。さらに重要なのは、トランザクション プロセッサにより、アプリケーションのサーバ プロセスがフロントエンド GUI とリソース マネージャから独立するということです。
Oracle Tuxedo ATMI は、サーバサイドのアプリケーションとコンポーネントを実行するトランザクション アプリケーション サーバです。アプリケーションのサーバ プロセスの管理とトランザクションの管理のほかにも、Oracle Tuxedo ATMI はクライアント/サーバ通信を管理して、クライアント (およびサーバ) が次のようなさまざまな方法でアプリケーション サービスを呼び出せるようにします。
通常、要求/応答トランザクションは人間が関与するので、迅速な反応が要求され、高優先順位モードで実行されます。Oracle Tuxedo ATMI は、ATMI 要求/応答型トランザクション通信インタフェースを備えています。
通常、会話型トランザクションは人間が関与するので、迅速な反応が要求され、高優先順位モードで実行されます。Oracle Tuxedo ATMI は、ATMI 会話型トランザクション通信インタフェースを備えています。
キュー トランザクションは、高優先順位または低優先順位のメッセージとして実行されます。Oracle Tuxedo ATMI は、/Q という独自の回復可能なキューを備えています。
パブリッシュ アンド サブスクライブ トランザクションは、高優先順位のメッセージとして実行されます。Oracle Tuxedo ATMI は、EventBroker というトランザクション パブリッシュ アンド サブスクライブ システムを備えています。
トランザクション通信では、高度に拡張されたリモート プロシージャ コール、会話型ピア ツー ピア、キュー、およびパブリッシュ アンド サブスクライブが使用されます。しかし、こうした付加価値要素のほとんどはプログラマからは見えません。トランザクションに関与するクライアント/サーバの通信は、開始および終了トランザクション呼び出しで区切られた通常の通信のように見えます。明白な違いは、これらの呼び出しによって呼び出されたすべてのリソース マネージャとプロセスがトランザクションの一部になることです。Oracle Tuxedo ATMI などのトランザクション プロセッサは、すべての参加リソースのアクションを調整し、それらがトランザクションの一部として実行されるようにします。
Oracle Tuxedo ATMI は、次の主要な要素で構成されます。
分散 ATMI アプリケーションを実行および管理するために必要なコア サービスを提供します。
ATMI クライアントをインテリジェントなワークステーションに常駐させ、ネットワーク接続を介して ATMI サーバ アプリケーションと通信できるようにします。
メッセージングおよびキュー機能を提供して、ATMI クライアントおよびサーバが私的な専用ローカル接続へのリンクなしでネットワーク通信できるようにします。
ATMI クライアントとサーバ間のアプリケーションおよびシステム イベントの分散を仲介するパブリッシュ アンド サブスクライブ機能を提供します。
論理的および物理的に独立した ATMI アプリケーションを接続し、その結合がユーザに 1 つのアプリケーションとして見えるようにする機能を提供します。
Oracle Tuxedo インフラストラクチャは、Oracle Tuxedo ATMI と Oracle Tuxedo CORBA の両方の基礎となるクライアント/サーバ アーキテクチャを提供します。ここで説明し、次の図に示すトランザクション プロセッサとインフラストラクチャは、Oracle Tuxedo ATMI 環境を構成します。Oracle Tuxedo ATMI 環境は、分散 ATMI アプリケーション用の要求/応答および会話型通信インタフェース、トランザクション サポート、アプリケーション処理および管理サービスを提供します。

Oracle Tuxedo ATMI と Oracle Tuxedo CORBA に共通の Oracle Tuxedo システム管理インタフェースでは、管理ツール (「管理ツール」で説明するものなど) とアプリケーション開発ツール (Simple Network Management Protocol (SNMP) エージェントなど) を使用できます。Oracle Tuxedo は、多くのサード パーティ製ツールによってサポートされるオープンなツール環境を提供します。
Oracle Tuxedo Administration Console と SNMP エージェントは、標準管理コンソールと対話できます。標準管理コンソールでは、Oracle Tuxedo ATMI または CORBA 環境とネットワーク コンフィグレーションを単一のコンソールから管理できます。また、アプリケーション設計者と開発者は、MIB インタフェースからアクセスできる Tuxedo 管理情報ベース (TMIB) の上に独自の管理ツールや、アプリケーション固有のツールまたは市場固有のツールを作成できます。
Oracle Tuxedo ATMI は、一連の C または COBOL 手続きを使用する手続き型のライブラリベース プログラミングを提供する ATMI プログラミング インタフェースをサポートしています。ATMI は、Oracle Tuxedo システムでサポートされるすべての ATMI 環境で機能する、通信、トランザクション、およびデータ バッファ管理のためのインタフェースを提供します。ATMI インタフェースと Oracle Tuxedo システムは、トランザクション処理の X/Open 分散トランザクション処理 (DTP) モデルを実装しています。
Oracle Tuxedo ATMI インタフェースは、要求/応答通信と会話型通信の基盤となります。
プログラマは、ATMI 要求/応答機能を使用して、要求側プロセスからの 1 つの要求を送信し、呼び出された要求/応答サーバ プロセスからの応答を取り出します。要求/応答は、単純な種類の対話です。要求/応答中の通信のルールは固定されています。クライアントはサービスを要求し、サーバはそれに応答します。クライアントは要求の一部として複数のメッセージを送信できず、サーバはその応答として複数のメッセージを送信できません。
要求側プロセスは、要求/応答サービスを同期的または非同期的に実行できます。
プログラマは、ATMI 会話型通信を使用して、要求側プロセスと呼び出された会話型サーバ プロセス間の状態保持接続 (メッセージ間でコンテキストが維持される) を確立および管理します。ATMI 会話型機能を使用すると、次のことができます。
会話型サーバは、接続中は要求元に独占されます。Oracle Tuxedo システムは、会話型接続の要求時にサーバが利用できない場合、新しいコピーを作成します。
このため、ATMI 会話型プログラミング インタフェースを使用すると、アプリケーションの内部にトランザクション境界を定義して、実行される作業を 1 つの基本単位として処理できます。つまり、1 つの Oracle Tuxedo トランザクションの内部では、実行される作業は 1 つの基本作業単位としてコミットまたはロールバックされるので、マシンに障害が発生した場合でもすべてのデータベースの同期が取られます。
Oracle Tuxedo ATMI インタフェースの詳細については、『Oracle Tuxedo システム入門』を参照してください。
ATMI インタフェースに加え、Oracle Tuxedo ATMI はフィールド操作言語 (FML) プログラミング インタフェースをサポートしています。FML インタフェースは、フィールド化バッファと呼ばれるストレージ構造を定義および操作するための C 言語関数のセットです。フィールド化バッファでは、フィールド内に属性と値のペアが格納されます。属性はフィールドの識別子で、関連付けられる値はフィールドのデータです。
アプリケーション設計者によって FML とそのフィールド化バッファの概念が指定されると、アプリケーション プログラマはさまざまな関数を使用して FML フィールドおよびバッファを定義および管理できます (データ バッファについては、「型付きバッファ」を参照)。たとえば、フィールド化バッファと VIEW と呼ばれる C 構造体または COBOL レコード (そのメンバーはバッファのフィールドに対応) の間でデータを移動するための関数を選択できます。
FML 関数セットは、より多くのフィールドを持つ大規模レコードと共に使用する FML32 という付属関数セットを持っています。
Oracle Tuxedo FML の詳細については、『FML を使用した Tuxedo アプリケーションのプログラミング』を参照してください。
Oracle Tuxedo ATMI アプリケーションは、型付きバッファ内のデータを送受信します。オペレーティング システムからメモリを直接割り当てる代わりに、アプリケーションは Oracle Tuxedo システムから型付きバッファを割り当ててデータを格納します。
型付きバッファはアプリケーション プログラマによって定義され、Oracle Tuxedo システムによって認識されるデータ構造です。Oracle Tuxedo システムはアプリケーション データ バッファについて認識しているので、通信中にそれらを最適に操作します。
型付きバッファには、それ自身に関する情報 (メタデータ) が格納されます。アプリケーション プログラマはこの情報を使用することで、アプリケーションのクライアントとサーバが動作するマシンによって使用されるデータ表現形式を知る必要なくデータを転送できます。型付きバッファを使用すると、アプリケーションはマシンの独立性を保持できます。
Oracle Tuxedo リリースによってサポートされている各バッファ型は、初期化、メッセージの送受信、およびデータのエンコードとデコードをプログラマの仲介なしに行うために、自動的に呼び出すことができる独自のルーチン セットを持ちます。このルーチン セットを型付きバッファ スイッチと呼びます。
Oracle Tuxedo には、FML や FML32 など、さまざまな種類の型付きバッファが用意されており、アプリケーション設計者が独自の型付きバッファを定義することもできます。型付きバッファの詳細については、『Oracle Tuxedo システム入門』の「型付きバッファ」を参照してください。
Oracle Tuxedo Workstation コンポーネントを使用すると、ATMI クライアントを完全な Oracle Tuxedo サーバサイド インストレーションのないリモート マシン (Oracle Tuxedo 管理サーバと掲示板をサポートしていないマシン) に配置できます。リモート ATMI クライアントと Oracle Tuxedo サーバ アプリケーション間のすべての通信はネットワークを介して実行されます。
Oracle Tuxedo Workstation コンポーネントのメリットは次のとおりです。
Workstation コンポーネントには次のソフトウェア プロセスが含まれます。
Oracle Tuxedo Workstation クライアント ソフトウェアがインストールされているマシンで動作する ATMI クライアント プロセスです。
Oracle Tuxedo サーバ マシンで動作する Oracle Tuxedo リスニング プロセスです。ワークステーション クライアントからの接続要求を受け付け、同じくサーバ マシン上で動作するワークステーション ハンドラに接続を割り当てます。また、ワークステーション ハンドラ プロセスのプールを管理し、負荷の条件に応じてそれらを起動します。
Oracle Tuxedo サーバ マシンで動作する Oracle Tuxedo ゲートウェイ プロセスです。ワークステーション クライアントと Oracle Tuxedo サーバ アプリケーション間の通信を処理します。WSH プロセスはアプリケーションの管理ドメインに常駐し、ローカル Oracle Tuxedo 掲示板にクライアントとして登録されます。
各 WSH プロセスは、複数のワークステーション クライアントを管理できます。WSH は、1 つの接続にわたる特定のワークステーション クライアントに関するすべての要求と応答を多重化します。
次の図に、これらのプロセスによってリモート ATMI クライアントを Oracle Tuxedo サーバ アプリケーションに接続する仕組みを示します。

Oracle Tuxedo Workstation コンポーネントの詳細については、次のマニュアルを参照してください。
Oracle Tuxedo /Q は、型付きバッファが組み込まれた、トランザクション対応、XA 準拠のアプリケーション キューイング システムです。/Q は、Oracle Tuxedo ATMI アプリケーション内のクライアントとサーバ間で時間に依存しない通信を実現します。
/Q を使用すると、ATMI アプリケーションは、グローバル トランザクションの中で、クライアントとサーバによって生成されたメッセージを安定したストレージに格納して後で使用することができます。Q 対応のクライアント プロセスまたはサーバ プロセスは、いつメッセージをそのキューから取り出すかを決定します。ただし、オペレーションはトランザクションのスコープの中で行われるので、Oracle Tuxedo システムにより、メッセージが実際に処理されること、またはトランザクション全体がロールバックされることが保証されます。
/Q を Oracle Tuxedo Workstation と一緒に使用すると、ワークステーション クライアントからのメッセージを格納し、取り出すことができます。この組み合わせのインタフェースは、C および COBOL プログラミング言語のどちらでも使用できます。
時間に依存しないクライアントおよびサーバ プログラムは、メッセージをアプリケーション キューに互いに格納し合う (キューに入れる) ことによって通信を行います。メッセージは、後入れ先出し (LIFO)、先入れ先出し (FIFO)、優先順位、時間ベースの順序など、複数の順序付け方式で取り出す (デキューする) ことができます。複数のクライアントとサーバが同じキューにアクセスすることができます。次の図に、/Q を使用したメッセージ キューイング通信の概略を示します。

Oracle Tuxedo /Q コンポーネントの詳細については、次のマニュアルを参照してください。
Oracle Tuxedo EventBroker は、Oracle Tuxedo ATMI アプリケーション内で動作するプロセス間のアプリケーション イベントの非同期ルーティングを可能にする、トランザクション対応、XA 準拠のアプリケーション パブリッシュ アンド サブスクライブ システムです。また、EventBroker は、システム イベントを、その受信を望むアプリケーション プロセスに配布します。
イベントとは、アプリケーション プログラムまたは Oracle Tuxedo システム内で、管理者、オペレータ、またはソフトウェアの興味を引く状態の変化またはその他の事象です。イベントの例には、「株式が指値かそれ以上の値で取り引きされた」や「ネットワーク障害が発生した」などがあります。
イベントのプロデューサをパブリッシャまたはサプライヤといい、イベントのコンシューマをサブスクライバといいます。EventBroker は、イベントの配布についてプロデューサとコンシューマを調停します。次の図に、EventBroker を使用したパブリッシュ アンド サブスクライブ通信の概略を示します。

グローバル トランザクションでイベントをポストすると、トランザクションが正常に実行された場合、ポストに関係ない作業を含め、すべての作業の完了が保証されます。トランザクション内である作業が失敗した場合は、そのトランザクションで行われたすべての作業がロールバックされます。
Oracle Tuxedo EventBroker コンポーネントの詳細については、次のマニュアルを参照してください。
Oracle Tuxedo Domains コンポーネントは、Oracle Tuxedo システムのクライアント/サーバ モデルを拡張して、TP ドメイン (ビジネス アプリケーション) 間でのトランザクションの相互運用性を実現します。この拡張機能では、リモート ドメインのサービスへのアクセスやリモート ドメインからのサービス要求の受信は、アプリケーション プログラマやエンド ユーザに対して透過的に行われるため、モデルと ATMI インタフェースをそのまま利用できます。Domains コンポーネントは、リモート ドメインへのサービス要求の送信またはリモート ドメインからのサービス要求の受信を処理する高度な非同期、マルチタスク ドメイン ゲートウェイを介してこれを実現します。
Oracle Tuxedo システムには、Oracle Tuxedo アプリケーションが他の Oracle Tuxedo アプリケーションまたは他の TP システムで動作するアプリケーションと通信するための次のタイプのドメイン ゲートウェイが用意されています。

| 注意 : | Oracle Tuxedo CORBA アプリケーションも Domains コンポーネントを使用して他の CORBA アプリケーションと相互運用してリソースを共有します。Oracle Tuxedo CORBA アプリケーションには、GWTDOMAIN プロセスで実装される TDomain ゲートウェイ タイプだけを適用できます。 |
Oracle Tuxedo Domains コンフィグレーションでは、管理者はそのコンフィグレーションの中でどのサーバが他のサーバで利用できるかをコンフィグレーションできます。クライアントと参加アプリケーション自身は Domains コンフィグレーションについて知る必要がありません。知る必要があるのは、利用可能なサービスとファクトリ オブジェクト、およびそれらにアクセスする方法だけです。アプリケーションにドメイン情報を組み込んだ場合、コンフィグレーションを変更したときにアプリケーションを作成し直す必要が生じます。
Oracle Tuxedo Domains コンポーネントの詳細については、次のマニュアルを参照してください。
|