2 Oracle Tuxedo ATMIのコア・コンポーネント

次の項では、Oracle Tuxedo ATMIの構成要素と、Oracle Tuxedoインフラストラクチャについて説明します。

2.1 Oracle Tuxedoの重要な用語と概念

次の用語と概念は、Oracle TuxedoシステムとOracle Tuxedoシステム上にビルドするアプリケーションについて理解する上で重要です。
Tuxedoドメイン
Oracle Tuxedoドメイン(Oracle Tuxedoアプリケーションともいう)は、1つのTuxedo構成ファイルによって1つの単位として管理される、Tuxedoシステム、クライアントおよびサーバー・プロセスの集まりです。Tuxedoドメインは、多数のシステム・プロセス、1つ以上のアプリケーション・クライアント・プロセス、1つ以上のアプリケーション・サーバー・プロセス、およびネットワークで接続された1つ以上のコンピュータ・マシンで構成されます。Oracle Tuxedoドメインは、ATMIサービス、CORBAオブジェクト、またはその両方を提供できます。

ノート:

Tuxedoドメインは、Tuxedoアプリケーションと同義です。
Tuxedo構成ファイル
各Oracle Tuxedoドメインは、構成ファイルによって制御され、インストール時の設定に基づくパラメータが定義されています。テキスト形式の構成ファイルはUBBCONFIGと呼ばれます。ただし、構成ファイルの内容が『Oracle Tuxedoファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』のリファレンス・ページUBBCONFIG(5)で説明されている形式に準拠している場合にかぎり、ファイルに任意の名前を付けることができます。
バイナリ形式のUBBCONFIGファイルはTUXCONFIGと呼ばれます。UBBCONFIGと同様に、TUXCONFIGファイルにも任意の名前を付けることができますが、実際の名前はTUXCONFIG 環境変数で指定されているデバイス・ファイル名またはシステム・ファイル名です。
Tuxedoのマスター・マシン
Oracle Tuxedoドメインのマスターマシン(マスター・ノード)は、そのドメインのUBBCONFIGファイルを格納し、UBBCONFIGファイルのRESOURCESセクションでマスター・マシンとして指定されているサーバー・マシンです。Tuxedoドメインの1つ以上のサーバー・マシンの開始、停止および管理はマスター・マシンから行います。
Tuxedoドメインのマスター・マシンには、TUXCONFIGファイルのマスター・コピーも配置されます。TUXCONFIGファイルのコピーは、Tuxedoシステムがマスター・マシンで起動されたときに、Tuxedoドメイン内の他のすべてのサーバー・マシン(非マスター・マシン)に伝播されます。
Tuxedoの掲示板
Oracle Tuxedoシステムでは、TUXCONFIGファイルを使用して、Tuxedoドメインの各サーバー・マシンで掲示板 を設定します。Tuxedoサーバー・プロセスは、アクティブになったときに自身のサービスの名前を掲示板で通知します。掲示板の一部の情報はグローバルで、Tuxedoドメイン内のすべてのサーバーでレプリケートされます(特定のサービスを提供するすべてのサーバーの名前と場所など)。また、ローカルな情報(ローカル・サーバーのリクエスト・キューで現在待機しているクライアント・リクエストの実際の数やタイプなど)は、ローカルな掲示板にのみ表示されます。
掲示板は、Tuxedoドメイン内部での位置とネームスペースの透過性を実現します。位置の透過性とは、Tuxedoクライアント・プロセスとサーバー・プロセスがTuxedoドメイン内部のリソース(ATMIサービス、CORBA C++オブジェクト)の位置を認識する必要がないということです。ネームスペースの透過性とは、Tuxedoクライアント・プロセスとサーバー・プロセスが同じ命名規則(およびネームスペース)を使用してTuxedoドメイン内のリソースを検索できるということです。

2.2 Oracle Tuxedo ATMIの概要

