分散トランザクション処理機能 OpenTP1 解説

[目次][用語][索引][前へ][次へ]

付録D.2 他ノードへのリモートプロシジャコールの処理の概要

他ノードへのリモートプロシジャコールの処理の概要について,次の図に示します。

図D-2 他ノードへのリモートプロシジャコールの処理の概要

[図データ]

[図データ]

図で示した処理の流れについて,次に説明します。番号は,図中の番号と対応しています。なお,1.〜3.および5.〜8.はTP1-Xの処理,4.はTP1-A,TP1-B,TP1-Cの処理,9.〜12.はTP1-Cの処理についての説明です。

  1. dc_rpc_call関数の引数に指定されたサービスグループ名を検索キーに,該当するサービス情報がローカルキャッシュとグローバルキャッシュに登録されているかを確認します。
  2. 該当するサービス情報が存在しなければ,ネームサービスにサービス情報の検索要求を送信します。
    該当するサービス情報がローカルキャッシュ,グローバルキャッシュに存在しても,次の条件を満たす場合は,グローバルキャッシュに存在するサービス情報をいったん削除したあと,ネームサービスへサービス情報の検索要求を送信します。
    • 該当するサービス情報がグローバルキャッシュに存在し,該当するサービス情報の有効時間※1が経過した場合。
    • サービス要求先UAPが自ノードで起動したあと,該当するサービスに対して初めて行ったサービス情報の検索要求だった場合。
  3. サービス情報の検索要求を受信したTP1-Xのネームサービスは,システム共通定義のall_nodeオペランドに指定されたノード(TP1-A,TP1-B,TP1-C)に対してサービス情報の検索要求を送信します。
    ただし,all_nodeオペランドを指定していない場合は,サービス情報の検索要求は送信しません。また,all_nodeオペランドに指定されたサービス要求先がRPC抑止リスト※2に登録されていた場合,該当するノードに対してサービス情報の検索要求は送信しません。
  4. サービス情報の検索要求を受信したTP1-A,TP1-B,TP1-Cのネームサービスでは,ローカルキャッシュに該当するサービスグループが存在するか検索し,その結果をTP1-Xのネームサービスに送信します。
  5. 他ノードに対するサービス要求の応答が返ってきたため,TP1-Xのネームサービスは,受信したサービス情報をグローバルキャッシュに登録します。
  6. TP1-Xのネームサービスは,検索して取得したサービス情報を,サービス要求元UAPに返します。
  7. 複数の同一サービスグループ名称のUAPが起動されていた場合は,TP1の内部処理によって,その中から一つのサービス要求先UAP(サーバUAP2)を選択します。この説明では,TP1-Cをあて先に選択すると仮定します。
  8. 7.で選択したTP1-Cのスケジュールサービスに対して,サービス実行要求を送信します。
  9. サービス要求を受信したスケジュールサービスでは,該当するサービスグループのサービス要求先UAP(サーバUAP2)のメッセージキューに対し,サービス要求を登録します。
  10. サービス要求が登録されたサービス要求先UAP(サーバUAP2)では,メッセージキューからサービス要求を取り出します。
  11. サービス関数を実行します。
  12. サービス関数の実行後,サービス要求元UAPに対して,サービス要求先UAP(サーバUAP2)から,直接応答メッセージを送信します。
注※1
サービス情報を取得した時間からネームサービス定義のname_cache_validity_timeオペランドで指定した値までの時間を指します。
name_cache_validity_timeオペランドについては,マニュアル「OpenTP1 システム定義」を参照してください。
注※2
未起動ノードの情報を保持しているリストを指します。
他ノードのネームサーバに対する通信に失敗した場合,RPC抑止リストに登録されます。RPC抑止リストにノードが登録されると,該当するノードのサービス情報はグローバルキャッシュからすべて削除されます。ノード監視機能を使用し,停止状態だったノードが稼働状態になったと判断した場合,該当するノードの情報をRPC抑止リストから削除します。
詳細については,「3.2.3(3) RPC抑止リストに登録されたノードの監視機能」を参照してください。