JP2005025481A - メッセージ通信方法およびその実施計算機システム - Google Patents

メッセージ通信方法およびその実施計算機システム Download PDF

Info

Publication number
JP2005025481A
JP2005025481A JP2003189952A JP2003189952A JP2005025481A JP 2005025481 A JP2005025481 A JP 2005025481A JP 2003189952 A JP2003189952 A JP 2003189952A JP 2003189952 A JP2003189952 A JP 2003189952A JP 2005025481 A JP2005025481 A JP 2005025481A
Authority
JP
Japan
Prior art keywords
server
message
client
processing request
transmission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003189952A
Other languages
English (en)
Inventor
Koji Suzuki
浩次 鈴木
Masahiro Tsumura
昌洋 津村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003189952A priority Critical patent/JP2005025481A/ja
Publication of JP2005025481A publication Critical patent/JP2005025481A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】非同期メッセージ通信使用したシステムでクライアント101が発行する処理要求メッセージが送信先のサーバシステム201で業務アプリケーション21に対しての実行待ちや業務アプリケーション21の障害により応答遅延することを抑制する通信方法を提供する。
【解決手段】クライアントが発行する処理要求メッセージの送信先はサーバシステムの業務アプリケーションが起動中の状態であり、なおかつサーバ受信キューに格納されているメッセージ数が最も少ないサーバシステムを選択する。サーバシステムではサーバ受信キューの処理要求メッセージ取り出しを監視し、一定時間以上取り出しされないときは他のサーバシステムへメッセージを転送する。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明はプログラム間におけるメッセージ通信技術に関する。
【0002】
【従来の技術】
情報処理の形態は、かつては専らメインフレームと端末による集中型処理であったが現在ではクライアントサーバ方式が主流となりつつあり、その基盤は分散処理方式である。この分散処理方式における通信方式として柔軟で拡張性に富んだシステムを構築するためメッセージキューを介し、クライアントとサーバシステム間の通信を非同期に通信する非同期メッセージ通信を活用したシステム構築の事例が急速に広まっている。非同期メッセージ通信ではクライアントアプリケーションはサーバシステムへの処理要求メッセージを送信キューに格納したところで要求処理を手放すことができ、さらにクライアントアプリケーションはサーバシステムから応答された処理結果メッセージをキューから取り出すことで参照できる。
【0003】
つまり非同期メッセージ通信はサーバシステムへの処理要求メッセージの送信やサーバからの処理結果メッセージの受信がクライアントアプリケーションから離れ、バックグラウンドで実行できるといった特徴がある。処理要求メッセージを実行できる業務アプリケーションを持ったサーバシステムが複数存在する場合もクライアントアプリケーションは処理要求メッセージがどのサーバシステムに送信されて実行されるかは検知する必要がない。しかし、業務アプリケーションの実行待ちによる停滞がより少ないサーバシステムを送信先として選択することが望まれる。
【0004】
従来の処理要求メッセージの送信先サーバシステムの選択方法としては特許文献1に開示されているようなサーバシステムからクライアントに通知される可用性データに基づいて送信可能なサーバシステムを選択し、選択可能なサーバシステムが複数存在する場合は例えばラウンドロビン方式などの任意の負荷分散ロジックに基づいたアルゴリズムにより解決される。
【0005】
【特許文献1】
特開平11−328132号
【0006】
【発明が解決しようとする課題】
上記従来技術はクライアントがサーバシステムから受信する受信可/否データをもとに送信先が決定されるが、受信可能となっているサーバシステムが複数存在するときクライアント内の負荷分散ロジックに依存される。例えばクライアントがラウンドロビン方式を採用している場合、特定のサーバシステムが業務アプリケーションの実行遅延などの理由から既に多数の処理要求メッセージを抱えている場合でもクライアントはそのサーバシステムを送信先として選択し、処理要求メッセージを送信してしまうため、サーバシステム間での処理要求メッセージの仕掛かりが均等化できなくなり、特定のサーバシステムで多数の処理要求メッセージをもつ傍ら他のサーバシステムで処理要求メッセージの到着待ちとなるなどシステム全体のスループットが低下する場合があるといった問題があった。
【0007】
本発明は、サーバシステム間の負荷のアンバランスの改善や、サーバシステムのリソースをより効率的に利用することを目的とする。
【0008】
【課題を解決するための手段】
上記の目的を達成するために以下の方法を用いるものである。クライアントの送信要求アプリケーションで発行されるサーバシステムの業務アプリケーションに対する処理要求メッセージは処理要求メッセージのサーバシステム送信時に送信先判定テーブルを参照することで、同一業務アプリケーションをもったサーバシステムの集まりであるサーバグループの中から処理要求メッセージの送信先サーバシステムを選択する。ここでいうメッセージ通信は、端末と計算機もしくは計算機間の通信、もしくはプログラム間やオブジェクト間、プログラムとオブジェクト間の通信でも良い。
【0009】
クライアントで保持する送信先判定テーブルは後述のサーバグループ内負荷管理装置により受け取るテーブルであり、サーバグループ内の全てのサーバシステム内の受信キューに格納されているメッセージ数とそれぞれの「起動中」または「停止中」の業務アプリケーションの実行状況を保持している。
【0010】
クライアントにおける送信先サーバシステムの判定基準は送信先判定テーブルのレコード内で最もメッセージ数が少ない業務アプリケーションが「起動中」のサーバシステムを選択する。ここでもし、前記の条件を満たすサーバシステムが複数存在した場合はそのうちどのサーバシステムを選択しても良い。クライアントは選択したサーバシステムへ処理要求メッセージを送信する。送信が成功すると送信時にサーバシステムから受け取った最新の受信キューのメッセージ数と業務アプリケーションの実行状況を送信先判定テーブルの送信先サーバシステムのレコードに対して更新する。
【0011】
ここでもし、サーバシステムへの処理要求メッセージの送信に失敗した場合は、サーバシステムに障害が発生しているものと判断し、送信先判定テーブル内の該当するサーバシステムの業務アプリケーションの実行状況を「停止中」に変更することで当該サーバシステムへの処理要求メッセージの送信を抑止する。なお、クライアントが処理要求メッセージの送信時に参照する送信先判定テーブルには有効期限を設けてサーバグループ内負荷管理装置より更新した送信先判定テーブルがクライアント定義による間隔を経過した場合は使用せず、再びサーバグループ内負荷管理装置から最新データを取得する。
【0012】
サーバグループ内負荷管理装置では定期的およびサーバシステムの業務アプリケーションの状態が「起動中」から「停止中」、または「停止中」から「起動中」に変わる度に各サーバシステムが通知する更新データをもとにサーバグループ内の全てのサーバシステムの受信キューに格納されているメッセージ数と業務アプリケーションの実行状況を管理する。サーバグループ内負荷管理装置ではシステムで定義された一定の間隔内に更新データを送付しなかったサーバシステムについてサーバシステムに障害が発生しているものと判断し、送信先判定テーブル内の該当サーバシステムの業務アプリケーションの実行状況を「停止中」に変更することで当該サーバシステムへの処理要求メッセージの送信を抑止する。
【0013】
サーバシステム内では受信キューの処理要求メッセージがシステムで定義された一定の間隔取り出しが行われていないと業務アプリケーションが異常停止していると判断し、サーバシステムの業務アプリケーションの実行状況を「停止中」としてサーバグループ内負荷監視装置に通知し、処理要求メッセージの送信を抑止する。さらに当該サーバシステムはサーバグループ内負荷監視装置から受信キュー管理テーブルの状態を取得し、クライアントのサーバシステム選択手順と同様な手順で転送先のサーバシステムを選択し、転送先サーバに向けてメッセージを送信する。
【0014】
サーバシステムでの業務アプリケーションの実行状況は業務アプリケーションが開始または実行契機で「開始中」に設定され終了時に「停止中」に設定される。つまりサーバグループ内負荷管理装置での更新データの通知のよる監視やーバシステム内での受信キューの処理要求メッセージの取り出しの監視によって抑止されたクライアントからの処理要求メッセージの送信やサーバシステムの転送処理は業務アプリケーションの開始時または実行時に解除する。
【0015】
【発明の実施の形態】
以下、本発明の実施例を図面より説明する。図1は本発明の一実施例の概略構成図である。
図1において101はクライアントを示す。201はサーバグループ401に属するサーバシステムを示す。また301はサーバグループ401に設置されたサーバ内負荷管理装置を示す。
【0016】
クライアント101はサーバグループ401のサーバシステムの業務アプリケーション21に対する処理要求をするクライアント処理要求アプリケーション10と処理要求メッセージを生成する処理要求メッセージ生成部11と処理要求メッセージを蓄積するクライアント送信キュー12とサーバグループ401の中から送信先のサーバシステム201を選択するクライアントメッセージ送信先判定部13と送信先サーバシステムを選択するため判定情報となる送信先サーバ判定テーブル14を有する。ここでいうアプリケーションは、プログラム、業務プログラム、オブジェクトでも良い。
【0017】
さらにクライアント101はサーバシステム201より送付される処理結果メッセージを格納するためのクライアント受信キュー15とクライアント受信キュー15から処理結果メッセージを取り出すクライアント処理結果メッセージ応答部16および処理結果をクライアント101のユーザに向けて結果を表示するクライアント結果表示アプリケーション17を有する。さらにクライアント101からサーバシステム201へ処理要求メッセージを送信するクライアントメッセージ送信部18とサーバシステム201からの処理結果メッセージ受信し、クライアント受信キュー15へ格納するクライアントメッセージ受信部19を有する。
【0018】
サーバシステム201はクライアント101から受信した処理要求メッセージを蓄積できるサーバ受信キュー20と処理要求メッセージに応じた業務データベース22に検索や更新などのアクセスをし、サーバ送信キュー23へ処理結果メッセージを格納する業務アプリケーション21と処理結果メッセージを蓄積するサーバ送信キュー23とサーバ受信キュー20の処理要求メッセージの格納を監視するサーバ送信キュー監視部24とクライアント101から処理要求メッセージを受信してサーバ受信キュー20へ格納するサーバメッセージ受信部28とクライアント101への処理結果メッセージの送信を行うサーバメッセージ送信部29を有する。
【0019】
さらにサーバシステム201はサーバ受信キュー20の処理要求メッセージの格納数を管理するサーバ受信キュー状態管理部25と業務アプリケーション21の起動と停止状態を監視し、停止状態になるとサーバ受信キュー20の処理要求メッセージを他のサーバシステム201へ転送する業務アプリケーション状態監視部26とその転送先となるサーバシステムを選択するため判定情報となる転送先サーバ判定テーブル27を有する。
【0020】
サーバグループ内負荷管理装置301はサーバグループ401内の全てのサーバシステム201のサーバ受信キュー20のメッセージ数と業務アプリケーションの状態を管理する受信キュー管理テーブル32とサーバシステム201から通知される情報を受信キュー管理テーブル32に更新する受信キュー負荷状態更新部31とクライアント101またはサーバシステム201からのサーバ受信キュー管理テーブル32の参照に応答する受信キュー負荷状態応答部30を有する。
【0021】
なお、システム内のクライアント101およびサーバシステム201にはそれぞれシステム全体でユニークとなるクライアントIDまたはサーバシステムIDを付与するものとする。
【0022】
クライアント101においてクライアント処理要求アプリケーション10は図2に示したフローチャート10201に従って実行する。クライアント処理要求アプリケーション10は例えばグラフィカルユーザインタフェースなど任意のユーザアプリケーションを介して、サーバシステムにおける例えば業務データベース更新や検索要求など任意の処理要求を受け付け、処理要求をクライアント処理要求メッセージ生成部に通知する。
【0023】
クライアント処理要求メッセージ生成部11は図3に示したフローチャート10301に従って実行する。クライアント処理要求メッセージ生成部11は図19に示す処理要求メッセージ形式1901に従った処理要求メッセージを作成する。処理要求メッセージのメッセージ種別フィールドには本メッセージが処理要求メッセージであることを示すシステム共通で定めた識別子を更新する。メッセージIDフィールドにはシステム全体でユニークとなる任意のメッセージIDを更新する。メッセージIDをシステム全体でユニークにする方法については規定しない。例えば「クライアントID+メッセージ生成時刻+同一時刻内の生成通番」などが考えられる。メッセージ生成時刻フィールドには現在時刻を更新する。要求元クライアントIDフィールドには自クライアントIDを更新する。処理要求内容フィールドにはクライアント処理要求アプリケーション11から受け付けた処理要求を更新する。次にクライアント処理要求メッセージ生成部11は作成した処理要求メッセージをクライアント送信キュー12に格納する。
【0024】
クライアント送信キュー12はクライアントメッセージ送信先判定部13によって監視される。クライアントメッセージ送信先判定部13は図4に示したフローチャート10401に従って実行する。クライアントメッセージ送信先判定部13はクライアント送信キュー12に処理要求メッセージが到着すると、まずはクライアント101内で管理される送信先サーバ判定テーブル14のデータ更新時刻を参照する。現在時刻がデータ更新時刻からクライアント101内であらかじめ定義された更新間隔を経過している場合は以下の手順により送信先判定テーブル14を最新情報に更新する。クライアントメッセージ送信先判定部13は図22に示したサーバ負荷情報送信依頼電文形式2201に従ったサーバ負荷情報送信依頼電文を作成する。
【0025】
サーバ負荷情報送信依頼電文の電文種別フィールドには本電文がサーバ負荷情報送信依頼電文であることを示すシステム共通で定めた識別子を更新する。依頼元システムIDフィールドには自クライアントIDを更新する。
【0026】
作成したサーバ負荷情報送信依頼電文はサーバグループ内負荷管理装置301のサーバ受信キュー負荷情報応答部30へ送信する。
サーバ受信キュー負荷情報応答部30からは図23に示したサーバ負荷情報応答電文形式2301に従ったサーバ負荷情報応答電文が返却される。
【0027】
サーバ負荷情報応答電文にはサーバグループ401に属したサーバシステム毎のサーバ受信キューのメッセージ数と業務アプリケーションのステータス情報が埋め込まれている。クライアントメッセージ送信先判定部13はこのサーバ負荷情報応答電文を受け取るとサーバ負荷情報応答電文の先頭サーバシステムIDフィールドのシステムIDから最終サーバシステムIDフィールドのシステムIDまで順番に図27に示した送信先判定テーブル形式2701の形式をもった送信先判定テーブル14にサーバ負荷情報応答電文のサーバ受信キューメッセージ数フィールドと業務アプリケーションステータスフィールドの内容を更新する。なお、送信先判定テーブル14のクライアント101内での保持方法は規定しない。ただし、クライアント101のシステム軽度を保つためにはメモリ上で保持することが望ましい。送信先判定テーブル14の更新が完了するとクライアント101のシステム内固有に管理される送信先サーバ判定テーブル14のデータ更新時刻を現在時刻に更新する。
【0028】
クライアントメッセージ送信先判定部13は次に送信先サーバ判定テーブル14を使用して処理要求メッセージの送信先サーバシステムを選択する。処理要求メッセージの送信先サーバシステムの選択処理の手順については後述する。
【0029】
クライアントメッセージ送信先判定部13は処理要求メッセージの送信先サーバシステムの選択処理により送信先サーバシステムが選択できなかった場合は送信先サーバ判定テーブル14のデータ更新時刻から更新間隔が経過するまで待ち、再びサーバ負荷情報送信依頼電文の作成処理に戻る。送信先サーバシステムが選択できた場合、クライアント送信キュー12から処理要求メッセージを取得し、取得した処理要求メッセージの送信先サーバシステムIDフィールドに送信先サーバシステムの選択処理で選択した送信先サーバシステムのサーバシステムIDを更新する。そしてクライアントメッセージ送信部18へ処理要求メッセージを通知し、送信指示する。クライアントメッセージ送信部18による処理要求メッセージの送信処理が終わるとクライアントメッセージ送信部18からの戻り値を判定し、送信成功が返却された場合は戻り値に付与されたメッセージ数と業務アプリケーションステータスを送信先サーバ判定テーブル14の送信先サーバシステムのレコードに対して更新する。
【0030】
またクライアントメッセージ送信部18から送信失敗が返却された場合は該当サーバシステムが送信先サーバシステムとして選択されないように送信先サーバ判定テーブル内の業務アプリケーションステータスフィールドを「停止中」に変更する。その後、クライアントメッセージ送信先判定部13はクライアント受信キュー12のメッセージ監視処理に戻り、これら一連の処理を繰り返す。
クライアントメッセージ送信先判定部13の送信先サーバシステムの選択処理は図5に示すフローチャート10501に従って実行する。まず送信先サーバ判定テーブル14の全てのレコードを参照し、業務アプリケーションステータスフィールドが「起動中」のサーバシステムIDを抽出する。ここでもし、「起動中」のサーバシステム201が一つも存在しない場合は選択可能なサーバシステム201がないものと判断し、「選択可能なサーバシステムなし」を返却する。
【0031】
起動中のサーバシステム201が1つしかないときはそのサーバシステムが送信先サーバシステムとして選択されることになり、そのサーバシステムのサーバシステムIDを返却する。また、起動中のサーバシステム201が複数あるときはサーバ受信キューメッセージ数が最も少ないサーバシステム201を選択し、そのサーバシステム201のサーバシステムIDを返却する。また、サーバ受信キューメッセージ数については、他に比べて少ないものでもある程度の効果は期待できる。
【0032】
ここでもし、サーバ受信キューメッセージ数が同一のサーバシステム201が複数存在した場合は、そのうちでどのサーバシステム201を選択しても良いものとする。例えばシステムIDの小さい方を優先的に選択することで一つのサーバシステム201を特定できる。
【0033】
クライアントメッセージ送信部18はクライアントメッセージ送信先判定部13が選択したサーバシステム201へ処理要求メッセージを送信する。クライアントメッセージ送信部18は図6に示したフローチャート10601に従って実行される。
【0034】
クライアントメッセージ送信部18は送信指示を受け付けると図24に示したメッセージ送信電文形式2401に従うメッセージ送信電文を作成する。メッセージ送信電文の電文種別フィールドには本電文がメッセージ送信電文であることを示すシステム共通で定めた識別子を更新する。依頼元システムIDフィールドには自クライアントIDを格納する。メッセージフィールドにはクライアントメッセージ送信先判定部13より受け取った処理要求メッセージを更新する。そして処理要求メッセージの送信先サーバシステムIDフィールドを参照し、そのサーバシステム201のサーバメッセージ受信部28に向けてメッセージ送信電文を送信する。
【0035】
その後送信先のサーバシステムから図25に示したメッセージ送信応答電文形式2501に従うメッセージ送信応答電文が返るのを待つ。ここでもし、システムで定義した応答タイムアウト間隔内にメッセージ送信応答電文が返らないとき、送信先サーバシステムは停止しているものと判断し、クライアント送信キューに処理要求メッセージを戻し、送信失敗を返却する。送信先のサーバシステム201からメッセージ送信応答電文が返るとメッセージ送信応答電文の応答結果フィールドを参照し、応答結果が送信成功のときサーバ受信キューメッセージ数フィールドと業務アプリケーションステータスフィールドの値を戻り値に付与し、送信成功を返却する。応答結果が送信失敗の場合はクライアント送信キュー15に処理要求メッセージを戻し、送信失敗を返却する。
【0036】
クライアントメッセージ送信部18が送信するメッセージ送信電文はサーバメッセージ受信部28が受信する。サーバメッセージ受信部28は図11に示したフローチャート11101に従って実行する。サーバメッセージ受信部28はメッセージ送信電文を受け取るとまず、サーバシステム内で保持している業務アプリケーションステータスを参照する。この業務アプリケーションステータスはサーバシステム内の業務アプリケーションが「起動中」か「停止中」かを表わす情報で例えば共用メモリ領域などで管理されたサーバシステム201内の機能間で参照および更新ができる共通情報である。
【0037】
業務アプリケーションステータスが「起動中」のときメッセージ送信電文から処理要求メッセージを取り出し、サーバ受信キュー20に格納する。そしてサーバ受信キュー20の現在のメッセージ数を参照する。その後、メッセージ送信応答電文を作成する。メッセージ送信応答電文の電文種別フィールドには本電文がメッセージ送信応答電文であることを示すシステム共通で定めた識別子を更新する。サーバ受信キューメッセージ数フィールドには参照したサーバ受信キュー20の現在のメッセージ数を更新する。業務アプリケーションフィールドには現在の業務アプリケーションステータスを更新する。応答結果フィールドは送信成功に更新する。 そして作成したメッセージ送信応答電文をメッセージ送信電文の依頼元システムIDフィールドに格納されている依頼元システムに向けて送信する。業務アプリケーションステータスが「停止中」のときは同様にメッセージ送信応答電文を作成するが、電文種別フィールドを更新した後、応答結果フィールドには送信失敗を更新する。サーバ受信キューメッセージ数フィールドと業務アプリケーションステータスフィールドは更新する必要はない。作成したメッセージ送信応答電文は同様の手順で依頼元システムに送信する。
【0038】
サーバシステム201の受信キュー20はサーバ受信キュー状態管理部25により監視される。サーバ受信キュー状態管理部25は図12に示したフローチャート11201に従って実行する。サーバ受信キュー状態管理部25はサーバシステム内であらかじめ定義したサーバ受信キュー監視間隔毎または業務アプリケーション状態監視部からの受信キューの状態報告指示により、図21に示したサーバ受信キュー状態報告電文形式2101に従うサーバ受信キュー状態報告電文を作成する。サーバ受信キュー状態報告電文の電文種別フィールドには本電文がサーバ受信キュー状態報告電文であることを示すシステム共通で定めた識別子を更新する。サーバシステムIDフィールドには自サーバシステムIDを更新する。サーバ受信キューメッセージ数フィールドにはサーバ受信キュー20から現在の処理要求メッセージ数を取得し、更新する。
【0039】
さらに業務アプリケーションステータスフィールドにサーバシステム内で管理する業務アプリケーションステータスを更新する。作成したサーバ受信キュー状態報告電文はサーバグループ内負荷管理装置301のサーバ受信キュー負荷状態更新部31に通知する。
【0040】
サーバ受信キュー負荷状態更新部31は図18のフローチャート11801に従って実行する。サーバ受信キュー負荷管理状態更新部31はサーバ受信キュー状態報告電文を受け取るとサーバ受信キュー管理テーブル32を更新する。サーバ受信キュー管理テーブル32は図26に示したサーバ受信キュー管理テーブル形式2601の形式をもつ。サーバ受信キュー管理テーブル32はサーバグループ401内のサーバシステム201それぞれのサーバ受信キュー20に格納されたメッセージ数と業務アプリケーション21が「起動中」であるか「停止中」であるかを示すステータス各レコードの更新時刻を管理情報として保持する。なおサーバグループ内負荷管理装置301でのサーバ受信キュー管理テーブル32の保持方法は規定しない。しかし、本テーブルの各サーバシステムのレコード情報は最新の管理情報が逐次更新されるのでデータベース管理システムを使用することが望ましい。
【0041】
サーバ受信キュー負荷状態更新部31はサーバ受信キュー状態報告電文よりサーバシステムIDフィールドとサーバ受信キューメッセージ数フィールドおよび業務アプリケーションステータスフィールドを参照し、サーバ受信キュー管理テーブル32のサーバシステムIDが合致するレコードに対してサーバ受信キューメッセージ数フィールドと業務アプリケーションステータスフィールドに更新する。さらに同レコードの更新時刻フィールドは現在時刻で更新する。
【0042】
また、サーバ受信キュー負荷管理状態更新部31では、各サーバシステム201からサーバ受信キュー状態報告電文が定期的に送られているかを監視している。サーバグループ内負荷管理装置301であらかじめ定義されたサーバ受信キュー管理テーブル更新監視間隔毎にサーバ受信キュー管理テーブル32の全レコードの更新時刻フィールドをチェックし、サーバ受信キュー管理テーブル更新監視間隔内に更新されていないレコードに該当するサーバシステム201は停止していると判断し、該当レコードの業務アプリケーションステータスフィールドを「停止中」に更新する。
【0043】
クライアント101やサーバシステム201からのサーバ受信キュー管理テーブル32への参照はサーバグループ内負荷管理装置301のサーバ受信キュー負荷状態応答部30が応答する。サーバ受信キュー負荷状態応答部30は図17に示したフローチャート11701に従って実行される。サーバ受信キュー負荷状態応答部30ではクライアント101またはサーバシステム201から送られるサーバ負荷情報送信依頼電文を受け取るとサーバ受信キュー管理テーブル32より全サーバシステム201のレコードを参照し、サーバ負荷情報応答電文を作成する。
【0044】
サーバ負荷情報応答電文の電文種別フィールドには本電文がサーバ負荷情報応答電文であることを示すシステム共通で定めた識別子を格納し、先頭サーバシステムIDフィールドにはサーバ受信キュー管理テーブル32の先頭レコードのシステムID、最終サーバシステムIDフィールドに最終レコードのシステムIDを格納する。そしてサーバシステムIDフィールド、サーバ受信キューメッセージ数フィールドおよび業務アプリケーションステータスフィールドにはサーバ受信キュー管理テーブルの先頭レコードから最終レコードまでレコード順にフィールドに対応して格納する。作成したサーバ負荷情報応答電文はサーバ負荷情報送信依頼電文の依頼元システムIDフィールドを参照し、依頼元システムに向けて送信する。
【0045】
一方、サーバシステム201の受信キュー20に格納された処理要求メッセージは業務アプリケーション21によって監視される。業務アプリケーション21は図15に示したフローチャート11501に従って実行する。業務アプリケーション21は起動時に業務アプリケーションステータスを「起動中」に更新する。起動後はユーザからの停止要求があるまで常時、サーバ受信キュー20を参照し、処理要求メッセージの到着を監視する。サーバ受信キュー20に処理要求メッセージがあったとき業務アプリケーション21はサーバ受信キュー20から処理要求メッセージを取得する。
【0046】
ただし、サーバ受信キュー内の処理要求メッセージは他サーバシステム201から転送されてくる場合があるため、サーバ受信キュー20に格納された順序が必ずしも処理要求メッセージの生成時刻が古いものから順番になっているとは限らない。このため、メッセージの取得手順はメッセージ先入れ先出し方式ではなく処理要求メッセージのメッセージ生成時刻フィールドが最も古いものを優先して取得する。
【0047】
業務アプリケーション21は取得した処理要求メッセージの処理要求内容フィールドを参照し、業務データベース22などを利用し、処理要求内容に応じたユーザアプリケーションを実行することで要求元のクライアント101への処理結果を得る。業務アプリケーション21は次に図20に示した処理結果メッセージ形式2001に従う処理結果メッセージを作成する。処理結果メッセージのメッセージ種別フィールドには本メッセージが処理結果メッセージであることを示すシステム共通で定めた識別子を更新する。要求元クライアントIDフィールドには処理要求メッセージに格納されていた要求元クライアントIDを更新する。
【0048】
さらに処理結果フィールドにはユーザアプリケーションによって得た処理結果を格納する。作成した処理結果メッセージはサーバ送信キュー23に格納する。業務アプリケーション21はユーザアプリケーションを実行する度に業務アプリケーションステータスを「起動中」に更新する。これはユーザアプリケーションがその処理内容によって、特異的に処理が遅延した場合を考慮しており、もし業務アプリケーション状態監視部26が後述のアプリケーション実行監視処理により業務アプリケーションステータスを「停止中」に更新しても業務アプリケーション21が処理を継続している場合には業務アプリケーションステータスを「起動中」に戻すことができるためである。
【0049】
業務アプリケーション21は停止時に業務アプリケーションステータスを「停止中」に変更する。
【0050】
業務アプリケーション21が変更する業務アプリケーションステータスは業務アプリケーション状態監視部26が監視する。業務アプリケーション状態監視部26は図13のフローチャート11301に従って実行する。業務アプリケーション状態監視部26は業務アプリケーションステータスが「停止中」から「起動中」に状態が変わるとサーバ受信キュー状態管理部25へサーバ受信キューの状態報告を指示する。業務アプリケーション状態監視部26は業務アプリケーションステータスが「起動中」になると今度は「停止中」に変更されていないかを随時チェックする。また起動中の間はサーバ受信キュー20に格納された処理要求メッセージが正常に処理されているか業務アプリケーション21の状態監視処理をする。業務アプリケーション状態監視手順は以下通りである。
【0051】
まず、サーバ受信キュー20に処理要求メッセージが格納されているかどうかチェックし、処理要求メッセージが格納されている時、業務アプリケーション21が次に処理する先頭の処理要求メッセージを参照し、そのメッセージIDを記憶する。その後、サーバシステム201内であらかじめ定義したアプリケーション実行監視間隔の時間待つ。ただし、この間も業務アプリケーションステータスが「停止中」に変更されないかは繰り返しチェックする。アプリケーション実行監視間隔が経過すると再度サーバ受信キューに処理要求メッセージをチェックする。もしサーバ受信キューにメッセージがない場合、または業務アプリケーション21が次に処理する先頭の処理要求メッセージのメッセージIDが前記で記憶中したメッセージIDと異なる場合は処理要求メッセージが正常に動作していると判断し、監視処理を継続する。
【0052】
しかし、前記のメッセージIDが記憶中のメッセージIDと異なる場合は業務アプリケーションが障害などの理由で業務アプリケーションステータスを変更せずにダウンしていると判断し、システム内の業務アプリケーションステータスを「停止中」に変更する。業務アプリケーション21からのステータス変更または業務アプリケーション状態監視部26によるステータス変更により、業務アプリケーションステータスが「停止中」になるとサーバ受信キュー状態管理部25にサーバ受信キューの状態報告を指示する。さらにサーバ受信キュー20に処理要求メッセージが存在するときこれらの処理要求メッセージを他のサーバシステム201へ転送する。
【0053】
業務アプリケーション状態監視部26の転送処理は図14に示したフローチャート11401に従って実行する。業務アプリケーション状態監視部26はサーバ負荷情報送信依頼電文を作成し、サーバグループ内負荷管理装置301のサーバ受信キュー負荷情報応答部30へを送信する。このときサーバ負荷情報送信依頼電文の要求元システムIDフィールドには自サーバシステムIDを格納する。サーバ受信キュー負荷情報応答部30からサーバ負荷情報応答電文を受け取るとサーバ負荷情報応答電文の先頭サーバシステムIDから最終サーバシステムIDまで順にサーバ受信キューメッセージ数と業務アプリケーションステータスの情報をもとに図28に示した転送先判定テーブル形式2801に従う転送先判定テーブル27を作成する。
【0054】
転送先判定テーブル27はクライアント101で保持する送信先判定テーブル14と同形式であり、サーバ負荷情報応答電文からの更新もクライアント101の送信先判定テーブル14と同様の手順で行うことができる。
【0055】
ただし、転送先判定テーブル27は転送先として自サーバシステムが選択されることがないようにあらかじめ自サーバシステムのレコードは作成しないようにする。なお、転送先判定テーブル27の保持方法は規定しない。しかし、転送先判定テーブル27は処理要求メッセージ転送時の一時的な情報を管理するためのテーブルであるためメモリ上することが望ましい。転送先判定テーブル27の更新が完了すると、ここで業務アプリケーション21が再起動されているかチェックする。業務アプリケーションステータスが「起動中」に変更されているとき、つまり再起動された場合には転送の必要がないため転送処理は中止する。
【0056】
業務アプリケーションステータスが「停止中」のときクライアントでの送信先サーバシステムの選択手順と同様にフローチャート10501に従って業務アプリケーションが起動中で最もサーバ受信キューのメッセージ数が少ない転送先サーバシステムを選択する。転送先サーバシステムが選択できなかった場合はサーバ負荷情報送信依頼電文の送信から繰り返す。また転送先サーバシステムが選択できた場合はサーバ受信キューから処理要求メッセージを取得し、送信先サーバシステムIDフィールドに選択した転送先サーバシステムIDを更新し、サーバメッセージ送信部29に処理要求メッセージを通知し、送信指示する。
【0057】
サーバメッセージ送信部29の戻り値が送信成功のとき、戻り値に付与されたサーバ受信キューメッセージ数と業務アプリケーションステータスを転送先判定テーブル27の転送先サーバシステムIDのレコードに更新する。また処理要求メッセージの送信失敗が返却されると同レコードの業務アプリケーションステータスを「停止中」に変更する。次に再度自サーバシステム内の処理要求メッセージを参照し、メッセージが存在する場合は業務アプリケーションステータスチェック処理に戻り、自サーバ受信キューのメッセージがなくなるか、業務アプリケーションのステータスが「起動中」になるまでこれを繰り返す。
【0058】
サーバ送信キュー23に格納された処理結果メッセージはサーバ送信キュー監視部24により監視される。サーバ送信キュー監視部24は図16のフローチャート11601に従って実行される。サーバ送信キュー23に処理結果メッセージが格納されるとサーバ送信キュー監視部24がこれを取り出し、取り出した処理結果メッセージをサーバメッセージ送信部29に通知する。
【0059】
サーバメッセージ送信部29はサーバ送信キュー監視部29からの処理結果メッセージのクライアント101への送信と業務アプリケーション状態監視部26からの処理要求メッセージの他サーバシステム201への転送を行う。サーバメッセージ送信部29は図10に示したフローチャート11001に従って実行される。
【0060】
サーバメッセージ送信部29は送信指示を受け付けると通知されたメッセージのメッセージ種別フィールドを参照する。メッセージ種別が処理結果メッセージの場合、まずメッセージ送信電文を作成する。電文種別フィールドにはメッセージ送信電文を示す識別子を更新する。依頼元システムIDフィールドは自サーバシステムIDを更新する。メッセージフィールドにはサーバ送信キュー監視部29から受け取った処理結果メッセージを更新する。次に処理結果メッセージの要求元クライアントIDフィールドを参照し、要求元のクライアント101のメッセージ受信部にメッセージ送信電文を送信する。その後送信先のクライアント101からのメッセージ送信応答電文が返るのを待つ。
【0061】
ここでもし、システムで定義した応答タイムアウト間隔内にメッセージ送信応答電文が返らないとき、サーバ送信キュー24に処理要求メッセージを戻し、送信失敗を返却する。
【0062】
送信先のクライアント101からメッセージ送信応答電文が返るとメッセージ送信応答電文の応答結果フィールドを参照し、応答結果が送信成功のとき、送信成功を返却する。応答結果が送信失敗の場合はサーバ送信キュー23に処理要求メッセージを戻し、送信失敗を返却する。
【0063】
メッセージ種別が処理要求メッセージの場合、まずメッセージ送信電文を作成する。電文種別フィールドにはメッセージ送信電文を示す識別子を更新する。依頼元システムIDフィールドは自サーバシステムIDを更新する。メッセージフィールドには業務アプリケーション状態監視部26から受け取った処理要求メッセージを更新する。次に処理要求メッセージの送信先サーバシステムIDフィールドを参照し、転送先のサーバシステム201のメッセージ受信部28にメッセージ送信電文を送信する。その後転送先のサーバシステム201からのメッセージ送信応答電文が返るのを待つ。
【0064】
ここでもし、システムで定義した応答タイムアウト間隔内にメッセージ送信応答電文が返らないとき、転送先サーバシステム201は停止しているものと判断し、サーバ受信キュー20に処理要求メッセージを戻し、送信失敗を返却する。
【0065】
転送先のサーバシステム201からメッセージ送信応答電文が返るとメッセージ送信応答電文の応答結果フィールドを参照し、応答結果が送信成功のときメッセージ送信応答電文のサーバ受信キューメッセージ数フィールドと業務アプリケーションステータスフィールドの値を戻り値に付与し、送信成功を返却する。応答結果が送信失敗の場合はサーバ受信キュー20に処理要求メッセージを戻し、送信失敗を返却する。
【0066】
クライアント101ではサーバシステム201が送信するメッセージ送信電文をクライアントメッセージ受信部19が受信する。クライアントメッセージ受信部19は図7に示したフローチャート10701に従って実行する。クライアントメッセージ受信部19ではサーバシステム201からのメッセージ送信電文を受け取るとメッセージ送信電文のメッセージフィールドから処理結果メッセージを取得し、クライアント受信キュー15に格納する。その後、メッセージ送信応答電文を作成し、電文種別フィールドにメッセージ送信電文の識別子を更新し、さらに応答結果フィールドには送信成功を更新する。そしてメッセージ送信電文の依頼元システムIDフィールドに格納されたサーバシステム201にメッセージ送信応答電文を送信する。
【0067】
クライアント101のクライアント受信キュー15はクライアント処理結果メッセージ応答部16により監視される。クライアント処理結果メッセージ応答部16は図8に示したフローチャート10801に従って実行する。クライアント処理結果メッセージ応答部16はクライアント受信キュー15に処理結果メッセージが格納されると処理結果メッセージを取得し、処理結果メッセージの処理結果フィールドの内容をクライアント結果表示アプリケーション17に通知する。
【0068】
クライアント結果表示アプリケーション17は図9に示したフローチャート10901に従って実行する。クライアント結果表示アプリケーション17では例えばグラフィカルユーザインタフェースなど任意のユーザアプリケーションを介して処理結果をユーザに通知する。
【0069】
サーバグループ内のサーバシステム間での業務アプリケーションの負荷を均等化することでサーバグループ内のシステムリソースを効率的に利用することができ、業務アプリケーションの実行待ちが少ないサーバを選択できる。さらに業務アプリケーションが異常停止した場合でも他のサーバシステムに転送することでサーバ処理要求メッセージの滞留を防ぐことができる。
【0070】
【発明の効果】
本発明によれば、サーバシステム間の負荷のアンバランスの改善が可能となる
【図面の簡単な説明】
【図1】本システムの一実施例の概略構成図である。
【図2】実施例のクライアント処理要求アプリケーションの処理を示すフローチャートである。
【図3】実施例の実施例のクライアント処理要求メッセージ生成部の処理を示すフローチャートである。
【図4】実施例の実施例のクライアントメッセージ送信先判定部
の処理を示すフローチャートである。
【図5】実施例の実施例のクライアントメッセージ送信先判定部の送信先サーバシステム選択処理と業務アプリケーション状態監視部の転送先サーバシステム選択処理を示すフローチャートである。
【図6】実施例の実施例のクライアントメッセージ送信部の処理を示すフローチャートである。
【図7】実施例の実施例のクライアントメッセージ受信部の処理を示すフローチャートである。
【図8】実施例の実施例のクライアント処理結果メッセージ応答部の処理を示すフローチャートである。
【図9】実施例の実施例のクライアント結果表示アプリケーションの処理を示すフローチャートである。
【図10】実施例の実施例のサーバメッセージ受信部の処理を示すフローチャートである。
【図11】実施例の実施例のサーバメッセージ受信部の処理を示すフローチャートである。
【図12】実施例の実施例のサーバ受信キュー状態管理部の処理を示すフローチャートである。
【図13】実施例の実施例の業務アプリケーション状態監視部の監視処理を示すフローチャートである。
【図14】実施例の実施例の業務アプリケーション状態監視部の転送処理を示すフローチャートである。
【図15】実施例の実施例の業務アプリケーションの処理を示すフローチャートである。
【図16】実施例の実施例のサーバ送信キュー監視部の処理を示すフローチャートである。
【図17】実施例の実施例のサーバ受信キュー負荷状態応答部の処理を示すフローチャートである。
【図18】実施例の実施例のサーバ受信キュー負荷状態更新部の処理を示すフローチャートである。
【図19】実施例の処理要求メッセージの形式である。
【図20】実施例の処理結果メッセージの形式である。
【図21】実施例のサーバ受信キュー状態報告電文の形式である。
【図22】実施例のサーバ負荷情報送信依頼電文の形式である。
【図23】実施例のサーバ負荷情報応答電文の形式である。
【図24】実施例のメッセージ送信電文の形式である。
【図25】実施例のメッセージ送信応答電文の形式である。
【図26】実施例のサーバ受信キュー管理テーブルの形式である。
【図27】実施例の送信先サーバ判定テーブルの形式である。
【図28】実施例の転送先サーバ判定テーブルの形式である。
【符号の説明】
101 クライアント
201 サーバシステム
301 サーバグループ内負荷管理装置
401 サーバグループ
10 クライアント処理要求アプリケーション
11 クライアント処理要求メッセージ生成部
12 クライアント受信キュー
13 クライアントメッセージ送信先判定部
14 送信先サーバ判定テーブル
15 クライアント受信キュー
16 クライアント処理結果メッセージ応答部
17 クライアント結果表示アプリケーション
18 クライアントメッセージ送信部
19 クライアントメッセージ受信部
20 サーバ受信キュー
21 業務アプリケーション
22 業務データベース
23 サーバ送信キュー
25 サーバ送信キュー監視部
25 サーバ受信キュー状態管理部
26 業務アプリケーション状態監視部
27 転送先サーバ判定テーブル
28 サーバメッセージ受信部
29 サーバメッセージ送信部
30 サーバ受信キュー負荷状態応答部
31 業務アプリケーション負荷状態更新部
32 サーバ受信キュー管理テーブル