Oracle Tuxedo ATMIは、アプリケーション設計者がハードウェア・プラットフォーム、データベースおよびオペレーティング・システムを組み合せるATMIアプリケーションを開発するための一連のコア技術です。これは、ハイエンドなオンライン・トランザクション処理(OLTP)システムの特長とメリット(スケーラビリティ、高パフォーマンス、ミッション・クリティカルな信頼性、オープン・スタンダードのサポートなど)をすべて備えています。

Oracle Tuxedo ATMIの基盤となるのは、トランザクション処理(TP)モニターと呼ばれる、定評があり、信頼性の高いトランザクション・プロセッサです。次の図に示すように、トランザクション・プロセッサは3層クライアント/サーバー・アーキテクチャの一例で、トランザクション・プロセッサがフロントエンドのGUIとバックエンドのリソース・マネージャの間のアプリケーション・ロジックをサポートします。リソース・マネージャの例には、SQLデータベース、メッセージ・キュー、レガシー・アプリケーション、その他のバックエンド・サービスがあります。

図2-1 トランザクション・プロセッサを使用する3層クライアント/サーバー・アーキテクチャ

トランザクション・プロセッサを使用する3層クライアント/サーバー・アーキテクチャの図

フロントエンドのユーザー・インタフェースとリソース・マネージャ間の直接的な接続に割り込むことによって、トランザクション・プロセッサは、数百、数千、あるいは数万のクライアントと、アプリケーション・プログラムおよびバックエンド・リソースをリンクするすべてのトラフィックを制御します。トランザクション・プロセッサを使用することで、グローバル(分散)トランザクションの正確な実行、ロード・バランシングの実現、およびシステム全体のパフォーマンスの向上が保証されます。さらに重要なのは、トランザクション・プロセッサにより、アプリケーションのサーバー・プロセスがフロントエンドのユーザー・インタフェースとリソース・マネージャから独立するということです。

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のようなトランザクション・プロセッサは、すべての参加者のアクションを編成し、トランザクションの一部として作動するようにします。

2.3 Oracle Tuxedo ATMIのアーキテクチャ

Oracle Tuxedo ATMIは、次の主要なコンポーネントで構成されます。

  • Oracle Tuxedoトランザクション・プロセッサおよびインフラストラクチャ

    分散ATMIアプリケーションの実行および管理に必要なコア・サービスを提供します。

  • Oracle Tuxedo Workstation

    ATMIクライアントをインテリジェント・ワークステーションに常駐させ、ネットワーク接続を介してATMIサーバー・アプリケーションと通信できるようにします。

  • Oracle Tuxedo /Q

    メッセージングおよびキュー機能を提供して、ATMIクライアントおよびサーバーがプライベートの専用ローカル接続へのリンクなしでネットワーク通信できるようにします。

  • Oracle Tuxedo EventBroker

    ATMIクライアントとサーバー間のアプリケーションおよびシステム・イベントの分散を仲介するパブリッシュ/サブスクライブ機能を提供します。

  • Oracle Tuxedo Domains

    論理的および物理的に独立したATMIアプリケーションを接続し、その結合がユーザーに1つのアプリケーションとして見えるようにする機能を提供します。

2.4 Oracle Tuxedoトランザクション・プロセッサおよびインフラストラクチャ

Oracle Tuxedoインフラストラクチャは、Oracle Tuxedo ATMIおよびOracle Tuxedo CORBAの両方に対応したクライアント/サーバーの基盤アーキテクチャです。ここで説明し、次の図に示すトランザクション・プロセッサとインフラストラクチャにより、Oracle Tuxedo ATMI環境が構成され、分散ATMIアプリケーション用のリクエスト/レスポンスおよび会話型通信インタフェース、トランザクション・サポート、アプリケーション処理および管理サービスが提供されます。

図2-2 Oracle Tuxedo ATMI環境

Oracle Tuxedo ATMI環境の図

2.4.1 システム管理インタフェース

