|
このトピックでは、CORBA アプリケーションを例に、Oracle Tuxedo CORBA 環境でのアプリケーションの分散方法を説明します。
| 注意 : | Oracle Tuxedo CORBA Java クライアントと Oracle Tuxedo CORBA Java クライアント ORB は Tuxedo 8.1 で非推奨になり、サポートされなくなりました。Oracle Tuxedo CORBA Java クライアントおよび Oracle Tuxedo CORBA Java クライアント ORB のテキスト参照、関連するコード サンプルはすべてサードパーティの Java ORB ライブラリの実装/実行の簡易化とプログラマによる参照だけに使用する必要があります。 |
| 注意 : | サード パーティの CORBA Java ORB のテクニカル サポートは、各ベンダによって提供されます。Oracle Tuxedo では、サード パーティの CORBA Java ORB に関する技術的なサポートやマニュアルは提供していません。 |
アプリケーションを分散すると、アプリケーションのある部分を選択して論理的にグループ化し、そのグループを実行する場所を選択できます。アプリケーションの分散は、UBBCONFIG ファイルの GROUPS セクションに複数のエントリを作成し、アプリケーションのリソースまたはタスクをグループ間に分割することによって行います。サーバのグループを作成することにより、非常に大規模なアプリケーションをコンポーネント ビジネス アプリケーションに分割し、これらの各論理コンポーネントを管理可能なサイズで最適な場所に配置できます。
分散アプリケーションの利点には、以下のようなものがあります。
Oracle Tuxedo CORBA システムでは、ファクトリ ベース ルーティングを使用し、複数のサーバ グループ、および必要であれば複数のマシンにわたって、特定の CORBA インタフェースの処理を分散できます。この機能を使うと処理負荷が分散できるので、同時実行されるリソース集中型のアプリケーションが、利用可能な CPU、メモリ、ディスク I/O、およびネットワーク リソースをめぐって競合した場合に発生する、処理上のボトルネックを回避できます。ファクトリ ベース ルーティングの使用例については、「ファクトリ ベース ルーティングによるスケーリング」を参照してください。
Oracle Tuxedo CORBA のスケーラビリティの特長の詳細については、「Oracle Tuxedo CORBA アプリケーションのスケーリング」を参照してください。
| 注意 : | このトピックは、Oracle Tuxedo サーバにのみ適用されます。 |
データ依存型ルーティングは、サービス要求が、送信されたバッファ内のデータ値に基づき、クライアント (またはクライアントとして動作しているサーバ) によって、特定グループ内のサーバにルーティングされるメカニズムです。サービス呼び出しの内部コードにおいて、Oracle Tuxedo はデータ フィールドと掲示板共有メモリ内で探し出したルーティング基準を比較して、送信先となるサーバを選択します。
所定のどのサービスについても、UBBCONFIG ファイルの SERVICES セクションでルーティング基準識別子を指定できます。ルーティング基準識別子 (特にサーバ グループに対するデータ範囲のマッピング) は、ROUTING セクションで指定します。
表 3-1 では、クライアント要求がサーバにルーティングされるしくみを説明します。このサンプルでは、bankapp と呼ばれる銀行取引アプリケーションでデータ依存型ルーティングが使用されています。bankapp には、3 つのグループ (BANKB1、BANKB2、および BANKB3) と、2 つのルーティング基準 (Account_ID および Branch_ID) があります。サービス WITHDRAW、DEPOSIT、および INQUIRY は、Account_ID フィールドを使用してルーティングされます。サービス OPEN および CLOSE は、Branch_ID フィールドを使用してルーティングされます。
コード リスト 3-1 は、Oracle Tuxedo システムでデータ依存型ルーティングを実現するためのコンフィグレーション ファイルにおける、GROUPS、SERVICES、および ROUTING の各セクションを含む UBBCONFIG ファイルの例を示します。
*GROUPS
BANKB1 GRPNO=1
BANKB2 GRPNO=2
BANKB3 GRPNO=3
#
*SERVICES
WITHDRAW ROUTING=ACCOUNT_ID
DEPOSIT ROUTING=ACCOUNT_ID
INQUIRY ROUTING=ACCOUNT_ID
OPEN_ACCT ROUTING=BRANCH_ID
CLOSE_ACCT ROUTING=BRANCH_ID
#
*ROUTING
ACCOUNT_ID FIELD=ACCOUNT_ID BUFTYPE=”FML”
RANGES=”MIN - 9999:*,
10000-49999:BANKB1,
50000-79999:BANKB2,
80000-109999:BANKB3,
*:*”
BRANCH_ID FIELD=BRANCH_ID BUFTYPE=”FML”
RANGES=”MIN - 0:*,
1-4:BANKB1,
5-7:BANKB2,
8-10:BANKB3,
*:*”
UBBCONFIG ファイルの詳細については、『Oracle Tuxedo アプリケーションの設定』の「コンフィグレーション ファイルの作成」を参照してください。
UBBCONFIG ファイルには、以下のようなデータ依存型ルーティング (Oracle Tuxedo) またはファクトリ ベース ルーティング (Oracle Tuxedo CORBA) の説明が含まれます。
GROUPS セクションには、システムを分散するために必要な数のサーバ グループが挿入されます。これにより、システムは要求を特定グループのサーバにルーティングできるようになります。これらのグループは、すべて同じサイトに設定することも (SHM モード)、ネットワーク化がなされている場合に複数のサイトに分散することも (MP モード) できます。SERVICES セクションに、ROUTING パラメータを使用する各サービスのルーティング基準がリストされている必要があります。| 注意 : | サービスに複数のエントリがあり、それぞれが異なった SRVGRP パラメータを備えている場合、すべてのエントリで、サービスに対する一貫性を確保するために、ROUTING の設定を同じにしなければなりません。1 つのサービスは、1 つのフィールドにしかルーティングできず、このフィールドは、同じサービスでは同じものにする必要があります。 |
INTERFACES セクションに、FACTORYROUTING パラメータを使用する各 CORBA インタフェースのルーティング基準名がリストされている必要があります。このパラメータは、ROUTING セクションで定義されたルーティング基準名に設定されます。ROUTING セクションを追加して、システムが要求を特定グループのサーバに送信できるように、データ範囲とグループ間のマッピングを示します。ROUTING セクションの各項目には、INTERFACES セクションで使用される識別子 (Oracle Tuxedo ATMI の場合) または SERVICES セクションで使用される識別子 (Oracle Tuxedo の場合) が含まれます。
GROUPS セクションのパラメータは、分散トランザクション処理に関する次の 2 つの重要な側面を実装します。
表 3-2 は、GROUPS セクションのパラメータの説明です。
SERVICES セクションのパラメータは、アプリケーション サービスの処理方法を制御します。このセクションのエントリの行は、識別子名によってサービスと関連付けられます。SRVGRP パラメータは、1 つのサービスを複数のサーバにリンクするために用意されています。このパラメータは、サービスのインスタンスを示すパラメータを特定のサーバ グループに関連付けます。
SERVICES セクションには、特に Oracle Tuxedo ATMI サービスを使用する Oracle Tuxedo CORBA アプリケーションの分散トランザクション処理 (DTP) に関連付けられるパラメータが 2 つ (AUTOTRAN と TRANTIME) あります。
表 3-4 は、SERVICES セクションのパラメータの説明です。
コード リスト 3-2 に、SERVICES セクションの例を示します。
*SERVICES # Tuxedo Teller アプリケーション サービスを公開する
#
DEBIT
AUTOTRAN=Y
CREDIT
AUTOTRAN=Y
CURRBALANCE
AUTOTRAN=Y
INTERFACES セクションのパラメータは、アプリケーション インタフェースの処理方法を制御します。このセクションのエントリの行は、識別子名によってインタフェースと関連付けられます。SRVGRP パラメータは、1 つのインタフェースを複数のサーバにリンクするために用意されています。このパラメータは、インタフェースのインスタンスを示すパラメータを特定のサーバ グループに関連付けます。
INTERFACES セクションには、特に分散トランザクション処理 (DTP) に関連付けられるパラメータが 3 つ (FACTORYROUTING、AUTOTRAN、および TRANTIME) あります。
表 3-4 は、INTERFACES セクションのパラメータの説明です。
コード リスト 3-3 に、INTERFACES セクションの例を示します。
*INTERFACES
"IDL:beasys.com/UniversityP/Registrar:1.0"
FACTORYROUTING = STU_ID
AUTOTRAN=Y
TRANTIME=50
"IDL:beasys.com/BillingP/Teller:1.0"
FACTORYROUTING = ACT_NUM
AUTOTRAN=Y
Oracle Tuxedo のデータ依存型ルーティングまたは Oracle Tuxedo CORBA のファクトリ ベース ルーティングをサポートする ROUTING パラメータについては、『Oracle Tuxedo アプリケーションの設定』の「コンフィグレーション ファイルの作成」を参照してください。
コード リスト 3-4 は、Production サンプル アプリケーションでファクトリ ベース ルーティングに使用される UBBCONFIG ファイルの ROUTING セクションを示しています。
*ROUTING
STU_ID
FIELD = "student_id"
TYPE = FACTORY
FIELDTYPE = LONG
RANGES = "100001-100005:ORA_GRP1,100006-100010:ORA_GRP2"
ACT_NUM
FIELD = "account_number"
TYPE = FACTORY
FIELDTYPE = LONG
RANGES = "200010-200014:APP_GRP1,200015-200019:APP_GRP2"
CORBA アプリケーションの場合、複数ドメインにわたってファクトリ ベース ルーティングをコンフィグレーションするには、現在の (ローカル) ドメインで使用されているが、別の (リモート) ドメインに存在するファクトリ オブジェクトを識別するために、factory_finder.ini ファイルをコンフィグレーションする必要があります。詳細については、『Oracle Tuxedo Domains コンポーネント』の「Configuring Multiple Domains for CORBA Applications」を参照してください。
この節は Oracle Tuxedo のみを対象とし、ルーティングをサポートするためにドメイン ゲートウェイ コンフィグレーションを変更する方法と、この処理が必要である理由を説明します。ドメイン ゲートウェイ コンフィグレーション ファイルの詳細については、『Oracle Tuxedo Domains コンポーネント』の「Configuring Multiple Domains Multiple Domains for CORBA Applications」を参照してください。
ドメイン ゲートウェイ コンフィグレーションに関する情報は、バイナリ形式の BDMCONFIG ファイルに格納されています。DMCONFIG ファイル (ASCII) は、任意のテキスト エディタで作成および編集できます。コンパイル済みの BDMCONFIG ファイルは、実行中のシステムで dmadmin(1) コマンドを使用して更新できます。
Domains 機能を必要とする各 Oracle Tuxedo アプリケーションには、BDMCONFIG ファイルを 1 つ作成する必要があります。BDMCONFIG ファイルへのアクセスは、Domains 管理サーバである DMADM(5) から行います。ゲートウェイ グループが起動されると、ゲートウェイ管理サーバである GWADM(5) は、そのグループに必要なコンフィグレーションのコピーを DMADM サーバに要求します。また、GWADM サーバと DMADM サーバは、コンフィグレーションにおける実行時の変更が、対応するドメイン ゲートウェイ グループに反映されるようにします。
| 注意 : | DMCONFIG ファイルの変更の詳細については、『Oracle Tuxedo Domains コンポーネント』の「Configuring Multiple Domains Multiple Domains for CORBA Applications」を参照してください。 |
DM_ROUTING セクションでは、型付きバッファである FML、VIEW、X_C_TYPE、および X_COMMON を使用したサービス要求のデータ依存型ルーティングに関する情報を提供します。DM_ROUTING セクション内にある各行の形式は、CRITERION_NAME です。ここで、CRITERION_NAME は SERVICES セクションで指定されたルーティング エントリの名前 (識別子名) です。CRITERION_NAME エントリの長さは 15 文字以下です。
表 3-5 は、DM_ROUTING セクションのパラメータの説明です。
ルーティング フィールドには、FML または VIEW でサポートされている任意のデータ型を指定できます。数値のルーティング フィールドには、数値による範囲値、文字列のルーティング フィールドには文字列による範囲値を指定します。
文字列、carray、および文字フィールド型の文字列の範囲値は、1 組の一重引用符で囲みます。前に符号を付けることはできません。short 型および long 型の整数値は数値の文字列であり、オプションで先頭に正符号 (+) または負の符号 (-) を指定できます。C コンパイラまたは atof() で使用できる浮動小数点数は、まず任意の符号、次に数字列 (小数点が入ってもよい)、任意の e または E、任意の符号またはスペース、最後に整数という形式を取ります。
フィールド値が範囲と一致するときに、関連する RDOM 値には、要求がルーティングされるリモート ドメインを指定します。RDOM 値に * を指定すると、ゲートウェイ グループが認識する任意のリモート ドメインに要求が送信されることを示します。range/RDOM の組み合わせでは、範囲と RDOM はコロン (:) で区切られます。
コード リスト 3-5 は、5 サイトのドメイン コンフィグレーションを定義するコンフィグレーション ファイルを示します。Central Bank Branch と通信する、4 つの銀行支店ドメインがあります。銀行支店のうち、3 つがほかの Oracle Tuxedo システム ドメイン内で実行されています。残りの支店は、別の TP ドメインの制御下で実行されており、そのドメインとの通信には OSI-TP が使用されています。この例では、Central Bank から見た Oracle Tuxedo のドメイン ゲートウェイ コンフィグレーション ファイルを示しています。DM_TDOMAIN セクションは、b01 をミラーリングしたゲートウェイを示しています。
# Central Bank 用の BEA Tuxedo ドメイン コンフィグレーション ファイル
#
#
*DM_LOCAL_DOMAINS
# <local domain name> <Gateway Group name> <domain type> <domain id> <log device>
# [<audit log>] [<blocktime>]
# [<log name>] [<log offset>] [<log size>]
# [<maxrdom>] [<maxrdtran>] [<maxtran>]
# [<maxdatalen>] [<security>]
# [<tuxconfig>] [<tuxoffset>]
#
#
DEFAULT: SECURITY = NONE
c01 GWGRP = bankg1
TYPE = TDOMAIN
DOMAINID = "BA.CENTRAL01"
DMTLOGDEV = "/usr/apps/bank/DMTLOG"
DMTLOGNAME = "DMTLG_C01"
c02 GWGRP = bankg2
TYPE = OSITP
DOMAINID = "BA.CENTRAL01"
DMTLOGDEV = "/usr/apps/bank/DMTLOG"
DMTLOGNAME = "DMTLG_C02"
NWDEVICE = "OSITP"
URCH = "ABCD"
#
*DM_REMOTE_DOMAINS
#<remote domain name> <domain type> <domain id>
#
b01 TYPE = TDOMAIN
DOMAINID = "BA.BANK01"
b02 TYPE = TDOMAIN
DOMAINID = "BA.BANK02"
b03 TYPE = TDOMAIN
DOMAINID = "BA.BANK03"
b04 TYPE = OSITP
DOMAINID = "BA.BANK04"
URCH = "ABCD"
#
*DM_TDOMAIN
#
# <local or remote domainname> <network address> [nwdevice]
#
# ローカル ネットワーク アドレス
c01 NWADDR = "//newyork.acme.com:65432" NWDEVICE ="/dev/tcp"
c02 NWADDR = "//192.76.7.47:65433" NWDEVICE ="/dev/tcp"
# リモート ネットワーク アドレス。2 つ目の b01 はミラーリングしたゲートウェイを示す
b01 NWADDR = "//192.11.109.5:1025" NWDEVICE = "/dev/tcp"
b01 NWADDR = "//194.12.110.5:1025" NWDEVICE = "/dev/tcp"
b02 NWADDR = "//dallas.acme.com:65432" NWDEVICE = "/dev/tcp"
b03 NWADDR = "//192.11.109.156:4244" NWDEVICE = "/dev/tcp"
#
*DM_OSITP
#
#<local or remote domain name> <apt> <aeq>
# [<aet>] [<acn>] [<apid>] [<aeid>]
# [<profile>]
#
c02 APT = "BA.CENTRAL01"
AEQ = "TUXEDO.R.4.2.1"
AET = "{1.3.15.0.3},{1}"
ACN = "XATMI"
b04 APT = "BA.BANK04"
AEQ = "TUXEDO.R.4.2.1"
AET = "{1.3.15.0.4},{1}"
ACN = "XATMI"
*DM_LOCAL_SERVICES
#<service_name> [<Local Domain name>] [<access control>] [<exported svcname>]
# [<inbuftype>] [<outbuftype>]
#
open_act ACL = branch
close_act ACL = branch
credit
debit
balance
loan LDOM = c02 ACL = loans
*DM_REMOTE_SERVICES
#<service_name> [<Remote domain name>] [<local domain name>]
# [<remote svcname>] [<routing>] [<conv>]
# [<trantime>] [<inbuftype>] [<outbuftype>]
#
tlr_add LDOM = c01 ROUTING = ACCOUNT
tlr_bal LDOM = c01 ROUTING = ACCOUNT
tlr_add RDOM = b04 LDOM = c02 RNAME ="TPSU002"
tlr_bal RDOM = b04 LDOM = c02 RNAME ="TPSU003"
*DM_ROUTING
# <routing criteria> <field> <typed buffer> <ranges>
#
ACCOUNT FIELD = branchid BUFTYPE ="VIEW:account"
RANGES ="MIN - 1000:b01, 1001-3000:b02, *:b03"
*DM_ACCESS_CONTROL
#<acl name> <Remote domain list>
#
branch ACLIST = b01, b02, b03
loans ACLIST = b04
|