Claims (5)

  1. プログラムを実行できる複数のサーバで構成されるサーバグループと該サーバで実行するプログラムに対して非同期に処理要求を発行するプログラムを実行する複数のクライアントで構成される計算機システムにおけるメッセージ通信方法において、
    前記サーバシステム内のプログラムが起動中で受信キューで待っている処理要求メッセージが最も少ないサーバを判定し、前記クライアントからの処理要求メッセージの送信先となる前記サーバを選択することを特徴とするメッセージ通信方法。
  2. 前記のサーバの前記の受信キューの処理要求メッセージが一定時間の取り出しがされないときやプログラムが停止したときに処理要求メッセージをサーバグループ内の他のサーバのうちでプログラムが起動中で受信キューで待っている処理要求メッセージが最も少ないサーバへ転送することを特徴とする請求項1記載のメッセージ通信方法。
  3. プログラムを実行できる複数の計算機を有する計算機システムと該計算機システムに対して処理要求を発行する端末とを有する計算機システムにおけるメッセージ通信方法において、 前記端末からの処理要求メッセージの送信先となる前記計算機を、各前記計算機の受信キューの状態で選択することを特徴とするメッセージ通信方法。
  4. プログラムを実行できる複数のサーバで構成されるサーバグループとサーバのプログラムに対して非同期に処理要求を発行するプログラムを実行する複数のクライアントとを備え、
    前記クライアントからの処理要求メッセージの送信先となる前記サーバをサーバグループ内のプログラムが起動中で受信キューで待っている処理要求メッセージが最も少ないサーバを選択する手段とを備えたことを特徴とする計算機システム。
  5. 前記サーバの前記受信キューの処理要求メッセージが一定時間の取り出しがされないときやプログラムが停止したときに処理要求メッセージをサーバグループ内の他のサーバのうちでプログラムが起動中で受信キューで待っている処理要求メッセージが最も少ないサーバへ転送する手段とを備えたことを特徴とする請求項4記載の計算機システム。
