以下、実施例について図面を参照して説明する。
図1は、本実施例におけるシステム構成の一例である。
この図において、符号101は通信端末、符号102は無線網、符号103はキャリア設備網、符号104はインターネットなどのネットワーク、符号105はメール転送サーバ、符号106はメールゲートウェイ、符号107はデータストアサーバ、符号108は課金サーバである。
通信端末101は、携帯電話端末やPC等のデータ通信可能な端末装置を示し、無線網102を介してキャリア設備網103と接続している。無線網102は、携帯電話通信キャリアが管理する無線ネットワークである。キャリア設備網103は、無線網102からの通信をインターネット104、メールゲートウェイ106およびデータストアサーバ107へ中継するネットワークおよびネットワーク設備である。
無線網102とキャリア設備網103は、本実施例のメールゲートウェイ106を管理する携帯電話キャリアによって管理される。メール転送サーバ105は、MTAとも呼ばれ、インターネット104を経由してメールゲートウェイ106とメールの送受信を行う。メール転送サーバ105は、インターネットプロバイダや、キャリア設備網103を管理している携帯電話通信キャリア以外の携帯電話通信キャリア、即ち他の通信事業者が管理する設備網に設置される。メール転送サーバ105は、メールゲートウェイ106から受信したメールを宛先へ中継する処理と、逆にメール転送サーバ105を管理する他の通信事業者のメールをメールゲートウェイ106へ中継する処理とを行う。
以下の説明では簡略化のため、メールゲートウェイ106からメール転送サーバ105へのメールの送信について説明するが、本実施例は、これに限定されること無く、メール転送サーバ105からメールゲートウェイ106へのメール送信にも適用可能である。
メールゲートウェイ106は、キャリア設備網103に設置され、通信端末101がキャリア設備網103へ送信したメールを受信し、メール転送サーバ105へメールを中継する。本実施例では、メールゲートウェイ106は複数台で負荷分散されており、メールゲートウェイ106aのようにアルファベットを添え字として表記したものは特定のサーバ単体を示し、総称する場合は、添え字を付けずに表記する。
本実施例では、メールゲートウェイ106と通信端末101間と、メールゲートウェイ106とメール転送サーバ105間の通信プロトコルは限定しないが、一般的にはSMTP、ESMTP(Extended SMTP)、MMS(Multimedia Messaging Service)のいずれか使用する。それ以外にも、HTTP(Hypertext Transfer Protocol)、IMAP(Internet Message Access Protocol)、POP(Post Office Protocol)などのプロトコルを適用しても実現可能である。
データストアサーバ107はキャリア設備網103に設置され、メールゲートウェイ106からのメールや課金に関する情報(以下、課金情報)、迷惑メールに関する情報などのデータを受信し、記憶する。また、メールゲートウェイ106に障害が発生した場合、データストアサーバ107は上記記憶しているデータをメールゲートウェイ106へ送信する。本実施例では、メールゲートウェイ106とデータストアサーバ107が1対1の場合を説明するが、メールゲートウェイ106とデータストアサーバ107を1対複数にして、データストアサーバ間でデータを保持しあうことが実現可能である。たとえば、メールゲートウェイ106とデータストアサーバ107が1対2の場合、メールゲートウェイ106はデータストアサーバ107へデータを送信し、データを受信したデータストアサーバ107がもう1台のデータストアサーバ107へデータを送信してデータを2重化する。または、メールゲートウェイ106が2台のデータストアサーバ107へ別々にデータを送信してデータを2重化することも可能である。
課金サーバ108はキャリア設備網103に設置され、メールゲートウェイ106から課金情報を受信する。携帯通信キャリアは、この課金サーバに格納された課金情報をもとに、通信端末101への課金を行う。
図2は、メールゲートウェイ106を実現する情報処理装置のハードウェア構成である。
メールゲートウェイ106を実現する情報処理装置は、プロセッサ202と、揮発性メモリ207と、不揮発性メモリ209と、キャリア設備網103にデータを送受信するための入出力回路インタフェイス203と、これらを接続するバスなどの内部通信線と、を含んで構成される。
揮発性メモリ207は、メールゲートウェイプログラム204を格納しており、また、データを格納する揮発性記憶部205を備えている。メールゲートウェイプログラム204には、メールゲートウェイ106が通信端末101からメールを受信し、宛先メールサーバへ中継する処理を実現する各種制御プログラムが記録され、プロセッサ202により実行される。プログラムは、予めメールゲートウェイプログラム204に格納してもよいし、図示していない着脱可能な記憶媒体または通信媒体(すなわちネットワークまたはそれを伝播するデジタル信号や搬送波)を介して、メールゲートウェイプログラム204に導入されてもよい。揮発性記憶部205には、メールゲートウェイプログラム204が管理するデータを格納する。電源障害やサーバ障害によるサーバの停止や再起動が発生すると、揮発性記憶部205に記憶された情報は失われる。
不揮発性メモリ209は、不揮発性記憶部208を備えている。不揮発性記憶部208にはメールゲートウェイプログラム204が管理するデータを格納する。電源障害やサーバ障害によるサーバの停止や再起動が発生しても、不揮発性記憶部208に記憶された情報は保持される。
図3は、データストアサーバ107を実現する情報処理装置のハードウェア構成およびソフトウェア構成である。データストアサーバ107を実現する情報処理装置は、プロセッサ302と、揮発性メモリ307と、不揮発性メモリ309と、キャリア設備網103にデータを送受信するための入出力回路インタフェイス303と、これらを接続するバスなどの内部通信線と、を含んで構成される。
揮発性メモリ307には、データストアサーバプログラム304を格納しており、また、データを格納する揮発性記憶部305を備えている。データストアサーバプログラム304には、データストアサーバ107がメールゲートウェイ106からメールや課金情報などのデータを受信し格納する処理を実現する各種制御プログラムが記録され、プロセッサ302により実行される。
プログラムは、予めデータストアサーバプログラム304に格納してもよいし、図示していない着脱可能な記憶媒体または通信媒体(すなわちネットワークまたはそれを伝播するデジタル信号や搬送波)を介して、データストアサーバプログラム304に導入してもよい。
揮発性記憶部305には、データストアサーバプログラム304が管理するデータを格納する。電源障害やサーバ障害によるサーバの停止や再起動が発生すると、揮発性記憶部305に記憶された情報は失われる。
不揮発性メモリ309は、不揮発性記憶部308を備えている。不揮発性記憶部308にはデータストアサーバプログラム304が管理するデータを格納する。電源障害やサーバ障害によるサーバの停止や再起動が発生しても、不揮発性記憶部308に記憶された情報は保持される。
データストアサーバプログラム304は、メタデータ管理部312と、データ管理部313と、を含んで構成される。
メタデータ管理部312は、データストアサーバ107に格納するデータを管理するためのデータ、即ちメタデータを管理する部分である。メタデータ管理部312は、データストアサーバ107に格納するデータサイズやデータの配置、現在使用しているデータサイズとその領域、使用できるデータサイズとその領域、各データへのアクセス権などの情報を保持する。
データストアサーバ107が複数の場合は、1台がメタデータ管理部312を備えればよく、それ以外のデータストアサーバ107にはデータ管理部313は必須ではない(メタデータ管理部312のバックアップとして備えても良い)。上記の場合、メタデータ管理部312は複数台のデータストアサーバ107のデータ管理部313を管理し、全体のデータサイズやデータの配置、現在使用しているデータサイズとその領域、使用できるデータサイズとその領域、データがどのデータストアサーバ107に記憶されているか、データがどのデータストアサーバ107間で複製化しているかといった情報を保持する。
データ管理部313は、データストアサーバ107の揮発性メモリ307または不揮発性メモリ309に格納するデータを管理する。
データ管理部313は、揮発性記憶部305と不揮発性記憶部308に、キューデータ321と、データ340、データ管理情報341を格納する。データ管理部313は、主に揮発性記憶部305のキューデータ321と関連するデータ340、データ管理情報341を使用してデータを管理する。不揮発性記憶部308には、不揮発性メモリに記憶すると設定されたデータ340とデータ管理情報341が記憶される。
データ340は、データ管理部313が格納したメール、課金情報、迷惑メール情報などのデータあり、データ管理情報341はデータ340を管理するための情報である。データ管理情報341の内容に関しては、図4で後述する。
キューデータ321は、キューID322と、キューサイズ323と、キュー種別324と、複製情報325と、日時情報326と、管理サーバ327と、アクセスサーバ328と、アクセス情報329と、障害情報330と、を含んで構成される。また、キューデータ321は、データストアサーバ107が揮発性記憶部305または不揮発揮性記憶部308に記憶したデータ340およびデータ管理情報341と対応づけて管理される。データストアサーバ107のデータ管理部313は、データを格納するために、キューデータ321にデータ340を関連付けて、データを揮発性記憶部305または不揮発揮性記憶部308へ格納する。
キューID322は、キューを一意に識別する識別子である。
キューサイズ323は、キューデータ321に格納できるデータの数およびデータサイズの両方を指す(以下、キューサイズ)。
キュー種別324には、キューの優先度、用途、が設定される。本実施例では、ひとつのキューデータ321に、不揮発性メモリには格納されず揮発性メモリへ格納されたデータ、不揮発性メモリと揮発性メモリへ格納されたデータ、不揮発性メモリへ格納され揮発性メモリには格納されていないデータの3種類が混在する。また、他の方法として、キュー種別324には、キューの格納先を指定し、上記3種類用のキューデータ321を別々に作成してもよい。この場合、キューの格納先には、揮発性メモリ、または、揮発性メモリと不揮発性メモリ、または、不揮発性メモリ、のいずれかを設定する。キュー種別324が揮発性メモリに格納する設定であれば、キューデータ321と関連するデータ340、データ管理情報341は、不揮発性メモリには格納されず揮発性メモリに格納される。キュー種別324が揮発性メモリと不揮発性メモリに格納する設定であれば、キューデータ321と関連するデータ340、データ管理情報341は揮発性メモリと不揮発性メモリに格納され、不揮発性メモリに格納されたキューデータ321、データ340、データ管理情報341はバックアップとして使用される。キュー種別324が不揮発性メモリに格納する設定であれば、キューデータ321は、一旦、揮発性メモリと不揮発性メモリへ格納され、データ340、データ管理情報341は不揮発性メモリへ格納されるまでは揮発性メモリに保持され、データ340、データ管理情報341が不揮発性メモリへ格納された後は揮発性メモリから削除される。
キューの優先度は、データストアサーバ107が複数ある場合に使用され、メールゲートウェイ106は1番高い優先度(以下、プライマリ)を使用する。プライマリ以外のキューはメールゲートウェイ106から認識されず、通常時はデータストアサーバ107間でのバックアップとして、プライマリの障害発生時はプライマリの代行として使用する。また、用途として、不揮発性メモリを使用するか否かの選択、メールゲートウェイ106とキューを1対1で対応づけるか否かの選択などを設定できる。
複製情報325には、データストアサーバ107間でプライマリとバックアップの関係がある場合、どこのデータストアサーバ107がプライマリかバックアップであるかという情報が格納される。
日時情報326には、データストアサーバ107がキューデータ321を作成した日付と時刻(日時と言う)、ならびに最終更新した日時が格納される。
管理サーバ327には、キューデータ321と対応したメールゲートウェイ106を一意に識別する情報、たとえばIPアドレスが格納される。データストアサーバ107は、管理サーバであるメールゲートウェイ106とお互いに生存監視を行い、障害が発生した場合に通知をメタデータ管理部312へ送信する(詳細は、図8、図9で説明する)。
アクセスサーバ328には、格納データ400の管理権限やアクセス権限を持つ、メールゲートウェイ106のサーバのIPアドレス、またはメールゲートウェイ106を一意に識別できる識別情報が格納される。アクセスサーバ328には、複数のメールゲートウェイ106の識別情報を格納することが可能である。
アクセス情報329には、アクセスサーバ328と1対1で対応するメールゲートウェイ106の読み取り、書き取りの権限が設定される。
データストアサーバ107は、一般的なファイルシステムのアクセス権限の機能に加え、アクセスサーバ328に設定してある複数のメールゲートウェイ106へデータの更新を自動で通知する機能(詳細は図7で説明)や、アクセスサーバ328に設定してあるメールゲートウェイ106単位で、アクセス情報329を参照したアクセス規制を実現する。アクセスサーバ328に、データストアサーバ107に予め登録してあるメールゲートウェイ106の全てを設定することも可能である。
障害情報330は、管理サーバ327に設定したメールゲートウェイ106に障害が発生した場合に、データストアサーバ107が格納する情報である。具体的には、障害発生日時、障害検知内容が設定される(詳細は、図9で説明する)。
本実施例では、1つのデータストアサーバ107(データストアサーバプログラム304)内に、メタデータ管理部312と、データ管理部313が共存しているが、メタデータ管理部312をデータストアサーバに、データ管理部313をデータストアサーバに分割させてもよい。上記のように、メタデータ管理部312とデータ管理部313に分割する構成は、メールシステムをスケールアウトするときに有効である。その場合、メールゲートウェイ106はデータストアサーバへデータの書き込みを行う際に、最初にメタデータ管理部312をもつデータストアサーバに対してメタデータの更新を行い、次にデータ管理部313を持つデータストアサーバへデータを送信する。
図4はメールゲートウェイ106とデータストアサーバ107間で交換するデータの例を示す図である。この図において、符号400はメールゲートウェイ106とデータストアサーバ107間でデータを格納するときに使用するデータの構成(以下、格納データ)、符号450は、メールゲートウェイ106からデータストアサーバ107へキューの登録時に送信するデータの構成(以下、登録要求)を示す(図8、図9で説明する)。
格納データ400は、格納データヘッダ411と、ペイロード410と、を含んで構成される。データストアサーバ107は、格納データ400を受信すると、格納データ400を揮発性メモリ(場合により不揮発性メモリ)へ格納し、格納データヘッダ411に含まれる制御情報を解析して、データストアサーバ107が格納データ400をデータ管理領域341へ格納データヘッダ411に含まれる制御情報の内容をコピーする。
ペイロード410は、メールゲートウェイ106が格納するデータの本体である。たとえば、メール、課金情報、迷惑メール情報、ログなどのデータを格納する。また、既にデータストアサーバ107が保持しているデータの更新であれば、更新のための差分データをペイロード106に含めることが可能である。
格納データヘッダ411は、制御情報として、データサイズ401、データ種別402、ステータスコード403、シーケンスID404、キー405、処理期限406、状態遷移日時407、アクセス情報408、タイムスタンプ409、複製回数412 、を含む。データサイズ401は、格納データ400の全体のサイズである。データ種別402は、このデータが何の用途であるかを示す値であり、データストアサーバ107はこの値を参照して、データをどう処理するかを決定する。本実施例で設定するデータ種別402の例を以下に示す。
・要求か、応答の設定。メールゲートウェイ106からデータストアサーバ107へ要求を送信し、データストアサーバ107は応答を送信する。・新規格納または、既に格納したデータの更新、削除、状態問合せ、要求のキャンセルなどのデータストアサーバ107の行う処理の設定。既に格納したデータについては、データストアサーバ107はキー405が一致したデータに対して処理を行う。・データの格納先の設定(書き込み先として、揮発性メモリを指定し不揮発性メモリを指定しない、揮発性メモリと不揮発性メモリを指定、揮発性メモリを指定せず不揮発性メモリを指定、のいずれか)。
・不揮発性メモリへ書き込みにおいて、同期書込みするか、非同期書込みするかの設定。
不揮発性メモリへの同期書込みとは、データデータストアサーバ107がメールゲートウェイ107から受信した格納データ400について、不揮発性メモリへの書き込みが完了してからメールゲートウェイ107へ応答を返すことである。また、非同期書込みとは、上記格納データ400について、不揮発性メモリへの書き込み完了を待たずに、例えば、データデータストアサーバ107がメールゲートウェイ107から格納データ400を受信した時点で、メールゲートウェイ107へ応答を返すことである。
同期書込みは、メールゲートウェイ107がデータストアサーバ107107から応答を受信した時点で格納データ400が不揮発性メモリ上にあることを保証し、逆に非同期書込みの場合メールゲートウェイ107は応答を受信しても、格納データ400が不揮発性メモリ上にあることを保証できない。
なお、非同期書込みでは、データストアサーバ107は、不揮発性メモリへの書込みを、他の格納データ400の不揮発性メモリへの書込みと一括して書き込んでもよい。一括書き込みにより、不揮発性メモリへの書込み処理を効率化し、結果としてデータストアサーバ107全体の不揮発性メモリへの書込み処理を高速化することが可能である。
・状態遷移日時407経過後の処理設定(不揮発性メモリへコピー、削除、無効化など)。
・不揮発性メモリの種別の設定(SSD,ハードディスク、NAS(Network Attached Storage)、SANなど)。
・不揮発性メモリへアクセスがある場合に、処理期限をデータストアサーバ107が変更できるか否かの設定。
なお、上記項目のうち、データ種別402に設定できるのは1項目だけではなく、複数の項目をデータ種別402に格納してもよい。ステータスコード403には、データ種別402が応答の場合に、応答の詳細であるステータスコードを格納し、応答でなければ使用しない。シーケンスID404は、メールゲートウェイ106とデータストアサーバ107間のデータ交換を一意に示す識別子であり、格納データ400とその応答(格納応答420)に同じ識別子が割り当てられる。メールゲートウェイ106は、データストアサーバ107へデータを送信するたびに異なったシーケンスID424を発行する。
キー405は、格納データ400を一意に識別する識別子であり、データを格納するためにメールゲートウェイ106が設定する。キー405により格納データを格納するデータストアサーバ107のデータ管理部313が決定される。本実施例では、キー405を使って、格納データ400を送信するメールゲートウェイ106と、上記メールゲートウェイ106が管理サーバ327であるキューデータ321を持つ、データストアサーバ107を結びつけることも可能である。
データストアサーバ107は、キー405で指定したデータに対し、更新、削除、指定したデータが不揮発性メモリにあるか否かなどの状態問い合わせ、指定したキーが処理中であった場合のキャンセル、揮発性メモリにあり不揮発性メモリにないデータを不揮発性メモリへコピーするといった処理を行うことができる。
処理期限406は、データストアサーバ107がデータを処理する時間の期限日時であり、データストアサーバ107は処理期限406を超過しないように処理を行う。処理期限406を経過しても処理できなかった場合、メールゲートウェイ106へエラー応答を返す。
状態遷移日時407とは、この日時を経過しても揮発性メモリまたは不揮発性メモリは上に存在している場合、データストアサーバ107がデータ種別に指定された処理を行う日時である。たとえば、メールゲートウェイ106は、一度揮発性メモリ上にデータを格納し、状態遷移日時407を経過したらデータストアサーバ107が自動で不揮発性メモリへ格納するといった設定をすることができる。また、メールゲートウェイ106は状態遷移日時407経過後、データを削除、データへのアクセス拒否などの設定をすることができる。
アクセス情報408には、アクセス情報329と同様に、データのアクセス権限を格納する。アクセス情報408には、オプションにより、アクセスサーバ328の情報を付加することも可能である。
タイムスタンプ409は、メールゲートウェイ106が付加した日時である。タイムスタンプ409は、メールゲートウェイ106とデータストアサーバ107間、またはデータストアサーバ107が複数の場合はデータストアサーバ間でデータの相違が出た場合に、メールゲートウェイ107が、どのデータが正しいかを判定するために使用する。また、タイムスタンプ409の代わりに、データのバージョン(更新回数)を指定しても良い。
複製回数412は、何台のデータストアサーバ107に格納データ400を格納するか、を決定する。たとえば、複製回数412が「2」に設定してあれば、2台のデータストアサーバ107がそれぞれ格納データ400を格納することを示す(以下、複数のデータストアサーバ107へ格納データ400の複製を格納することをデータレプリケーションと表記する)。データストアサーバ107は、受信した格納データ400が「2」以上であった場合、複製回数412から「1」を減じて、別のデータストアサーバ107へ格納データ400を転送する(詳細は、図10で説明する)。
登録要求450は、登録種別451と、キューサイズ452と、キュー種別453と、複製情報454、アクセスサーバ455と、アクセス情報456、プロトコル情報457と、を含んで構成される。登録種別451は、メールゲートウェイ106がデータストアサーバ107のメタデータ管理部312に新規接続として登録するか、再接続して登録するかを示す。キューサイズ452は、メールゲートウェイ106が確保したいキューサイズであり、データストアサーバ107がキューデータ321のキューサイズ323へ反映する。同様にキュー種別453、複製情報454、アクセスサーバ455、アクセス情報456は、キューデータ321の各項目に対応する。接続情報457は、メールゲートウェイ106とキューデータ321がどのプロトコルで通信するか、どのプロトコルでどのポートで通信するかといった情報であり、本実施例では通信プロトコルがTCP(Transmission Control Protocol)、UDP(User Datagram Protocol)、独自、そして使用するポートを格納する。
図5はメールの中継シーケンスを例示する図である。
メールの中継シーケンスでは、メールゲートウェイ106と、データストアサーバ107のデータ管理部313間で格納データ400、格納応答420のデータ交換を行うが、以下の説明では、メールの中継処理に特化したシーケンスを説明するために、格納データ400とは表記せずに、ペイロード410に格納したデータの種類で表記する。ペイロード410に格納したデータに名称がない場合は、そのまま格納データ400で表記する。また、データストアサーバ107からメールゲートウェイ106へ送信する、応答を示す格納データ400は、格納応答として表記する。また、データストアサーバ107は、揮発性記憶部305と不揮発性記憶部308にデータを格納するが、一方メールゲートウェイ107からは単に不揮発性メモリと揮発性メモリの判別しかしていないため、データストアサーバ107の格納場所も揮発性メモリと不揮発性メモリという表現に統一する。
最初に、通信端末101は、メール506をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106は送信先のドメイン判定する処理(ステップ507)を行う。送信先のドメインとは、メールの宛先メールアドレスのアットマーク(@)より後ろの部分を指し、メールゲートウェイ106は送信先のドメインをDNS(Domain Name System)サーバへ問合せることにより、どのメール転送サーバ105に送信すべきかを判定することができる。
ステップ507において、メールゲートウェイ106は送信先のドメインにより、揮発性メモリに記憶するか、不揮発性メモリに記憶するかを判定する。たとえば、送信先ドメインが携帯通信キャリアや大手インターネットプロバイダなどの信頼できるドメインであれば、メールゲートウェイ106からメール転送サーバ105へのメール送信(ステップ516)で失敗する可能性は低いため、不揮発性メモリには記憶せず、揮発性メモリに記憶すると判定する。また、既にメールゲートウェイ106に送信できないメールが溜まっているドメインや、過去に送信の失敗が多発しているドメインであれば、メールゲートウェイ106は、不揮発性メモリと揮発性メモリの両方に記憶すると判定する。
次に、メールゲートウェイ106は、メール508をデータ管理部313へ送信する。このとき、メール508のデータ種別402には、新規に揮発性メモリへ書き込み、状態遷移日時407経過後不揮発性メモリへコピーする、設定している。
次に、データ管理部313は受信したメール508に従って、揮発性メモリに格納する処理(ステップ509)を行う。ステップ509において、格納する処理に成功した場合、データ管理部313はメールゲートウェイ106へ成功を示す格納応答510を返し、メールゲートウェイ106は通信端末101へ正常応答(ステップ511)を送信する。データ管理部313は、格納応答510のデータ種別402に応答を示すコードを設定する。図5には記述していないが、ステップ509において格納に失敗した場合、データ管理部313はメールゲートウェイ106へ失敗を示す格納応答510を返し、メールゲートウェイ106はステップ511で通信端末101へエラー応答を返す。
次に、メールゲートウェイ106は課金情報作成する処理(ステップ512)を行う。次に、メールゲートウェイ106は、課金情報と制御情報をデータ管理部313へ送信する(ステップ512)。メールゲートウェイ106は課金情報を重要であると判定し、課金情報513のデータ種別402に、新規に不揮発性メモリと揮発性メモリへ書込み、不揮発性メモリへの書込み時に処理期限を設定、不揮発性メモリへの書込みを同期にする、といった設定する。次に、データ管理部313は受信した課金情報513に従って、揮発性メモリと不揮発性メモリに格納する処理(ステップ514)を行う。ステップ514において、データ管理部313は不揮発性メモリへの書込みが、他の不揮発性メモリへの書込みがあればまとめて処理し、不揮発性メモリへの書込みが終了後に格納応答515を送信する。次に、データ管理部313は、格納応答515をメールゲートウェイ106へ送信する。
次に、メールゲートウェイ106は、メール516をメール転送サーバ105へ送信する。次に、メール転送サーバ105は、応答517をメールゲートウェイ106へ送信する。メール転送サーバ105がメール516を正常に受信すれば、正常応答である応答517を送信し、ステップ519へ進む。メール転送サーバ105が一時的にメール516を受信できない場合、一時エラーを示す応答517を送信し、ステップ528へ進む。メール転送サーバ105からの応答517がなく、メールゲートウェイ106が応答待ちでタイムアウトした場合は、ステップ541へ進む。応答517が正常応答であった場合、メールゲートウェイ106は、課金情報519を課金サーバ108へ送信する。
次に、課金サーバ108は、正常応答520をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106は、メール・課金情報削除521を送信する。このとき、メール・課金情報削除521のデータ種別402には、キーが一致するデータの削除を設定している。次に、データ管理部313はメール・課金情報削除521に従って、指定したキーに一致するデータを削除する処理を行い、処理終了時に正常応答522をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106はログ情報作成する処理523を行い、ログ524をデータ管理部313へ送信する。このとき、ログ524のデータ種別402には、書き込み先として揮発性メモリを指定せず不揮発性メモリを指定、かつ、不揮発性メモリへの書込みは非同期、を設定している。
次に、データ管理部313は受信したログ524に従って、揮発性メモリには書き込まず非同期で不揮発性メモリに格納する処理(ステップ525)を行う。
ステップ525において、データ管理部313は、ログ524を一度揮発性メモリへの書込んだ時点で格納応答526を送信し、揮発性メモリに書き込んだデータを不揮発性メモリへコピーし、揮発性メモリ上のデータを削除する。
応答517が一時エラー応答であった場合、メールゲートウェイ106は格納データ528を送信する。格納要求528のデータ種別402には、キーに一致するデータを不揮発性メモリへコピーと、処理期限406あり、とを設定する。次に、データ管理部313は受信した格納データ528に従って、既に揮発性メモリ上にある、キーが一致するデータを不揮発性メモリへコピー(ステップ530)を行う。次に、データ管理部313は、格納応答530をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106はメール転送サーバ105へのメール再送信待ちになり、再送信できる状態になれば、ステップ516へ戻る。
メール転送サーバ105からの応答517がなく、メールゲートウェイ106が応答待ちタイムアウトした場合、メール転送サーバ105へのメール再送信待ちになる(ステップ541)。ステップ541から再送信できる状態になれば、ステップ516へ戻る。次にデータ管理部313は、メール508の状態遷移日時407経過を検知し、既に揮発性メモリ上にあるメール508を不揮発性メモリへコピー(ステップ542)を行う。本実施例では、メールゲートウェイ106の応答待ちタイムアウトと、メール508の状態遷移日時407の値の設定により、ステップ541、ステップ542の順にステップが発生している。次にデータ管理部313は、メール508のアクセスサーバ408に記述されたメールゲートウェイ106へ、データを不揮発性メモリにコピーしたことを示す格納応答543を送信する。なお、格納応答543はステップ542でエラーが発生したときだけ送信してもよいし、格納応答543自体がなくても実現可能である。
図6は、メール転送サーバ105へメールが送信できない状態が一定期間継続した場合の、メールゲートウェイ106のメールの中継シーケンスを例示する図である。メール転送サーバ105へメールが送信できない状態が継続する原因は、メール転送サーバ105への障害中または輻輳中である、またはメールゲートウェイ106とメール転送サーバ105間のネットワーク不通などがある。上記の場合、メールゲートウェイ106は、送信不可であるメール転送サーバ105向けのメールは全てエラーになり、メール転送サーバ105へ送信可能になるまでメールを保持しなければならない。図5で説明したように、メール中継シーケンスにおいて、メール転送サーバからの応答が一時エラーまたは無応答であった場合、データ管理部313は最終的に不揮発性メモリにコピーする処理を行っている。メール転送サーバ105へメールが送信できない状況で、特にメール転送サーバ105向けのメールトラフィックが大きい場合、データ管理部313の不揮発性メモリにコピーする処理がボトルネックになる可能性が高い。そこで、図6では上記問題を解決するために、データ管理部313が不揮発性メモリへのコピー処理を、データ管理部313の都合でまとめる処理を行う。
図6では、メールゲートウェイ106とメール転送サーバ105間が一定期間以上接続不可(ステップ605)になっている状況とする。最初に、通信端末101は、メール606をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106はメール606の送信先が、現在転送できないドメイン(以下、規制ドメインと表記する)であるか判定する処理607を行う。
メールゲートウェイ107は、送信先ドメインごとにメールを管理しており、あるドメイン宛のメールが送信できないと、上記ドメイン宛のメールが滞留する。メールゲートウェイ107は、滞留したメールが予め定めた閾値を超過した場合に、上記ドメインを、規制ドメインであると判定する。また、メールゲートウェイ106は、規定時間内のメールの送信失敗数が予め定めた閾値以上である場合も、そのドメインを、規制ドメインであると判定する。また、メールゲートウェイ107のオペレーターが手動で規制ドメインを設定してもよい。ステップ607では、以上のように判定された規制ドメインと、メール606の送信先が一致すれば、メール606は規定時間以上の間送信できないため、メールゲートウェイ107はメール606を不揮発性メモリにも格納することを決定する。
次に、メールゲートウェイ106は、メール608をデータ管理部313へ送信する。このとき、メール608のデータ種別402には、新規に不揮発性メモリと揮発性メモリへ書込みと、不揮発性メモリへの書込みを非同期にする、を設定している。
次に、データ管理部313は受信したメール608に従って、揮発性メモリに格納する処理(ステップ609)を行う。ステップ609において、格納する処理に成功した場合、データ管理部313はメールゲートウェイ106へ成功を示す格納応答610を返し、メールゲートウェイ106は通信端末101へ正常応答611を送信する。次に、メールゲートウェイ106はメール転送サーバ105への再送信待ち状態になり(ステップ620)、再送可能な状態になればステップ608へ戻る。次に、データ管理部313はステップ609の続きで、複数の不揮発性メモリへコピーをまとめて処理612を行う。ステップ609とステップ612の間隔は、データ管理部313データ管理部313が決定する(決定方法は、図11で説明する)。データ管理部313が他のメールで、データ種別402には、新規に不揮発性メモリと揮発性メモリへ書込みと、不揮発性メモリへの書込み時に待ち時間を最小限にする、が設定されている場合であっても、図6の状況ではデータ管理部313は、処理期限408を無視する手段をとってもよい。
次に、通信端末101が、メール606とは別のメール613を送信した場合を説明する。メールゲートウェイ106は、メール613を受信し、データ管理部313へメール615を送信する。
このとき、メール613のデータ種別402には、新規に不揮発性メモリと揮発性メモリへ書込みと、不揮発性メモリへの書込みを同期する、を設定している。
次に、データ管理部313は受信したメール608に従って、揮発性メモリに格納する処理を行おうとするが、データ管理部313の不揮発性メモリへのコピー処理の限界閾値を超過したことを検知し(ステップ621)、エラーである格納応答616を返す。格納応答616のステータスコード403には、不揮発性メモリへの書込み処理がエラーであることを示すステータスを設定する。
メールゲートウェイ106は、格納応答616を受信すると、エラー応答である応答616を通信端末101へ送信する。メールゲートウェイ106は、格納応答616を受信した時点で、データ種別402の不揮発性メモリへの書込みを同期する、を、不揮発性メモリへの書込みを非同期にする、に設定変更して、データストアサーバへメール616を再送信するか、他のデータストアサーバ106にメール616を送信するかを選択することもできる。その結果、メールゲートウェイ106が正常応答である格納応答616を受信した場合、を正常応答である応答617を通信端末101に送信する。
ステップ615後にデータ管理部313は、予め登録されたメールゲートウェイ106へ現在不揮発性メモリへの書込みが規制中であることを示す規制情報618を送信する。メールゲートウェイ106は規制情報618を送信したデータストアサーバ106への格納データの送信を規制する。
図7は、複数のメールゲートウェイ106からデータ管理部313に格納した情報を参照するシーケンスを例示する図である。本実施例では、複数のサーバメールゲートウェイ106が参照するデータとして、迷惑メール情報を例としているが、それ以外の情報でもよい。迷惑メール情報とは、メールゲートウェイ106が迷惑メールとして検出したメールの情報であり、他のメールゲートウェイ106は上記情報を見て、以降に受信したメールが迷惑メールであるか判定する。
最初に、通信端末101は、メール706をメールゲートウェイ106へ送信する。メールゲートウェイ106は、受信したメールが迷惑メールであるか検出し(ステップ707)、エラー応答708を通信端末101へ送信する。また、メールゲートウェイ106はステップ708とほぼ同時に、迷惑メール情報709をデータ管理部313へ送信する。メールゲートウェイ106は、迷惑メール情報709のデータ種別402に、新規に揮発性メモリへ書き込みを設定し、アクセスサーバ408に、迷惑メールを参照するメールゲートウェイ106の全てのサーバの情報を設定する。データ管理部313は受信した迷惑メール情報709を揮発性メモリに格納に格納する処理710を行い、格納応答711をメールゲートウェイ702へ送信する。次に、データ管理部313は、迷惑メール情報709のアクセスサーバ408に記述されたメールゲートウェイ106の全てのメールゲートウェイへ更新通知712を送信する。更新通知712を受信したメールゲートウェイ703は、更新された情報を参照する(ステップ713)。なお、ステップ713でメールゲートウェイ106が取得する更新された情報を、データ管理部313が更新通知712に含めて送信しても実現可能である。この場合、ステップ713は省略される。
図8はメールゲートウェイ106の起動シーケンスと、メールゲートウェイ106とデータストアサーバ107間の生存確認のシーケンスを示す図である。図8、図9では、データストアサーバ107をメタデータ管理部312と、データ管理部313に分割して説明する。また、図8、図9の登録要求805,911の構成は、登録要求450と同一である。
最初に、メールゲートウェイ106は、メタデータ管理部312にメールゲートウェイ106を登録するための登録要求805を送信する。登録要求805は、登録要求450と同一の構成のデータであるメタデータ管理部312は、登録要求805を受信すると、使用していないキューデータ321から条件に一致したデータ管理部313を探索し(ステップ806)し、データ管理部313のIPアドレスを含む登録応答807をメールゲートウェイ106へ送信する。次に、メタデータ管理部312はキューデータ321を更新する処理808を行う。
次に、メールゲートウェイ106は、データ管理部803のキュー情報に新規に登録する要求(以下、新規接続要求)809を送信する。新規接続要求809には、メールゲートウェイ106の認証情報、使用するデータサイズ、用途を記述する。次に、データ管理部313はキュー情報を作成する処理810を行う。次に、データ管理部313は、新規接続要求809に対する正常応答である、接続応答811をメールゲートウェイ106へ送信する。メールゲートウェイ106は接続応答811を受信すると、メール中継可能な状態となり、図5に示すメール中継が可能となる。
メールゲートウェイ106は、データストアサーバ107が正常に稼動しているか監視するために、生存監視要求812をデータ管理部313へ送信する。データ管理部313は、生存監視要求812を受信し、その正常応答813をメールゲートウェイ106へ送信する。また、データ管理部313からもメールゲートウェイ106の正常稼動を監視するために、データ管理部313が生存監視要求814を送信し、メールゲートウェイ106が正常応答815を送信する。なお、メールゲートウェイ106、データ管理部313が811〜815の生存監視を行わずに、メールゲートウェイ107、データ管理部313が図5で示すようなシーケンスで異常が発生しないことをもって、各サーバが生存していると判断(生存監視)してもよい。
図9はメールゲートウェイ106の再起動と、メールゲートウェイ106の切替え、およびメールゲートウェイ106の縮退、の各場合における、メールゲートウェイ106とデータストアサーバ107間のシーケンスを示す図である。ここで、メールゲートウェイ106の切替えとは、メールゲートウェイ106に障害が発生した場合、障害の発生したメールゲートウェイ106の代わりに他のメールゲートウェイ106を起動させて代行することを示す。また、メールゲートウェイ106の縮退とは、複数稼動しているメールゲートウェイ106の1台または1部が停止して、メールゲートウェイ106の稼動台数が減ることを示す。メールゲートウェイ106の縮退は、サーバ障害が発生し障害の発生したサーバが再起動しない場合や、運用時で一部のサーバを停止するといったときに行う。
図9では、複数のメールゲートウェイ106のうちの1台を示すメールゲートウェイA106AとメールゲートウェイB106Bと表記し、データストアサーバ107をメタデータ管理部312と、データ管理部313に分割して説明する。
最初に、メールゲートウェイA106Aで、障害が発生したと仮定する(ステップ905)。データ管理部313は、メールゲートウェイA106Aとのコネクション切断906から、障害検知する処理907を行う。コネクション切断906は、新規接続要求809で確立し、通常時にはステップ812〜815の生存監視で使用するコネクションである。データ管理部313は、障害通知908をメタデータ管理部312へ送信する。
メタデータ管理部312は、障害通知908により、データ管理部313の管理サーバであるメールゲートウェイA106Aに障害が発生したことを検知し、データ管理部313が管理サーバの復旧待ちであることを示す情報をキューデータ321に書き込む(更新する)(ステップ909)。
障害発生905の後にメールゲートウェイA106Aが再起動した場合、またはメールゲートウェイ106の切替えが発生した場合について、ステップ911から説明する。ここで、メールゲートウェイA106Aの切替えが発生した場合は、障害発生したメールゲートウェイ106と、切替えたメールゲートウェイ106のサーバは実際に異なるが、メールゲートウェイが行う処理および送受信するデータに関してはほぼ同じであるため、本実施例では障害発生したメールゲートウェイ106と切り替えたメールゲートウェイ106をまとめてメールゲートウェイA106Aと表記する。
最初に、メールゲートウェイA106Aは、登録要求911をメタデータ管理部312へ送信する。登録要求911に含まれる情報は、登録要求805の情報に加え、登録種別451に再接続であることを示す情報(以下、再接続フラグ)が設定されている。メタデータ管理部312は、登録要求911を受信すると、キューデータ321を探索し、更新する(ステップ912)。ステップ912において、登録要求911の送信サーバと、管理サーバが障害中であるデータ管理部313の管理サーバの情報が一致した場合、上記データ管理部313のIPアドレスを含む登録応答913をメールゲートウェイ106へ送信する。また、ステップ912において、登録要求911の送信サーバと、管理サーバが障害中であるデータ管理部313の管理サーバの情報が一致した場合、メタデータ管理部312は上記データ管理部313のIPアドレスを含む登録応答913をメールゲートウェイ106へ送信する。ステップ912において、登録要求911に再接続フラグがあれば、メタデータ管理部312は管理サーバが障害中であるデータ管理部313のIPアドレスを含む登録応答913をメールゲートウェイ106へ送信する。ステップ912において、上記2つの条件に一致しなければ、図示していないが、以降の処理は登録要求805と同じシーケンスなる。
次に、メールゲートウェイA106Aは、復旧接続914をデータ管理部313へ送信する。次に、データ管理部313は、応答とメールデータ915をメールゲートウェイA106Aへ送信する。ステップ915以降は、メールゲートウェイA106Aがメール中継可能な状態になる。また、メールゲートウェイA106Aとデータ管理部313でステップ812〜815の生存監視を行う。
次に、障害発生905の後にメールゲートウェイA106Aの縮退が発生した場合について、ステップ917から説明する。メタデータ管理部312は管理サーバの障害を検知してから、メールゲートウェイA106Aからの登録要求911を待っている時間(以下、障害待機時間とする)を超過したことを検知する(ステップ917)。次に、メタデータ管理部312は、メールゲートウェイA106Aの処理を引き継ぐメールゲートウェイ106(以下、代行管理サーバ)を検索し、代行管理サーバとしてメールゲートウェイB106Bへ処理の継続を要求する代行管理サーバ要求918を送信する。なお、ステップ917と代行管理サーバ要求918の送信は、メタデータ管理部312の代わりにデータ管理部313が行ってもよい。
メールゲートウェイB106Bは、代行管理サーバ要求918を受信すると、登録要求919をメタデータ管理部312へ送信する。ステップ919〜924は、ステップ911〜915とほぼ同じ処理を行い、メールゲートウェイB106Bがメール中継可能な状態になる。
図9のメタデータ管理部312とデータ管理部313は、それぞれ別サーバ装置として構成してもよい。また、図9では図示していないが、データストアサーバ107が複数の場合で、メタデータ管理部312とデータ管理部313が別サーバに構成された場合、メタデータ管理部312とデータ管理部313間で生存監視を行い、データ管理部313が障害の場合はメタデータ管理部312は、他のデータ管理部313への切替えなどを行う。
図10、図11はデータストアサーバ107のデータ管理部313のデータ格納処理フローを示す図である。
最初に、データ管理部313は、メールゲートウェイ106から格納データを受信(ステップ1001)する。
データ管理部313は、図6で説明したメール転送サーバ105へメールが送信できない状態で、データ管理部313が高負荷状態かどうか調べ(ステップ1002)、高負荷状態でなければ、ステップ1006へ進む。
上記高負荷状態とは、データ管理部313の不揮発性メモリへの書込みが大量に発生し、不揮発性メモリへ書き込み待ちのデータ数が閾値を超過した状態、または不揮発性メモリへの書込み時間が閾値を超過した状態である。
ステップ1002において高負荷状態であれば、データ管理部313はデータ種別402が不揮発性メモリへ同期書込む設定かどうか調べ(ステップ1003)、上記であった場合エラー応答を送信する(ステップ1004)して終了する。データ管理部313は、ステップ1005において、高負荷状態であるためデータ管理部313の不揮発性メモリへのアクセスを効率化するために、処理期限406をメールゲートウェイ106が設定したものでなく、データ管理部313に最適な値に変更する。
データ管理部313は、ステップ1006において、既にデータ管理部313にキー405があるか調べる処理である。もしキー405があれば、キー405の一致するデータを取得し(ステップ1007)、データ種別に従い格納処理を行う(ステップ1008)。ステップ1008において、データ管理部313は、揮発性メモリ上のデータの更新、削除、状態確認、格納途中であった場合のキャンセルのいずれかを行う。ステップ1009において、データ管理部313がデータ種別402に従って処理を継続する際に、不揮発性メモリへのアクセスが必要であるか否かを判定する。具体的には、揮発性メモリにあるデータを不揮発性メモリへコピーする、不揮発性メモリ上にあるデータの更新、削除などの場合である。ステップ1009において、不揮発性メモリへのアクセスがある場合、図11のステップ1117へ進み、なければステップ1020へ進む。
ステップ1020は、格納データの複製回数412が「2」以上の場合、データレプリケーションを行う処理である。具体的には、データ管理部313(以下、データ管理部A)が他のデータ管理部313(以下、データ管理部B)へ、複製回数412から「1」を減じた格納データを転送し、データ管理部Bから正常に格納したという格納応答を受信する。
データ管理部Bが格納応答400を受信した時点で複製回数412が「2」以上の場合(即ちデータ管理部Aが受信した時点では複製回数が「3」以上の場合)、データ管理部Bは、他のデータ管理部313(以下、データ管理部C)へ格納データを転送し、データ管理部Cから正常応答を受信してから、データ管理部Aへ正常応答を送信する。複製回数412が増えるほど、データ管理部313は、次のデータ管理部313へ格納データを転送する。
複製回数412が「2」以上の格納データを受信したデータ管理部は、複製回数から「1」を減じた格納データを他のデータ管理部313へ送信し、送信した他のデータ管理部313から正常応答を受信してから、受信した格納データの送信元のデータ管理部313へ正常応答を送信する。複製回数412が「1」の格納データを受信したデータ管理部は、他のデータ管理部313への送信を行わず、送信元のデータ管理部へ正常応答を送信する。
ステップ1010で、データストアサーバは格納応答を送信して終了する。
ステップ1011において、データ管理部313は、揮発性メモリに受信した格納データを書込む処理を行う。ステップ1012において、データ種別402が不揮発性メモリアクセスする必要がある処理であれば図11のステップ1114へ進み、不揮発性メモリアクセスする必要がなければ、格納応答を送信(ステップ1013)する。ステップ1014において、格納データに状態遷移時間407が設定されていて、上記データが状態遷移時間経過しても残っている場合(ステップ1015)、データ種別402に指定された処理が不揮発性メモリへのアクセスがあるかどうかを判定する(ステップ1016)。具体的には、揮発性メモリから不揮発性メモリへのコピー、不揮発性メモリからの削除などがある。ステップ1016で不揮発性メモリへのアクセスある場合、データ管理部313はステップ1117へ進み、ステップ1016で不揮発性メモリへのアクセスがない場合、データ種別402に従った処理、たとえば、揮発性メモリからの削除や、データの無効化(メールゲートウェイ106からアクセスさせない)などの処理を行う(ステップ1017)し、処理を終了する。ステップ1014において状態遷移時間が設定されていない場合、またはステップ1015で状態遷移時間経過前に上記データを削除している場合は、処理を終了する。
以下、図11について説明する。ステップ1114はデータ種別402に書込みデバイスの指定があるかどうか調べる処理であり、もし書込みデバイスの指定があれば、書込みデバイスの選択する(ステップ1114)。書込みデバイスには、ハードディスク、SSD、NAS、SANなどがある。
ステップ1116において、データ管理部313は、データ種別402に不揮発メモリへ同期または非同期コピーする設定があるかどうかを調べる処理である。不揮発メモリへ非同期コピーする設定であれば、ステップ1122へ進み、不揮発性メモリへ同期コピーする設定であればステップ1117へ進む。
ステップ1117において、データ管理部313は格納データに処理期限406があるか調べる処理である。ステップ1117において、格納データに処理期限406がなければ、データ管理部313は即時に不揮発性メモリへ書き込みを行う。ステップ1117において、格納データに処理期限406があれば、メールゲートウェイ106へ処理期限406まで格納を遅らせてもよいため、処理期限406または不揮発メモリへの書込み条件に一致した場合まで不揮発性メモリへの書込みを待ち(ステップ1119)、条件が一致した時点で不揮発性メモリへ書き込む(ステップ1120)。ステップ1119の書込み条件とは、不揮発メモリへの書込み処理を効率化するための条件であり、以下に例を示す。
・データ管理部313が保持する不揮発性メモリへの書込み待ちのデータの数が、規定値以上になった場合。この条件では、データ管理部313は上記不揮発性メモリへの書込み待ちのデータを一括して書き込む。
・データ管理部313内が保持する不揮発性メモリへの書込み待ちのデータの中に、処理期限406の経過直前であるデータがある場合。この条件では、データ管理部313は、上記処理期限406の直前のデータと、他の不揮発性メモリへの書込み待ちのデータを一括して書き込む。
・データ管理部313が、データ管理部313全体での不揮発性メモリへの書込みを効率化するために書き込む場合。この条件は、不揮発性メモリへの書込み待ちのデータ数や各データの処理期限406以外に、データ管理部313が不揮発性メモリへのコピー以外の処理などにより決定する。
以上により、データ管理部313は不揮発性メモリへの書込みを効率化することができる。
ステップ1122において、データ管理部313はステップ1119と同様に、他の複数書込み条件に一致した場合まで不揮発性メモリへの書込みを待ち、条件が一致した時点で不揮発性メモリへ書き込む(ステップ1123)。ステップ1122において、データ管理部313は、データ種別402に「書き込み先として不揮発性メモリを指定し揮発性メモリを指定せず」が設定されているか調べ、設定されていれば揮発性メモリ上のデータを削除(ステップ1125)し、設定されていなければステップ1126へ進む。ステップ1126において、データ管理部313はメールゲートウェイへ格納応答を送信する。
次に第二の実施例について説明する。
第二の実施例は、第一の実施例のメールゲートウェイ106とデータストアサーバ107を別々のサーバとした構成ではなく、メールゲートウェイ106のプログラムとデータストアサーバ107のプログラムを同じサーバに格納した構成をとる。第二の実施例と、第一の実施例との相違点を、図12を用いて説明する。
図12には、第二の実施例で想定するシステム構成の一例である。符号101〜105、108は図1と同じである。符号1209は、メールゲートウェイのプログラム1206と、データストアサーバのプログラム1007が格納したサーバである。データストアサーバのプログラム1207Bと、データストアサーバのプログラム1207Cは、メールゲートウェイのプログラム1206Aを管理サーバとしており、上記3つのプログラムで複製している。第一の実施例では、メールゲートウェイ106、データストアサーバ107としてサーバ単位の処理を記述していたが、第二の実施例ではサーバ単位の処理ではなく、メールゲートウェイ1206、データストアサーバ1207をプログラム単位の処理としている。
図2において、メールゲートウェイ1206は、メールゲートウェイプログラム204と、揮発性記憶部205、不揮発性記憶部208から構成する。
図3において、データストアサーバ1207は、データストアサーバプログラム304と、揮発性記憶部305と、不揮発性記憶部308から構成する。
上記以外に関しては、メールゲートウェイ106をメールゲートウェイ1206、データストアサーバ107をデータストアサーバ1207に変更するだけで、シーケンス、処理の変更はない。
以上の構成の違いにより第二の実施例は、第一の実施例よりもスケールアウトや運用が容易となる。第一の実施例は、メールゲートウェイ106とデータストアサーバ107の台数比が、サーバリソース(プロセッサ、揮発性メモリ、不揮発性メモリ、ネットワークの帯域など)によって異なり、メールシステムをスケールするときに上記の条件を十分考慮した上でメールゲートウェイ106とデータストアサーバ107の台数を決めなければならない。一方、第二の実施例は、メールゲートウェイのプログラム1206と、データストアサーバのプログラム1007を格納した1種類のサーバを並列に構成するため、第一の実施例のようにサーバ間のサーバリソースの差を考慮する必要がなく、1種類のサーバであるため運用も容易になる。
なお、第一と第二の実施例はメールシステムだけではなく、ショートメッセージや、HTTP、PAP(Push Access Protocol)、他のプロトコルを利用したメッセージサービスにも適用可能である。
次に第三の実施例について説明する。
第三の実施例は、データストアサーバ1307をメールシステム以外のシステムに適用した例である。第三の実施例と、第一の実施例との相違点を、図13を用いて説明する。
図13には、第三の実施例で想定するシステム構成の一例である。符号101、104、107は図1と同じである。符号1305は、通信端末101へ商品を販売するWebサーバである。Webサーバ1305は、第一の実施例のメールゲートウェイ106に相当するサーバであり、通信端末101からの通信要求を受けて、データストアサーバ107へデータを格納する。データストアサーバ107は、本実施例では通信端末101のユーザ情報に基づいた情報を格納し、本実施例では、例えば、ユーザ(通信端末101)の商品の検索履歴と、商品を購入したときの課金情報を格納する。
Webサーバ1305は、通信端末101が商品の検索を行った場合、データストアサーバ107へその検索履歴を、格納先として揮発性メモリを指定した格納要求(不揮発性メモリを指定しない)をデータストアサーバ107へ送信する。
また、Webサーバ1305は、通信端末101が商品購入を行った場合、データストアサーバ107へ通信端末101への課金に関する情報(以下、課金情報)を不揮発性メモリと揮発性メモリへ格納する要求をデータストアサーバ107へ送信する。
図2は、本実施例に適用する場合、メールゲートウェイ106ではなくWebサーバ1305を実現する構成を示し、メールゲートウェイプログラム204の代わりにWebサーバ1305を実現するプログラムを格納する。
図3、図4は、第一の実施例からの変更なく、本実施例に適用できる。
図5、図6、図7に関しては、本実施例では使用しない。代わりに図14に通信端末101の商品の検索から購入までのシーケンスを例示する。
図14において、最初に通信端末101は、Webサーバ1305Aへ商品を検索する要求(以下、商品検索要求)1406を送信する。Webサーバ1305Aは、商品検索要求1406を受信して、検索結果1407を返す。併せて、Webサーバ1305Aは履歴情報1408をデータストアサーバ107のデータ管理部313へ送信する。この場合、履歴情報1408のデータ種別402には、新規に揮発性メモリへ書き込み、状態遷移日時407経過後不揮発性メモリへコピーする、を設定する。また、履歴情報1408のキー405には通信端末101のを一意に識別できる識別情報を元にしたキーを設定する。
次に、データ管理部313は受信した履歴情報1408のデータ種別402に従って、揮発性メモリに格納する処理(ステップ1409)を行い、格納応答1410をWebサーバ1305Aへ送信する。次に通信端末101は、Webサーバ1305Aへ商品を購入する要求(以下、商品購入要求)1411を送信する。
Webサーバ1305Aは、商品購入要求1411を受信して、商品を購入するための処理(ステップ1412)を行い、課金情報1413をデータ管理部313へ送信する。課金情報1413は、履歴情報1408よりも重要度が高いため、課金情報1413のデータ種別402には、新規に揮発性メモリと不揮発性メモリへ書き込み、を設定する。
また、Webサーバ1305Aは、通信端末101の利用者が優先顧客かそうでないかを判別し、優先顧客である場合、課金情報1413の処理期限406の最優先を示す値を格納し、そうでない場合はWebサーバ1305Aの通常の処理で設定する値(デフォルト値)を格納する。
データ管理部313は受信した課金情報1413のデータ種別402に従って、揮発性メモリと不揮発性メモリに格納する処理(ステップ1415)を行い、格納応答1416をWebサーバ1305Aへ送信する。Webサーバ1305Aは、格納応答1416を受信後、正常に購入できたことを示す応答1417を通信端末101へ送信する。
次に、Webサーバ1305Aは、購入処理1412と結びついたと判断できる履歴情報1408を抽出し、データ管理部313へ履歴情報1418を送信する。履歴情報1418のデータ種別402には、キーを指定したデータを不揮発性メモリへ移動(揮発性メモリを格納先としない)する、を設定する。
データ管理部313は受信した履歴情報1418のデータ種別402に従って、揮発性メモリ上にある履歴情報1408を不揮発性メモリにコピーして、揮発性メモリ上から削除する処理(ステップ1419)を行い、格納応答1420をWebサーバ1305Aへ送信する。
データ管理部313は、履歴情報1418のアクセス情報408にアクセスサーバが設定されているか、または履歴情報1418を格納したキューデータ321のアクセスサーバ328が設定されていれば、更新通知1421をアクセスサーバに設定されたWebサーバ1305Bへ更新通知1421を送信する。
図8、図9、図10、図11については、第一の実施例からの変更なく、本実施例に適用できる。
以上説明したとおり、第三の実施例では、データストアサーバ107へユーザ情報を格納する処理を行うWebサーバ1305について、耐障害性(重要データの紛失を防ぐ)を備え、複数のWebサーバ1305間でデータを共有できるWebサーバ1305を実現することができる。