Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 システム定義


dcsvgdef

〈このページの構成〉

名称

通信相手のサービス情報の指定

形式

{{dcsvgdef  -g  サービスグループ名〔,サービスグループ名〕…
           {-h  ホスト名〔:ポート番号〕〔,ホスト名〔:ポート番号〕〕…
          〔-p  ポート番号〕
          〔-t  あて先再選択間隔〕〔-w〕}                    }}

機能

他ノードのTP1/Server Base管理下のSPPのサービスを,リモートAPI機能を介して利用する場合に,そのSPPのサービスグループ名とリモートAPI機能によるサービスの受信口となるホスト名およびポート番号を指定します。また,リモートAPI機能を使用するかどうかも指定します。

または,all_nodeオペランドに指定していないノードのTP1/Server Base管理下のSPPのサービスを利用する場合に,そのSPPのサービスグループ名とそのSPPの存在するグローバルドメイン内の任意のノードのホスト名,およびスケジュールサービス定義のscd_portオペランドに指定したポート番号を指定します。複数のホスト名,ポート番号を指定することもできます(リモートAPI機能を利用する場合は複数を指定できません)。

なお,SPPが稼働するサーバ側のTP1/Server Baseのバージョンは,03-03以降でなければなりません。

ユーザサービス定義のrpc_destination_modeオペランドにnamd,またはdefinitionが指定されたUAPから呼び出されるdc_rpc_callのサービス要求を,ネームサーバへのあて先検索要求なしで実行します。

rpc_destination_modeオペランドにnamdが指定されたUAPは,ネームサーバへのあて先検索要求がエラーになった場合,この定義コマンドで指定された情報を基にサービス要求を実施します。rpc_destination_modeオペランドにdefinitionが指定され,かつこの定義コマンドで複数のホストが指定されたUAPは,この定義コマンドで指定された情報を基にサービス要求を実施し,エラーになった場合,ネームサーバへのあて先検索要求を実施します。この定義コマンドに指定されているホストが一つだけの場合は,ネームサーバへのあて先検索要求は実施しません。

OpenTP1は,ユーザサービス定義のrpc_destination_modeオペランドにnamdまたはdefinitionが指定されたUAPから呼び出されるdc_rpc_callについて,第1引数に指定されたサービスグループ名を,ユーザサービスネットワーク定義に指定されたサービスグループ名の中から検索します。サービスグループ名が一致する定義が見つかった場合,その定義に指定されているホストとポート番号へサービス要求を送信します。

複数のホスト名を指定した場合,OpenTP1はランダムにホストを選択してサービス要求を送信します。サービス要求の送信で障害が発生すると,残りのホスト名から再度ランダムにホストを選択します。すべてのホストへのサービス要求の送信が障害になると,dc_rpc_callはエラーリターンします。サービス要求が成功すると,UAP内で以降に発行する同じサービスグループ名へのdc_rpc_callは,あて先再選択間隔を指定していなければ,障害が発生するまで同じホストにサービス要求の送信を継続します。継続中のサービス要求の送信で障害になった場合,障害になったホストを除いたすべてのホスト名からランダムに選んだホストに対してサービス要求の送信を試みます。

なお,次の条件が成立する場合,次回に呼び出したdc_rpc_callで,OpenTP1はランダムにホストを選択してサービス要求を送信します。

rpc_destination_modeオペランドの指定をdefinition,または省略した場合
  • すべてのホストへのサービス要求の送信が障害になり,ネームサーバへのあて先検索要求もエラーとなったためdc_rpc_callがエラーリターンしたとき

  • すべてのホストへのサービス要求の送信が障害になり,ネームサーバへのあて先検索要求が成功してdc_rpc_callが成功したとき

rpc_destination_modeオペランドの指定がnamdで,次の条件をすべて満たす場合
  • ネームサーバへのあて先検索要求がエラー

  • すべてのホストへのサービス要求の送信が障害

  • dc_rpc_callがエラーリターン

  • 次回に呼び出したdc_rpc_callでネームサーバへのあて先検索要求がエラー

複数のホスト名を指定した場合の,dc_rpc_callの動作例を次の図に示します。

図3‒7 dcsvgdef定義コマンドで複数のホスト名を指定した場合のdc_rpc_callの動作例

[図データ]

