JP2008129628A - 複数のコンピュータシステムでメッセージをやり取りすることによって所定の業務を処理するシステムでの通信方式、及び、メッセージ中継プログラム - Google Patents

複数のコンピュータシステムでメッセージをやり取りすることによって所定の業務を処理するシステムでの通信方式、及び、メッセージ中継プログラム Download PDF

Info

Publication number
JP2008129628A
JP2008129628A JP2006310128A JP2006310128A JP2008129628A JP 2008129628 A JP2008129628 A JP 2008129628A JP 2006310128 A JP2006310128 A JP 2006310128A JP 2006310128 A JP2006310128 A JP 2006310128A JP 2008129628 A JP2008129628 A JP 2008129628A
Authority
JP
Japan
Prior art keywords
message
computer
storage area
shared storage
computer machine
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
JP2006310128A
Other languages
English (en)
Inventor
Osamu Oshima
修 大島
Yoshio Ozawa
良男 小澤
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.)
Nomura Research Institute Ltd
Original Assignee
Nomura Research Institute 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 Nomura Research Institute Ltd filed Critical Nomura Research Institute Ltd
Priority to JP2006310128A priority Critical patent/JP2008129628A/ja
Publication of JP2008129628A publication Critical patent/JP2008129628A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】複数のコンピュータシステムでメッセージをやり取りするシステムにおいて、未処理のメッセージの喪失を防止し、アプリケーションプログラムがメッセージを再送する機能を有していなくても未処理のメッセージを送信先コンピュータシステムに再送することができるようにする。
【解決手段】冗長化されているコンピュータマシンの各々に、メッセージ中継プログラムを備える。また、冗長化されているコンピュータマシンに対する共有記憶域を用意する。メッセージ中継プログラムは、アプリケーションプログラムから受けたメッセージを共有記憶域に格納して該メッセージを送信する。再送が必要なケースを検出した場合には、共有記憶域から、再送対象のメッセージを読出し、該読み出したメッセージを再送する。
【選択図】図1

Description

