Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Financial Service Platform 使用の手引


5.4.9 サーバ間連携

OBM開始コマンドとBCM間,およびBCMとBCS間は,RPCを用いて通信します。ネーム機能の使用を前提とします。トランザクション連携は使用しません。

〈この項の構成〉

(1) ネゴシエーション

BCMとBCS間でOBM実行環境のチェックを行います。

チェックする契機は,次のどちらかです。BCSからBCMに対して要求することで行います。

BCSはオンライン初期化時に定義情報の取得を要求します。BCMは,チェック対象の定義情報を応答します。BCSでは,応答内容を基にOBM実行環境のチェックを行います。チェックした結果,OBM実行可能であれば,定義確認結果を送信します。実行可能な環境でない場合の動作は,定義によって次のどちらかを選択できます。

BCS起動時にBCMがオンライン状態ではなく応答がない場合は,定期的にリトライします。

BCS起動後にBCMが停止した場合は,定期的にBCMに定義取得要求を送信します。BCMが再起動してオンライン状態になると定義情報を応答し,BCSのオンライン初期化時と同様に実行環境のチェックを行います。BCMの停止を検知する機能については,「(4) 障害監視」を参照してください。

実行環境の確認でチェックする内容の詳細は,「26.1.6 BCSの設定」および「26.1.7 OBMの定義の関係」を参照してください。なお,ステータス管理に使用する表がBCMとBCSで同一かどうかを確認するためにHiRDBにアクセスします。BCMでは確認に使用する情報をオンライン開始時にHiRDBの表に更新します。

(2) バッチ実行

バッチ業務を実行するノーマルトランザクションは,BCSで起動します。BCMでロットスケジュール,バッチデータの入力(データ型の場合)を行い,RPCによって実行要求を送信します。BCSは,実行要求を受信すると応答を送信し,ノーマルトランザクションを起動します。ノーマルトランザクションが終了するとBCMに対して実行終了通知を送信します。

BCMからBCSには,サービスグループ名を指定したRPCで送信します。送信先BCSは,定義によって決める方法と,ネーム機能を使用して自動的に決める方法を選択できます。

(a) 定義によって決める方法

OBM構成定義lotdef -r node_idオペランドに送信先BCSがあるTP1/SBのノード識別子を定義することで,送信先のBCSを決めます。送信先定義は,最下位ロットにだけ定義できます。

(b) ネーム機能による自動決定

ネーム機能を使用して自動的に送信先を決定します。RPC関連定義rpc_destination_modeの設定に関係なくネームサービスから取得した宛先にサービスを要求します。ただし,送信先となるのは,ネゴシエーションが完了しているBCSだけです。ネゴシエーションが完了していないBCS,OBMを使用していないTP1/EE,およびTP1/EE以外のTP1/SBのSPPは送信先としません。

ノード間負荷バランス機能を使用している場合は,送信時にノード間負荷バランス機能によって実行要求の送信先を決定します。受信したBCSの負荷レベルがLEVEL2となっていてもほかのBCSには転送しないで自ノードで処理を行います。送信時にBCMがネームサーバから取得した負荷レベルで実行するBCSを決定します。

図5‒33 BCMの送信先選択

[図データ]

(c) 実行サーバのくくり付け

同一の最下位ロットのノーマルトランザクションは同一のBCSで実行するようにくくり付けます。最初にノーマルトランザクションの実行要求を送信するときに送信先を決定します。以降は,同じBCSに対して実行要求を送信します。ノーマルトランザクションを実行しているBCSが正常終了,または計画停止Aで停止した場合は,送信済みのノーマルトランザションがすべて終了してから,別のBCSでノーマルトランザクションを実行します。

なお,OBMが障害,計画停止によって停止した場合は,送信先を引き継ぎません。再開始時に送信先を再決定します。

図5‒34 実行サーバのくくり付け

[図データ]

(d) ブロック転送