複数のdcsvgdef定義コマンドに同じサービスグループ名を指定した場合,ユーザサービスネットワーク定義ファイルで先に記述されているdcsvgdef定義コマンドの指定が有効になります。リモートAPI機能を介して要求するサービスの情報か,all_nodeオペランドに指定していないノード上のサービスの情報かの区別は,-wオプションの指定の有無によって判断します。

dcsvgdef定義コマンドのサービスグループ名に対し,XATMIインタフェースでサービスを要求しないでください。この制限に反した場合の動作は保証されません。

-wオプションを指定しないdcsvgdef定義コマンドのサービスグループ(SPP)が,atomic_update=Nであり,このサービスグループに対して,トランザクション内からdc_rpc_callを発行した場合,dc_rpc_callはDCRPCER_TRNCHKでエラーリターンします。この場合,SPPのatomic_updateオペランドに'Y'を指定するか,dc_rpc_callのflagsにDCRPC_TPNOTRANを指定する必要があります。

-wオプションを指定しないdcsvgdef定義コマンドのサービスグループ名に対して,dc_rpc_callを実行し,性能検証用トレースを取得していた場合,サーバ側の性能検証用トレース情報とリンクしません。つまり,クライアントUAPで取得した性能検証用トレースの通番は,サーバ側に引き継がれないため,サーバ側で取得した性能検証用トレースには,新たに採番した通番が出力されます。

-wオプションを指定したdcsvgdef定義コマンドのサービスグループ名に対して,非同期RPCを要求した場合は,このユーザサービスネットワーク定義を無効とし,従来どおりネーム情報検索によって処理します。また,-wオプションを指定したdcsvgdef定義コマンドのサービスグループに対し,トランザクションとしてサービス要求しても,無条件に非トランザクションモードで処理します。

-wオプションを指定したdcsvgdef定義コマンドのサービスグループ名に対して,dc_rpc_callを実行した場合,RPCトレースは取得しません。ユーザサービスネットワーク定義でリモートAPI機能を介したノード上のサービスとして定義したサービスグループへのdc_rpc_callについては,クライアントUAPのシステム定義でRPCトレースの取得を指定しても,クライアントのトレース情報を取得しません。

-wオプションを指定したdcsvgdef定義コマンドのサービスグループ名に対して,dc_rpc_callを実行した場合,レスポンス統計情報/通信遅延時間統計情報は取得しません。ユーザサービスネットワーク定義によってリモートAPI機能を介したノード上のサービスとして,定義したサービスグループへのdc_rpc_callは,システム定義でレスポンス統計情報/通信遅延時間統計情報の取得を指定しても,統計情報を取得しません。

-wオプションを指定し,TP1/Server Base間でリモートAPI機能を使用する場合(例えば,アプリケーションゲートウェイ型ファイアウォールなどのゲートウェイを介してRPCをするなど),トランザクション属性でdc_rpc_call関数を発行してもトランザクションにはなりません。したがって,トランザクション内から連鎖RPCを開始し,同期点処理で連鎖RPCを終了させる運用は,リモートAPI機能を使用した場合には正しく動作しません。flags引数にDCNOFLAGSを指定したdc_rpc_call関数で,明示的に連鎖RPCを終了するようにしてください。

オプション

●-g サービスグループ名

 〜〈1〜31文字の識別子〉

リモートAPI機能を介して利用するサービス,またはシステム共通定義のall_nodeオペランドで指定していないノード上のサービスの,サービスグループ名を指定します。このオプションは,「サービスグループ名の先頭にある文字(1文字以上) + *」の形式で,複数のサービスグループを一括して指定できます。

なお,all_nodeオペランドで指定していないノード上のサービスのサービスグループ名を指定する場合,このサービスはユーザサービス定義のreceive_fromオペランドでqueueを指定したSPPでなければなりません。

●-h ホスト名:ポート番号

 〜〈1〜255文字の識別子〉

リモートAPI機能によるサービスの受信口となるホスト名,またはシステム共通定義のall_nodeオペランドで指定していないノードのOpenTP1の通信に使用するホスト名を指定します。識別子に使用できる文字は英数字ピリオド,およびハイフンです(ただし,IPアドレス形式は除く)。ホスト名は,/etc/hostsファイルまたはDNSなどで,IPアドレスとのマッピングができなければなりません。

ホスト名の後ろにコロンで区切ってポート番号を指定できます。ポート番号の有効範囲は5001〜65535です。ポート番号を省略した場合,-pオプションに指定したポート番号が仮定されます。-hオプションと-pオプションの両方のポート番号を省略することはできません。両方のポート番号を省略した場合,KFCA00340-Wのメッセージが出力されます。