Oracle Tuxedo ATMIとOracle Tuxedo CORBAに共通のOracle Tuxedoシステム管理インタフェースでは、管理ツール(「管理ツール」で説明するものなど)とアプリケーション開発ツール(Simple Network Management Protocol (SNMP)エージェントなど)を使用できます。Oracle Tuxedo は、多くのサード・パーティ製ツールによってサポートされるオープンなツール環境を提供します。

2.4.2 ATMIプログラミング・インタフェース

Oracle Tuxedo ATMIは、一連のCまたはCOBOLプロシージャを使用する手続き型のライブラリベース・プログラミングを提供するATMIプログラミング・インタフェースをサポートしています。ATMIは、Oracle TuxedoシステムでサポートされるすべてのATMI環境で機能する、通信、トランザクションおよびデータ・バッファ管理のためのインタフェースを提供します。ATMIインタフェースとOracle Tuxedoシステムは、トランザクション処理のX/Open分散トランザクション処理(DTP)モデルを実装しています。

The Oracle Tuxedo ATMIインタフェースは、リクエスト/レスポンス通信と会話型通信の基盤となります。

2.4.2.1 リクエスト/レスポンス通信

プログラマは、ATMIリクエスト/レスポンス機能を使用して、リクエスト側プロセスからの1つのリクエストを送信し、呼び出されたリクエスト/レスポンス・サーバープロセスから1つのレスポンスを受信します。リクエスト/レスポンスは、単純な種類の対話です。リクエスト/レスポンス中の通信のルールは固定されており、クライアントはサービスを要求し、サーバーはそれに応答します。クライアントはリクエストの一部として複数のメッセージを送信できず、サーバーはその応答として複数のレスポンスを送信できません。リクエスト側プロセスは、リクエスト/レスポンス・サービスを同期的または非同期的に実行できます。

2.4.2.2 会話型通信

プログラマは、ATMI会話型機能を使用して、リクエスト側プロセスと呼び出された会話型サーバー・プロセス間の状態保持接続(メッセージ間でコンテキストが維持される)を確立および管理します。ATMI会話型機能を使用すると、プログラマは特に次のことができます。

  • 会話型サーバーとの接続を開く
  • 会話中にトランザクションを開始および終了する
  • 1つの会話を複数のマシンとリソース・マネージャにまたがって実行する
  • 接続失敗の通知を検出して提供する
  • タスクの完了時に接続を終了する

会話型サーバーは、接続中はリクエスタに独占されます。Oracle Tuxedoシステムは、会話型接続のリクエスト時にサーバーが利用できない場合、新しいコピーを自動的に生成します。このため、ATMI会話型プログラミング・インタフェースを使用すると、プログラマはアプリケーションの内部にトランザクション境界を定義して、実行される作業を1つの基本単位として処理できます。つまり、1つのOracle Tuxedoトランザクションの内部では、実行される作業は1つの基本作業単位としてコミットまたはロールバックされるため、マシンに障害が発生した場合でもすべてのデータベースの同期が取られます。

2.4.2.3 ATMIインタフェースのドキュメント

Oracle Tuxedo ATMIインタフェースの詳細は、ATMIの紹介を参照してください。

2.4.3 FMLプログラミング・インタフェース

ATMIインタフェースに加え、Oracle Tuxedo ATMIはフィールド操作言語(FML)プログラミング・ンタフェースをサポートしており、これは、フィールド化バッファと呼ばれるストレージ構造を定義および操作するためのC言語関数のセットです。フィールド化バッファでは、フィールド内に属性と値のペアが格納され、属性はフィールドの識別子、関連付けられる値はフィールドのデータを表します。

FMLとそのフィールド化バッファ概念がアプリケーション設計者によって指定されると、アプリケーション・プログラマは、FMLフィールドおよびバッファの定義と管理の充実した機能を使用できるようになります(型付きバッファの管理を参照)。この中には、フィールド化バッファと、Cの構造体またはCOBOLのレコード(VIEWとして参照される)の間でデータを移動する機能も含まれます(構造体やレコードのメンバーはバッファのフィールドに相当します)。

FML関数セットは、より多くのフィールドを持つ大規模レコードとともに使用するFML32という付属関数セットを持っています。