JP2003189952A 2003-07-02 2003-07-02 メッセージ通信方法およびその実施計算機システム Pending JP2005025481A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003189952A JP2005025481A (ja) 2003-07-02 2003-07-02 メッセージ通信方法およびその実施計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003189952A JP2005025481A (ja) 2003-07-02 2003-07-02 メッセージ通信方法およびその実施計算機システム

Publications (1)

Publication Number Publication Date
JP2005025481A true JP2005025481A (ja) 2005-01-27

Family

ID=34187970

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003189952A Pending JP2005025481A (ja) 2003-07-02 2003-07-02 メッセージ通信方法およびその実施計算機システム

Country Status (1)

Country Link
JP (1) JP2005025481A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008140120A (ja) * 2006-12-01 2008-06-19 Fujitsu Ltd 計算資源管理プログラム、計算資源管理装置および分散処理システム
JP2010244500A (ja) * 2009-03-16 2010-10-28 Nec Corp 分散処理システムおよび分散処理方法
JP2011512586A (ja) * 2008-02-14 2011-04-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力動作を監視するための装置、方法、およびコンピュータ・プログラム
CN114531721A (zh) * 2022-01-28 2022-05-24 新华三技术有限公司 一种建立隧道、报文的处理的方法和ac

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008140120A (ja) * 2006-12-01 2008-06-19 Fujitsu Ltd 計算資源管理プログラム、計算資源管理装置および分散処理システム
JP4606404B2 (ja) * 2006-12-01 2011-01-05 富士通株式会社 計算資源管理プログラムおよび計算資源管理装置
JP2011512586A (ja) * 2008-02-14 2011-04-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力動作を監視するための装置、方法、およびコンピュータ・プログラム
JP2010244500A (ja) * 2009-03-16 2010-10-28 Nec Corp 分散処理システムおよび分散処理方法
CN114531721A (zh) * 2022-01-28 2022-05-24 新华三技术有限公司 一种建立隧道、报文的处理的方法和ac

