Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


3.1.3 ネームサービス

ネームサービスとは,TP1/Server Baseがある各ノードで,自ノードが管理している全サーバUAPのネーム情報(サービスグループ名,IPアドレス,ポート番号,負荷レベル,閉塞情報など)を管理する機能です。また,ネームサービス間では,ネーム情報を交換して,他ノードのネーム情報を取得します。このため,ネームサービスを使用すると,RPC通信をするときに,ネットワーク上のどのノードにサーバUAPがあるかをクライアントUAPで意識する必要はありません。

また,同一サービスグループ名のサーバUAPが複数起動されている場合は,ネームサービスが管理しているネーム情報を使用したノード間負荷バランス機能によって,最適なサーバUAPにサービスを要求できます。ノード間負荷バランス機能の詳細については,「3.1.4 ノード間負荷バランス機能」を参照してください。

ネームサービスを使用するかどうかは,RPC関連定義のname_useオペランドで指定します。ネームサービスを使用する場合,サービスの要求先の決定方法を,RPC関連定義のrpc_destination_modeオペランドで指定します。また,ネームサービスを使用してトランザクション連携をする場合は,サービスの要求元とサービスの要求先の両方でネームサービスを使用する必要があります。ネームサービスを使用しない場合は,サービスの要求先をサービスグループ情報関連定義のeesvgdef定義コマンドで指定します。

他プロセスのネーム情報は,TP1/Server Baseのネームサービスが提供するネーム情報検索機能を使用して検索します。そのため,TP1/Server Baseから検索できるネーム情報は,TP1/EEでも検索できます。また,検索したネーム情報は,TP1/EEプロセス内のキャッシュに格納されるため,次回の検索を高速に処理できます。

〈この項の構成〉

(1) キャッシュ管理

TP1/EEは,ネームサービスから取得したネーム情報および自プロセスが登録したTP1/EEのネーム情報(サービスグループ名)を自プロセスのキャッシュに格納します。次回のネーム情報検索時に,該当するネーム情報がキャッシュにあれば,キャッシュに格納されていたネーム情報を使用します。このため,ネーム情報の検索を高速に処理できます。

(a) キャッシュの追い出し

ネーム情報のサイズが,キャッシュ領域のサイズ(RPC関連定義のname_cache_sizeオペランドで指定)より大きい場合,TP1/EEはキャッシュに格納されている古いネーム情報を先入れ先出し方式(FIFO方式)で追い出し,空いた領域に新しいネーム情報を格納します。

キャッシュに格納されているネーム情報が頻繁に追い出されるとキャッシュ効率が低下するため,キャッシュの追い出し率をRPC関連定義のrpc_nam_eject_rateオペランドで指定します。このキャッシュの追い出し率を基に,追い出しキャッシュ数が算出されます。ただし,算出された追い出しキャッシュ数が,新しいネーム情報を格納するのに必要なキャッシュ数に満たない場合,またはRPC関連定義のrpc_nam_eject_rateオペランドに0を指定した場合は,新しいネーム情報を格納するのに必要なキャッシュ数を追い出します。

(b) キャッシュ自動同期

次に示すどれかの条件を満たすネーム情報は,次回のネーム情報検索時にネームサービスで使用される可能性が高いため,キャッシュの有効期限(RPC関連定義のrpc_nam_use_timeオペランドで指定)が満了したときに,ネームスレッドで自動的に最新のネーム情報に更新されます(キャッシュ自動同期)。どの条件も満たしていないネーム情報は,キャッシュから削除されます。

  • RPC関連定義のrpc_nam_reserve_timeオペランドで指定したキャッシュの保留期間中に,該当するネーム情報が検索された場合

  • RPC関連定義のrpc_nam_use_timeオペランドで指定したキャッシュの有効期限内の検索回数が,RPC関連定義のrpc_nam_reserve_countオペランドで指定したキャッシュ自動同期を保留する回数以上あった場合

  • 自TP1/EEプロセスのネーム情報(プロセス関連定義のservice_groupオペランドで指定)である場合

RPC関連定義のrpc_nam_reserve_countオペランドに1を指定している場合は,必ずキャッシュ自動同期を実行します。

(c) eenamupdateコマンドによるキャッシュ即時更新

eenamupdateコマンド実行時は,コマンドの延長で指定サービスグループ名のネーム情報を取得し,キャッシュを更新します。

(2) リトライ処理

ネームサービスを使用する場合,サービス要求メッセージの送信中に通信障害が発生したとき,または,サービス要求メッセージの送信先のサーバUAPが未起動などの旨の応答メッセージが返ってきたときは,リトライ処理を実行して,別のあて先にサービス要求メッセージを送信します。ネームサービスを使用しない場合は,リトライ処理を実行しません。

リトライ処理を実行するときのサービス要求先の決定方法は,RPC関連定義のrpc_destination_modeオペランドで指定します。rpc_destination_modeオペランドの指定値によって,リトライ処理の流れは次のように異なります。

注※

ネームサービスからのネーム情報取得に失敗した場合で,RPC関連定義のrpc_retryオペランドにYを指定したときは,次に示すオペランドの指定値に従ってリトライ処理を実行します。

リトライ回数

RPC関連定義のrpc_retry_countオペランド

リトライ間隔

RPC関連定義のrpc_retry_intervalオペランド

(3) 注意事項