データ型OBMでは,複数のデータを一括送信することで通信回数を減らし,通信によるオーバヘッドを軽減し,バッチ処理全体の実行時間を短縮できます。一括送信する単位をブロックと呼びます。

図5‒35 バッチデータのブロック転送

[図データ]

(3) 実行中ノーマルトランザクションの停止

OBM停止コマンドを実行した場合,またはノーマルトランザクションを実行している一部のBCSが障害によって停止した場合など,OBMの停止要求を受け付けたBCMは,該当するOBMのノーマルトランザクションを実行しているBCSに対してノーマルトランザクションの停止要求を送信します。停止要求を受信したBCSは,停止要求に対する応答を送信し,仕掛かり中のノーマルトランザクションの終了を待ちます。仕掛かり中のノーマルトランザクションが終了すると,BCMに対して実行終了通知を送信します。

図5‒36 実行中ノーマルトランザクションの停止

[図データ]

(4) 障害監視

OBM開始コマンドとBCM,BCMとBCSの間で,定期的に通信を行い,通信相手が正常に動作しているか監視を行います。

(a) OBM開始コマンドとBCM間の障害監視

OBM開始コマンドでは,BCMに実行要求を送信後,実行要求に対する応答を受信するまで,定期的にalive電文を送信します。alive電文に対する応答をbcmsvgdef -sオペランドで設定した応答監視時間を超えても受信できなかった場合は,BCMで障害が発生したと判断し異常終了します。

BCMは,実行要求を受けてから実行要求に対する応答を送信するまでの間,alive電文の受信間隔がbcmsvgdef -sオペランドで設定した監視時間を超えるとOBM開始コマンドで障害が発生したと判断し,実行中のOBMを停止します。

図5‒37 OBM開始コマンドとBCM間での障害監視

[図データ]

(b) BCMとBCS間の障害監視

BCSでは,ネゴシエーションが終了してからBCMに対して定期的にalive電文を送信します。alive電文に対する応答をbcmsvgdef -cオペランドで設定した応答監視時間を超えても受信できなかった場合は,BCMで障害が発生したと判断し,仕掛かり中のノーマルトランザクションの終了を待ちます。終了を確認したあとは,新たなノーマルトランザクションの起動を中止しOBMを停止します。また,alive電文の送信による障害監視を終了し,ネゴシエーションを開始します。ネゴシエーションについては,「(1) ネゴシエーション」を参照してください。

図5‒38 BCMとBCS間での障害監視

[図データ]

(5) TP1/EEの終了通知

TP1/EEが正常終了または計画停止Aをするときは,BCMまたはBCSの終了を通知することで障害監視を停止します(不要な障害メッセージの出力を避けるため)。

TP1/EEが計画停止B,または強制停止するときは,BCMまたはBCSの終了を通知しません。この場合は,障害監視によってBCMまたはBCSの終了を検知します。

(a) BCMの終了通知

BCMのTP1/EEをBCSのTP1/EEより先に終了する場合は,BCMから,ネゴシエーション済みのすべてのBCSに対してTP1/EEの終了を通知します。

終了通知を受け取ったBCSは,障害監視を終了して,ネゴシエーション要求の送信を開始します。終了処理中のBCMは,BCSからのネゴシエーションを受け付けません。

図5‒39 BCMからBCSへの終了通知

[図データ]

(b) BCSの終了通知

BCSのTP1/EEをBCMのTP1/EEより先に終了する場合は,BCSから,ネゴシエーション済みのBCMに対してTP1/EEの終了を通知します。

終了通知を受け取ったBCMは,送信元のBCSの障害監視を終了します。

図5‒40 BCSからBCMへの終了通知

[図データ]

(6) 複数BCMとの接続

1つのBCSから2つのBCMに同時に接続します。また,それぞれのBCMで実行されたOBMのトランザクションを,1つのBCSで実行できます。

この機能を使用することで,業務を停止することなくOBM構成定義を変更できます。運用方法については,「26.5 オンライン中のOBM構成定義の変更」を参照してください。

[図データ]