Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編


2.3.4 連鎖RPC

SPPの実行プロセスは,マルチサーバ(同じSPPを複数のプロセスで同時に起動する機能)の場合,サービスが要求されるたびに起動されます。CUPから同じサービスグループを2回以上呼び出したとき,そのサービスグループのSPPが以前と同じプロセスで実行されるとは限りません。ただし,同期応答型RPCで,かつ同じサービスグループに属するサービスを2回以上要求する場合に限り,そのサービスを以前と同じプロセスで実行させることができます。これを連鎖RPCといいます。

連鎖RPCは,CUPからトランザクションを起動している場合,または常設コネクションを確立している場合に使用できます。

連鎖RPCを使用すると,一つのトランザクション処理に必要なユーザプロセスの数が少なくなり,トランザクション処理に掛かる負荷を軽減できます。トランザクションとして連鎖RPCを使用する場合は,一つのグローバルトランザクションで動作します。

連鎖RPCは,CUPのプロセス単位に保証されます。ただし,同じグローバルトランザクション内でも,クライアントUAPが異なれば,複数回呼び出されたサービスが同じプロセスで起動されることは保証されません。

〈この項の構成〉

(1) 連鎖RPCの開始

連鎖RPCとなるサービス要求をする場合は,サービスを要求するdc_rpc_call_s関数のflagsにDCRPC_CHAINEDを指定してください。この値を指定してサービスを要求すると,SPPは連鎖RPCであることを認識して,プロセスを確保します。2回目以降のサービス要求のflagsにもDCRPC_CHAINEDを指定します。

(2) 連鎖RPCの終了

連鎖RPCは,次のどちらかの方法で終了します。

(3) 連鎖RPCの時間監視

連鎖RPCでサービスを要求されるUAPでは,CUPに応答を返してから,次のサービス要求がくるまでの間,またはトランザクションの同期点処理がくるまでの時間を監視しています。この監視時間を過ぎても次のサービス要求,または同期点処理要求が来ない場合は,CUPで障害が発生したものとみなして,SPPを異常終了させます。監視時間はユーザサービス定義のwatch_next_chain_timeで指定します。