2.3.3 TCPプロトコルを使用したRPC通信との差異

TCPプロトコルを使用したRPC通信と比較して,UDPプロトコルを使用したRPC通信では,次に示す差異があります。

<この項の構成>
(1) RPC通信機能の差異
(2) 使用するリソースの差異

(1) RPC通信機能の差異

UDPプロトコルを使用したRPC通信を行う場合は,次に示す機能を使用できません。

表2-7 UDPプロトコルを使用したRPC通信を行う場合のRPC通信機能の差異

項番差異影響するシステム
1トランザクショナルRPCは使用できません。
ee_rpc_call関数のflags引数にEERPC_UDPを指定し,かつ論理和でEERPC_TPNOTRANを指定しなかった場合,ee_rpc_call関数はEERPCER_PARAM_FLAGSでエラーになります。
クライアント側
2RPC応答のトランザクションまたがり送信機能は使用できません。
使用した場合,ee_rpc_reply_suspend関数がEERPCER_PROTOでエラーになります。ただし,通常のRPC通信で起動されたサービス上でRPC応答メッセージの送信を抑止(ee_rpc_reply_suspend関数を発行)し,この機能によって起動されたサービス上で抑止解除(ee_rpc_reply_send関数を発行)することはできます。
サーバ側
3ERRTRNRによるRPC応答メッセージ送信機能は使用できません。
ERRTRNRによるRPC応答メッセージ送信機能を使用し(rpc_reply_errtrnrオペランドにYを指定),かつ起動されたサービスからERRTRNRが起動されたとしても,RPC応答メッセージはトランザクション決着時に送信されます。
サーバ側
4サービス要求先の決定方法として,ネームサービスからの検索は使用できません。
ee_rpc_call関数のflags引数にEERPC_UDPを指定した場合,RPC関連定義のrpc_destination_modeオペランドの設定値は無視され,eesvgdef定義コマンド指定値だけがサービス要求先になります。
クライアント側
5次に示すノード間負荷バランス機能は使用できません。
  • サービス要求時のノード間負荷バランス機能(クライアント側)
  • サービス要求受付時のノード間負荷バランス機能(サーバ側)
    rpc_loadbalanceオペランドの指定値は無視されます。
  • 他サービスグループあてのサービス要求受付時の転送(サーバ側)
    rpc_transfer_othersvgオペランドの指定値は無視されます。
クライアント側およびサーバ側

(2) 使用するリソースの差異

UDPプロトコルを使用したRPC通信を行う場合は,TCPプロトコルを使用したRPC通信と比較して,使用するリソースに,次に示す差異があります。次に示すリソース以外については,TCPプロトコルを使用したRPC通信を行う場合と共有します。

表2-8 UDPプロトコルを使用したRPC通信を行う場合の使用するリソースの差異

項番リソース差異
1ファイルディスクリプタUDP通信機能のファイルディスクリプタを使用するため,RPC通信用としてファイルディスクリプタを使用しません。
2ポートUDP通信機能のポートを使用するため,RPC通信用のポートを使用しません。
3ソケット送受信バッファサイズUDP通信機能の定義で指定したUDPソケット送受信バッファサイズになります。
4フラグメントメッセージ用バッファUDP通信機能のリソースを使用するため,RPC通信用としてフラグメントメッセージ用バッファを使用しません。