本発明は、複数のコンピュータシステムでのメッセージの送受信に関する。
例えば、特許文献1には、サーバコンピュータ及び待機用サーバコンピュータとクライアントコンピュータとで構成されるサーバクライアントシステムが開示されている。この特許文献1には、サーバコンピュータから待機用サーバコンピュータへの切り替わりがあっても、サーバコンピュータで既に処理したことのある要求を待機用サーバコンピュータで再度処理することを回避するための技術が開示されている。
特開2000−207342号公報
例えば、複数のコンピュータシステムでメッセージをやり取りすることによって相互に連携しながら所定の業務を処理するシステム(以下、便宜上、「業務処理システム」と言う)がある。業務処理システムの一例として、金融機関における電子送金、株式・債権売買の発注処理など、重要度が高くリアルタイム性が求められるメッセージ処理が必要とされるシステムが考えられる。
業務処理システムにおけるコンピュータシステムとしては、信頼性の向上のために、冗長化されたサーバマシンで構成されたものが採用される。
このため、この種のシステムにおいて、コンピュータシステムでサーバマシンの切り替えが行われても未処理のメッセージから処理を再開できるようにするために、上記特許文献1に開示の技術を適用する方法が考えられるかもしれない。
しかし、特許文献1に開示の技術を単純に業務処理システムに適用することはできない。その理由は幾つかがあるが、代表的には、例えば以下の第一及び第二の理由が考えられる。
第一の理由:業務処理システムは、単なるクライアントサーバシステムではなく、高い信頼性が要求される。このため、例えば、サーバマシンの障害に伴って未処理のメッセージが喪失してしまうことを防ぐ必要がある。未処理のメッセージの喪失に関する記載は、特許文献1には全く無い。特許文献1では、送信元は単一のクライアントコンピュータであり、該クライアントコンピュータで障害が生じてしまうと、未処理のメッセージが喪失してしまうおそれがある。
第二の理由:メッセージを送信する主体を、コンピュータマシンという単位ではなく、コンピュータマシンの構成要素というより細かい粒度でみると、コンピュータマシン内で実行される複数種類のコンピュータプログラムのうち、アプリケーションプログラムであることが多いと考えられる。このため、特許文献1の技術をそのまま適用した場合には、アプリケーションプログラムが、未処理のメッセージを再送する機能を有する必要がでる。
以上のような問題点は、業務処理システムに関わらず、複数のコンピュータシステムでメッセージをやり取りする他種のシステムにも存在し得る。
従って、本発明の目的は、複数のコンピュータシステムでメッセージをやり取りするシステムにおいて、未処理のメッセージの喪失を防止し、アプリケーションプログラムがメッセージを再送する機能を有していなくても未処理のメッセージを送信先コンピュータシステムに再送することができるようにすることにある。
複数のコンピュータシステムのうちの少なくとも一つのコンピュータシステムにおいて、コンピュータマシンが冗長化されている。冗長化されているコンピュータマシンの各々に、メッセージ中継プログラムを備える。また、冗長化されているコンピュータマシンに対する共有記憶域を用意する。
メッセージ中継プログラムは、少なくとも以下の(1)乃至(5)のステップ、
(1)メッセージと、該メッセージの送信先とするコンピュータシステムの識別子である送信先システム識別子の指定とを、このメッセージ中継プログラムを実行するコンピュータマシン内で実行されるアプリケーションプログラムから受けるステップ、
(2)上記受けたメッセージを上記共有記憶域に格納するステップ、
(3)上記受けたメッセージを、上記指定された送信先システム識別子に対応する送信先コンピュータシステム内のコンピュータマシンに送信するステップ、
(4)送信したメッセージの再送が必要なケースを検出するステップ、
(5)再送が必要なケースを検出した場合に、共有記憶域から、再送対象のメッセージを読出し、該読み出したメッセージを、上記送信先コンピュータシステム内のコンピュータマシンに送信するステップ、
を、自分を備えるコンピュータマシンに実行させることができるように構成されている。これにより、例えば、フェイルオーバが実行されることにより第一から第二のコンピュータシステムに引継ぎが行われた場合、第二のコンピュータマシンにおいて、メッセージ中継プログラムが、上記共有記憶域を参照することにより、第一のコンピュータマシンのメッセージ中継プログラムが送信したメッセージが共有記憶域に残っていることを、メッセージの再送が必要なケースとして検出し、その場合に、共有記憶域から、再送対象のメッセージを読出し、該読み出したメッセージを、送信先コンピュータシステム内のコンピュータマシンに送信することができる。
送信するメッセージが、冗長化されているコンピュータマシンの共有記憶域に格納される。このため、仮に、送信先コンピュータシステムのコンピュータマシンで未処理のメッセージがあり、送信元コンピュータシステムのいずれのコンピュータマシンに障害が生じても、未処理のメッセージが喪失してしまうことを防ぐことができる。また、メッセージ中継プログラムが共有記憶域からメッセージを読み出して再送するので、アプリケーションプログラムがメッセージを再送する機能を有していなくても未処理のメッセージを送信先コンピュータシステムに再送することができる。
以下、図面を参照し、本発明の一実施形態に係る通信方式が適用された業務処理システムを説明する。
図1Aは、本発明の一実施形態に係る業務処理システムの構成を示す。
通信ネットワーク(例えばLAN(Local Area Network))102に、複数のコンピュータシステム104が通信可能に接続されている。図1Aには、第一のコンピュータシステム104Aと、第二のコンピュータシステム104Cとの2つのコンピュータシステムを示している。コンピュータシステム104の数は2つに限らず3以上であっても良い。
各コンピュータシステム104では、サーバマシン101が冗長化(換言すればn重化(nは2以上の整数))されている。そのため、サーバマシン101内の構成要素も冗長化されている。以下、参照番号の付与の仕方として、第一のコンピュータシステム104Aにおいては、冗長化されている要素には、親番号(例えば101)に加えてA、Bという子符号を付加し、冗長化されていない要素には、親番号(例えば103)にAという子符号を付加する。第二のコンピュータシステム104Cにおいては、冗長化されている要素には、親番号に加えてC、Dという子符号を付加し、冗長化されていない要素には、親番号にCという子符号を付加する。
各コンピュータシステム104は、実質的には同じ構成なので、第一のコンピュータシステム104Aを例に採り説明する。第一のコンピュータシステム104Aには、冗長化されているサーバマシン101A、101Bと、それらのサーバマシン101A、101Bがアクセス可能な記憶装置103Aがある。この記憶装置103Aは、一又は複数のハードディスクドライブを備えた記憶装置(外付け式のHDDであっても良いし、RAID(Redundant Array of Independent (or Inexpensive) Disks)構成となった大規模なストレージシステムであっても良い)であるため、以下、「共有ディスク」と呼ぶ。図1Aの例では、共有ディスク103Aは、サーバマシン101A、101Bの両方からアクセス可能になっているものの、通信ネットワーク102には接続されていないが、通信ネットワーク102に接続されても良い。また、共有ディスク103Aが、第二のコンピュータシステム104Cにおけるサーバマシン101C、101Dに共用されても良い。共有ディスク103Aは、サーバマシン101A、101Bの障害に伴ってアクセス不可能にならないように備えられていれば良い(例えば、サーバマシン101A及び101Bの外部に備えられる)。
サーバマシン101Aが、例えば正系(例えば現用)のサーバマシンであって、サーバマシン101Bが、例えば副系(例えば待機用)のサーバマシンである。
各サーバマシン101について、サーバマシン101Aを代表的に例に採り説明する。サーバマシン101Aは、コンピュータマシンの一種であり、例えば図1Bに例示するように、CPU(Central Processing Unit)113A、記憶資源111A(例えばメモリ)、ディスクI/F115A、ネットワークI/F117Aを備える。記憶資源111Aには、複数種類のコンピュータプログラムとして、例えば、アプリケーションプログラム(以下、「アプリケーション」と略記)105Aや、後述する通信ミドルウェア107Aが記憶されている。CPU113Aにより、それらのコンピュータプログラムが実行される。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するCPUによって処理が行われるものとする。ディスクI/F115Aは、共有ディスク103Aに対する通信インタフェース装置であり、このI/F115Aを経由して、共有ディスク103Aへのアクセスが行われる。ネットワークI/F117Aは、通信ネットワーク102に対する通信インタフェース装置であり、このI/F117Aを経由して、メッセージ送受信が行われる。
サーバマシン101Aには、メッセージを送受信するアプリケーション105Aの他に、アプリケーション105Aとそれの通信相手(図1Aでは、アプリケーション105C又は105D)との間でやり取りされるメッセージを中継するメッセージ中継プログラムが備えられる。メッセージ中継プログラムは、本実施形態では、アプリケーション105Aの下位に備えられたミドルウェアである。そのため、以下の説明では、メッセージ中継プログラムを「通信ミドルウェア」と呼ぶ。
アプリケーション105Aからアプリケーション105Cにメッセージが送信される場合、図1Aで矢印に示すように、通信ミドルウェア107Aは、アプリケーション105Aからメッセージを受け、受けたメッセージを、アプリケーション105Cを有するサーバマシン101Cに送信する。サーバマシン101Cでは、図1Aで矢印に示すように、通信ミドルウェア107Cが、メッセージを受信し、受信したメッセージを、アプリケーション105Cに渡す。図1Aで矢印に示すように、アプリケーション105Bからメッセージが送信される場合や、アプリケーション105Dがメッセージを受信する場合も、同様の流れとなる。なお、矢印には示していないが、アプリケーション105Cや105Dが送信元となり、アプリケーション105Aや105Bが送信先となる場合には、矢印の向きは逆となる。
コンピュータシステム104Aでは、通信ミドルウェア107A、107Bが、共有ディスク103Aに、送受信するメッセージの通し番号(以下、「通番」と略記する)を更新したり、送信する或いは受信したメッセージを一時記憶したりする。
図2Aは、共有ディスク103Aに記憶される情報や、共有ディスク103Aに設けられる記憶域を示す。
共有ディスク103Aに記憶される情報としては、送信先管理表121Aと、送信通番管理表123Aと、受信通番管理表125Aとがある。また、共有ディスク103Aに設けられる記憶域としては、送信一時記憶域127Aと、受信一時記憶域129Aとがある。
送信先管理表121Aには、各他のコンピュータシステム104に関する情報が登録される。具体的には、例えば、この表121Aには、アプリケーション105Aの通信相手となり得る各他のアプリケーショ毎に、送信先システムコード、優先順位、IPアドレスが記録される。
送信先システムコードとは、送信先候補の他のコンピュータシステム104の識別コードである。例えば、第二のコンピュータシステム104Cには、2つのアプリケーション105C、105Dが存在するため、一つのコンピュータシステム104Cにつき2行設けられ、各行には、第二のコンピュータシステム104の識別コード(例えば“システムY”)が記録される。なお、“システムZ”は、図示しない第三のコンピュータシステムの識別コードである。すなわち、本実施形態の説明では、コンピュータシステム104の数を2つとしているが、前述したように、2つに限定する必要がないことを意味する。
優先順位とは、同一の他のコンピュータシステム104に存在する複数のアプリケーションのうちのどれをメッセージの送信先とするかを表す。送信先が第二のコンピュータシステム104Cの場合、通信ミドルウェア107A或いは107Bは、優先順位“1”のアプリケーション105Cをメッセージの送信先として選択し、そのアプリケーション105Cとの通信に成功しない場合に、次の優先順位“2”のアプリケーション105Dをメッセージの送信先として選択することができる。優先順位のカラムに代えて、フラグのカラムが採用されても良い。例えば、フラグがカラムにセットされたアプリケーション105Cを送信先とし、そのアプリケーション105Cとの通信に成功しない場合に、フラグがセットされていないアプリケーション105Dが送信先とされてもよい(もしそのようなアプリケーションが複数個ある場合には任意に選択されてもよい)。
IPアドレスは、各他のコンピュータシステム104に存在する各サーバマシン101のIPアドレスである。通信ミドルウェア107A、107Bは、送信先として選択したアプリケーション105Cにメッセージを送信する場合には、そのアプリケーション105Cに対応したIPアドレス(サーバマシン101CのIPアドレス)を指定して、メッセージを送信する。
送信通番管理表123Aには、各他のコンピュータシステム104毎に、送信先システムコードと、送信済通番とが記録される。送信済通番とは、第一のコンピュータシステム104Aから他のコンピュータシステム104に送信されたメッセージの通番である。具体的には、例えば、第二のコンピュータシステム104Cに対応した送信済通番は、第二のコンピュータシステム104Cに送信されたメッセージの通番である。
受信通番管理表125Aには、各他のコンピュータシステム104毎に、送信元システムコードと、受信済通番とが記録される。送信元システムコードとは、メッセージの送信元のコンピュータシステム104の識別コードである。受信済通番とは、第一のコンピュータシステム104Aが他のコンピュータシステム104から受信したメッセージの通番である。具体的には、例えば、第二のコンピュータシステム104Cに対応した受信済通番は、第二のコンピュータシステム104Cから受信したメッセージの通番である。
送信一時記憶域127Aは、第一のコンピュータシステム104Aから送信されるメッセージが一時的に記憶される記憶域である。この記憶域127Aに記憶されたメッセージは、通信ミドルウェア107A又は107Bが受信応答を受信した場合に、通信ミドルウェア107A又は107Bにより削除される。
受信一時記憶域129Aは、第一のコンピュータシステム104Aが受信したメッセージが一時的に記憶される記憶域である。この記憶域129Aに記憶されたメッセージは、通信ミドルウェア107A又は107Bが受信応答を送信した場合に、通信ミドルウェア107A又は107Bにより削除される。
以下、通信ミドルウェア107Aが別の通信ミドルウェア107C或いは107Dと送受信する情報の構成について説明する。なお、これ以降の説明では、混同を防ぐために、アプリケーション105と通信ミドルウェア107との間でやり取りされるものを「メッセージ」と言い、通信ミドルウェア107間でやり取りされるものを「メッセージセット」と区別する。なお、「メッセージ」は、通信ミドルウェア107無しでアプリケーション105同士で直接やり取りされるものと全く同じ形式であってよい。
図2Bは、メッセージセットの構成を示す。
メッセージセット135は、例えば、管理用ヘッダ131と、メッセージ133とで構成される。言い換えれば、通信ミドルウェア107Aは、アプリケーション105Aから受けたメッセージ133に、管理用ヘッダ131が付加されることにより、メッセージセット135を生成して送信することができる。また、通信ミドルウェア107Aは、メッセージセット135を受信した場合には、そのメッセージセット135から管理用ヘッダ131を除去することにより得られるメッセージ133をアプリケーション105Aに送ることができる。管理用ヘッダ131は、通信ミドルウェア107で解釈される情報であり、例えば、送信先システムコード、送信元システムコード及び管理通番が記録される。管理通番は、メッセージセット135の送信元の通信ミドルウェアに付与された通番である。
以上が、メッセージセット135の構成である。なお、例えば、トランスポート層以下の通信プロトコルはTCP/IP、Ethernet(登録商標)が想定され、その場合、通信ネットワーク102に流れるパケットには、通信ミドルウェア107Aよりも下位レイヤであるTCP、IP、Ethernetのヘッダが付与される。
以下、この業務処理システムで行われるメッセージ送受信の流れを説明する。その際、説明を分かり易くするために、まず、障害が発生しない正常ケースでの流れを説明し、その後で、幾つかの障害ケースでのそれぞれの流れを説明する。なお、正常ケースでは、アプリケーション105Aからアプリケーション105Cにメッセージが送信されるものとする。
図3は、正常ケースでのメッセージ送受信の流れを示す。なお、図では、ステップを「S」と略記している。
ステップ101では、アプリケーション105Aが、送信対象のメッセージ133を、第二のコンピュータシステム104Cの識別コード(送信先システムコード“システムY”)を指定して通信ミドルウェア107Aに渡す。
ステップ102では、通信ミドルウェア107Aが、送信先管理表121Aを参照し、アプリケーション105Aから渡された送信先システムコード“システムY”
に対応するIPアドレス(送信先IPアドレス)を、送信先システムコード“システムY”
に対応する優先順位に従って決定する。ここでは、優先順位“1”に対応したIPアドレス“YYY.YYY.YYY.1”(つまり、アプリケーション105Cを有するサーバマシン101C)が決定される。
ステップ103では、通信ミドルウェア107Aが、送信通番管理表123Aを参照し、送信先システムコード“システムY”に対応する送信済通番に1を加算し、その加算により算出された値を管理通番として含む管理用ヘッダ131を生成する。管理用ヘッダ131には、管理通番に加えて、送信先システムコード(アプリケーション105Aから渡されたもの)“システムY”と、送信元システムコード(第一のコンピュータシステム104Aの識別コード)“システムX”とが含まれる。
ステップ104では、通信ミドルウェア107Aは、アプリケーション105Aから渡されたメッセージ133に、上記生成した管理用ヘッダ131を付加することで、メッセージセット135を生成する。そして、そのメッセージセット135を、送信一時記憶域127Aに格納する。
ステップ105では、通信ミドルウェア107Aは、上記生成したメッセージセット135を、ステップ102で決定したIPアドレスを指定して送信する。それにより、そのメッセージセット135は、第二のコンピュータシステム104Cにおけるサーバマシン101Cに送られる。
ステップ106では、通信ミドルウェア107Aは、受信応答待ちとなる。具体的には、例えば、通信ミドルウェア107Aは、メッセージセット135を送信してから受信応答が無いまま一定時間が経過したか否かを監視する。
ステップ107では、サーバマシン101Cにおいて、通信ミドルウェア107Cが、メッセージセット135を受信する。
ステップ108では、通信ミドルウェア107Cが、受信したメッセージセット135を、受信一時記憶域129Cに格納する。なお、この129Cという参照番号は、どの図面にも示されていないが、前述した、参照番号の付与の仕方に従って付与したものである。つまり、この129Cという参照番号は、メッセージセット135の格納先である受信一時記憶域が、共有ディスク103C(図1参照)内にあることを意味する。
ステップ109では、通信ミドルウェア107Cが、メッセージセット135中の管理用ヘッダ131に含まれている送信元システムコード“システムX”を用いて、受信通番管理表125Cを参照する。それにより、その送信元システムコード“システムX”に対応した受信済通番を取得する。そして、その受信済通番に1を加算し、その加算により算出された値と、上記受信したメッセージセット135中の管理用ヘッダ131に含まれている管理通番とを比較する。この結果、ここでは正常ケースのため、(受信済通番+1)と、管理通番とが一致する。
ステップ110では、その一致が検知される。
ステップ111では、通信ミドルウェア107Cが、メッセージセット135から管理用ヘッダ131を除いたメッセージ133を、アプリケーション105Cに渡す。
ステップ112では、通信ミドルウェア107Cが、送信元システムコード“システムX”に対応した、受信通番管理表125Cにおける受信済通番を、更新する。具体的には、その受信済通番を、現在の受信済通番に1を加算した値に更新する。
ステップ113では、通信ミドルウェア107Cが、受信応答を、サーバマシン101Aの通信ミドルウェア107Aに送信する。
ステップ114では、通信ミドルウェア107Cが、受信応答の送信を契機に、ステップ108で一時格納したメッセージセット135を、受信一時記憶域129Cから削除する。
ステップ115では、通信ミドルウェア107Aが、通信ミドルウェア107Cから受信応答を受信する。この受信は、正常ケースの場合には、ステップ105でメッセージセット135が送信されてから一定時間経過する前に行われる。
ステップ116では、通信ミドルウェア107Aが、受信応答の受信を契機に、送信先システムコード“システムY”に対応した、送信通番管理表123Aにおける送信済通番を、更新する。具体的には、その送信済通番を、現在の送信済通番に1を加算した値に更新する。
ステップ117では、通信ミドルウェア107Aが、ステップ104で一時格納したメッセージセット135を、送信一時記憶域127Aから削除する。
以上が、正常ケースでのメッセージ送受信の流れの一例である。この実施形態では、生じ得る障害ケースとして、例えば以下の5つの障害ケース、
(第一の障害ケース)ステップ105で送信されたメッセージセット135がサーバマシン101Cに到達する前に、サーバマシン101Cに障害が発生するケース、
(第二の障害ケース)通信ミドルウェア101Cでメッセージセット135を受信し一時格納まで行われたがそのメッセージセット135中のメッセージ133がアプリケーション105Cに渡される前にサーバマシン101Cで障害が発生するケース、
(第三の障害ケース)通信ミドルウェア107Cで受信応答を送信できない、或いは、受信応答が送信されたが通信ミドルウェア107Aに到達しないケース、
(第四の障害ケース)送信されるメッセージセット135が一時格納されたが実際に送信される前にサーバマシン101Aで障害が発生するケース、
(第五の障害ケース)通信ミドルウェア107Aに受信応答が届いたが一時格納されたメッセージセット135が削除される前にサーバマシン101Aに障害が発生するケース、
が考えられる。以下、各障害ケースでのメッセージ送受信の流れの一例を説明する。
図4は、第一の障害ケースでのメッセージ送受信の流れの一例を示す。
サーバマシン101Cで障害が発生した場合、フェイルオーバ、すなわち、サーバマシン101Cからサーバマシン101Dへの引継ぎが行われる。これは、既存の技術で実現できるため、詳細な説明は省略する。
通信ミドルウェア107Aが、ステップ105でメッセージセット135をサーバマシン101Cの通信ミドルウェア107Cに送信しても、その前にサーバマシン101Dへのフェイルオーバが行われていると、通信ミドルウェア107Cから受信応答を受けることはない。そのため、ステップ106での受信応答待ちにおいては、やがて、ステップ121で示すように、メッセージセット135を送信してから一定時間経っても受信応答を受信しないことが通信ミドルウェア107Aにより検出される。
この場合、ステップ122で、通信ミドルウェア107Aは、送信先管理表121Aを参照し、ステップ102で決定したIPアドレスに対応する優先順位“1”の次の優先順位のIPアドレス“YYY.YYY.YYY.2”(つまり、アプリケーション105Dを有するサーバマシン101D)を取得する。そして、送信一時記憶域127Aから、ステップ105で送信したメッセージセット135を取得し、取得したメッセージセット135を、上記取得したIPアドレスを指定して送信する。これにより、サーバマシン101Cに送信されたが処理されなかったメッセージセット135が、サーバマシン101Dに送信される。なお、このステップ122において、送信先管理表121Aの参照の際には、送信先システムコード“システムY”に対応する優先順位の中から優先順位が選択される。また、メッセージセット135の取得では、例えば、送信先システムコード“システムY”に対応する送信済通番に1を加算した値を管理通番とし、該管理通番を検索キーとして、メッセージセット135を取得することができる。
ステップ122で送信されたメッセージセット135が、サーバマシン101Dの通信ミドルウェア107Dにより受信される。そして、通信ミドルウェア107Dにより、図3のステップ107〜ステップ113が行われる。このため、受信応答が、通信ミドルウェア107Dから通信ミドルウェア107Aに送信される。
ステップ123で、通信ミドルウェア107Aは、受信応答待ちとなっており、ステップ124で、受信応答を受信する。
ステップ125では、通信ミドルウェア107Aは、送信先管理表121Aにおいて、受信応答を受信できなかったIPアドレス“YYY.YYY.YYY.1”の優先順位と、受信応答を受信できたIPアドレス“YYY.YYY.YYY.2”の優先順位とを入れ替える。これにより、以後、新たなメッセージセット135が送信される場合、その送信先は、サーバマシン101Dとなる。
その後、図3のステップ116〜ステップ117が行われる。
以上が、第一の障害ケースでのメッセージ送受信の流れである。
図5は、第二の障害ケースでのメッセージ送受信の流れの一例を示す。
この第二の障害ケースは、図3のステップ108が行われた後、ステップ111が行われる前に障害が発生するケースである。この場合、ステップ132で、サーバマシン101Cからサーバマシン101Dへのフェイルオーバが行われる。
ステップ133で、通信ミドルウェア107Dが、受信一時記憶域129Cを参照し、該記憶域129Cが一定時間更新されていないことを検知し、メッセージセット135を取得する。ここで取得されるメッセージセット135は、フェイルオーバ前のサーバマシン101Cのアプリケーション105Cに渡されていない未処理のメッセージ133を含んだメッセージセット135である。受信一時記憶域129Cが一定時間更新されていないことを検知するための方法としては、例えば、メッセージセット135の一時格納と共に格納した時刻も受信一時記憶域129Cに格納し、該時刻と現在の時刻との差が一定時間を超えたかどうかを判断する方法が考えられる。なお、このステップ133では、例えば、フェイルオーバによる引継ぎを受けた場合に、受信一時記憶域129Cを参照し、削除されずに残ったままになっているメッセージセット135の取得が行われても良い。また、その際、そのメッセージセット135中の管理通番と、受信済通番に1を加算した値との比較を行い、そのメッセージセット135中のメッセージ133をアプリケーション105Dに渡すべきか否かの判断が行われても良い。
この後、図3のステップ109〜ステップ114が実行される。すなわち、取得されたメッセージセット135中のメッセージがアプリケーション105Dに渡され、受信応答が通信ミドルウェア105Aに送信され、受信済通番が更新され、該取得されたメッセージセット135が受信一時記憶域129Cから削除される。
ステップ105で、通信ミドルウェア107Aは、受信応答を通信ミドルウェア105D、すなわち、メッセージセット135の送信先サーバマシン101Cとは異なるサーバマシン101Dから受信応答を受信する。
ステップ141で、通信ミドルウェア107Aは、例えば受信応答の送信元のIPアドレスから、受信応答の送信元が、メッセージセット135の送信先とは異なることを検知する。この場合、ステップ142で、通信ミドルウェア107Aは、送信先管理表121Aにおいて、メッセージセット135の送信先のIPアドレス“YYY.YYY.YYY.1”の優先順位と、受信応答の受信元のIPアドレス“YYY.YYY.YYY.2”の優先順位とを入れ替える。
その後、図3のステップ116〜S117が行われる。
以上が、第二の障害ケースでのメッセージ送受信の流れである。
図6は、第三の障害ケースでのメッセージ送受信の流れの一例を示す。
この第三の障害ケースは、通信ミドルウェア107Cにおいて、図3のステップ107〜112まで行われたものの、ステップ113(受信応答送信)が行われない、或いは、ステップ113が行われたものの受信応答が通信ミドルウェア107Aに届かないケースである。このケースでは、通信ミドルウェア107Aにおいて、メッセージセット135が送信されてから一定時間が経過しても受信応答を受信しないことが検知される(ステップ151)。この場合、通信ミドルウェア107は、図4のステップ122と同じ処理を実行する。すなわち、すなわち、送信先管理表121Aを参照し、次の優先順位のIPアドレスを取得し、送信一時記憶域127Aから、ステップ105で送信したメッセージセット135を取得し、取得したメッセージセット135を、上記取得したIPアドレスを指定して送信する。
通信ミドルウェア107Dは、図3のステップ107〜109を行う。ステップ109では、現在の受信済通番に1を加算した値と、メッセージセット135中の管理通番との比較が行われるが、比較の結果、不一致が検知される(ステップ152)。不一致が生じるのは、この第三の障害ケースでは、通信ミドルウェア107Cにより図3のステップ112(受信済通番の更新処理)が既に実行されてしまっているためである。
この場合、ステップ153で、通信ミドルウェア107Dは、通信ミドルウェア107Aから受信したメッセージセット135を捨てる(破棄する)。なぜなら、そのメッセージセット135中のメッセージ133は、サーバマシン101Cのアプリケーション105Cに渡され処理済みであるからである。
ステップ154で、通信ミドルウェア107Dは、受信応答を通信ミドルウェア107Aに送信する。つまり、受信したメッセージセット135中のメッセージ133をアプリケーション105Dに渡すことなく受信応答を送信する。
ステップ155で、通信ミドルウェア107Dは、削除されずに残っているメッセージセット135(ステップ153で捨てたメッセージセット135と同じメッセージ)を受信一時記憶域129Cから削除する。
通信ミドルウェア105Aは、通信ミドルウェア105Dから受信応答を受信し、その後、図5のステップ141及び142と、図3のステップ116及び117とを実行する。
以上が、第三の障害ケースでのメッセージ送受信の流れである。
図7は、第四の障害ケースでのメッセージ送受信の流れの一例を示す。
第四の障害ケースは、送信されるメッセージセット135が送信一時記憶域127Aに一時格納されたが、実際に送信される前にサーバマシン101Aで障害が発生するケースである。この場合、サーバマシン101Aからサーバマシン101Bへのフェイルオーバが実行される(ステップ172)。
ステップ181で、通信ミドルウェア107Bは、送信一時記憶域127Aを参照し、該記憶域127Aが一定時間更新されていないことを検知し、メッセージセット135を取得する。ここで取得されるメッセージセット135は、未送信のメッセージセット135である。送信一時記憶域127Aが一定時間更新されていないことを検知するための方法としては、例えば、メッセージセット135の一時格納と共に格納した時刻も送信一時記憶域127Aに格納し、該時刻と現在の時刻との差が一定時間を超えたかどうかを判断する方法が考えられる。なお、このステップ181では、例えば、一時格納されたメッセージセット135が一定時間削除されずに残ったままになっているかどうかを判断し、残ったままになっていると判断した場合に、該メッセージセット135の取得が行われても良い。
ステップ182で、通信ミドルウェア107Bは、取得したメッセージセット135を通信ミドルウェア107Cに送信する。なお、このステップ182において、メッセージセット135の送信先とするIPアドレスは、ステップ172でのフェイルオーバにより、サーバマシン101Aから引き継がれたIPアドレス(つまり、通信ミドルウェア107Aにより決定されたIPアドレス)とすることができる。それに代えて、図3のステップ102からの処理が行われても良い。
この後、通信ミドルウェア107Cにより、図3のステップ107〜114が行われる。通信ミドルウェア107Bにより、図3のステップ106及びステップ115〜117が行われる。
以上が、第四の障害ケースでのメッセージ送受信の流れである。
図8は、第五の障害ケースでのメッセージ送受信の流れの一例を示す。
第五の障害ケースは、通信ミドルウェア107Aに受信応答が届いたが一時格納されたメッセージセット135が削除される前にサーバマシン101Aに障害が発生するケースである。この場合、サーバマシン101Aからサーバマシン101Bへのフェイルオーバが実行される(ステップ192)。
ステップ201で、通信ミドルウェア107Bは、送信一時記憶域127Aから、通信ミドルウェア107Aにより一度送信されたメッセージセット135を取得する。このメッセージセット135は、例えば、現在の送信済通番に1を加算した値を管理通番としたものを検索キーとすることにより取得することができる。
ステップ202で、通信ミドルウェア107Bは、取得したメッセージセット135を通信ミドルウェア107Cに送信する。
この後、通信ミドルウェア107Cにより、図3のステップ107〜109、及び、図6のステップ152〜154が行われる。なお、通番の不一致が検知される(図6のステップ152となる)のは、既にメッセージセットが通信ミドルウェア107Cに送信済みで、通信ミドルウェア107Cにより図3のステップ107〜114が実行されているためである。通信ミドルウェア107Bにより、図3のステップ106及びステップ115〜117が行われる。
以上が、第五の障害ケースでのメッセージ送受信の流れの説明である。
上述した実施形態によれば、冗長化されているサーバマシン101の各々に、アプリケーション105のメッセージ133の送受信を中継する通信ミドルウェア107が備えられる。例えば通信ミドルウェア107Aは、送信されるメッセージセット135を、共有ディスク103A内の送信一時記憶域127Aに格納する。未処理のメッセージ133をサーバマシン101C或いは101Dに再送する必要が生じた場合には、通信ミドルウェア107Aは、未処理のメッセージ133を含んだメッセージセット135を送信一時記憶域127Aから取得して再送する。これにより、未処理のメッセージ133の再生や再送をアプリケーション105Aに行わせることなく(つまりアプリケーション105Aがメッセージ133の二重送信をすることなく)、未処理のメッセージ133を含んだメッセージセット135を再送することができる。
また、上述した実施形態によれば、未処理のメッセージ133を含んだメッセージセット135が、共有ディスク103C内の受信一時記憶域129Cに格納される。未処理のメッセージ133を通信ミドルウェア107Cがアプリケーション105Cに渡す前にサーバマシン101Cに障害が発生した場合には、通信ミドルウェア107Dが、未処理のメッセージ133を含んだメッセージセット135を受信一時記憶域127Cから取得して渡す。これにより、未処理のメッセージ133の二重送信を送信元アプリケーション105Aに行わせることなく、未処理のメッセージ133を含んだメッセージセット135を再送することができる。なお、代替方法として、例えば、通信ミドルウェア105Dが、メッセージセット135の送信元コンピュータシステム104Aにおける通信ミドルウェア105A或いは105Bに、該送信元のシステムコードに対応した受信済通番を送って、該受信済通番に1を加算した値を管理通番として含んだメッセージセット135を再送することを要求する方法も考えられる。しかし、上記のように、受信一時記憶域129Cからメッセージセット135を取得する方が、高速に対処することができる。
また、上述した実施形態によれば、未処理のメッセージ133を含んだメッセージセット135が、共有ディスク103内の少なくとも送信一時記憶域127に格納される。このため、サーバマシン101に障害が生じても、未処理のメッセージ133が喪失してしまうことを防ぐことができる。
また、上述した実施形態によれば、通信ミドルウェア107によって、通番の管理が行われる。このため、アプリケーション105から、通番を管理する機能を不要とすることができる。これは、例えば、各サーバマシン101に、メッセージを送受するアプリケーション105が複数個存在する場合、各アプリケーション105にわざわざ通番管理機能を持たせなくても良い。各サーバマシン101に複数のアプリケーション105が存在する場合、一つの通信ミドルウェア107で複数のアプリケーション105のメッセージの送受を中継しても良いし、各アプリケーション毎に通信ミドルウェア107が用意されても良い。
以上、本発明の一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、送信済通番や受信済通番の更新では、現在の通番に1を加算することとしているが、それに限らず、所定値を用いた四則演算で更新されてもよい。これは、送信するメッセージセット135に含める管理通番を決定する場合や、受信したメッセージセット135中の管理通番との比較の場合でも同様である。
図1Aは、本発明の一実施形態に係る業務処理システムの構成例を示す。図1Bは、サーバマシン101Aのハードウェア構成例を示す。 図2Aは、共有ディスク103Aに記憶される情報や、共有ディスク103Aに設けられる記憶域を示す。図2Bは、通信ミドルウェア107Aが送受信するメッセージの構成を示す。 正常ケースでのメッセージ送受信の流れを示す。 第一の障害ケースでのメッセージ送受信の流れの一例を示す。 第二の障害ケースでのメッセージ送受信の流れの一例を示す。 第三の障害ケースでのメッセージ送受信の流れの一例を示す。 第四の障害ケースでのメッセージ送受信の流れの一例を示す。 第五の障害ケースでのメッセージ送受信の流れの一例を示す。
符号の説明
104A、104C…コンピュータシステム 101A、101B、101C、101D…サーバマシン 103A、103C…共有ディスク 105A、105B、105C、105D…アプリケーションプログラム 107A、107B、107C、107D…通信ミドルウェア

