JP4561800B2 - データ同期システム及び方法 - Google Patents

データ同期システム及び方法 Download PDF

Info

Publication number
JP4561800B2
JP4561800B2 JP2007247855A JP2007247855A JP4561800B2 JP 4561800 B2 JP4561800 B2 JP 4561800B2 JP 2007247855 A JP2007247855 A JP 2007247855A JP 2007247855 A JP2007247855 A JP 2007247855A JP 4561800 B2 JP4561800 B2 JP 4561800B2
Authority
JP
Japan
Prior art keywords
data
server
area
position index
application
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.)
Active
Application number
JP2007247855A
Other languages
English (en)
Other versions
JP2009080569A (ja
Inventor
貴司 水上
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2007247855A priority Critical patent/JP4561800B2/ja
Priority to US12/232,342 priority patent/US7797458B2/en
Publication of JP2009080569A publication Critical patent/JP2009080569A/ja
Application granted granted Critical
Publication of JP4561800B2 publication Critical patent/JP4561800B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、データ同期システム及び方法に関し、例えば、運用系サーバ(ACT)−待機系サーバ(SBY)冗長構成としたシステムに適用し得るものである。
一般に、IP電話サービス等を提供するコールサーバのような高い信頼性を求められるシステムでは、図2のように運用系サーバと待機系サーバを有する冗長構成を備える。運用系サーバと待機系サーバには、互いの生存確認を実施する冗長構成管理機能(図2では冗長構成管理プロセス51A及び51Bと示す)が存在し、待機系サーバの冗長構成管理機能51A及び51Bは、運用系サーバ5Aが故障あるいはソフトウェアのバグによりサービスを提供できない状況に陥った場合、待機系サーバ5Bを運用状態に切り替え、片方のサーバが故障してもサービスを継続させる。
さらに、最近では、特許文献1に示すように、運用系サーバ−待機系サーバ間でメモリ同期を実施し、通話中である呼の情報を0系から1系に引き継ぎ、0系が運用系である状態のときに開始した通話を1系が運用系に切り替わっても切断させないようにする技術がある。
特許文献1は、図3に示すように、運用系サーバ5Aのアプリケーションプロセス52Aは変更した共有メモリセグメント53Aのデータの位置情報(メモリのアドレスとサイズ)を同期要求キュー54Aに入力し、データ送受信プロセス55Aがデータの位置を同期要求キュー54Aから取り出し、位置情報から共有メモリセグメント53Aのデータを読み込み、待機系サーバ5Bへ転送する方式である。
一般に、電話サービスを提供するコールサーバのアプリケーションプロセスは、即時応答することが求められる。特許文献1は、運用系サーバから待機系サーバヘのデータ転送処理をアプリケーションプロセスの処理とは別プロセスで実施することで、アプリケーションプロセス内で遅延が発生することを回避させることができる。
特開2006−285448号公報
しかしながら、特許文献1に記載の技術は、アプリケーションプロセスとデータ送受信プロセスが並行して行なわれるため、図4に示すように、アプリケーションプロセス52Aが変更途中であるデータセグメント6を、データ送受信プロセス55Aが読み込んでしまう可能性がある。そうすると、例えば図5に示すように、中途半端なデータ6が待機系サーバ5Bの共有メモリセグメント53Bに反映されることになる。図5のような状態で、運用系サーバ5Aが故障した場合、待機系サーバ5Bのアプリケーションプロセス52Bは中途半端なデータ6でサービスを開始してしまうおそれがある。
一般に、プロセス間で同一のデータを読み込む場合、例えばLINUX(登録商標)等のUNIX(登録商標)系汎用OSで実装されているPOSIXセマフォを利用可能であるが、データ同期をするデータ送受信プロセスの処理中はアプリケーションプロセスの処理を停止させてしまう可能性があるため、好ましくない。
そのため、それぞれ共有メモリを備える複数のサーバ間で、それぞれの共有メモリ上のデータを同期するシステムにおいて、アプリケーションプロセスを停止させることなく、共有メモリへ書き込まれたデータを他のサーバへ同期させることができるデータ同期システム及び方法が求められている。
かかる課題を解決するために、第1の本発明のデータ同期システムは、それぞれ共有記憶部を備える複数のサーバ間で、それぞれのサーバの共有記憶部に記憶されるデータを同期させるデータ同期システムであって、当該サーバにてアプリケーションを実行するアプリケーション実行手段と、アプリケーションの実行に必要なデタを、共有記憶部上の第1領域に記憶する第1記憶手段と、アプリケーションの実行により第1領域に書き込んだ変更データと、当該変更データの第1領域における書き込み位置情報を、共有記憶部上の第2領域に記憶し、変更データと変更データの書き込み位置情報との第2領域における配列位置であって、記憶後に更新する書き込み位置インデックスを当該第2領域に記憶し、第2領域から変更データを読み込む配列位置を示す読み込み位置インデックスを当該第2領域に記憶する第2記憶手段と、第2記憶手段の書き込み位置インデックスと読み込み位置インデックスとに基づき他のサーバに送信しておらずかつ第2領域に書き込みが完了している変更データと当該変更データの第1領域における書き込み位置情報を、当該他のサーバに送信するデータ通信手段とを備え、複数のサーバにおいて、第1サーバが運用系サーバであり、第2サーバが待機系サーバであるとき、第1サーバは、ネットワーク間で使用される第1通信プロトコルを用いて第2サーバと通信可能である場合、第1サーバにおいて、データ通信手段は、読み込み位置インデックスと書き込み位置インデックスとが一致していないときに、第2サーバに送信しておらずかつ第2領域に書き込みが完了している変更データと当該変更データの第1領域における書き込み位置情報を、第2サーバに送信し、第2記憶手段は、データ通信手段の送信処理に基づき、読み込み位置インデックスを更新し、第1サーバは、第1通信プロトコルを用いて第2サーバと通信可能でない場合、第1サーバにおいて、第2記憶手段は、読み込み位置インデックスとして、書き込み位置インデックスと等しいインデックスを記憶することを特徴とする。
第2の本発明のデータ同期方法は、それぞれ共有記憶部を備える複数のサーバ間で、それぞれのサーバの共有記憶部上に記憶されるデータを同期させるデータ同期システムにおけるデータ同期方法であって、各サーバは、サーバにてアプリケーションを実行するアプリケーション実行手段と、アプリケーションの実行に必要なデタを、共有記憶部上の第1領域に記憶する第1記憶手段と、アプリケーションの実行により第1領域に書き込んだ変更データと、当該変更データの第1領域における書き込み位置情報を、共有記憶部上の第2領域に記憶し、変更データと変更データの書き込み位置情報との第2領域における配列位置であって、記憶後に更新する書き込み位置インデックスを当該第2領域に記憶し、第2領域から変更データを読み込む配列位置を示す読み込み位置インデックスを当該第2領域に記憶する第2記憶手段と、第2記憶手段の書き込み位置インデックスと読み込み位置インデックスとに基づき他のサーバに送信しておらずかつ第2領域に書き込みが完了している変更データと当該変更データの第1領域における書き込み位置情報を、当該他のサーバに送信するデータ通信手段とを備え、複数のサーバにおいて、第1サーバが運用系サーバであり、第2サーバが待機系サーバであるとき、第1サーバは、ネットワーク間で使用される第1通信プロトコルを用いて第2サーバと通信可能である場合、第1サーバにおいて、データ通信手段が、読み込み位置インデックスと書き込み位置インデックスとが一致していないときに、第2サーバに送信しておらずかつ第2領域に書き込みが完了している変更データと当該変更データの第1領域における書き込み位置情報を、第2サーバに送信するデータ通信ステップと、第2記憶手段が、通信データ手段の送信処理に基づき、読み込み位置インデックスを更新する更新ステップとを有し、第1サーバは、第1通信プロトコルを用いて第2サーバと通信可能でない場合、第1サーバにおいて、第2記憶手段が、読み込み位置インデックスとして、書き込み位置インデックスと等しいインデックスを記憶する記憶ステッとを有することを特徴とする。
本発明によれば、それぞれ共有メモリを備える複数のサーバ間で、それぞれの共有メモリ上のデータを同期するシステムにおいて、アプリケーションプロセスを停止させることなく、共有メモリへ書き込まれたデータを他のサーバへ同期させることができる。
(A)第1の実施形態
以下、本発明のデータ同期システム及び方法の第1の実施形態について、図面を参照しながら詳細に説明する。
第1の実施形態では、IPネットワークに接続する運用系サーバと待機系サーバとの間の冗長システムに本発明を適用した場合を例示して説明する。
運用系サーバ及び待機系サーバのハードウェア構成は、通常のサーバのハードウェア構成と同様に、CPU、メモリ、外部記憶装置及び通信部などを備えるものであり、運用系サーバ及び待機系サーバは、ソフトウェア処理により以下で説明する各種処理を実現する。
(A−1)第1の実施形態の構成
図1は、第1の実施形態の運用系サーバ−待機系サーバの二重化構成を示す構成図である。なお、運用系サーバ1A及び待機系サーバ1Bはそれぞれ同一の機能構成を備えるものであり、状況に応じて、運用系サーバとして機能したり、待機系サーバとして機能したりするものである。
運用系サーバ1A及び待機系サーバ1Bはそれぞれ、プロセスとして、アプリケーションプロセス11(11A及び11B)、冗長構成管理プロセス12(12A及び12B)、データ送受信プロセス13(13A及び13B)、を有する。
また、運用系サーバ1A及び待機系サーバ1Bはそれぞれ、共有メモリデータセグメント14(14A及び14B)、一時保存領域15(15A及び15B)、を有する。
以下の機能構成の説明において、共通的な機能説明の場合には、例えば「データ送受信プロセス13」などのように示し、運用系又は待機系の特有の機能説明の場合には、例えば、「データ送受信プロセス13A」、「データ送受信プロセス13B」などのように示す。
共有メモリデータセグメント14は、自系サーバの共有メモリ上に確保される配列であって、アプリケーションプロセス11の実行に必要なデータやインスタンスなどを記憶する領域である。ここで、共有メモリとは、マルチプロセス間で共有するメモリ領域をいう。
一時保存領域15は、自系サーバの共有メモリ上に確保される記憶領域である。一時保存領域15には、書き込み位置index151、読み込み位置index152、変更データ配列153が存在する。
ここで、変更データとは、アプリケーションプロセス11が共有メモリセグメント14に書き込んだデータ232及び共通メモリセグメント14の位置情報を格納したデータ同期ヘッダ231を指す。
図6は、データ同期ヘッダ231が有する情報の項目を説明する説明図である。図6に示すように、データ同期ヘッダ231は、セグメント識別子31と、セグメントindex32とを含む。
セグメント識別子31とは、共有メモリセグメント14を一意に特定する識別子をいう。これにより、共有メモリセグメント14が複数存在している場合でも、データ同期送受信プロセス13は、セグメント識別子31を参照して、どの共有メモリセグメント14のデータであるかを判断することができる。
セグメントindex32とは、共有メモリセグメント14の配列の先頭から何番目のデータであるかを意味する。
書き込み位置index21は、運用系のアプリケーションプロセス11Aが共有メモリセグメント14Aにデータを書き込んだ後、アプリケーションプロセス11Aがそのデータを含む変更データを一時保存領域15Aに書き込む位置を示すものである。
これにより、運用系のアプリケーションプロセス11Aは、変更データを書き込む一時保存領域15Aの位置を知ることができ、また運用系のデータ送受信プロセス13Aは
、アプリケーションプロセス11Aが一時保存領域15Aの変更データ配列23の先頭から何番目のデータまで書き込まれているかを知ることができる。
また、書き込み位置index21は、アプリケーションプロセス11Aが一時保存領域15Aに変更データを書き込むたびに、変更データ書き込み完了後にインクリメントされるものである。
読み込み位置index22は、運用系のデータ送受信プロセス13Aが一時保存領域15Aから変更データを読み込む位置を示すものである。これにより、運用系のデータ送受信プロセス13Aが変更データ配列23の先頭から何番目のデータまでを読み込んだかを知ることができる。
また、読み込み位置index22は、運用系のデータ送受信プロセス13Aが変更データ23を読み込むたびに、変更データ読み込み完了後にインクリメントされるものである。
なお、書き込み位置index21及び読み込み位置index22は、例えば32ビットでアトミック性が保証される。
ここで、アトミックな処理とはそれ以上分割できない単位の処理をいい、アトミック性とは、一般に、32ビット以上のCPUで実装されたサーバ上では、マルチプロセス・マルチスレッドで32ビットの領域の書き込み・読み込みが保証されることをいう。
例えば、int型の共有メモリ領域Xに、プロセスAが排他なしに定期的に0x100を書き込み、またプロセスBが0x10を書き込んだ場合、共有メモリ領域Xには、例えば0x110等のようなデータの書き込みはなされず、0x100又は0x10のいずれかが書き込まれることが保障される。
アプリケーションプロセス11は、アプリケーションを実行するプロセスである。
冗長構成管理プロセス12は、両系サーバで互いに故障監視を行なうプロセスであり、例えば両系サーバ間の冗長構成管理プロセス12はそれぞれUDPで接続して故障を監視する。また、冗長構成管理プロセス12の機能としては次のような機能を持つ。
冗長構成管理プロセス12は、待機系サーバ1Bの冗長構成管理プロセス11Bと通信できなくなったことを検出すると、自系のデータ送受信プロセス13及びアプリケーションプロセス11に対して運用系へ切り替わるように指示する機能をもつ。
また、両系の冗長構成管理プロセス12は、自系のアプリケーションプロセス11の生存確認をする機能をもつ。
さらに、運用系の冗長構成管理プロセス12Aは、アプリケーションプロセス11Aがダウンすると、自系のデータ送受信プロセス13Aに対して待機系に切り替わるよう指示するとともに、他系の冗長構成管理プロセス12に対して系切替要求を送信する機能を持つ。
また、待機系の冗長構成管理プロセス12Bは、運用系の冗長構成管理プロセス12Aから系切替要求を受信すると、自系のデータ送受信プロセス13B及びアプリケーションプロセス11Bに対して運用系へ切り替わるよう指示する機能を持つ。
さらにまた、データ送受信プロセスから自系サーバの状態を要求されると、運用系であるか待機系であるかを返却する機能を持つ。
データ送受信プロセス13は、自系サーバと他系サーバとの間でデータを同期するために、データの受け渡しをするプロセスである。運用系のデータ送受信プロセス13Aは、定期的に一時保存領域15Aを確認し、アプリケーションプロセス11Aからデータが書き込まれていれば、待機系のデータ送受信プロセス13Bへ転送する機能をもつ。また、待機系のデータ送受信プロセス13Bは、運用系のデータ送受信プロセス13Aからデータを受け取ると、待機系の共有メモリデータセグメント14Bに書き込む機能を持つ。
(A−2)第1の実施形態の動作
次に、第1の実施形態の運用系サーバ1Aと待機系サーバ1Bとの間のデータ同期処理について図面を参照しながら説明する。
(A−2−1)運用系サーバのデータ送受信プロセスの動作
まず、運用系サーバ1Aのデータ送受信プロセスの動作について説明する。図7は、運用系サーバ1Aのデータ送受信プロセスの処理を示す動作フローチャートである。
自系サーバのデータ送受信プロセス13が起動すると(ステップS101)、共有メモリ上に一時保存領域15を確保する(ステップS102)。このとき、一時保存領域15がすでに生成されている場合、その既に生成されている領域を用いることができる。
次に、自系サーバが運用系サーバであるか又は待機系サーバであるかを冗長構成管理プロセス12に確認する(ステップS103)。その結果、自系サーバが運用系であればステップS104に移行し、自系サーバが待機系サーバであれば図8の「A」へ遷移して待機系サーバ1Bとして機能する。
ステップS104では、冗長構成管理プロセス12Aから待機系に遷移するよう指示があったかを確認する。このとき、冗長構成管理プロセス12Aから待機系への遷移の指示があれば図8の「A」へ、待機系への遷移の指示がなければステップS105へ遷移する。
ステップS105では、待機系サーバ1Bのデータ送受信プロセス13BからTCP接続をされたかを確認する。
そして、TCP接続がなされた場合、ステップS106へ遷移し、運用系サーバ1Aの共有メモリデータセグメント14Aのデータを全て読み込み(ステップS106)、共有メモリデータセグメント14Aから読み込んだ全てのデータを待機系サーバのデータ送受信プロセス13Bに送信する(ステップS107)。
一方、ステップS105において、待機系サーバ1Bのデータ送受信プロセス13Bとの間でTCP接続がなされていない場合、一時保存領域15Aのデータを読み込んで同期する必要がないので、読み込み位置を書き込み位置と等しくする(見かけ上一時保存領域15Aのデータを全て読み込んだ状態にする)(ステップS114)。
このステップS114の処理実施後、一定時間だけ待機した後(ステップS115)、ステップS104に戻って処理を繰り返す。
ステップS108では、データ送受信プロセス13Aが一時保存領域15Aの書き込み位置index21と読み込み位置index22とを参照して、一時保存領域15Aに同期をする必要があるデータがあるか否かを確認する。
例えば、書き込み位置index21=3、読み込み位置index22=1である場合、アプリケーションプロセス11Aが変更データ配列の先頭から3番目まで書き込んだところ、データ送受信プロセス13Aが変更データ配列の先頭から1番目までしか読み込んでいないため、変更データ配列の先頭から2番目、3番目の領域に同期する必要があるデータが残っているということになる。
ステップS108において一時保存領域15Aに同期をする必要があるデータが存在する場合、一時保存領域15Aからデータを読み込み、待機系サーバ1Bのデータ送受信プロセス13Bに送信する(ステップS109)。
そして、ステップS109でのデータ送信後、データ送受信プロセス13Aは、一時保存領域15Aの読み込み位置index22の値を「1」だけ加算する。なお、読み込み位置index22の値が変更データ配列の最大数よりも大きくなった場合、読み込み位置index22に「0」を設定する(すなわち、リセットする)。
なお、第1の実施形態では、データ送受信プロセス13Aは書き込み位置index21を必ず先に参照し、その後変更データ配列の内容を参照するものとする。
一方、ステップS108において読み込み位置index21と書き込み位置index22とが同じ値となった場合、データ送受信プロセス13Aは、一時保存領域からデータを全て読み取ったと判断し、ステップS111へ遷移する。
ステップS111では、待機系サーバ1Bのデータ送受信プロセス13BとのTCP接続を確認し、TCP接続が切断されていた場合、データ同期をできないのでステップS114へ遷移する。一方、TCPが接続されたままである場合、ステップS112へ遷移する。
ステップS112では、冗長構成管理プロセス12Aから待機系サーバ1Bに遷移するよう指示があったかを確認し、待機系サーバ1Bへの遷移の指示があれば図8の「A」へ移行し、待機系サーバ1Bへの遷移の指示がなければ、一定時間だけ待機した後(ステップS113)、ステップS108へ戻り、処理を繰り返す。
(A−2−2)待機系サーバのデータ送受信プロセスの動作
続いて、待機系サーバ1Bのデータ送受信プロセス13Bの動作について図面を参照して説明する。
図8は、待機系サーバ1Bのデータ送受信プロセス13Bの処理を示す動作フローチャートである。
図7のステップS103において自系サーバが待機系サーバ1Bであると判断されると、運用系サーバ1Aのデータ送受信プロセス13Aに対してTCP接続を実施する(ステップS201)。
ステップS202では、運用系サーバ1Aのデータ送受信プロセス13AとTCP接続がなされたか否かを確認し、TCP接続がされていればステップS203に移行し、TCP接続がされていなければステップS205に遷移する。
運用系サーバ1Aのデータ送受信プロセス13AとTCP接続後、データ送受信プロセス13Aからデータが与えられている場合(ステップS203)、そのデータを共有メモリセグメント14Bに書き込みを行ない(ステップS204)、その後、ステップS203に戻って処理を繰り返す。
一方、TCP接続するデータ送受信プロセス13Aからデータが与えられていない場合(ステップS203)、ステップS205に遷移する。
ステップS205では、自系(待機系)サーバの冗長構成管理プロセス12Bから運用系サーバへの遷移指示があるか否かを確認する。
そして、運用系サーバへの遷移指示があれば、図7のステップS104に遷移して運用系サーバ1Aのデータ送受信プロセス13Aとして機能する。
一方、運用系サーバへの遷移指示がなければ、運用系サーバ1Aのデータ送受信プロセス13AとTCP接続が確立されているか否かを確認し(ステップS206)、TCP接続されていれば、ステップS203に戻って処理を繰り返し、TCP接続されてなければ、ステップS201に戻って処理を繰り返す。
(A−2−3)運用系サーバのアプリケーションプロセスの動作
続いて、運用系サーバのアプリケーションプロセスの処理について図面を参照して説明する。
図9は、運用系サーバ1Aのアプリケーションプロセス11Aの共有メモリデータセグメント14Aへのデータ書き込み処理を示すフローチャートである。
運用系サーバ1Aにおいて、アプリケーションプロセス11Aのデータ書き込み処理が開始すると(ステップS301)、まず、アプリケーションプロセス11Aは、共有メモリデータセグメント14Aにデータを書き込む(ステップS302)。
アプリケーションプロセス11Aが共有メモリセグメント14Aにデータを書き込むと、次に、アプリケーションプロセス14Aは、書き込み位置index21を参照し、一時保存領域15Aの書き込み位置index21が示す領域に変更データを書き込む(ステップS303)。
そして、一時保存領域15Aへの変更データの書き込みが完了すると、アプリケーションプロセス11Aは、書き込み位置index21の値を「1」だけ加算する(ステップS304)。
このように、共有メモリセグメント14Aにデータ書き込みしたアプリケーションプロセス11Aが、一時保存領域15Aに変更データの書き込みを完了した後に、書き込み位置index21の値をインクリメントすることで、変更データを全て書き終えるまで、データ送受信プロセス13Aによる当該書き込み中の変更データの読み込みを行なわないようにすることができる。
その結果、アプリケーションプロセス11Aの書き込み処理をロックするような排他制御を行なわずに、アプリケーションプロセス11Aが書き込み中の変更データの読み込み処理を回避することができる。
なお、一時保存領域15Aの保存領域が上限に達した場合、アプリケーションプロセス11Aは書き込み位置index21の値を先頭領域を示す「0」に戻すことで(ステップS304)、次の書き込みの際には、書き込み位置index21の「0」の領域にデータを書き込むこととする(ステップS303)。すなわち、一時保存領域15Aの保存領域が上限に達した場合、次の変更データを保存する領域を一時保存領域15Aの先頭領域とすることで、一時保存領域15Aの保存領域を循環的に利用する。
図10は、運用系サーバ1Aにおけるデータの書き込み処理から読み込み処理までの動きを説明する説明図である。
アプリケーションプロセス11Aが共有セグメント14Aのデータ書き込みを行なうと(ステップS401)、共有メモリセグメント14Aへのデータ書き込み後、アプリケーションプロセス11Aは、変更したデータ内容を一時保存領域15Aにも書き込む(ステップS402)。
そして、変更したデータ内容の一時保存領域15Aへの書き込みが完了すると、アプリケーションプロセス11Aは、書き込み位置index21の値を「1」だけ加算して更新する(ステップS403)。
その後、データ送受信プロセス13Aは、書き込み位置index21及び読み込み位置index22を読み出す(ステップS404)。そして、データ送受信プロセス13Aは、、書き込み位置index21の値と読み込み位置index22との値とを比較して、読み込むことができる変更データが存在する場合に、読み込み位置index22の値に基づいて一時保存領域15Aからデータを読み出し(ステップS405)、待機系サーバ1Bのデータ送受信プロセス13Bに転送する(ステップS406)。
続いて、図11は、アプリケーションプロセス11Aの共有メモリセグメント14Aへのデータ書込み処理とデータ送受信プロセス13Aのデータ読み込み処理が同時に発生した場合の動きを説明する説明図である。
この場合、アプリケーションプロセス11Aは、共有メモリセグメント14Aにデータ書き込みをしているおり(ステップS501)、一時保存領域15Aへはアクセスしていない。
そのため、データ送受信プロセスが一時保存領域15Aを参照しても、一時保存領域15Aには変更データが入力されていないから、変更途中のデータが同期されることはない。
図12は、アプリケーションプロセス11Aが一時保存領域15Aに変更データを書き込み中に、データ送受信プロセス13Aがデータ読み込み処理を行なう場合の動きを説明する説明図である。
第1の実施形態では、書き込み位置index21の値は、アプリケーションプロセス11Aが一時保存領域15Aへの変更データの書き込み完了後に更新される。
そのため、図12では、アプリケーションプロセス11Aが、書き込み位置indexが「2」の位置に変更データを書き込み中であるが、書き込み位置index21は「1」の値を示したままである(ステップS601)。
この場合に、データ送受信プロセス13Aは、書き込み位置index21及び読み込み位置index22を比較して変更データの読み込みを行なうため、変更データの書き込み処理が完了し書き込み位置index21が更新されるまでは、データ送受信プロセス13Aは変更途中のデータを読み込むことはない(ステップS602)。
(A−3)第1の実施形態の効果
以上のように、第1の実施形態によれば、書き込み位置index及び読み込み位置indexを備え、アプリケーションプロセスはデータを一時保存領域に保存後に、書き込み位置indexを加算し、データ送受信プロセスは書き込み位置indexでデータが書き込まれている位置を確認しながら、一時保存領域からデータを読み込むことで、排他なしに一貫性を保証した(変更中の中途半端なデータを同期させない)データ同期を実現している。
(B)他の実施形態
(B−1)第1の実施形態では、共有メモリセグメントが1個の場合を説明したが、共有メモリセグメントを複数個の場合にも適用できる。
(B−2)第1の実施形態では、アプリケーションプロセスが1個の場合を説明したが、一時保存領域を複数個用意すれば、複数のアプリケーションプロセスを備えるようにしてもよい。
(B−3)第1の実施形態の図7、図8、図9は処理の一例を示しただけであり、アトミックな書き込み・読み込みが保証される書き込み位置indexを用意し、アプリケーションプロセス(データ変更側)はデータを一時保存領域に保存後、書き込み位置indexを加算し、データ送受信プロセス(データ読み込み側)は書き込み位置indexで書き込まれた位置を確認後、一時保存債域からデータを読み込む、というフローであれば、図7、図8、図9以外の処理フローでも適用できる。
(B−4)第1の実施形態にある一時保存領域の変更データ配列サイズや共有メモリセグメントの配列サイズに関して、実施形態と異なっていても適用できる。
(B−5)書き込み位置index及び読み込み位置indexは、一時保存領域へ変更データを書き込む際又は読み込む際に、どこまで変更データを書き込んだか、どこまで読み込んだかを示すものである。そのため、第1の実施系では、一時保存領域の保存領域の位置を示すindexとして説明したが、これに限定されることなく、例えば、一時保存領域の空き領域の容量を利用するようにしてもよい。
(B−6)第1の実施形態では、一時保存領域の保存領域に上限を決めておき、その上限に達した場合に、次の変更データを先頭領域に保存する場合を例示した。このとき、先頭領域に既に保存されているデータについてはクリアせず、次の変更データで更新するものとする。
また、データ送受信プロセスが一時保存領域から読み込んだデータについて一時保存領域から削除するようにしてもよい。
(B−7)第1の実施形態で説明した各種機能は、サーバ上のソフトウェア処理により実現されるものであるが、実現可能であればハードウェア処理により実現するようにしてもよい。
第1の実施形態の運用系サーバ−待機系サーバの二重化構成を示す構成図である。 従来の運用系サーバ−待機系サーバの二重化構成を示す構成図である。 従来のデータ同期処理の動きを説明する説明図である。 従来のデータ同期処理における課題を説明する説明図である(その1)。 従来のデータ同期処理における課題を説明する説明図である(その2)。 第1の実施形態のデータ同期ヘッダの項目を説明する説明図である。 第1の実施形態の運用系サーバのデータ送受信プロセスの動作を示すフローチャートである。 第1の実施形態の待機系サーバのデータ送受信プロセスの動作を示すフローチャートである。 第1の実施形態のアプリケーションプロセスのデータ変更動作を示すフローチャートである。 第1の実施形態の運用系におけるアプリケーションプロセスのデータ書き込み処理からデータ送受信プロセスによるデータ読み込み処理までの動きを説明する説明図である。 第1の実施形態の運用系におけるアプリケーションプロセスのデータ書き込み処理とデータ送受信プロセスによるデータ読み込み処理とが同時発生した場合の動きを説明する説明図である。 第1の実施形態の運用系におけるアプリケーションプロセスの変更データ書込み中でのデータ送受信プロセスによるデータ読み込み処理の動きを説明する説明図である。
符号の説明
1A…運用系サーバ、1B…待機系サーバ、11A及び11B…アプリケーションサーバ、12A及び12B…冗長構成管理プロセス、13A及び13B…データ送受信プロセス、14A及び14B…共有メモリセグメント、15A及び15B…一時保存領域。

Claims (7)

  1. それぞれ共有記憶部を備える複数のサーバ間で、それぞれのサーバの共有記憶部に記憶されるデータを同期させるデータ同期システムであって、
    上記各サーバは、
    当該サーバにてアプリケーションを実行するアプリケーション実行手段と、
    上記アプリケーションの実行に必要なデタを、上記共有記憶部上の第1領域に記憶する第1記憶手段と、
    上記アプリケーションの実行により上記第1領域に書き込んだ変更データと、当該変更データの上記第1領域における書き込み位置情報を、上記共有記憶部上の第2領域に記憶し、上記変更データと上記変更データの書き込み位置情報との上記第2領域における配列位置であって、記憶後に更新する書き込み位置インデックスを当該第2領域に記憶し、上記第2領域から上記変更データを読み込む配列位置を示す読み込み位置インデックスを当該第2領域に記憶する第2記憶手段と、
    上記第2記憶手段の上記書き込み位置インデックスと上記読み込み位置インデックスとに基づき上記他のサーバに送信しておらずかつ上記第2領域に書き込みが完了している上記変更データと当該変更データの上記第1領域における書き込み位置情報を、当該他のサーバに送信するデータ通信手段と
    を備え、
    上記複数のサーバにおいて、第1サーバが運用系サーバであり、第2サーバが待機系サーバであるとき、
    上記第1サーバは、ネットワーク間で使用される第1通信プロトコルを用いて上記第2サーバと通信可能である場合、上記第1サーバにおいて、
    上記データ通信手段は、上記読み込み位置インデックスと上記書き込み位置インデックスとが一致していないときに、上記第2サーバに送信しておらずかつ上記第2領域に書き込みが完了している上記変更データと当該変更データの上記第1領域における書き込み位置情報を、上記第2サーバに送信し、
    上記第2記憶手段は、上記通信データ手段の送信処理に基づき、上記読み込み位置インデックスを更新し、
    上記第1サーバは、上記第1通信プロトコルを用いて上記第2サーバと通信可能でない場合、上記第1サーバにおいて、
    上記第2記憶手段は、上記読み込み位置インデックスとして、上記書き込み位置インデックスと等しいインデックスを記憶する
    ことを特徴とするデータ同期システム。
  2. 上記第2記憶手段は、各アプリケーションの実行による1つの書き込処理又は1つ読み込み処理の実行を保証する領域であることを特徴とする請求項1に記載のデータ同期システム。
  3. 上記共有記憶部上の第1領域は、データセグメントであることを特徴とする請求項1に記載のデータ同期システム。
  4. 上記共有記憶部上の第2領域は、一時記憶部であることを特徴とする請求項1に記載のデータ同期システム。
  5. 上記第1通信プロトコルは、TCPであることを特徴とする請求項1に記載のデータ同期システム。
  6. それぞれ共有記憶部を備える複数のサーバ間で、それぞれのサーバの共有記憶部に記憶されるデータを同期させるデータ同期システムにおけるデータ同期方法であって、
    上記各サーバは、
    当該サーバにてアプリケーションを実行するアプリケーション実行手段と、
    上記アプリケーションの実行に必要なデタを、上記共有記憶部上の第1領域に記憶する第1記憶手段と、
    上記アプリケーションの実行により上記第1領域に書き込んだ変更データと、当該変更データの上記第1領域における書き込み位置情報を、上記共有記憶部上の第2領域に記憶し、上記変更データと上記変更データの書き込み位置情報との上記第2領域における配列位置であって、記憶後に更新する書き込み位置インデックスを当該第2領域に記憶し、上記第2領域から上記変更データを読み込む配列位置を示す読み込み位置インデックスを当該第2領域に記憶する第2記憶手段と、
    上記第2記憶手段の上記書き込み位置インデックスと上記読み込み位置インデックスとに基づき上記他のサーバに送信しておらずかつ上記第2領域に書き込みが完了している上記変更データと当該変更データの上記第1領域における書き込み位置情報を、当該他のサーバに送信するデータ通信手段とを備え、
    上記複数のサーバにおいて、第1サーバが運用系サーバであり、第2サーバが待機系サーバであるとき、
    上記第1サーバは、ネットワーク間で使用される第1通信プロトコルを用いて上記第2サーバと通信可能である場合、上記第1サーバにおいて、
    上記データ通信手段が、上記読み込み位置インデックスと上記書き込み位置インデックスとが一致していないときに、上記第2サーバに送信しておらずかつ上記第2領域に書き込みが完了している上記変更データと当該変更データの上記第1領域における書き込み位置情報を、上記第2サーバに送信するデータ通信ステップと、
    上記第2記憶手段が、上記通信データ手段の送信処理に基づき、上記読み込み位置インデックスを更新する更新ステップとを有し、
    上記第1サーバは、上記第1通信プロトコルを用いて上記第2サーバと通信可能でない場合、上記第1サーバにおいて、
    上記第2記憶手段が、上記読み込み位置インデックスとして、上記書き込み位置インデックスと等しいインデックスを記憶する記憶ステッ
    を有することを特徴とするデータ同期方法。
  7. 上記第1通信プロトコルは、TCPであることを特徴とする請求項6に記載のデータ同期方法。
JP2007247855A 2007-09-25 2007-09-25 データ同期システム及び方法 Active JP4561800B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007247855A JP4561800B2 (ja) 2007-09-25 2007-09-25 データ同期システム及び方法
US12/232,342 US7797458B2 (en) 2007-09-25 2008-09-16 Data synchronous system for synchronizing updated data in a redundant system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007247855A JP4561800B2 (ja) 2007-09-25 2007-09-25 データ同期システム及び方法

Publications (2)

Publication Number Publication Date
JP2009080569A JP2009080569A (ja) 2009-04-16
JP4561800B2 true JP4561800B2 (ja) 2010-10-13

Family

ID=40472894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007247855A Active JP4561800B2 (ja) 2007-09-25 2007-09-25 データ同期システム及び方法

Country Status (2)

Country Link
US (1) US7797458B2 (ja)
JP (1) JP4561800B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8135865B2 (en) * 2007-09-04 2012-03-13 Apple Inc. Synchronization and transfer of digital media items
JP4479930B2 (ja) * 2007-12-21 2010-06-09 日本電気株式会社 ノードシステム、サーバ切換え方法、サーバ装置、データ引き継ぎ方法、およびプログラム
EP2500848A1 (en) 2011-03-15 2012-09-19 Amadeus S.A.S. Method and system for centralized reservation context management on multi-server reservation system
EP2500832B1 (en) * 2011-03-15 2018-07-25 Amadeus S.A.S. Method and system for synchronization mechanism on multi-server reservation system
JP6005668B2 (ja) * 2012-01-16 2016-10-12 株式会社日立製作所 計算機システム及び論理記憶領域管理方法
JP6291711B2 (ja) * 2013-01-21 2018-03-14 日本電気株式会社 フォールトトレラントシステム
US9495325B2 (en) 2013-12-30 2016-11-15 International Business Machines Corporation Remote direct memory access (RDMA) high performance producer-consumer message processing
CN107072513B (zh) * 2015-06-16 2018-12-14 奥林巴斯株式会社 医疗设备系统及其存储器共享方法
CN106168916B (zh) * 2016-06-24 2018-06-26 北京百度网讯科技有限公司 数据传输方法和系统
CN108804234B (zh) * 2017-04-28 2023-05-09 腾讯科技(深圳)有限公司 数据存储系统及其操作方法
CN115437798A (zh) * 2021-06-23 2022-12-06 北京车和家信息技术有限公司 共享内存的数据处理方法、装置、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002373084A (ja) * 2001-06-14 2002-12-26 Hitachi Ltd 二重化システムの状態交換・障害検出兼用方法
JP2004157795A (ja) * 2002-11-07 2004-06-03 Hitachi Ltd 二重系計算機及びその共有データ一致化方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3657428B2 (ja) * 1998-04-27 2005-06-08 株式会社日立製作所 記憶制御装置
JP2005293315A (ja) * 2004-03-31 2005-10-20 Nec Corp データミラー型クラスタシステム及びデータミラー型クラスタシステムの同期制御方法
KR100578143B1 (ko) * 2004-12-21 2006-05-10 삼성전자주식회사 버퍼 메모리에 저장된 데이터를 무효화시키는 스킴을 갖는저장 시스템 및 그것을 포함한 컴퓨팅 시스템
JP2006285448A (ja) 2005-03-31 2006-10-19 Oki Electric Ind Co Ltd 冗長システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002373084A (ja) * 2001-06-14 2002-12-26 Hitachi Ltd 二重化システムの状態交換・障害検出兼用方法
JP2004157795A (ja) * 2002-11-07 2004-06-03 Hitachi Ltd 二重系計算機及びその共有データ一致化方法

Also Published As

Publication number Publication date
US7797458B2 (en) 2010-09-14
JP2009080569A (ja) 2009-04-16
US20090083393A1 (en) 2009-03-26

Similar Documents

Publication Publication Date Title
JP4561800B2 (ja) データ同期システム及び方法
US7475284B2 (en) Redundancy system having synchronization function and synchronization method for redundancy system
EP1110148B1 (en) Fault tolerant computer system
JP5187249B2 (ja) 冗長化システム用コネクションリカバリ装置,方法および処理プログラム
KR100744448B1 (ko) 통신 시스템
JP2004032224A (ja) サーバ引継システムおよびその方法
CN108512753B (zh) 一种集群文件系统中消息传输的方法及装置
CN112787960A (zh) 一种堆叠分裂的处理方法、装置、设备及存储介质
CN101141282B (zh) 一种网管系统及其管理方法
JP4895972B2 (ja) リングプロトコル高速切替方法およびその装置
CN113179228B (zh) 一种提高交换机堆叠可靠性的方法、装置、设备及介质
JP5112246B2 (ja) ストレージシステム及び通信方法
US9558149B2 (en) Dual system
US7853713B2 (en) Communication interface device and communication method
US20100011383A1 (en) Method for file handling in network switch stacking
JP4806382B2 (ja) 冗長化システム
CN109951388A (zh) 路由不间断方法和主控板
JP2007272694A (ja) 通信インターフェース装置及び通信方法
JP5148441B2 (ja) 計算機間相互結合網における通信経路の冗長化と切り替え方法、この方法を実現するサーバ装置、そのサーバモジュール、および、そのプログラム
CN111698151B (zh) 路由信息管理方法、装置及计算机存储介质
WO2009139306A1 (ja) 通信システム及び冗長構成管理方法
US20200394111A1 (en) Method for Operating a Redundant Automation System
JP2017187973A (ja) 並列処理装置及び通信制御方法
KR20070080337A (ko) 이중화 통신 시스템의 페일 오버 및 원복 처리 방법
US20150146728A1 (en) Communication packet processing apparatus and method

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090817

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090825

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100427

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100611

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100706

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100719

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4561800

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350