Similar Documents

Publication Publication Date Title
EP3490224B1 (en) Data synchronization method and system
CN107947960B (zh) 配置信息的推送方法及系统、配置信息的接收方法及系统
CN103581276B (zh) 集群管理装置、系统、业务客户端及相应方法
US7870425B2 (en) De-centralized nodal failover handling
CN105338086A (zh) 一种分布式的消息转发方法
CN109783151B (zh) 规则变更的方法和装置
CN106462593B (zh) 大规模并行处理数据库的系统和方法
CN112333249B (zh) 一种业务服务系统及方法
US20130204926A1 (en) Information processing system, information processing device, client terminal, and computer readable medium
US9736235B2 (en) Computer system, computer, and load balancing method
US8606908B2 (en) Wake-up server
WO2006131440A1 (en) Apparatus, system, and method for facilitating communication between an enterprise information system and a client
US20050210152A1 (en) Providing availability information using a distributed cache arrangement and updating the caches using peer-to-peer synchronization strategies
US7424712B1 (en) System and method for controlling co-scheduling of processes of parallel program
JP5408620B2 (ja) データ分散管理システム及びデータ分散管理方法
US8201017B2 (en) Method for queuing message and program recording medium thereof
JP2005025481A (ja) メッセージ通信方法およびその実施計算機システム
CN108984290A (zh) 任务调度方法和系统
US8863149B2 (en) Message processing apparatus and message processing method
JP2009515474A (ja) 独立したメッセージストアおよびメッセージトランスポートエージェント
EP3687133B1 (en) System and method for synchronization of media objects between devices operating in a multiroom system
CN110933150A (zh) 数据同步方法、系统、装置、电子设备及计算机存储介质
CN114924861A (zh) 一种分布式任务处理方法及系统
CN114500416A (zh) 用于最多一次消息投递的投递方法和投递系统
CN116662040B (zh) 一种消息的分发方法、装置、电子设备及存储介质