(57)【要約】【課題】複数台の物理サーバに分散して配置されているメッセージキューを一括して管理する。【解決手段】１以上の受信サーバ、１以上の送信サーバ及び複数のデータストアサーバを備える転送システムであって、前記複数のデータストアサーバの少なくとも一つは、前記分散キュー情報を集計する第１のデータストアサーバであって、前記各データストアサーバは、前記受信サーバが受信したメッセージを格納する分散キューを有し、前記分散キューの状態を示す分散キュー情報を格納し、前記第１のデータストアサーバは、前記分散キュー情報を集計して、仮想キュー情報を生成する。【選択図】図１
2015073234.tif 000002
【特許請求の範囲】
【請求項１】
１以上の受信サーバ、１以上の送信サーバ及び複数のデータストアサーバを備えるメッセージ転送システムであって、
前記各データストアサーバは、
前記受信サーバが受信したメッセージを格納する分散キューを有し、
前記分散キューの状態を示す分散キュー情報を格納し、
前記複数のデータストアサーバの少なくとも一つは、前記分散キュー情報を集計する第１のデータストアサーバであって、
前記第１のデータストアサーバは、前記分散キュー情報を集計して、仮想キュー情報を生成することを特徴とするメッセージ転送システム。
【請求項２】
請求項１に記載のメッセージ転送システムであって、
前記各データストアサーバは、
前記分散キューに、前記メッセージが入力又は出力された場合、前記分散キュー情報を更新し、
前記第１のデータストアサーバは、前記各データストアサーバから前記分散キュー情報を取得し、
前記第１のデータストアサーバは、前記各データストアサーバから取得した分散キュー情報を用いて、前記仮想キュー情報を更新することを特徴とするメッセージ転送システム。
【請求項３】
請求項２に記載のメッセージ転送システムであって、
前記第１のデータストアサーバは、前記更新された仮想キュー情報を、他の前記データストアサーバに送信し、
前記他のデータストアサーバは、受信した仮想キュー情報を格納することを特徴とするメッセージ転送システム。
【請求項４】
請求項１から３のいずれか一つに記載のメッセージ転送システムであって、
前記仮想キュー情報は、前記メッセージの宛先のドメインごとに、現在の前記仮想キューの状態を示す値と、前記仮想キューの状態を示す値の上限値とを含むことを特徴とするメッセージ転送システム。
【請求項５】
１以上の受信サーバ、１以上の送信サーバ及び複数のデータストアサーバを備える転送システムにおけるキューの管理方法であって、
前記各データストアサーバは、前記受信サーバが受信したメッセージを格納する分散キューを有し、前記分散キューの状態を示す分散キュー情報を格納し、
前記複数のデータストアサーバの少なくとも一つは、前記分散キュー情報を集計する第１のデータストアサーバであって、
前記方法は、前記第１のデータストアサーバが、前記分散キュー情報を集計して、仮想キュー情報を生成することを特徴とするキューの管理方法。
【請求項６】
請求項５に記載のキューの管理方法であって、
前記各データストアサーバは、前記分散キューに、前記メッセージが入力又は出力された場合、前記分散キュー情報を更新し、
前記第１のデータストアサーバは、前記各データストアサーバから前記分散キュー情報を取得し、
前記第１のデータストアサーバは、前記各データストアサーバから取得した分散キュー情報を用いて、前記仮想キュー情報を更新することを特徴とするキューの管理方法。
【請求項７】
請求項６に記載のキューの管理方法であって、
前記第１のデータストアサーバは、前記更新された仮想キュー情報を、他の前記データストアサーバに送信し、
前記他のデータストアサーバは、受信した仮想キュー情報を格納することを特徴とするキューの管理方法。
【請求項８】
請求項５から７のいずれか一つに記載のキューの管理方法であって、
前記仮想キュー情報は、前記メッセージの宛先のドメインごとに、現在の前記仮想キューの状態を示す値と、前記仮想キューの状態を示す値の上限値とを含むことを特徴とするキューの管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メッセージを転送するメッセージ転送システムに関する。
【背景技術】
【０００２】
携帯電話や通信端末から利用される電子メールサービスやＳＮＳ（Ｓｏｃｉａｌ  Ｎｅｔｗｏｒｋ  Ｓｅａｒｖｉｃｅ）などのメッセージサービスは、コミュニケーション手段として欠かせないものである。大規模なメッセージサービスは複数のサーバにより構成される。しかし、複数のサーバのリソース管理は、システムが大規模になればなるほど複雑なものとなる。
【０００３】
このような、メッセージをキューによって管理する技術として特許文献１に記載される方法がある。特許文献１には、分散処理システムの分散処理ノードに設けた物理的に異なる複数のキュー・ファイルを一つのキュー・ファイル・グループとして見做し、メッセージ・キュー・マネージャに、メッセージ格納用ポインタおよびメッセージ取出用ポインタを設け、メッセージの格納および取出を該ポインタの内容が示すキュー・ファイルに実行するとともに、格納または取出しごとに前記ポインタの内容を更新するメッセージ・キューのアクセス方法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−１６７１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述した特許文献１に記載された技術では、自ノードに複数の物理ファイルをグループ化し、一つのメッセージキューとして割り当てる。このため、複数のメッセージキューを管理するためには、各メッセージキュー毎に、予め使用するメッセージキューの容量を算出し、使用する物理ファイルのグループを用意しなければならない。
【０００６】
一方、通信キャリア等のメール転送サーバでは、大容量のメッセージキューを持つ物理サーバが複数存在し、個別にリソース制限を設定し、メッセージの格納を制御しているため、運用面に課題がある。
【０００７】
メッセージキューはリソース（物理メモリ量）の制限からメッセージを格納できる容量の上限値がある。メッセージキューが上限に達した場合、メール転送サーバはエラーを返す。しかし、複数のサーバのリソース使用量には偏りがあるため、一部のサーバはリソースの上限に達しているためエラーとなるが、他のサーバでは上限に達しておらず、メッセージを格納できる状態が発生する。ユーザからのリクエストは負荷分散装置を通じて均等に分散されるため、エラーとなるユーザとエラーとならないユーザが混在する可能性がある。
【０００８】
また、一つの送信宛先に障害が発生した場合、キューにメッセージが滞留する。このため、メモリリソースの枯渇を防ぐため、各サーバにおいて宛先ドメインごとに論理的なリソース上限を定めて、メッセージの格納を制御している。従って、個々のサーバの状態は容易に把握でき、各サーバを容易に制御できるが、大規模なシステム全体の状態を把握し、システム全体の動作を制御することが困難で、システムを構成するサーバ全体を通した制御が難しいという課題がある。
【課題を解決するための手段】
【０００９】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、１以上の受信サーバ、１以上の送信サーバ及び複数のデータストアサーバを備える転送システムであって、前記複数のデータストアサーバの少なくとも一つは、前記分散キュー情報を集計する第１のデータストアサーバであって、前記各データストアサーバは、前記受信サーバが受信したメッセージを格納する分散キューを有し、前記分散キューの状態を示す分散キュー情報を格納し、前記第１のデータストアサーバは、前記分散キュー情報を集計して、仮想キュー情報を生成する。
【発明の効果】
【００１０】
本発明の代表的な実施の形態によれば、複数台の物理サーバに分かれて配置されているメッセージキューを一括して管理することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施例のメールサーバシステムの構成を示すブロック図である。
【図２】本実施例のメッセージ受信サーバ及びメッセージ送信サーバを構成する計算機の構成を示すブロック図である。
【図３】本実施例のデータストアサーバを構成する計算機の構成を示すブロック図である。
【図４】本実施例のメッセージシステムがメッセージを中継する手順を示すシーケンス図である。
【図５】本実施例のデータストアサーバＡが実行する処理のフローチャートである。
【図６】本実施例の仮想キュー管理情報を取得する手順を示すシーケンス図である。
【図７】本実施例の仮想キュー更新処理のフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施例について図面を参照して説明する。
【００１３】
本実施例のメッセージ処理システムは、携帯通信キャリアのメールを転送するシステムであって、メッセージを受信する複数のメッセージ受信サーバと、メッセージを格納する複数のデータストアサーバと、メッセージを送信する複数のメッセージ送信サーバと、を有する。データストアサーバは、データの格納、更新、削除等の処理を、そのデータを保持する（又は保持すべき）複数のデータストアサーバ間で協調して行う。
【００１４】
図１は、本実施例のメールサーバシステムの構成を示すブロック図である。
メールサーバシステムの構成を示すブロック図である。
【００１５】
本実施例のメッセージシステムは、図１（Ａ）に示すように、キャリア設備網１０３内に構成されており、メッセージ受信サーバ１０６、データストアサーバ１０７及びメッセージ送信サーバ１０８を有する。
【００１６】
通信端末１０１は、携帯電話端末、タブレット、ＰＣ等のデータ通信可能な端末装置であり、無線網１０２を介して、キャリア設備網１０３内のメッセージシステムと接続している。無線網１０２は、携帯通信キャリアが管理する無線ネットワークである。キャリア設備網１０３は、無線網１０２からの通信をインターネット１０４を経由して、メッセージ受信サーバ１０６へ中継するネットワーク及びネットワーク設備である。無線網１０２及びキャリア設備網１０３は、メッセージ受信サーバ１０６を管理する携帯通信キャリアによって管理される。
【００１７】
メッセージ転送サーバ（ＭＴＡ：Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ａｇｅｎｔ）１０５は、インターネットプロバイダや、他の携帯通信キャリア等の通信事業者が管理する設備網に設置される。メッセージ転送サーバ１０５は、インターネット１０４を経由して、キャリア設備網１０３内のメッセージシステムと接続し、メッセージ転送サーバ１０５を管理する他の通信事業者のメッセージをメッセージ受信サーバ１０６へ送信し、メッセージ送信サーバ１０８からのメッセージを受信する。
【００１８】
本実施形態のメッセージシステムは、図１（Ｂ）に示すように、複数のメッセージ受信サーバ１０６、複数のデータストアサーバ１０７及び複数のメッセージ送信サーバ１０８によって構成される。図１（Ｂ）には、複数のメッセージ受信サーバ１０６及び複数のメッセージ送信サーバ１０８を図示したが、メッセージ受信サーバ１０６及びメッセージ送信サーバ１０８は、各々一つ以上設けられればよい。
【００１９】
各サーバは、物理的な計算機でもよいし、論理的な計算機である仮想マシンでもよい。また、各サーバをサーバプログラムとして一つの物理計算機上で動作させ、同一の計算機上に複数種類のサーバを配置してもよい。本実施例のメッセージシステムは、図１に示す構成に限定されることなく、他の構成のキューイングシステムでもよい。
【００２０】
本実施形態のメッセージシステムは、通信端末１０１やメッセージ転送サーバ１０５から受信したメッセージを記憶領域（キュー）に蓄積した後、蓄積されたメッセージを順次読み出して送信する、いわゆるストア・アンド・フォワード方式で中継する。これによって、メッセージシステムへ流入する情報量を平準化し、ユーザを待たせない即時応答などを実現する。本実施形態のメッセージシステムでは、メッセージ受信サーバ１０６が転送すべきメッセージを受信し、データストアサーバ１０７がキューを有し、メッセージ送信サーバ１０８がメッセージを送信する。
【００２１】
メッセージ受信サーバ１０６は、通信端末１０１やメッセージ転送サーバ１０５から受信し、データストアサーバ１０７（キュー）にメッセージを格納する。メッセージ送信サーバ１０８は、データストアサーバ１０７に格納されたメッセージを取得し、メッセージ転送サーバ１０５などメッセージの宛先サーバ又はメッセージを宛先サーバへ中継するサーバに送信する。データストアサーバ１０７は、キー及び値（バリュー）のペアでデータを管理し、複数のデータストアサーバ１０７で同一のデータ（キー及びバリュー）を多重に保持し、メッセージ受信サーバ１０６やメッセージ送信サーバ１０８から要求されたデータを処理する。なお、本実施例では携帯通信キャリアのメッセージシステムについて説明するが、前述した以外の処理（例えば、認証処理、課金処理、メッセージの変換処理、輻輳制御など）は、メッセージ受信サーバ１０６、データストアサーバ１０７及びメッセージ送信サーバ１０８のいずれかが行ってもよい。
【００２２】
本実施例では、通信端末１０１、メッセージ受信サーバ１０６、データストアサーバ１０７、メッセージ送信サーバ１０８の順にメッセージが転送されるシーケンスを例として説明するが、これに限定されることなく、他の経路によってメッセージが転送される場合にも、本発明は適用可能である。また本実施例で開示するメッセージシステムの適用範囲は、電子メールやショートメッセージに限定されることなく、無線網１０２に接続されたセンサ、自動車、メータなどのデバイスが送信するメッセージ（又はデータ）にも適用可能である。また、本実施例は無線網１０２の代わりに有線網やスマートグリッドなどのネットワークにも適用可能である。
【００２３】
図２は、本実施例のメッセージ受信サーバ１０６及びメッセージ送信サーバ１０８を構成する計算機の構成を示すブロック図である。
【００２４】
メッセージ受信サーバ１０６及びメッセージ送信サーバ１０８を構成する計算機は、図２（Ａ）に示すように、プロセッサ２０２と、揮発性メモリ２０７と、不揮発性記憶装置２０９と、入出力インタフェイス２０３と、これらを接続する内部通信線（バスなど）とを有する。
【００２５】
プロセッサ２０２は、揮発性メモリ２０７に格納されたプログラムを実行する。揮発性メモリ２０７は、例えば、ＤＲＡＭなどの高速なメモリであり、プロセッサ２０２が実行するプログラムや、当該プログラムの実行時に使用されるデータを格納する。不揮発性記憶装置２０９は、磁気ディスク装置（ＨＤＤ）、半導体記憶装置（ＳＳＤ）などの大容量の記憶装置である。入出力インタフェイス２０３は、キャリア設備網１０３内の各装置とデータを送受信するために使用される。
【００２６】
揮発性メモリ２０７は、メッセージ処理プログラム２０４と、データ群２０５とを格納する。メッセージ処理プログラム２０４には、メッセージ（データ）を複数のデータストアサーバ１０７へ分散して格納する分散処理プログラム２１０と、メッセージを処理する各種制御プログラム（図示省略）が含まれ、これらのプログラムがプロセッサ２０２によって実行される。本実施例では、メッセージ受信サーバ１０６とメッセージ送信サーバ１０８とで、メッセージ処理プログラム２０４の内容が異なるが、メッセージ処理プログラム２０４がメッセージ受信サーバ１０６とメッセージ送信サーバ１０８との両方の機能を有してもよい。
【００２７】
メッセージ処理プログラム２０４は、予め、不揮発性記憶装置２０９に格納され、実行時に揮発性メモリ２０７にロードされてもよい。また、図示を省略した着脱可能な記憶媒体又は通信媒体（すなわち、ネットワーク又はデータを伝送するためのデジタル信号や搬送波）を介して、揮発性メモリ２０７又は不揮発性記憶装置２０９に導入されてもよい。さらに、不揮発性記憶装置２０９は、メッセージ処理プログラム２０４が出力したログやメッセージ処理プログラム２０４の設定ファイル等のデータを格納する。
【００２８】
以下に、分散処理プログラム２１０がプロセッサ２０２により実行されることによって実現される、メッセージ受信サーバ１０６又はメッセージ送信サーバ１０８の機能を説明する。なお、本実施例では、メッセージ処理プログラム２０４が使用するデータ群２０５を、機能的な観点から、メッセージ処理プログラム２０４とは別に図示しているが、データ群２０５の一部又は全部がメッセージ処理プログラム２０４に含まれてもよい。
【００２９】
データ群２０５は、図２（Ｂ）に示すように、データストアサーバ動作設定情報２２１、データストアサーバ構成情報２２２、データストアサーバ合議情報２２３、処理性能低下判定条件２３１、リソース規制値情報２３２、仮想キュー情報２３３、分散方式情報２３４、取得方式情報２３５、データストアサーバ状態情報２５０などを含む。
【００３０】
データストアサーバ動作設定情報２２１は、複数のデータストアサーバ１０７間でのデータの保持方法やデータストアサーバ１０７の動作設定等の情報を含む。データストアサーバ動作設定情報２２１は、例えば、データを保持するデータストアサーバ１０７の台数の情報（データの多重度）、複数のデータストアサーバ１０７間でデータを保持・管理する方式（データ保持方式）、データストアサーバ１０７が受信した要求に従った処理動作（要求別動作設定）の情報を含む。データ保持方式には、複数のデータストアサーバ１０７間でデータを同一の状態で保持する一貫性保持型と、データの状態の不一致を許容する代わりにデータストアサーバ１０７のサービス継続性を優先する可用性保持型などが設定される。要求別動作設定には、データの格納、取得、更新、削除、比較などの要求毎にデータストアサーバ１０７が連携するデータストアサーバ１０７の台数、処理が成功したと判定するためのデータストアサーバ１０７の台数などの情報を格納する。
【００３１】
以下、本実施例では、データストアサーバ動作設定情報２２１のデータの多重度が３であり、一貫性保持型である場合について説明する。また、要求別動作設定では、格納、更新、削除要求に対しては、３台のデータストアサーバ１０７にデータを格納したことによって処理成功とし、取得要求に対しては、１台のデータストアサーバ１０７からデータを取得するように設定する。ただし、データの多重度は３以外でもよく、可用性保持型のシステムを構成してもよい。
【００３２】
データストアサーバ構成情報２２２は、分散処理プログラム２１０がデータストアサーバ１０７から定期的に取得するデータストアサーバ１０７間の相関情報及び稼動情報を含む。データストアサーバ１０７間の相関情報は、メッセージシステム内のデータストアサーバ１０７が保持しているデータのキーの情報（以下、「キーレンジ担当情報」と称する）と、そのキーについて当該データストアサーバ１０７がマスタであるか、マスタのデータを同期するスレーブであるかの情報である。稼動情報は、各データストアサーバ１０７の稼動情報、及び相関情報に含まれるキーレンジのデータの多重度の情報を含む。多重度の情報は、現在の多重度を表し、例えば、設定されているデータ多重度が３でも、そのデータを保持するデータストアサーバ１０７の一台が障害等により停止すれば、データ多重度は２となる。
【００３３】
データストアサーバ合議情報２２３は、データストアサーバ１０７間で直接交換される情報であり、データストアサーバ構成情報２２２と同様に、データストアサーバ１０７の稼動状況及び相関情報を含む。分散処理プログラム２１０は、データストアサーバ１０７が定期的にマルチキャストなどで送信しているデータストアサーバ構成情報を取得して、データストアサーバ構成情報２２２を更新する。
【００３４】
処理性能低下判定条件２３１は要求種別毎に複数の条件２４０Ａ、２４０Ｂ等を保持し、各条件は処理経過時間２４１、接続数２４２、同時処理数２４３、送信待ち数２４４及び応答時間２４５を含む。
【００３５】
処理経過時間２４１は、分散処理プログラム２１０がデータストアサーバ１０７へ要求を送信してからの経過時間の閾値が記述される。接続数２４２には、分散処理プログラム２１０がデータストアサーバ１０７に接続するコネクション数の閾値が記述される。同時処理数２４３には、分散処理プログラム２１０が同時に実行している処理の数や、プロセスの数、スレッドの数の閾値が記述される。送信待ち数２４４には、分散処理プログラム２１０がデータストアサーバ１０７への送信すべき待ち状態のメッセージ数の閾値が記述される。応答時間２４５は、分散処理プログラム２１０がデータストアサーバ１０７へ要求を送信して応答を受信した時間（平均値）の閾値である。
【００３６】
ここで処理経過時間２４１は、実績値である応答時間２４５と異なり、分散処理プログラム２１０がデータストアサーバ１０７から応答を受信していない、現在処理中の要求を送信してからの経過時間であり、応答時間より短い時間に設定される。一般的にメッセージを処理するサーバは、外部サーバにメッセージを送信し応答を待ち続ける応答タイムアウト値を持ち、応答タイムアウト以内に応答を受信した場合、正常に応答を受信して応答時間２４５に追加して平均値を再計算すると判定し、応答タイムアウト以降に受信した場合、応答をエラーと判定する。
【００３７】
処理性能低下判定条件２３１が要求種別に条件を保持するのは、データストアサーバ動作設定情報２２１によって、格納、取得などの要求種別毎にデータストアサーバ１０７の連携処理の性能が低下する要因が異なり、データストアサーバ１０７の稼働状況によって要求種別で実行できるかが異なるためである。
【００３８】
リソース規制値情報２３２は、分散処理プログラム２１０がデータストアサーバ１０７への要求の送信に使用するリソースを保護するための規制値である。すなわち、リソース規制値情報２３２は、分散処理プログラム２１０が、データストアサーバ１０７から要求され、同時に実行しているプロセス数、コネクション数、分散処理プログラム２１０への送信待ち要求数等の規制値である。リソース規制値情報２３２は、通常時と、処理性能低下判定時などの状態別に複数の値を保持する。分散処理プログラム２１０は、リソース規制値情報２３２を参照することによって、処理性能が低下したデータストアサーバ１０７の全リソースを使い切ることを回避する。
【００３９】
データストアサーバ１０７が保持するキュー（以下、「分散キュー」と称する）について説明する。データストアサーバ１０７へメッセージデータを格納する際に、分散方式情報２３４に定められた分散方式（振り分け方式）に従って、データを分散キューへ格納する。分散キューは、各データストアサーバ１０７が有している。分散キューデータ３４０ａ、３４０ｂ…（データストア３３０）は、一つのメタ情報（以下、「分散キュー管理情報３４１」と称する）と、複数のメッセージデータ３４２を含む。分散キュー管理情報３４１は、分散キューデータ３４０に含まれる複数のメッセージデータ３４２とメッセージ関連情報３４３を管理するための情報である。分散キュー管理情報３４１によってデータストアサーバプログラム３０４がキューの機能を実現する。本実施例では、各データストアサーバ１０７がメッセージの宛先ドメイン別に分散キューを有する。このため、分散キュー管理情報３４１も、メッセージの宛先ドメイン毎に設けられる。
【００４０】
分散処理プログラム２１０は、データストアサーバ１０７へメッセージを格納・変更・削除し、分散キュー管理情報３４１を更新する。分散キュー管理情報３４１は、関連するキューの情報から構成され、分散キューデータ３４０の識別子と、分散キューデータ３４０がマスタであるかスレーブであるかの情報と、メッセージの格納順や取り出し順などの処理順序の情報とを含む。分散キュー管理情報３４１は、さらに、分散キューデータ３４０に格納できる最大のメッセージデータ数（又は、分散キューデータ３４０が利用できるデータサイズ）、分散キューデータ３４０に現在格納されているメッセージデータ数及び利用しているデータサイズ、複数の分散処理プログラム２１０からメッセージを一つずつ取り出すための排他制御の情報を含む。本実施例においては、データストアサーバ１０７へメッセージを格納・変更・削除をする際に、メッセージの分散方式（振り分け方式）ごとに分散キュー管理情報３４１を更新する。
【００４１】
本実施例において、分散キュー管理情報３４１は、データストアサーバ１０７のデータストア３３０内に格納されるが、データストアサーバ１０７の外に格納されてもよい。
【００４２】
全てのデータストアサーバ１０７の分散キュー管理情報３４１より収集したキューの情報はデータストアサーバ１０７全体のキューの情報を表し、その情報から仮想的なキューを構成することができる。
【００４３】
システムで一元管理するための仮想的なキュー（以下、「仮想キュー」と称する）について説明する。仮想キューは、複数のデータストアサーバ１０７に格納されたデータを、一元管理するための、仮想的なキューである。仮想キュー情報３３１は、仮想キューの状態を表す。システム管理者は、仮想的なキューを管理することによって、全てのデータストアサーバ１０７のキューを一元的に管理することができる。
【００４４】
仮想キュー情報３３１は、少なくとも一つのデータストアサーバ（後述する図６、図７では、データストアサーバＡ１０７ａ）が、各データストアサーバの分散キュー管理情報３４１より各情報がリアルタイム、又は一定間隔で全てのデータストアサーバの分散方式毎のメッセージキューの情報を集計して構成する。集計された仮想キュー情報３３１は、他のデータストアサーバ１０７と共有される。また、分散キュー管理情報３４１は、任意のタイミングに集計されてもよい。
【００４５】
一つの仮想キューが複数の分散キューに対応し、仮想キューのデータは実際はデータストアサーバ１０７の分散キューに格納される。言い換えれば、仮想キューは複数の分散キューを含んで構成される。仮想キュー情報２３３は、各仮想キューと複数の分散キューの対応関係の情報、及び複数の分散キューの情報を一元管理するための情報を格納する。仮想キュー情報２３３は、メッセージシステム内の複数のメッセージ受信サーバ１０６及びメッセージ送信サーバ１０８が実行する分散処理プログラム２１０で共有される。
【００４６】
本実施例において、データストア３３０は、仮想キュー情報３３１と、複数の分散キューデータ３４０を含む。データストア３３０内の分散キューデータ３４０は、複数のデータストアサーバ１０７に多重に保持される。分散キューデータ３４０は、一つの分散キュー管理情報３４１と、複数のメッセージデータ３４２と、メッセージ関連情報３４３とを含む。仮想キュー情報３３１は、仮想キュー情報２３３と同一の情報であり、複数の分散処理プログラム２１０がメッセージシステム全体で仮想キューの情報を共有するために、各データストアサーバ１０７が保持する。
【００４７】
分散方式情報２３４は、ラウンドロビンなどの分散方式を格納する。取得方式情報２３５は、メッセージ受信サーバ１０６又はメッセージ送信サーバ１０８が取得可能なデータストアサーバ１０７（データストアサーバ状態情報２５０）や、その取得優先度が格納される。具体的には、全台又は一部のデータストアサーバ１０７からデータを取得する設定や、複数台のデータストアサーバ１０７からデータを取得する設定をした場合に優先してデータを取得するデータストアサーバ１０７の設定や、保持するメッセージ数が多いデータストアサーバ１０７から優先して取得する設定などがある。
【００４８】
データストアサーバ状態情報２５０は、担当キーレンジ情報２５１、稼動サーバ２５２、稼動情報２５３、分散キューリスト２５４、判定対象の現在値２５５及びデータ多重度２５６を含む。担当キーレンジ情報２５１は、各データストアサーバ１０７が保持するデータのキーの範囲が記述される。稼動サーバ２５２は、前述したキーの範囲を現在担当しているデータストアサーバ１０７（マスタ、スレーブを含む複数台）のＩＰアドレスが記述される。担当キーレンジ情報２５１及び稼動サーバ２５２は、分散処理プログラム２１０がデータストアサーバ構成情報２２２に基づいて作成され、データストアサーバ１０７の障害や構成変更時には動的に変更される。
【００４９】
稼動情報２５３は、マスタ、スレーブを含む複数のデータストアサーバ１０７の状態を格納する。分散キューリスト２５４は、担当キーレンジ情報２５１の範囲に含まれる分散キューのリストを記述する。データストアサーバ１０７の障害や構成変更時には、稼動情報２５３が動的に変更される。分散処理プログラム２１０は、通常時には、仮想キュー情報２３３に対応する分散キューリスト２５４を含むデータストアサーバ状態情報２５０を選択する。判定対象の現在値２５５は、処理性能低下判定条件２３１の対象であるパラメータが記述され、処理経過時間２４１、接続数２４２、同時処理数２４３、送信待ち数２４４、応答時間２４５に対応する現在の値を格納する。
【００５０】
データ多重度２５６は、担当キーレンジ情報２５１の範囲に含まれるデータ（分散キュー）の多重度である。データ多重度２５６は、通常は、担当キーレンジ情報２５１の範囲に含まれるデータを保持しているデータストアサーバ１０７の稼動台数と一致するが、データストアサーバ１０７が仮想環境等で実行されている場合、実環境のデータストアサーバ１０７の稼動台数を格納する。データ多重度２５６により、分散処理プログラム２１０はデータの多重度をデータストアサーバ１０７の設定とは別に保持することが可能になり、メッセージ受信サーバ１０６のアプリケーションの都合や仮想環境などで、データの多重度に対する柔軟な制御を行うことを可能にする（一般的にデータストアサーバ１０７がメッセージ毎にデータ多重度に対する制御は行えない）。なお、本実施例では、データストアサーバ状態情報２５０を担当キーレンジ情報２５１毎に作成しているが、たとえば分散キュー毎にデータストアサーバ状態情報２５０を作成してもよい。
【００５１】
図３は、本実施例のデータストアサーバ１０７を構成する計算機の構成を示すブロック図である。
【００５２】
データストアサーバ１０７を構成する計算機は、図３（Ａ）に示すように、プロセッサ３０２と、揮発性メモリ３０７と、不揮発性記憶装置３０９と、入出力インタフェイス３０３と、これらを接続する内部通信線（例えば、バスなど）とを有する。
【００５３】
プロセッサ３０２は、揮発性メモリ３０７に格納されたプログラムを実行する。揮発性メモリ３０７は、例えば、ＤＲＡＭなどの高速なメモリであり、プロセッサ３０２が実行するプログラムや、当該プログラムの実行時に使用されるデータを格納する。不揮発性記憶装置３０９は、磁気ディスク装置（ＨＤＤ）、半導体記憶装置（ＳＳＤ）などの大容量の記憶装置である。入出力インタフェイス３０３は、キャリア設備網１０３内の各装置とデータを送受信するために使用される。
【００５４】
揮発性メモリ３０７は、データストアサーバプログラム３０４を格納及びデータ群３０５を格納する。データストアサーバプログラム３０４は、メッセージを処理する各種制御プログラムを含み、プロセッサ３０２がこれらの制御プログラムを実行する。
【００５５】
データストアサーバプログラム３０４は、予め、不揮発性記憶装置３０９に格納され、実行時に揮発性メモリ３０７にロードされてもよい。また、図示を省略した着脱可能な記憶媒体又は通信媒体（すなわち、ネットワーク又はデータを伝送するためのデジタル信号や搬送波）を介して、揮発性メモリ２０７又は不揮発性記憶装置２０９に導入されてもよい。さらに、不揮発性記憶装置３０９は、データストアサーバプログラム３０４が出力したログやデータストアサーバプログラム３０４の設定ファイル等のデータを格納する。
【００５６】
以下に、データストアサーバプログラム３０４に含まれる各種制御プログラムがプロセッサ３０２により実行されることによって実現される、データストアサーバ１０７の機能を説明する。なお、本実施例では、データストアサーバプログラム３０４が使用するデータ群３０５を、機能的な観点から、データストアサーバプログラム３０４とは別に図示しているが、データ群３０５の一部又は全部がデータストアサーバプログラム３０４に含まれてもよい。
【００５７】
データ群３０５は、図３（Ｂ）に示すように、データストアサーバ構成情報３２１、データストアサーバ合議情報３２２、データストア３３０などを含む。
【００５８】
データストアサーバ構成情報３２１は、図２に示すデータストアサーバ構成情報２２２と同じ内容を含む。但し、データストアサーバ構成情報３２１はデータストアサーバ１０７が作成し及び利用するものであり、データストアサーバ構成情報２２２とデータ形式は異なってもよい。同様にデータストアサーバ合議情報３２２は、図２に示すデータストアサーバ合議情報２２３と同じ内容を含む。データストアサーバプログラム３０４は、他のデータストアサーバ１０７のデータストアサーバプログラム３０４との間でデータストアサーバ合議情報２２３を交換し、データストアサーバ合議情報３２２を作成する。
【００５９】
データストア３３０は、データストアサーバ１０７がメッセージ受信サーバ１０６（分散処理プログラム２１０）から受信した（格納が要求された）データを格納する領域である。本実施例では、データストアサーバ１０７はキーバリューストアを採用しているので、データストア３３０に格納される各データには、そのデータ（バリュー）に対応するキーも同時に格納されている。なお、本実施例では簡略化のためデータ（バリュー）のみ表記し、キーについては省略する。
【００６０】
データストア３３０は仮想キュー情報３３１を含み、仮想キュー情報３３１はメッセージ格納数上限値３３２、メッセージサイズ上限値３３３及び現在値３３４を含む。メッセージ格納数上限値３３２は、全てのデータストアサーバ１０７に格納可能なメールの総数の上限値である。メッセージサイズ上限値３３３は、全てのデータストアサーバ１０７に格納可能なメールの総サイズの上限値である。現在値３３４は、全てのデータストアサーバが現在格納しているメール数及びメールサイズである。
【００６１】
図示した仮想キュー情報３３１は、全ての分散キューを統合した仮想キューの情報であるが、分散キュー管理情報３４１と同様にメッセージの宛先ドメイン毎に設けてもよい。
【００６２】
なお、データストアサーバ構成情報３２１、データストアサーバ合議情報３２２及びデータストア３３０の各情報は不揮発性記憶部３０８に格納してもよい。この場合もデータストアサーバプログラム３０４の機能は実現可能である。
【００６３】
分散キューデータ３４０は、一つの分散キュー管理情報３４１と、複数のメッセージデータ３４２と、メッセージ関連情報３４３とを含む。メッセージデータ３４２は、メッセージ受信サーバ１０６から受信し、格納したメッセージのデータである。メッセージ関連情報３４３は、メッセージデータ３４２に関連する付加情報などの情報である。メッセージ受信サーバ１０６又はメッセージ送信サーバ１０８はメッセージ関連情報３４３を利用して、メッセージを処理する。
【００６４】
図４は、本実施例のメッセージシステムがメッセージを中継する手順を示すシーケンス図である。
【００６５】
ステップ４０１からステップ４１１は、メッセージ受信サーバ１０６が受信したメッセージをデータストアサーバ１０７に格納するシーケンスである。
【００６６】
最初に、メッセージ受信サーバ１０６は、通信端末１０１が発信したメッセージ４０１を受信する。メッセージ受信サーバ１０６は、分散方式情報２３４に従って、仮想キューに対応する分散キューを分散キューリスト２５４に含むデータストアサーバ状態情報２５０を参照し、受信したメッセージを格納するデータストアサーバ１０７を選択する（ステップ４０２）。メッセージ受信サーバ１０６は、メッセージ格納要求を選択されたデータストアサーバＡ１０７ａに送信する(ステップ４０３）。
【００６７】
データストアサーバＡ１０７ａは、仮想キュー情報３３１に含まれるメッセージ格納数上限値３３２及びメッセージサイズ上限値３３３を参照し、メッセージ４０１がデータストアサーバＡ１０７ａに格納可能かを判定する（ステップ４０４、４０５）。
【００６８】
また、データストアサーバＡ１０７ａは、データストアサーバ１０７ｂを含む複数のデータストアサーバ１０７間で受信したメッセージ（データ）を多重化するため、格納処理を他のデータストアサーバ１０７（例えば、データストアサーバＢ１０７ｂ）と連携する（ステップ４０６）。
【００６９】
次に、データストアサーバＡ１０７ａは、分散方式情報２３４に従ってメッセージデータを分散キューに格納し（ステップ４０７）、メッセージデータに関連する分散キュー管理情報３４１を更新する。その後、データストアサーバＡ１０７ａは、受信したメッセージが分散キューへ格納されたことから、メッセージ受信サーバ１０６へ格納成功の応答を返し（ステップ４１０）、メッセージ受信サーバ１０６は通信端末１０１に応答を返す（ステップ４１１）。
【００７０】
以上に説明したデータストアサーバＡ１０７ａの処理の詳細は、図５を用いて後述する。
【００７１】
ステップ４２０からステップ４２９は、メッセージ送信サーバ１０８がメッセージを送信するシーケンスである。
【００７２】
メッセージ送信サーバ１０８の分散処理プログラム２１０は、定期的にメッセージを取得するデータストアサーバ１０７を選択する（ステップ４２０）。メッセージ送信サーバ１０８は、メッセージ取得要求をデータストアサーバＡ１０７ａへ送信し（ステップ４２１）、データストアサーバ１０７からメッセージを受信する（ステップ４２２）。メッセージ送信サーバ１０８は、受信したメッセージをメッセージ転送サーバ１０５へ送信する（ステップ４２３）。
【００７３】
メッセージ転送サーバ１０５は、メッセージ送信サーバ１０８からメッセージを受信すると、メッセージ送信サーバ１０８に正常応答を送信する（ステップ４２４）。
【００７４】
メッセージ送信サーバ１０８は、メッセージ転送サーバ１０５から正常応答を受信すると（ステップ４２４）、メッセージデータが格納されたデータストアサーバＡ１０７ａにメッセージの削除要求を送信する（ステップ４２５）。
【００７５】
データストアサーバＡ１０７ａは、メッセージの削除要求を受信すると（ステップ４２５）、当該メッセージデータを分散キューから削除し（ステップ４２６）、メッセージデータに関連する分散キュー管理情報３４１を更新する（ステップ４２７）。
【００７６】
図５は、本実施例のデータストアサーバＡ１０７ａが実行する処理のフローチャートであり、メッセージ格納要求から格納応答までの処理を示す。
【００７７】
まず、メッセージ格納要求を受信すると（Ｓ１０１）、データストアサーバＡ１０７ａは、仮想キュー情報３３１に含まれるメッセージ格納数上限値３３２を参照し、現在キューに格納されているメッセージ数が上限値を超えていないかを判定する（Ｓ１０２）。そして、現在キューに格納されているメッセージ数が上限値を超えていれば、新たなメッセージを格納できないので、ステップＳ１０８に進む。
【００７８】
一方、現在キューに格納されているメッセージ数が上限値を超えていなければ、データストアサーバＡ１０７ａは、仮想キュー情報３３１に含まれるメッセージサイズ上限値３３３を参照し、キューに格納すべきメッセージのサイズが上限値を超えていないかを判定する（Ｓ１０３）。そして、キューに格納すべきメッセージのサイズが上限値を超えていれば、このメッセージを格納できないので、ステップＳ１０８に進む。
【００７９】
一方、キューに格納すべきメッセージのサイズが上限値を超えていなければ、リソース規制値情報２３２を参照し、データストアサーバＡ１０７ａのリソースが不足していないかを判定する（Ｓ１０４）。
【００８０】
その結果、データストアサーバＡ１０７ａのリソースが不足していれば、メッセージを格納できないので、データストアサーバＡ１０７ａへのメッセージの格納を規制し（Ｓ１１０）、他のデータストアサーバ１０７へのメッセージの格納を試みる（Ｓ１１１）。
【００８１】
一方、データストアサーバＡ１０７ａのリソースが十分であれば、データストアサーバＡ１０７ａの分散キューへのメッセージを格納し（Ｓ１０５）、分散キュー管理情報３４１を更新する（Ｓ１０６）。
【００８２】
受信したメッセージがいずれかのデータストアサーバ１０７に格納されると、メッセージ受信サーバ１０６へ格納成功の応答を返す（Ｓ１０７）。
【００８３】
一方、メッセージの格納ができない場合、ステップＳ１０８で、メッセージの受信を規制すると判定し（Ｓ１０８）、メッセージ受信サーバ１０６にメッセージ格納エラーの応答を返す（Ｓ１０９）。
【００８４】
図５では、データストアサーバＡ１０７ａがメッセージを格納する処理について説明したが、データストアサーバＡ１０７ａがメッセージ送信サーバ１０８にメッセージを出力する場合も、メッセージ受信時と同様に、分散キュー管理情報３４１を更新する。
【００８５】
図６は、本実施例の仮想キュー管理情報を取得する手順を示すシーケンス図である。図６に示すシーケンスでは、データストアサーバＡ１０７ａが分散キュー管理情報を他のデータストアサーバから収集し、集計する。
【００８６】
データストアサーバ１０７ｂは、分散キュー管理情報３４１をデータストアサーバＡ１０７ａへ定期的に送信する（ステップ５１３）。データストアサーバＣ１０７ｃは、分散キュー管理情報３４１をデータストアサーバＡ１０７ａへ定期的に送信する（ステップ５１５）。
【００８７】
データストアサーバＡ１０７ａは、受信した分散キュー管理情報３１４を集計し（ステップ５１４）、集計した分散キュー管理情報で仮想キュー管理情報を更新する（ステップ５１６）。
【００８８】
データストアサーバＡ１０７ａは、更新した仮想キュー管理情報を多重化して格納するため、所定のタイミングで仮想キュー管理情報を他のデータストアサーバに送信し、仮想キュー管理情報の保持を他のデータストアサーバと連携する（ステップ５１７、５１８）。
【００８９】
図７は、本実施例の仮想キュー更新処理のフローチャートである。図７に示す仮想キュー更新処理は、ステップＳ２０１からＳ２０６の処理を無限に繰り返し実行する。
【００９０】
まず、データストアサーバＡ１０７ａは、定期的（例えば、０．１秒毎）に仮想キュー情報２３３の更新を確認する（Ｓ２０２、Ｓ２０３）。
【００９１】
その後、仮想キュー情報３３１の前回の更新時刻より１秒以上を経過している場合、各データストアサーバから分散キュー管理情報３４１を取得し（Ｓ２０４）、取得した分散キュー管理情報３４１を用いて仮想キュー情報３３１を更新する（Ｓ２０５）。
【００９２】
以上に説明したように、本発明の実施例によると、メッセージを複数の物理サーバ（データストアサーバ１０７）へ格納する際に、メッセージに関連付けて分散キュー管理情報３４１を更新する。そして、分散キュー管理情報３４１によって複数の物理サーバの分散キューを統合した仮想的なキューを構成する。管理者は、仮想的なキューを管理することによって、複数の物理サーバに分かれて構築されている複数のキューを一括に管理することができる。
【００９３】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【００９４】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【００９５】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Solid State Drive）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【００９６】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【００９７】
１０１  通信端末
１０３  キャリア設備網
１０５  メッセージ転送サーバ
１０６  メッセージ受信サーバ
１０７  データストアサーバ
１０８  メッセージ送信サーバ
【図１】
2015073234.tif 000003
【図２】
2015073234.tif 000004
【図３】
2015073234.tif 000005
【図４】
2015073234.tif 000006
【図５】
2015073234.tif 000007
【図６】
2015073234.tif 000008
【図７】
2015073234.tif 000009