コンマで区切り,複数のホスト名を指定できます。リモートAPI機能を利用する場合(-wオプションを指定した場合),複数のホスト名を指定することはできません。リモートAPI機能を利用する場合に,複数のホスト名を指定したときは, KFCA00340-Wのメッセージが出力されます。

このオプションにホスト名を一つだけ指定した場合,ユーザサービス定義のrpc_destination_modeオペランドにdefinitionを指定しても,ネームサーバへのあて先検索要求は実行されません。

●-p ポート番号

 〜〈符号なし整数〉((1〜65535))

リモートAPI機能によるサービスの受信口となるポート番号,またはシステム共通定義のall_nodeオペランドで指定していないノード上のOpenTP1のスケジュールサービス定義のscd_portオペランドで指定したポート番号を指定します。

-wオプションを指定し,リモートAPI機能によるサービスの受信口となるポート番号を指定する場合は,1から65535の範囲のポート番号を指定できます。-wオプションを指定しないでスケジュールサービス定義のscd_portオペランドに指定したポート番号を指定する場合は,5001から65535の範囲のポート番号を指定できます。指定できない範囲のポート番号を指定した場合,KFCA00340-Wのメッセージが出力されます。

●-t あて先再選択間隔

 〜〈符号なし整数〉((0〜65534))(単位:秒)

-hオプションに複数のホスト名を指定し,サービス要求の送信を継続しているとき,あて先をランダムに再選択する時間間隔を秒単位で指定します。

-hオプションにホスト名を一つだけ指定した場合,このオプションで指定した値は有効になりません。-hオプションに指定したあて先へのサービス要求の送信が成功し,あて先との通信を開始したあと,あて先へのサービス要求の送信ごとに,このオプションに指定した時間以上経過しているかどうか判定します。このオプションに指定した時間以上経過していた場合,あて先をランダムに再選択します。このオプションに指定した時間以上経過していても,あて先へのサービス要求の送信が行われていなければ再選択は行いません。

なお,あて先の再選択で,再選択前と同一のあて先を選択する場合があります。このオプションに0を指定した場合,サービス要求の送信ごとにあて先をランダムに再選択します。このオプションを省略した場合,サービス要求が成功した送信先で障害が発生するまで同じあて先にサービス要求の送信を継続します。

あて先と通信を開始したあとの経過時間を次に示します。

  • ユーザサービス定義のrpc_destination_modeオペランドにdefinitionを指定した場合

    経過時間の開始は,-hオプションに指定されたあて先にサービス要求の送信が成功した時刻です。サービス要求の送信で障害が発生した場合,経過時間の開始は,残りのホスト名からランダムにあて先を選択し,サービス要求の送信が成功した時刻になります。ネームサーバのあて先検索で取得したあて先にサービス要求の送信が成功した場合,この時間は経過時間に含まれません。

    ユーザサービス定義のrpc_destination_modeオペランドにdefinitionを指定した場合の経過時間について次に示します。

    図3‒8 ユーザサービス定義のrpc_destination_modeオペランドにdefinitionを指定した場合の経過時間

    [図データ]

  • ユーザサービス定義のrpc_destination_modeオペランドにnamdを指定した場合

    経過時間の開始は,-hオプションに指定されたあて先にサービス要求の送信が成功した時刻です。サービス要求の送信を継続し,ネームサーバのあて先検索で取得したあて先にサービス要求の送信が成功した場合,この時間も経過時間に含みます。

    ユーザサービス定義のrpc_destination_modeオペランドにnamdを指定した場合の経過時間について次に示します。

    図3‒9 ユーザサービス定義のrpc_destination_modeオペランドにnamdを指定した場合の経過時間

    [図データ]

  • 連鎖RPCを使用した場合

    経過時間の開始は,-hオプションに指定されたあて先に連鎖RPC開始サービス要求の送信が成功した時刻です。あて先をランダムに再選択するかどうかの判定は,新たな連鎖RPC開始サービス要求の送信で行います。連鎖RPC中のサービス要求の送信,連鎖RPC終了サービス要求の送信では,判定を行いません。

    連鎖RPCを使用した場合の経過時間について次に示します。

    図3‒10 連鎖RPCを使用した場合の経過時間

    [図データ]

●-w

リモートAPI機能を使用する場合に指定します。このオプションを指定すると,-hおよび-pオプションで指定した値が,リモートAPI機能によるサービスの受信口の情報であることを示します。