Oracle Tuxedo FMLの詳細は、『FMLを使用したOracle Tuxedoアプリケーションのプログラミング』を参照してください。

2.4.4 型付きバッファ

Oracle Tuxedo ATMIアプリケーションは、型付きバッファ内のデータを送受信します。オペレーティング・システムからメモリーを直接割り当てるかわりに、アプリケーションはOracle Tuxedoシステムから型付きバッファを割り当ててデータを格納します。

型付きバッファはアプリケーション・プログラマによって定義され、Oracle Tuxedoシステムによって認識されるデータ構造体です。Oracle Tuxedoシステムはアプリケーション・データ・バッファについて認識しているため、通信中にそれらを最適に操作します。型付きバッファには、それ自身に関する情報(メタデータ)が格納され、アプリケーション・プログラマはこの情報を使用することで、アプリケーションのクライアントとサーバーが動作するマシンによって使用されるデータ表現スキームを知る必要なく、データを転送できます。型付きバッファを使用すると、アプリケーションはマシンの独立性を保持できます。

Oracle Tuxedoリリースによってサポートされている各バッファ型は、初期化、メッセージの送受信、およびデータのエンコードとデコードをプログラマの仲介なしに行うために、自動的に呼び出すことができる独自のルーチン・セットを持ちます。このルーチン・セットを型付きバッファ・スイッチと呼びます。

Oracle Tuxedoには、FMLやFML32など、様々な種類の型付きバッファが用意されており、アプリケーション設計者が独自の型付きバッファを定義できます。型付きバッファの詳細は、『Oracle Tuxedo ATMIの紹介』型付きバッファの管理を参照してください。

2.5 Oracle Tuxedo Workstation

Oracle Tuxedo Workstationコンポーネントでは、Oracle Tuxedoのサーバー側の機能がフル・インストールされていないリモート・マシン(Oracle Tuxedo管理サーバーも掲示板もサポートしないマシン)にATMIクライアントを配置できます。リモートATMIクライアントとOracle Tuxedoサーバー・アプリケーション間のすべての通信はネットワーク経由で実行されます。

Oracle Tuxedo Workstationコンポーネントのメリットは次のとおりです。

  • 管理上のオーバーヘッドが少なくなります
  • クライアントとOracle Tuxedoサーバー・マシンを分離し、セキュリティが向上します
  • CPUサイクルの負荷を軽減し、Oracle Tuxedoサーバー・マシン上のプロセス・コンテキスト切替えが減少します
  • 小規模になります

2.5.1 Workstation通信

Workstationコンポーネントは次のとおりです。

ワークステーション・クライアント
Oracle Tuxedo Workstationクライアント・ソフトウェアがインストールされたマシンで実行されるATMIクライアント・プロセス。
ワークステーション・リスナー(WSL)
Oracle Tuxedoサーバー・マシンで実行され、ワークステーション・クライアントからの接続リクエストを受け付け、同じくサーバー・マシン上で実行されるワークステーション・ハンドラに接続を割り当てるOracle Tuxedoリスニング・プロセス。また、ワークステーション・ハンドラ・プロセスのプールを管理し、負荷の条件に応じてそれらを起動します。
ワークステーション・ハンドラ(WSH)
Oracle Tuxedoサーバー・マシンで実行され、ワークステーション・クライアントとOracle Tuxedoサーバー・アプリケーション間の通信を処理するOracle Tuxedoゲートウェイ・プロセス。WSHプロセスはアプリケーションの管理ドメインに常駐し、ローカルのOracle Tuxedo掲示板にクライアントとして登録されます。各WSHプロセスは複数のワークステーション・クライアントを管理できます。WSHは、1つの接続に対して特定のワークステーション・クライアントを使用して、すべてのリクエストおよび応答を多重化します。次の図に、これらのプロセスによってリモートATMIクライアントをOracle Tuxedoサーバー・アプリケーションに接続する仕組みを示します。

図2-3 リモートATMIクライアントの接続