Claims (7)

  1. 複数のコンピュータシステムでメッセージをやり取りするシステムにおける少なくとも一つのコンピュータシステムで、コンピュータマシンが冗長化されており、冗長化されているコンピュータマシンの各々で実行可能なコンピュータプログラムであって、
    メッセージと、該メッセージの送信先とするコンピュータシステムの識別子である送信先システム識別子の指定とを、前記コンピュータプログラムを実行するコンピュータマシン内で実行されるアプリケーションプログラムから受けるステップと、
    前記受けたメッセージを、前記冗長化されているコンピュータマシンの共有記憶域に格納するステップと、
    前記受けたメッセージを、前記指定された送信先システム識別子に対応する送信先コンピュータシステム内のコンピュータマシンに送信する第一メッセージ送信ステップと、
    前記送信したメッセージの再送が必要なケースを検出するステップと、
    前記再送が必要なケースを検出した場合に、前記共有記憶域から、再送対象のメッセージを読出し、該読み出したメッセージを、前記送信先コンピュータシステム内のコンピュータマシンに送信する第二メッセージ送信ステップと
    をコンピュータマシンに実行させるメッセージ中継プログラム。
  2. 前記複数のコンピュータシステムのうちの送信元コンピュータシステムのコンピュータマシンからメッセージを受信するステップと、
    前記受信したメッセージを前記共有記憶域に格納するステップと、
    前記受信したメッセージを前記アプリケーションプログラムに渡すメッセージステップと、
    前記アプリケーションプログラムに渡したメッセージを前記共有記憶域から削除するステップと、
    フェイルオーバが実行されることにより前記コンピュータシステムにおける他のコンピュータマシンからの引継ぎを受けた場合に、前記共有記憶域を参照し、該他のコンピュータマシンが受信したメッセージが前記共有記憶域に残っているならば、該メッセージを読み出して、前記アプリケーションに渡すステップと
    をコンピュータマシンに更に実行させる請求項1記載のメッセージ中継プログラム。
  3. 前記送信先コンピュータシステムのコンピュータマシンから、前記送信したメッセージの受信応答を受信するステップと、
    前記受信応答を受信した場合に、前記送信したメッセージを前記共有記憶域から削除するステップと
    をコンピュータマシンに更に実行させる請求項1記載のメッセージ中継プログラム。
  4. 前記検出するステップでは、前記メッセージが送信されてから一定時間内に受信応答を受信しないことを、前記再送が必要なケースとして検出し、
    前記第二メッセージ送信ステップでは、前記送信先コンピュータシステムにおいて冗長化されているコンピュータマシンのうち、前記第一メッセージ送信ステップでの送信先のコンピュータマシンとは別のコンピュータマシンを送信先として前記読み出したメッセージを送信する、
    請求項3記載のメッセージ中継プログラム。
  5. フェイルオーバが実行されることにより前記コンピュータシステムにおける他のコンピュータマシンからの引継ぎを受けるようになっており、
    前記検出するステップでは、該引継ぎを受けた場合に、前記共有記憶域を参照することにより、前記他のコンピュータマシンが送信したメッセージが前記共有記憶域に残っていることを、前記再送が必要なケースとして検出する、
    請求項3記載のメッセージ中継プログラム。
  6. 前記共有記憶域に、前記送信されるメッセージの通し番号が記憶され、
    前記送信するステップでは、前記共有記憶域に記憶されている通し番号と所定値とを用いて算出された値である管理通番を、前記メッセージに付加して送信し、
    前記格納するステップでは、前記管理通番が付加されたメッセージを格納し、
    前記送信先コンピュータシステムのコンピュータマシンから、前記送信したメッセージの受信応答を受信するステップと、
    前記受信応答を受信した場合に、前記共有記憶域に登録されている通し番号を更新するステップと
    をコンピュータマシンに更に実行させ、
    前記送信したメッセージの再送が必要なケースを検出した場合に実行されるメッセージの読出しでは、前記共有記憶域に記憶されている通し番号と所定値とを用いて算出された値が管理通番として付加されているメッセージを前記共有記憶域から読み出す、
    請求項1記載のメッセージ中継プログラム。
  7. 複数のコンピュータシステムでメッセージをやり取りすることによって所定の業務を処理するシステムでの通信方式であって、
    前記複数のコンピュータシステムの少なくとも一つのコンピュータシステムで、コンピュータマシンが冗長化されており、
    冗長化されているコンピュータマシンの各々が、
    アプリケーションプログラムと、
    メッセージと、該メッセージの送信先とするコンピュータシステムの識別子である送信先システム識別子の指定とを、前記アプリケーションプログラムから受けるメッセージ中継プログラムと
    を備え、
    前記冗長化されているコンピュータマシンのうちの第一のコンピュータマシンにおいて、前記メッセージ中継プログラムが、前記アプリケーションプログラムから受けたメッセージを、前記冗長化されているコンピュータマシンの共有記憶域に格納し、前記受けたメッセージを、前記アプリケーションプログラムから指定された送信先システム識別子に対応する送信先コンピュータシステム内のコンピュータマシンに送信し、
    フェイルオーバが実行されることにより前記第一のコンピュータマシンから前記冗長化されているコンピュータシステムのうちの第二のコンピュータマシンへの引継ぎが行われた場合に、前記第二のコンピュータマシンにおいて、前記メッセージ中継プログラムが、前記共有記憶域を参照することにより、前記第一のコンピュータマシンのメッセージ中継プログラムが送信したメッセージが前記共有記憶域に残っていることを、メッセージの再送が必要なケースとして検出し、その場合に、前記共有記憶域から、再送対象のメッセージを読出し、該読み出したメッセージを、前記送信先コンピュータシステム内のコンピュータマシンに送信する、
    通信方式。