リモートATMIクライアントの接続

2.5.2 Workstationのドキュメント

Oracle Tuxedo Workstationコンポーネントのドキュメントの詳細は、次のドキュメントを参照してください。

2.6 Oracle Tuxedo EventBroker

Oracle Tuxedo EventBrokerは、Oracle Tuxedo ATMIアプリケーション内で実行されるプロセス間のアプリケーション・イベントの非同期ルーティングを可能にする、トランザクション対応、XA準拠のアプリケーション・パブリッシュ/サブスクライブ・システムです。また、システム・イベントを、その受信を望むアプリケーション・プロセスに配布します。

イベントとは、アプリケーション・プログラムまたはOracle Tuxedoシステム内で、管理者、オペレータまたはソフトウェアの興味を引く状態の変化またはその他の事象です。イベントの例として、「株式が指定された価格以上で取引された」、「ネットワーク障害が発生した」などがあります。

2.6.1 イベントのプロデューサとコンシューマ間の調停

イベントのプロデューサをパブリッシャまたはサプライヤと呼び、イベントのコンシューマをサブスクライバと呼びます。EventBrokerは、イベントの配布についてプロデューサとコンシューマを調停します。次の図に、EventBrokerを使用したパブリッシュ/サブスクライブ通信の概略を示します。

図2-4 イベントのサブスクリプション、ポストおよび通知


イベントのサブスクリプション、ポストおよび通知の図

イベントがグローバル・トランザクションにポストされると、トランザクションが失敗した場合でも、非関連作業を含むすべての作業が完了することが保証されます。トランザクション内で障害が発生した場合、そのトランザクション内で行われたすべての作業は元に戻されます。

2.6.2 EventBrokerのドキュメント

Oracle Tuxedo EventBrokerコンポーネントのドキュメントの詳細は、次のドキュメントを参照してください。

2.7 Oracle Tuxedo Domains

Oracle Tuxedo Domainsコンポーネントは、Oracle Tuxedoシステムのクライアント/サーバー・モデルを拡張して、TPドメイン(ビジネス・アプリケーション)間でのトランザクションの相互運用性を実現します。この拡張により、リモート・ドメイン上のサービスへのアクセス(またはリモート・ドメインからのサービス・リクエストの受入れ)がアプリケーション・プログラマとエンド・ユーザーのどちらにも透過的になるため、モデルおよびATMIインタフェースが保持されます。Domainsコンポーネントは、リモート・ドメインへのサービス・リクエストの送信またはリモート・ドメインからのサービス・リクエストの受信を処理する高度な非同期、マルチタスク・ドメイン・ゲートウェイを介してこれを実現します。

Oracle Tuxedoシステムには、Oracle Tuxedoアプリケーションが他のOracle Tuxedoアプリケーションまたは他のTPシステムで動作するアプリケーションと通信できるように、次のタイプのドメイン・ゲートウェイが用意されています。

図2-5 ドメイン・ゲートウェイのタイプ


ドメイン・ゲートウェイのタイプの図

ノート:

Oracle Tuxedo CORBAアプリケーションもDomainsコンポーネントを使用して他のCORBAアプリケーションと相互運用してリソースを共有します。Oracle Tuxedo CORBAアプリケーションには、GWTDOMAINプロセスで実装されるTDomainゲートウェイ・タイプのみを適用できます。

2.7.1 ドメイン間の透過性

Oracle Tuxedo Domainsの構成では、管理者はその構成の中で、ドメインのどのサーバーが他のドメインで利用できるか設定できます。クライアントと参加アプリケーション自身はDomainsの構成について知る必要がありません。知る必要があるのは、利用可能なサービスとファクトリ・オブジェクト、およびそれらにアクセスする方法だけです。アプリケーションにドメイン情報を組み込んだ場合、構成を変更したときにアプリケーションを作成しなおす必要が生じます。

2.7.2 Domainsのドキュメント

Oracle Tuxedo Domainsコンポーネントのドキュメントの詳細は、次のドキュメントを参照してください。