JP2006310128A 2006-11-16 2006-11-16 複数のコンピュータシステムでメッセージをやり取りすることによって所定の業務を処理するシステムでの通信方式、及び、メッセージ中継プログラム Pending JP2008129628A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006310128A JP2008129628A (ja) 2006-11-16 2006-11-16 複数のコンピュータシステムでメッセージをやり取りすることによって所定の業務を処理するシステムでの通信方式、及び、メッセージ中継プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006310128A JP2008129628A (ja) 2006-11-16 2006-11-16 複数のコンピュータシステムでメッセージをやり取りすることによって所定の業務を処理するシステムでの通信方式、及び、メッセージ中継プログラム

Publications (1)

Publication Number Publication Date
JP2008129628A true JP2008129628A (ja) 2008-06-05

Family

ID=39555404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006310128A Pending JP2008129628A (ja) 2006-11-16 2006-11-16 複数のコンピュータシステムでメッセージをやり取りすることによって所定の業務を処理するシステムでの通信方式、及び、メッセージ中継プログラム

Country Status (1)

Country Link
JP (1) JP2008129628A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010097408A (ja) * 2008-10-16 2010-04-30 Obic Business Consultants Ltd メッセージ配信システム、メッセージ配信サーバ装置、クライアント装置、メッセージ配信方法、メッセージ受信方法、およびプログラム
JP2010218304A (ja) * 2009-03-17 2010-09-30 Nec Corp 通信制御装置、データ同期方法およびデータ同期用プログラム
JP2010244463A (ja) * 2009-04-09 2010-10-28 Fujitsu Ltd イベント検出制御方法及びシステム
JP2011053763A (ja) * 2009-08-31 2011-03-17 Fujitsu Frontech Ltd 情報処理装置、情報処理システム、データ管理プログラムおよびデータ管理方法
CN111475359A (zh) * 2020-04-13 2020-07-31 腾讯音乐娱乐科技(深圳)有限公司 多消息交互场景下的系统测试方法、装置和存储介质

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010097408A (ja) * 2008-10-16 2010-04-30 Obic Business Consultants Ltd メッセージ配信システム、メッセージ配信サーバ装置、クライアント装置、メッセージ配信方法、メッセージ受信方法、およびプログラム
JP2010218304A (ja) * 2009-03-17 2010-09-30 Nec Corp 通信制御装置、データ同期方法およびデータ同期用プログラム
JP2010244463A (ja) * 2009-04-09 2010-10-28 Fujitsu Ltd イベント検出制御方法及びシステム
US8717167B2 (en) 2009-04-09 2014-05-06 Fujitsu Limited Event detection control method and system
JP2011053763A (ja) * 2009-08-31 2011-03-17 Fujitsu Frontech Ltd 情報処理装置、情報処理システム、データ管理プログラムおよびデータ管理方法
CN111475359A (zh) * 2020-04-13 2020-07-31 腾讯音乐娱乐科技(深圳)有限公司 多消息交互场景下的系统测试方法、装置和存储介质

Similar Documents

Publication Publication Date Title
US7987266B2 (en) Failover in proxy server networks
US20070204275A1 (en) Method and system for reliable message delivery
JP5128111B2 (ja) メッセージに関連付けられた順序を保存するためのシステム、並びに、その方法及びコンピュータ・プログラム
JP4087271B2 (ja) 代理応答装置およびネットワークシステム
US7453865B2 (en) Communication channels in a storage network
JP4495977B2 (ja) 多層ネットワーク通信システム用再試行技術
JP4410608B2 (ja) Webサービス提供方法
JP2008129628A (ja) 複数のコンピュータシステムでメッセージをやり取りすることによって所定の業務を処理するシステムでの通信方式、及び、メッセージ中継プログラム
JP2004078565A (ja) 電子メールクライアントとクライアント用のプログラム
US6339796B1 (en) System for logical connection resynchronization
JP4616035B2 (ja) サーバ負荷分散プログラム,装置および方法
WO2018032499A1 (zh) 一种负载均衡的方法及相关装置
US6230283B1 (en) Logical connection resynchronization
JP2004500778A (ja) 多数のフォールト・トレラント・ネットワークにおける非フォールト・トレラント・ネットワーク・ノード
JP4500085B2 (ja) テスト支援装置及びテスト支援方法
JP4266107B2 (ja) データ転送装置、データ転送先装置、データ収集装置、データ転送プログラム、データ転送先プログラム及びデータ収集プログラム
JP4220861B2 (ja) テスト支援方法及びテスト支援装置
JP2015194874A (ja) 情報処理装置、送受信装置、及び情報処理装置の制御方法
US6237111B1 (en) Method for logical connection resynchronization
JP2000295294A (ja) ネットワークシステム及びネットワーク制御方法、信号送受信装置
Fox et al. IBM's Shared Memory Communications over RDMA (SMC-R) Protocol
JP5365414B2 (ja) メッセージ転送プログラム、メッセージ転送方法、およびノード
JP2018078482A (ja) 転送装置、転送方法およびプログラム
JP6237148B2 (ja) 中継装置、中継システム及びプログラム
CN112073162A (zh) 用于运行冗余的自动化系统的方法