(57)【要約】  メッセージを振り分けるサーバが、応答タイムアウトとは別の時間やコネクション数などの閾値を振り分け先のサーバ毎に保持し、前記閾値を超過した場合に処理性能低下と判定する方法により、後段のサーバの処理性能低下を高速に検出する。また、振り分けサーバが処理性能低下した場合にサーバ間の協調処理に関する相関から処理性能低下したサーバ群を特定し、振り分けサーバがメッセージを処理性能低下していないサーバへ振り分けることにより、システムの可用性を向上する。
2014171413.tif 000002
【特許請求の範囲】
【請求項１】
メッセージ送信装置からメッセージを受信しメッセージ受信装置へメッセージを配信するメッセージサーバと、
前記メッセージと、当該メッセージに係わる関連情報と、のいずれか一方または両方を格納するデータストアサーバと、を備えるメッセージシステムであって、
前記メッセージサーバは、
前記データストアサーバ毎の状態を管理する機能と、
前記データストアサーバの処理性能の低下を、データストアサーバとの応答タイムアウトが発生する前に検出する機能と、
前記処理性能が低下したと判定されたデータストアサーバを除くデータストアサーバを格納先とする機能と、
前記メッセージおよび前記関連情報の格納に係わる制御情報のいずれか一方または両方を生成する機能と、
前記メッセージおよび前記関連情報のいずれか一方または両方と、前記制御情報と、を前記データストアサーバへ送信する機能と、を備え、
前記データストアサーバは、
前記複数のデータストアサーバ間で同じデータを多重に保持する機能と、
前記多重に保持するためにデータストアサーバ間で連携して処理する機能と、
送信された前記メッセージおよび前記関連情報のいずれか一方または両方を、保持する機能と、を備える
ことを特徴とするメッセージシステム。
【請求項２】
請求項１に記載のメッセージシステムであって、
前記メッセージサーバは、データストアサーバ間の連携処理の相関情報と、データストアサーバ間で交換する情報に基づく合議情報との、いずれか一方または両方を取得する機能を備え、
前記メッセージサーバは、前記処理性能低下したと判定されたデータストアサーバと、前記相関情報と合議情報のいずれか一方または両方に基づき格納先を変更する機能を備える
ことを特徴とするメッセージシステム。
【請求項３】
請求項２に記載のメッセージシステムであって、
前記メッセージサーバは、
互いに独立したデータストアサーバのグループを判別する機能と、
前記処理性能が低下したと判定されたデータストアサーバを検出した場合に前記データストアサーバとは別のグループに属するデータストアサーバを格納先とする機能と、を備える
ことを特徴とするメッセージシステム。
【請求項４】
請求項２に記載のメッセージシステムであって、
前記メッセージサーバは、データの多重度をメッセージサーバが管理する機能と、
前記メッセージサーバは、データの多重度により前記メッセージサーバの処理を変更する機能と、を備える
ことを特徴とするメッセージシステム。
【請求項５】
請求項２に記載のメッセージシステムであって、
前記メッセージサーバは、前記処理性能が低下したと判定されたデータストアサーバを検出した場合にリソース規制を変更する機能を備える
ことを特徴とするメッセージシステム。
【請求項６】
請求項２に記載のメッセージシステムであって、
前記メッセージサーバは、データストアサーバのキューをシステム全体での１つのキューとして運用管理する機能と、
前記メッセージサーバは、前記システム全体の１つのキューと複数のデータストアサーバのキューを対応付けて管理する機能と、
前記メッセージサーバは、メッセージを前記システム全体の１つのキューに格納時に、それに対応づくデータストアサーバのキューを検索し選択する機能と、を備える
ことを特徴とするメッセージシステム。
【請求項７】
請求項１に記載のメッセージシステムであって、
前記メッセージサーバは、データストアサーバへ要求を送信してからの経過時間を判定し、閾値を超過することによりデータストアサーバの処理性能低下を検出する機能と、を備える
ことを特徴とするメッセージシステム。
【請求項８】
請求項１に記載のメッセージシステムであって、
前記メッセージサーバは、データストアサーバへ要求の送信ために同時実行しているプロセス数またはコネクション数の閾値を超過することによりデータストアサーバの処理性能低下を検出する機能と、を備える
ことを特徴とするメッセージシステム。
【請求項９】
請求項１に記載のメッセージシステムであって、
前記メッセージサーバは、データストアサーバへ要求の送信待ちのメッセージ数の閾値を超過することによりデータストアサーバの処理性能低下を検出する機能と、を備える
ことを特徴とするメッセージシステム。
【請求項１０】
請求項３に記載のメッセージシステムであって、
前記メッセージサーバは、前記相関情報と前記合議情報のいずれか一方または両方に基づき、サービス停止のデータストアサーバのグループを判別し、サービスの停止していないグループに格納先を切り替える機能を備える
ことを特徴とするメッセージシステム。
【請求項１１】
請求項３に記載のメッセージシステムであって、
異なるグループに属する、複数の前記データストアサーバが同一装置上に配置され、
グループ内で保持するキューをマスタとする順序を、他のグループと異なるように設定する
ことを特徴とするメッセージシステム。
【発明の詳細な説明】
【参照による取り込み】
【０００１】
本出願は、２０１３年４月１６日に出願された日本特許出願第２０１３−０８５３５３号の優先権を主張し、その内容を、参照により本出願に取り込む。
【技術分野】
【０００２】
本明細書で開示される主題は、メッセージサーバの技術に関する。
【背景技術】
【０００３】
携帯電話や通信端末（以下、携帯電話という）から利用される電子メールサービスやSNS(Social Network Service)などのメッセージサービスは、コミュニケーション手段として欠かせないものになっており、メッセージサービスを提供するメッセージシステムには２４時間３６５日サービス無停止の高可用性と高いサービス品質が求められている。メッセージサービスを提供するメッセージシステムは、複数台のメッセージ処理を担うサーバ装置（以下、サーバ装置をサーバという）を含んで構成される。【０００４】
メッセージシステムの可用性やサービス品質を向上する方法として、特許文献１、２の方法が提案されている。【０００５】
具体的には、複数のサーバの前段にロードバランサ（または振り分け装置）を設置し、ロードバランサが各サーバへのリクエストに対する応答時間を計測し、サーバの負荷を分散する（特許文献１の段落0008、0013）方法や、各サーバの負荷状態やJava（登録商標）VMのガベッジコレクションの状態などを取得し、メッセージを振り分ける（特許文献２の段落0007、0028）方法が提案されている。【０００６】
これらの方法は、システムの一部のサーバが障害や処理速度低下に陥った場合でも、システム全体の処理性能低下やサービスの部分停止を回避することを狙っている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2011-197796号公報
【特許文献２】特開2011-170772号公報
【非特許文献】
【０００８】
【非特許文献１】Leslie Lamport、” Paxos made simple”、online、2001年11月、ACM SIGACT News 32、[2013年4月11日検索]、インターネット< http://www.cs.utexas.edu/users/lorenzo/corsi/cs380d/past/03F/notes/paxos-simple.pdf
【発明の概要】
【発明が解決しようとする課題】
【０００９】
近年、スマートフォンなどの普及により、携帯電話の電子メールやSNSのメッセージのトラフィック量は膨大化している。さらに、今後センサ、車などの大量のモノがネットワークに接続され、モノが情報（メッセージ）交換を行う通信形態M2M(Machine to Machine)の普及が予測されており、さらなる膨大なメッセージトラフィックの発生が予測されている。【００１０】
上記のような大量メッセージ処理が必要な状況において、特許文献１、２には以下の課題があった。【００１１】
第一の課題は、短時間、具体的には1秒以下の処理性能低下の判定が困難であることである。一般的に応答の最大待ち時間（応答タイムアウト）は、サーバー間を接続しているスイッチやルーターなどの障害切り替え時間（数秒以上）で設定されることが多い。たとえば、応答タイムアウトが上記スイッチの障害切替時間よりも短いと、本来障害切替えにより救えるメッセージが応答タイムアウトしてしまい、大量メッセージの処理でエラーが発生するのと、各サーバがネットワークが障害になったと誤検知し、サービスが停止するなどの問題が発生する可能性がある。【００１２】
なお、スイッチの障害切替え動作を補足説明すると、障害切替時にサーバ間のパスが通信可能なネットワークに切り替わり、TCP(Transmission Control Protocol)などの再送処理によりメッセージが再送されることにより、エラーにならずに処理継続できる。【００１３】
そのため、可用性が求められるシステムでは、スイッチなどのネットワークの切り替え時間以上の応答タイムアウトが設定される。上記課題に対し、特許文献１では単純な応答時間処理性能低下を判断しか言及されておらず、特許文献２の方法では処理性能低下の原因がJavaのFullGCなどの場合に限られる。【００１４】
第二の課題は、メッセージサーバーが協調している場合、処理時間低下を検出や検出のための閾値設定が困難であることである。複数のサーバーが協調する例として、非特許文献１には、複数のサーバがネットワークを介して合意する方法が開示されている。複数のメッセージサーバーである処理が協調している場合、1台のサーバーが処理性能低下した場合、協調しているサーバーも処理性能低下する。性能速度低下したサーバーと協調しているサーバの全ての処理が一様に処理性能低下するわけではなく、協調処理に関連した場合かつ、協調処理の速度低下状況に依存するため、特許文献１のように単純な閾値設定による応答時間の判定では、検出困難になる場合がある。特許文献２の方法では、1台のサーバーの処理性能低下しか検出できないため、上記は全く検出できない。【００１５】
すなわち、大量メッセージ処理を行うメッセージシステムにおいて、以上の２つの課題を解決する技術が求められている。
【課題を解決するための手段】
【００１６】
本明細書では、メッセージを振り分けるサーバ（以下、振り分けサーバ）が、応答タイムアウトとは別の時間やコネクション数などの閾値を振り分け先のサーバ毎に保持し、前期閾値を超過した場合に処理性能低下と判定する方法により、従来より短時間でサーバの処理性能低下を検出する技術が開示される。【００１７】
また、振り分けサーバが処理性能低下した場合にサーバ間の協調処理に関する相関から処理性能低下したサーバ群を特定（以下、処理性能低下判定処理）し、振り分けサーバがメッセージを処理性能低下していないサーバへ振り分けることにより、システムの可用性とサービス品質を向上する技術が開示される。【００１８】
このとき、振り分けサーバは、処理性能が低下したサーバ群へ上記判定前に送信したメッセージの応答待ちを継続することにより、データストアサーバへのメッセージの二重送信を防ぐ。【００１９】
なお、本明細書でのメッセージとは、携帯電話の電子メール、SNSのメッセージ、センサ情報、車などモノが発信するデータ等を含む。【００２０】
開示されるメッセージシステムは、メッセージを振り分ける振り分けサーバと複数のメッセージを処理するサーバを含んで構成する。振り分けサーバは、振り分け先であるサーバ毎に処理性能低下しているか判定するための時間やコネクション数などのパラメータを常時監視し、各サーバの協調処理に関する相関情報（構成情報）を管理し、それらの情報から処理性能低下しているサーバ群を検出する。振り分けサーバは、次にメッセージを振り分けるメッセージから、処理性能低下しているサーバ群を回避してメッセージを振り分ける。【００２１】
具体的な一つの態様は、メッセージを振り分ける振り分けサーバと複数のメッセージを処理するサーバを含んで構成されるシステムであって、当該振り分けサーバは、メッセージを処理するサーバへ転送する機能と、メッセージ転送の時間やコネクション数などをサーバ毎に管理する機能と、上記時間やコネクションが閾値を超過した場合に処理性能低下と判定する機能と、各サーバの協調処理に関する相関情報を取得する機能と、上記処理性能低下と相関情報から処理性能低下しているサーバ群を特定する機能と、上記処理低下しているサーバ群を避けてメッセージを振り分ける機能と、を備えることを特徴とする。
【発明の効果】
【００２２】
開示によれば、複数のサーバを含んで構成されるメッセージシステムにおいて、システムの一部のサーバが障害や処理速度低下に陥った場合でも、システム全体の処理性能低下やサービスの部分停止を回避することを可能にする。
【図面の簡単な説明】
【００２３】
【図１】第一の実施例における概略システム構成を例示するブロック図である。
【図２】メッセージ受信サーバ106またはメッセージ送信サーバ108の構成を例示するブロック図である。
【図３】データストアサーバ107の構成を例示するブロック図である。
【図４】メッセージシステムのメッセージ中継シーケンスの一例を示す。
【図５】メッセージシステムのメッセージ取得シーケンスの一例を示す。
【図６】第二の実施例における概略システム構成を例示するブロック図である。
【発明を実施するための形態】
【００２４】
以下、実施例について図面を参照して説明する。
【００２５】
本実施例では、大量メッセージを処理するメッセージシステムの例として、メッセージの受信機能を持つメッセージ受信サーバと、メッセージを格納する複数のデータストアサーバ（またはキーバリューストア（Key-Value Store),データグリッドなど）と、メッセージの送信機能を持つメッセージ送信サーバと、を含んで構成されるメッセージシステムについて説明する。
【００２６】
データストアサーバは同一のデータを複製し、複数のデータストアサーバで上記同一データを多重に保持することによりデータの永続性を実現する。データストアサーバは、データの格納、更新、削除等の処理を、そのデータを保持する（もしくは保持すべき）複数のデータストアサーバ間で協調して行う。また、本実施例では、データストアサーバはキーと値（バリュー）のペアでデータを管理する、キーバリューストアである。
【００２７】
なお、特許文献１、２の各サーバがサーバの処理状態などの情報を保持する必要がない、すなわちステートレスであるのに対し、本実施例のデータストアサーバは処理状態などの情報を保持する、ステートフルである。ステートフルのサーバは障害時に状態（データ）を引き継ぐなどの処理が必要であり、システムが複雑化するが、可用性が要求されるシステムなどに多く適用されている。
【００２８】
本実施例では、データストアサーバがステートフルである構成上の違いにより、特許文献１、特許文献２に言及されていない、ステートフルなサーバ、高可用システムにおける処理性能低下時の課題およびその解決手法についても述べる。
【００２９】
また、本実施例では大量メッセージの例として、携帯通信キャリアのメールなどのメッセージを対象とする。
【００３０】
図１は、本実施形態のメッセージシステムのシステム構成を示すブロック図である。
【００３１】
本実施の形態のメッセージシステムは、キャリア設備網103内に構成されており、メッセージ受信サーバ106、データストアサーバ107、メッセージ送信サーバ108を備える。
【００３２】
通信端末101は、携帯電話端末やタブレット、PC等のデータ通信可能な端末装置を示し、無線網102を介して、キャリア設備網103内の本実施形態のメッセージシステムと接続している。無線網102は、携帯通信キャリアが管理する無線ネットワークである。キャリア設備網103は、無線網102からの通信をインターネット104、およびメッセージ受信サーバ106へ中継するネットワークおよびネットワーク設備である。無線網102とキャリア設備網103は、本実施例のメッセージ受信サーバ106を管理する携帯通信キャリアによって管理される。
【００３３】
メッセージ転送サーバ105は、MTA（Mail Transfer Agent）とも呼ばれ、インターネット104を経由して、キャリア設備網103内の本実施形態のメッセージシステムと接続し、メッセージ受信サーバ106とメッセージの送受信を行う。メッセージ転送サーバ105は、インターネットプロバイダや、他の携帯通信キャリア等の通信事業者が管理する設備網に設置される。メッセージ転送サーバ105は、メッセージ転送サーバ105を管理する他の通信事業者のメッセージを、メッセージ受信サーバ106へ送信する処理を行う。
【００３４】
本実施形態のメッセージシステムのシステムは、複数のメッセージ受信サーバ106、データストアサーバ107、メッセージ送信サーバ108を含んで構成される。メッセージシステムの論理構成110で示すようにメッセージ受信サーバ106とデータストアサーバ107間、データストアサーバ107とメッセージ送信サーバ108間、複数のデータストアサーバ107間などがメッシュ状に接続される。論理構成110の各サーバは、実際にサーバ装置であってもよいし、仮想マシンであってもよい。
【００３５】
また、論理構成110の各サーバをサーバプログラムとして、同一のサーバ装置上に複数の種類のサーバを配置してもよい。たとえば、メッセージ受信サーバ106とデータストアサーバ107を同一サーバ装置に配置したり、複数のデータストアサーバ107を同一サーバに配置してもよい。本実施例のシステム構成は、図１に限定されること無く、他の構成のメッセージングシステムにも適用可能である。
【００３６】
本実施形態のメッセージシステムのシステムは、通信端末101やメッセージ転送サーバ105から受信したメッセージを一度キューと呼ばれる格納領域に蓄積してから順次送信処理を行う、いわゆるストアアンドフォワード方式で中継することにより、システムへ流入する情報量の平準化や、ユーザを待たせない即時応答などを実現する。
【００３７】
本実施形態では、メッセージの受信処理をメッセージ受信サーバ106を担当し、キューの保持をデータストアサーバ107が担当し、メッセージの送信処理をメッセージ送信サーバ108が担当する。
【００３８】
メッセージ受信サーバ106は、通信端末101やメッセージ転送サーバ105から受信したメッセージをデータストアサーバ107へ格納するする処理を行う。
【００３９】
メッセージ送信サーバ108は、データストアサーバ107に格納されたメッセージを取得し、メッセージ転送サーバ105などメッセージの宛先サーバ、またはメッセージを宛先サーバへ中継するサーバに送信する。
【００４０】
データストアサーバ107は、キーと値（バリュー）のペアでデータを管理し、複数のデータストアサーバ107で同一のデータ（キーとバリュー）を多重に保持し、メッセージ受信サーバ106やメッセージ送信サーバ108から要求されたデータの処理を行う。
【００４１】
なお、本実施例では携帯通信キャリアのメッセージシステムであり、上記以外に認証処理、課金処理等、メッセージの変換処理、輻輳制御などの処理を、メッセージ受信サーバ106、データストアサーバ107、およびメッセージ送信サーバ108のいずれかが行ってもよい。
【００４２】
本実施例では、メッセージの送信経路が順に通信端末101、メッセージ受信サーバ106、データストアサーバ107、メッセージ送信サーバ108であるシーケンスを例として説明するが、これに限定されること無く、他のシーケンスにも適用可能である。また、本実施例で開示するメッセージングシステムの適応範囲は、メールやショートメッセージに限定されることなく、無線網102に接続されたセンサ、車、メータなどのデバイスや送信するメッセージ（もしくはデータ）に適用可能である。また、本実施例は無線網102の代わりに有線網やスマートグリッドなどのネットワーク形態にも適用可能である。
【００４３】
図２は、メッセージ受信サーバ106、メッセージ送信サーバ108を実現する情報処理装置のハードウェア構成である。メッセージ受信サーバ106または、メッセージ送信サーバ108を実現する情報処理装置は、プロセッサ202と、揮発性メモリ207と、不揮発性の記憶部であるディスク209と、キャリア設備網103にデータを送受信するための入出力回路インタフェイス203と、これらを接続するバスなどの内部通信線と、を含んで構成される。なお、障害時の影響を低減するために、入出回路インターフェイス203を、２つ以上のネットワークに接続する構成にしても良い。
【００４４】
揮発性メモリ207は、メッセージ処理プログラム204と、データ群205を備えている。メッセージ処理プログラム204には、複数のデータストアサーバ107へメッセージ（データ）を分散して格納する処理などを行う分散処理部210と、メッセージの処理を実現する各種制御プログラムなどが含まれ、これらがプロセッサ202により実行される。本実施例では、メッセージ処理プログラム204の内容は、メッセージ受信サーバ106とメッセージ送信サーバ108では異なるが、メッセージ処理プログラム204にメッセージ受信サーバ106とメッセージ送信サーバ108の両方機能を備えた構成も可能である。
【００４５】
メッセージ処理プログラム204は、予め、揮発性メモリ207またはディスク209に格納されていてもよいし、図示していない着脱可能な記憶媒体または通信媒体（すなわちネットワークまたはそれを伝播するデジタル信号や搬送波）を介して、揮発性メモリ207またはディスク209に導入されてもよい。ディスク209には、さらにメッセージ処理プログラム204が出力したログやメッセージ処理プログラム204の設定ファイル等のデータを格納する。
【００４６】
以下説明する内容は、分散処理部210に含まれるプログラムがプロセッサ202により実行されることにより、メッセージ受信サーバ106または、メッセージ送信サーバ108の機能として実現されるものである。なお、本実施例では、メッセージ処理プログラム204が処理のために使用するデータ群205を機能的な観点から、メッセージ処理プログラム204とは別の構成要素として図示しているが、上記データ群205はメッセージ処理プログラム204に含まれてもよい。
【００４７】
データ群205は、データストアサーバ動作設定情報221、データストアサーバ構成情報222、データストアサーバ合議情報223、処理性能低下判定条件231、リソース規制値情報232、仮想キュー情報233、分散方式情報234、取得方式情報235、データストアサーバ状態情報250を含んで構成される。
【００４８】
データストアサーバ動作設定情報221には、複数のデータストアサーバ107間でのデータの保持方法やデータストアサーバ107の動作設定等の情報が格納される。たとえば、何台のデータストアサーバ107でデータを保持するかの情報（データの多重度）、複数のデータストアサーバ107間でデータをどのように保持したり、管理したりするかの方式（データ保持方式）、データストアサーバ107が受信した要求に従って処理するときの動作（要求別動作設定）を含んで構成される。
【００４９】
データ保持方式には、複数のデータストアサーバ107間でデータを同一の状態で保持する一貫性保持型と、データの状態が不一致していることを許容する代わりにデータストアサーバ107のサービス継続性を優先する方式（可用性保持型）などが設定される。要求別動作設定には、データの格納、取得、更新、削除、比較といった要求毎にデータストアサーバ107が何台のデータストアサーバ107と連携して、何台以上のデータストアサーバ107の処理が成功した場合を要求に対して成功と判定する情報が格納される。
【００５０】
以下、本実施例では、データストアサーバ動作設定情報221のデータの多重度が３であり、一貫性保持型である場合について説明する。また、要求別動作設定では、格納、更新、削除要求の設定には３台のデータストアサーバ107にデータを格納したことをもって格納成功とする設定と、取得要求の設定には1台のデータストアサーバ107からデータを取得することを設定する。ただし、データの多重度は３以外でもよいし、また可用性保持型のシステムを構成することも可能である。
【００５１】
データストアサーバ動作設定情報221により、分散処理部210はデータストアサーバ107の種類や処理形態に適応して、後述するデータストアサーバ107の処理性能低下判定処理などを実現できる。
【００５２】
データストアサーバ構成情報222には、分散処理部210がデータストアサーバ107から定期的に取得するデータストアサーバ107間の相関情報および稼動情報を格納する。データストアサーバ107間の相関情報とは、メッセージシステム内のどのデータストアサーバ107がどのキーのデータを保持しているかの情報（以下、キーレンジ担当情報）と、そのキーレンジ担当情報に対してデータストアサーバ107がマスタであるかスレーブであるかという、データストアサーバ107間の連携処理に係る情報である。相関情報は後述する合議情報に基づき生成しても良い。
【００５３】
稼動情報は、各データストアサーバ107の稼動情報に加え、相関情報に含まれるキーレンジのうち、どのキーレンジがデータを現在何多重度で保持しているかの情報（たとえばデータ多重度が３でもそのデータを保持するデータストアサーバ107の一台が障害等により停止すれば、データ多重度は２となる）を保持する。
【００５４】
データストアサーバ合議情報223は、データストアサーバ107同士が交換するデータストアサーバに係る情報に基づき、例えばゴシッププロトコルと言われる方法で決定される情報であり、データストアサーバ構成情報222と同様に、データストアサーバ107の稼動状況や相関情報を含む。分散処理部210は、データストアサーバ107が定期的にマルチキャストなどで送信しているデータストアサーバ構成情報を取得して、データストアサーバ構成情報222を更新する。
【００５５】
分散処理部210は、データストアサーバ合議情報223か、データストアサーバ構成情報222をどちらかを用いて、後述するデータストアサーバ107の処理性能低下を判定するが、両方を利用してもよい。以下、本実施例ではデータストアサーバ構成情報222を利用する。
【００５６】
処理性能低下判定条件231は、分散処理部210がデータストアサーバ107の処理性能低下を判定するための条件（閾値）であり、格納要求の処理性能低下判定条件240A、取得要求の処理性能低下判定条件240Bなど、要求種別毎に条件を保持する。処理性能低下判定条件231は、要求種別毎に、処理経過時間241、接続数242、同時処理数243、送信待ち数244、応答時間245を含んで構成される。
【００５７】
分散処理部210は、データストアサーバ107との通信処理や、データストアサーバ構成情報222から取得する値（判定対象の現在値255（後述する））を処理性能低下判定条件231と比較し、いずれかの値が超えていれば、データストアサーバ107の処理性能が低下していると判定する。処理性能低下判定条件231の各パラメータは、平均値と比較される閾値であり、分散処理部210が処理性能低下判定と判定するための最低必要回数の情報を含む。
【００５８】
処理経過時間241には、分散処理部210がデータストアサーバ107へ要求を送信してからの経過時間の閾値が記述される。接続数242には、分散処理部210がデータストアサーバ107に接続するコネクション数の閾値が記述される。
【００５９】
同時処理数243には、分散処理部210が同時実行している処理数や、プロセス数、スレッド数の閾値が記述される。
【００６０】
送信待ち数244には、分散処理部210のデータストアサーバ107への送信待ちのメッセージ数の閾値が記述される。
【００６１】
応答時間245は、分散処理部210がデータストアサーバ107へ要求を送信して応答を受信した時間（平均値）の閾値である。
【００６２】
ここで処理経過時間241は、実績値である応答時間245と異なり、分散処理部210がデータストアサーバ107から応答を受信していない、現在処理中の要求を送信してからの経過時間であり、応答時間より短い時間に設定される。一般的にメッセージを処理するサーバは、外部サーバにメッセージを送信し応答を待ち続ける応答タイムアウト値を持ち、受信した時点で応答タイムアウト以内であれば正常に応答を受信して応答時間245に追加、応答タイムアウト以降に受信した場合は応答をエラーと判定する。
【００６３】
本実施例が想定するのは、応答時間245が数ミリ秒から数秒以下オーダー、上記応答タイムアウトが数秒から数分のオーダーで設定されるシステムであって、この場合、処理経過時間241は数マイクロ秒から1秒以下のオーダーで設定されることが望ましい。
【００６４】
また、処理性能低下判定条件231が要求種別に条件を保持するのは、データストアサーバの動作設定情報221により、格納、取得などの要求種別毎にデータストアサーバ107の連携処理、処理性能低下する要因、データストアサーバ107の稼働状況により要求種別で実行できるか否かなどが異なるためである。
【００６５】
リソース規制値情報232は、分散処理部210がデータストアサーバ107へ要求を送信するためのリソースを保護するための規制値であり、分散処理部210がデータストアサーバ107の要求で、同時実行しているプロセス数、コネクション数、分散処理部210への送信待ち要求数等の規制値である。リソース規制値情報232は、通常時と、処理性能低下判定時などの状態別に複数の値を保持する。分散処理部210は、リソース規制値情報232により、処理性能低下したデータストアサーバ107への要求処理で全リソースを使い切ってしまうことを回避する。
【００６６】
仮想キュー情報233には、複数のデータストアサーバ107の各々が保持するキューデータ340（以下、分散キューということがある）をメッセージシステムで仮想キューとして一元管理するための管理用の情報が格納される。
【００６７】
分散方式情報234には、分散処理部210がデータストアサーバ107の保持する分散キューへの分散方式（格納時の振り分け方式）の情報が格納される。本実施例では、システム全体でメッセージの宛先別に仮想キューを備え、たとえば分散処理部210は同一の宛先のメッセージであれば、同一の仮想キューを選択する。仮想キューの実際のデータは、データストアサーバ107の分散キューに格納され、ひとつの仮想キューに対し複数の分散キューが対応する。言い換えれば、仮想キューは複数の分散キューを含んで構成される。仮想キュー情報233には、各仮想キューとそれに対応する複数の分散キューの対応情報、および複数の分散キューの情報を一元管理するための情報が格納される。
【００６８】
仮想キュー情報233は、メッセージシステム内の複数の受信サーバと送信サーバが各々備える分散処理部210で共有される。上記共有の仕組みは、最初にメッセージシステムの複数の分散処理部210のうちどれか１つが仮想キュー情報233を更新し、データストアサーバ107に仮想キュー情報331として格納する。他の分散処理部210は、定期的に仮想キュー情報331をデータストアサーバ107から取得し、自サーバ内の仮想キュー情報233を更新する。なお、本実施例のメッセージシステムは、複数の種類の仮想キューを保持する。
【００６９】
分散方式情報234には、キーのハッシュ計算による分散方式、ラウンドロビン、リーストコネクションなどの分散方式が格納される。また、分散方式情報234は処理性能低下判定処理によりデータストアサーバ107の処理性能低下が発生した場合に、動的に変更されてもよい。
【００７０】
取得方式情報235には、メッセージ受信サーバ106またはメッセージ送信サーバ108が、メッセージを取得可能なデータストアサーバ107（データストアサーバ状態情報250）を特定する情報と、その取得優先度が格納される（詳細は図５で説明する）。具体的には、取得可能な全台または一部のデータストアサーバ107から取得することを設定したり、設定した複数台のどのデータストアサーバ107から優先して取得するか、例えば、データストアサーバ107の保持するメッセージ数が多いところから優先して取得する、といった情報を設定する。
【００７１】
なお、取得方式情報235には、データストアサーバ107の代わりに、データストアサーバ107の保持する分散キュー（分散キューデータ340）と、その分散キュー毎の取得優先度を設定してもよい。
【００７２】
データストアサーバ状態情報250は、担当キーレンジ情報251、稼動サーバ252、稼動情報253、分散キューリスト254、判定対象の現在値255、データ多重度256を含んで構成される。
【００７３】
担当キーレンジ情報251には、各データストアサーバ107が保持するデータのキーの範囲が記述され、稼動サーバ252には上記キーの範囲を現在担当しているデータストアサーバ107（マスタ、スレーブを含む複数台）のIPアドレスが記述される。
【００７４】
担当キーレンジ情報251、稼動サーバ252は、分散処理部210がデータストアサーバ構成情報222を元に作成され、データストアサーバ107の障害や構成変更時には動的に変更される。
【００７５】
稼動情報253には、マスタ、スレーブを含めた複数のデータストアサーバ107のサーバ状態が格納される。分散キューリスト254には、担当キーレンジ情報251の範囲に含まれる分散キューのリストが記述され、データストアサーバ107の障害や構成変更時には動的に変更される。
【００７６】
分散処理部210は、通常時において、仮想キュー情報233に対応する分散キューリスト254がある、データストアサーバ状態情報250を選択する。
【００７７】
判定対象の現在値255には、処理性能低下判定条件231の対象であるパラメータが記述され、処理経過時間241接続数242、同時処理243、送信待ち数244、平均応答時間245に対応する現在値が格納される。
【００７８】
データ多重度256は、担当キーレンジ情報251の範囲に含まれるデータ（分散キュー）の多重度である。データ多重度256は、通常は担当キーレンジ情報251の範囲に含まれるデータを保持しているデータストアサーバ107の稼動台数と一致するが、データストアサーバ107が仮想環境等で実行されている場合は、実環境のデータストアサーバ107の稼動台数を格納する。
【００７９】
データ多重度256により、分散処理部210はデータの多重度をデータストアサーバ107の設定とは別に保持することが可能になり、メッセージ受信サーバ106のアプリケーションの都合や仮想環境などで、データの多重度に対する柔軟な制御をおこなうことを可能にする（一般的にデータストアサーバ107がメッセージ毎にデータ多重度に対する制御が行えない）。
【００８０】
なお、本実施例では、データストアサーバ状態情報250を担当キーレンジ情報251毎に作成しているが、これに限定されず、たとえば分散キュー毎にデータストアサーバ状態情報250を作成してもよい。
【００８１】
図３は、データストアサーバ107を実現する情報処理装置のハードウェア構成である。データストアサーバ107を実現する情報処理装置は、プロセッサ302と、揮発性メモリ307と、不揮発性の記憶部であるディスク309と、キャリア設備網103にデータを送受信するための入出力回路インタフェイス303と、これらを接続するバスなどの内部通信線と、を含んで構成される。
【００８２】
揮発性メモリ307またはディスク309は、データストアサーバプログラム304を格納しており、また、データ群305を備えている。データストアサーバプログラム304には、メッセージの処理を実現する各種制御プログラムが含まれ、これらの制御プログラムがプロセッサ302により実行される。
【００８３】
データストアサーバプログラム304は、予め、揮発性メモリ207またはディスク209に格納されていてもよいし、図示していない着脱可能な記憶媒体または通信媒体（すなわちネットワークまたはそれを伝播するデジタル信号や搬送波）を介して、揮発性メモリ207またはディスク209に導入されてもよい。ディスク309には、さらに、データストアサーバプログラム304が出力したログやデータストアサーバプログラム304の設定ファイル等のデータを格納する。
【００８４】
以下説明する内容は、データストアサーバプログラム304に含まれる各種制御プログラムがプロセッサ302により実行されることにより、データストアサーバ107の機能として実現されるものである。
【００８５】
データ群305は、データストアサーバ構成情報321、データストアサーバ合議情報322、データストア領域330を含んで構成される。
【００８６】
データストアサーバ構成情報321は、図２におけるデータストアサーバ構成情報222と同じ内容を含んで構成される。ただし、データストアサーバ構成情報321はデータストアサーバ107が作成して利用するものであり、データストアサーバ構成情報222とデータ形式は異なってもよい。同様にデータストアサーバ合議情報322は、図２におけるデータストアサーバ合議情報222と同じ内容を含んで構成される。データストアサーバプログラム304は、他のデータストアサーバプログラム304間でデータストアサーバ合議情報222を交換し、データストアサーバ構成情報221を作成する。
【００８７】
データストア領域330は、データストアサーバ107がメッセージ受信サーバ106（の分散処理部210）から受信したデータ（格納要求）を格納する領域である。本実施例では、データストアサーバ107はキーバリューストアであるため、データストア330に格納される各データにはそのデータ（バリュー）に対応するキーも同時に格納されているが、本実施例では簡略化のためデータ（バリュー）のみ表記し、キーについては省略する。
【００８８】
なお、321、322、330の各情報を不揮発性記憶部308に格納してもデータストアサーバプログラム304の機能は実現可能である。
【００８９】
データストア330は、仮想キュー情報331と、複数の分散キューデータ340を含んで構成される。
【００９０】
仮想キュー情報331は、仮想キュー情報233と同一の情報であり、複数の分散処理部210がメッセージシステム全体で仮想キューの情報を共有するために、データストアサーバ107に保持する。
【００９１】
分散キューデータ340（データストア330）は、複数のデータストアサーバ107に多重に保持されている。分散キューデータ340は、１つの分散キュー管理情報341と、複数のメッセージデータ342とメッセージ関連情報343を含んで構成される。
【００９２】
分散キュー管理情報341は、分散キューデータ340に含まれる複数のメッセージデータ342とメッセージ関連情報343を管理するための情報であり、この情報によりデータストアサーバプログラム304はキューとしての機能を実現できる。分散キュー管理情報341には、分散キューデータ340の識別子、分散キューデータ340がマスタであるかスレーブであるかの情報、メッセージの格納順や取り出し順などの処理順序の情報、分散キューデータ340に格納できる最大のメッセージデータ数（または、分散キューデータ340が利用できるデータサイズ）、現在の分散キューデータ340に格納されているメッセージデータ数および利用しているデータサイズ、複数の分散処理部210からメッセージを１つずつ取り出すための排他制御などの情報を含んで構成する。
【００９３】
なお、上記排他制御により、ある分散処理部210取り出されたメッセージは、他の分散処理部210から一定時間メッセージを取り出せないようになり、１つのメッセージの多重処理を防ぐことができる。
【００９４】
メッセージデータ342は、メッセージ受信サーバ106から受信し、格納したメッセージのデータである。メッセージ関連情報343は、メッセージデータ342に関連する付加情報などの情報である。メッセージ受信サーバ106または、メッセージ送信サーバ108はメッセージ関連情報343を利用して、メッセージ処理を行う。
【００９５】
図４はメッセージシステムのメッセージ中継シーケンスの一例を示す図である。
【００９６】
ステップ401からステップ442は、メッセージ受信サーバ106のメッセージ受信のシーケンスを示し、ステップ405においてデータストアサーバ107aの処理性能が低下した例を示す。
【００９７】
最初に、メッセージ受信サーバ106は、通信端末101が発信したメッセージを受信し（ステップ401）、メッセージの宛先と仮想キュー情報233から格納する仮想キューを選択し、分散方式情報234に従い、上記仮想キューに対応する分散キューを分散キューリスト254に含む、データストアサーバ状態情報250を選択し（ステップ402）、メッセージ格納要求をデータストアサーバ107aに送信する（ステップ403）。データストアサーバ107aは、データストアサーバ107bを含む複数のデータストアサーバ107間で受信したメッセージ（データ）を多重化するため、格納要求の処理連携（ステップ404）を行う。次にステップ405でデータストアサーバ107aで処理性能低下が発生したとする。このとき、メッセージ受信サーバ106はメッセージ格納要求403に対する応答待ちの状態である。
【００９８】
次に、メッセージ受信サーバ106は、通信端末101が発信した別のメッセージを受信し（ステップ411）、分散先（格納先）を選択し（ステップ412）、データストアサーバ107へメッセージ格納要求を送信する（ステップ413）。ここで、メッセージ受信サーバ106は処理性能低下405により応答を送信できなくなっている状態になっているとする。
【００９９】
ステップ413後、メッセージ受信サーバ106は通信端末101からメッセージを受信（ステップ431）すると、ステップ433の処理結果を反映したデータストアサーバ状態情報250を分散先の選択（ステップ432）を行う。ステップ432において、メッセージ受信サーバ106の分散処理部210は、メッセージの宛先と仮想キュー情報233から格納する仮想キューを選択し、分散方式情報234に従い、上記仮想キューに対応する分散キューを分散キューリスト254に含むデータストアサーバ107aを選択する。
【０１００】
次にメッセージ受信サーバ106は、処理性能低下判定処理433を行う。ステップ433は、メッセージ受信サーバ106分散処理部210が定期時間毎の処理性能低下判定処理において「処理性能低下」と判定する例である。
【０１０１】
なお、図４において処理性能低下判定処理は、分散処理部210がデータストアサーバ107へ要求を送信する直前のタイミング（ステップ403、ステップ413、ステップ452、ステップ456）と、分散処理部210がデータストアサーバ107から応答を受信したタイミング（ステップ435、ステップ441、ステップ453）と、ミリ秒オーダーの定期時間毎にチェックで行われているが、「処理性能低下」と判定されていないため、省略している。
【０１０２】
分散処理部210は、処理性能低下405直後のメッセージ格納要求413前にも処理性能判定処理を行っているが、処理性能低下判定条件231に含まれるパラメータは平均値（または最低判定回数を超過していない）として比較して「処理性能低下」と判定しなかったとする。
【０１０３】
ステップ 433において、メッセージ受信サーバ106の分散処理部210は以下の処理を行う。最初にメッセージ受信サーバ106の分散処理部210は、データストアサーバ107aのデータストアサーバ状態情報250の判定対象の現在値255と、処理性能低下判定条件231を比較して処理性能低下判定を行う（ステップ433）。
【０１０４】
具体的には、メッセージ受信サーバ106の分散処理部210は、判定対象の現在値255に格納されている、各パラメータが処理性能低下判定条件231内の対応するパラメータの閾値を超過しているか判定する。
【０１０５】
ステップ433で利用する処理性能低下判定条件231は、格納要求種別の設定であり、以下ステップ433では、明示しないが格納要求の処理性能低下判定条件240Aが利用される。最初に、分散処理部210は、処理経過時間241と、判定対象の現在値255に含まれる処理経過時間の現在値（メッセージ格納要求403、413の処理経過時間の平均値）を比較する。
【０１０６】
次に分散処理部210は接続数242と、判定対象の現在値255に含まれる接続数（コネクション数）の現在値（メッセージ格納要求403、413の２コネクション）を比較する。次に分散処理部210は同時処理数243と、判定対象の現在値255に含まれる同時処理数（分散処理部210のプロセス数）の現在値（メッセージ格納要求403、413の２コネクション）を比較する。次に、分散処理部210は、送信待ち数244と、判定対象の現在値255に含まれるデータストアサーバ107へのメッセージ送信待ち数の現在値を比較する。
【０１０７】
なお、応答時間245に関しては、分散処理部210がデータストアサーバ107から応答を受信したタイミングや、定期時間毎にチェックで処理性能低下判定が行われる。
【０１０８】
分散処理部210は、処理性能低下判定条件231の上記パラメータのいづれか閾値を超過した場合、処理性能低下と判定されたデータストアサーバ状態情報250に対応するデータストアサーバ107（稼動サーバ252のマスタに登録されている）の稼動情報253に「処理性能低下状態」であることを記述し、稼動サーバ252またはデータストアサーバ構成情報222に含まれる、処理性能低下したデータストアサーバ107aと連携するデータストアサーバ107bに対応するデータストアサーバ状態情報250の稼動情報253に「連携先による処理性能低下状態」であることを記述する。
【０１０９】
なお、本発明が対象とする処理性能低下を処理性能低下状態を1秒以下で検出するのは、判定条件231の上記パラメータの単一だけでは検出困難である場合は、上記パラメータの組み合わせにより、「処理性能低下状態」と判定してもよい。その後、分散処理部210は、ステップ432において選択されていたデータストアサーバ107aが「処理性能低下状態」であり、データストアサーバ107ｂが「連携先による処理性能低下状態」であるため、データストアサーバ107cに送信先を変更する。
【０１１０】
なお、データストアサーバ状態情報250の稼動情報253が「処理性能低下状態」を「連携先による処理性能低下状態」は、データストアサーバ107の応答受信時、定期時間毎のチェック、分散処理部210が要求をデータストアサーバ107へ送信するときの処理性能低下判定で、処理性能低下判定条件231の閾値を下回っていれば解除される。
【０１１１】
「処理性能低下状態」または「連携先による処理性能低下状態」であるデータストアサーバ107には、リソース規制値情報232の処理性能低下状態時のパラメータが適用される。図４ではメッセージ受信サーバ106がデータストアサーバ107aに対し、接続数242、同時処理数243などのリソースを消費している。
【０１１２】
通常時は、データストアサーバ107の処理性能を最大化する、接続数242、同時処理数243などのリソースを十分な値が設定されるが、あるデータストアサーバ107の処理性能が低下した場合は逆に分散処理部210のリソースの大部分を処理性能低下中のデータストアサーバ107に消費される可能性がある。そのため、リソース規制値情報232の通常時より低い値である処理性能低下状態時のパラメータを適用することにより、分散処理部210は処理性能低下状態時のリソース保護を実現する。
【０１１３】
次にメッセージ受信サーバ106は、データストアサーバ107cへメッセージ格納要求を送信し（ステップ434）、データストアサーバ107cは受信したメッセージ格納要求に含まれる格納先の分散キューに一致する分散キューデータ340にメッセージデータ342とメッセージ関連情報343を格納し、格納に成功した応答を送信する（ステップ435）（なお、データストアサーバ107ｃは他のデータストアサーバ107との処理連携も行うが、図４では省略）。次にメッセージ受信サーバ106は、メッセージ431に対する正常応答436を通信端末101へ送信し、メッセージ受信のシーケンスを正常終了する。
【０１１４】
ステップ441、442は、ステップ405において処理性能低下していたデータストアサーバ107aが短時間で復帰した場合のメッセージ受信サーバ106の挙動である。メッセージ受信サーバ106は、メッセージ格納要求403が応答タイムアウトするまえに格納に成功した応答441を受信すると処理を続行し、メッセージ401に対する正常応答442を通信端末101へ送信し、メッセージ受信のシーケンスを正常終了する。メッセージ受信サーバ106の分散処理部210は、処理経過時間241等の処理性能低下判定条件231を応答時間245とは別のパラメータを管理するため、応答タイムアウトと、応答タイムアウトより短い値であるデータストアサーバ107間の連携処理タイムアウトの値をネットワーク装置以上に設定できる。
【０１１５】
一方で、従来技術のように、分散処理部210が応答時間245で判定する場合、ステップ403からステップ441間まで処理性能低下を検知できず、分散処理部210が応答タイムアウトで判定する場合でもステップ403から応答タイムアウト経過後まで（ステップ441よりも後）まで検知できない。分散処理部210が応答タイムアウトで判定する場合かつ、応答タイムアウトをステップ403からステップ441間よりも短くした場合、本来なら正常応答であるステップ441をエラーとして扱うことになり、エラーが多発しやすくなるといった問題がある。
【０１１６】
分散処理部210は、処理性能低下判定条件231の処理経過時間241、接続数242、同時処理数243、送信待ち数244により、分散処理部210が現在処理中のメッセージに対し応答が遅延しないか（データストアサーバ107の処理性能が低下しないか）を監視でき、応答タイムアウトの発生確率を低減することによる大量のエラー発生防止や、データストアサーバ107のサービス停止の回避を可能とする。
【０１１７】
ステップ451からステップ456は、メッセージシステムの送信シーケンスである。メッセージ送信サーバ108の分散処理部210は、定期的にメッセージを取得するデータストアサーバ107を選択する（ステップ451）。取得先選択451は、分散先選択403と似た処理であり、分散処理部210が、取得方式情報235に従い、メッセージ送信サーバ108が取得対象にできるデータストアサーバ状態情報250のうち「処理性能低下状態」を含まないデータストアサーバ107cを選択する。なお、ステップ451は、メッセージ送信サーバ108の分散処理部210が他サーバから取得の契機（イベント）を受け付けて処理を開始してもよい。
【０１１８】
次にメッセージ送信サーバ108の分散処理部210は、メッセージ取得要求をデータストアサーバ107cへ送信し（ステップ452）、データストアサーバ107から複数のメッセージを受信する（ステップ453）。ステップ453において、メッセージ送信サーバ108はデータストアサーバ107の複数の分散キューデータ340に格納されているメッセージデータ342およびメッセージ関連情報343をまとめて取得可能である。
【０１１９】
なお、ステップ451〜453は、メッセージシステム内の複数のメッセージ送信サーバ108の分散処理部210により実行されている（詳細は図５で説明する）。メッセージ送信サーバ108の分散処理部は、メッセージシステム内のメッシュ状に接続された複数のデータストアサーバ107へアクセスしメッセージを取得しようとする。１台のデータストアサーバ107は複数のメッセージ送信サーバ108の分散処理部210がメッセージ取得要求452を受信し、メッセージ取得要求452を先着順に処理する。
【０１２０】
次にメッセージ送信サーバ108はステップ453で受信したメッセージをメール転送サーバ105へ送信できるように変換して送信する（ステップ454）。メッセージ受信サーバ106は、メッセージ転送サーバ105から正常応答を受信し（ステップ454）、メッセージの送信成功を確認したら、データストアサーバ107へメッセージ削除要求456を送信し、メッセージ送信シーケンスを終了する。
【０１２１】
図５は、メッセージシステムのメッセージ取得シーケンスの一例を示す図である。図５は、図４で示したメッセージシステムのメッセージ中継シーケンスの一部であり、複数台のメッセージ送信サーバ108の分散処理部210が、取得方式情報235に格納されている内容に従い、データストアサーバ107のキューからメッセージを取得するシーケンスを例示する。
【０１２２】
取得方式情報235で指定するデータストアサーバ107は、サーバやネットワークの状況に応じて、静的または動的に設定する。たとえば、データストアサーバ107とメッセージ送信サーバ108間のネットワーク負荷を下げるために、同一装置上のデータストアサーバ107や、ネットワーク上の距離（例えばホップ数）が近いデータストアサーバ107からの取得を優先するように設定する。
【０１２３】
メッセージ取得時の、複数のキュー、または、複数のデータストアサーバ107と、複数のメッセージ送信サーバ108と、の対応関係は、自由に設定することが可能であり、例えば、ネットワーク負荷、サーバのネットワーク上の距離（例えばホップ数）、サーバ負荷などの条件によって、設定する。また、障害時の状況により、上記対応関係を動的に変更することも可能である。
【０１２４】
最初に、メッセージ送信サーバ108aの分散処理部210は、前述の対応づけられている複数のデータストアサーバ107の中で、優先的に取得することが設定されているデータストアサーバ107aを選択し（ステップ470）、メッセージ取得要求を送信し（ステップ471）、メッセージを取得する（ステップ472）。
【０１２５】
ここで、「優先的な取得が設定される」とは、取得の順番が先である、取得回数が多い、取得の間隔（ステップ471と474の間隔）が短い、一度に取得できるメッセージ数が多い、など、取得に係る一つ以上の項目について、他のメッセージ送信サーバより優先度が高い設定になっている状態をいう。上述の通り、これらの項目は、取得方式情報235に設定されている。
【０１２６】
また、取得方式情報235に相当する、優先度に係る情報を、各データストアサーバ107が保持し、各メッセージ送信サーバ108からの取得に対する応答内容（例えば、応答するメッセージ数）を変更することにより、結果的に、上記優先度を制御しても良い。
【０１２７】
図５では、データストアサーバ107aは、メッセージ送信サーバ108aと同じ装置上にあり、他のメッセージ送信サーバ108b、108cとは異なる装置上にあるというシステム構成を想定する。この場合、装置間のネットワークへの負荷を下げるために、メッセージ送信サーバ108aの分散処理部210は、同じ装置上にあるデータストアサーバ107aから優先的に取得するよう、メッセージ取得要求474の間隔を、他の装置上にある他のメッセージ送信サーバ108よりも短く設定し、優先度を高くすることが望ましい。この場合、優先的な取得対象ではない、優先度が通常のメッセージ送信サーバ108bおよびメッセージ送信サーバ108cの分散処理部210は、データストアサーバ107aから通常の取得間隔でメッセージを取得する。
【０１２８】
上記構成によれば、障害等でメッセージ送信サーバ108aが停止しても、メッセージ送信サーバ108bおよびメッセージ送信サーバ108cの分散処理部210が、データストアサーバ107aのメッセージを取得することにより、メッセージの取得、すなわち、サービス、が停止しないシステムの構築が可能になる。
【０１２９】
また、メッセージ送信サーバ108の分散処理部210に、キューに通常残っているメッセージ数より多いメッセージを取得出来る能力を持たせれば、メッセージ送信サーバ108aが停止して、データストアサーバ107aのキューにメッセージが多量に滞留している場合であっても、新たに設定することなく、取得するメッセージ数が増え、サービスの処理性能（スループット）への影響が少なくできる。
【０１３０】
あるいは、メッセージ送信サーバ108の分散処理部210に対して、一度に取得出来るメッセージ数より少ない数のメッセージを、通常の取得数として設定しておき、必要に応じて、メッセージ送信サーバ108bまたは108cの一度に取得するメッセージ数を上限まで増やしてもよい。このようにすれば、上記例と同様、メッセージ送信サーバ108aが停止していて、データストアサーバ107aのキューにメッセージが多量に滞留している場合でも、サービスの処理性能（スループット）への影響が少なくできる。
【０１３１】
以上の構成により、障害対応専用の処理を実装しなくても、障害発生時にもサービスを安定して提供できるシステムを実現できる。
【０１３２】
次に第二の実施例について説明する。第二の実施例は、データストアサーバ107を異なるネットワークの２つのグループに分けて運用し、メッセージシステムを第一の実施例より高可用にする方法である。第二の実施例と、第一の実施例との相違点を、図６を用いて以下説明する。
【０１３３】
第二の実施例は、図１ではなく、図６に示すシステム構成をとる。データストアサーバ107は107-1グループと、107-2グループで構成され、各グループは異なるネットワーク（異なるネットワーク装置）で接続される。メッセージ受信サーバ106とメッセージ送信サーバ108は、データストアサーバ107-1、107-2グループの各グループを認識し、ネットワークを切り替えてデータストアサーバ107にアクセスする。
【０１３４】
データストアサーバ107は、他のデータストアサーバ107とネットワークを介して連携処理するため、一部のネットワーク装置の障害によりネットワークが分断されると、そのネットワーク（グループ）の全データストアサーバ107がサービス停止の可能性がある。
【０１３５】
そこで、第二の実施例では、異なるネットワークでデータストアサーバ107のグループを複数つくることにより、サービスの全停止を確率を低減し、メッセージ受信サーバ106およびメッセージ送信サーバ108はどちらか稼動しているグループのデータストアサーバ107へアクセスすることによりサービス停止を回避することができる。
【０１３６】
第二の実施例の構成においては、各データストアサーバ107が保持するキューには、担当キーレンジ情報251に示される通り、属するグループ内で、マスタ、または、スレーブ、さらにスレーブが複数の場合マスタになる順序、を設定する。あるデータストアサーバ107に障害が発生した場合、スレーブが設定された他のキューを持つデータストアサーバ107の一つが、グループ内の順序に従い、当該キューについてのマスタとなり（マスタに昇格する、という）、障害になったデータストアサーバ107の代わりに引き続き処理に対応する。
【０１３７】
さらに、第二の実施例の構成において、異なるグループのデータストアサーバ107を組みにして同一サーバ装置上に配置し、グループが異なればマスタへの昇格順序も異なるように設定してもよい。
【０１３８】
例えば、異なるグループのデータストアサーバ107を1つずつ同一装置上に配置する。具体的には、データストアサーバ107-1aとデータストアサーバ107-2aを同一装置に配置し、データストアサーバ107-1bとデータストアサーバ107-2bは、同様に、他の同一装置上に配置する。さらに、一方のデータストアサーバ107のグループと、他のグループの、スレーブとして設定されたキューのマスタへの昇格順序を異なるように（例えば、逆方向に）設定する。
【０１３９】
このように設定すれば、データストアサーバ107-1aとデータストアサーバ107-2aが配置された装置に障害が発生した場合でも、次のマスタとなるのは、それぞれ異なる装置上のデータストアサーバ107内のキューとなるから、負荷の増大を抑えつつ処理を継続することが可能になる。
【０１４０】
第二の実施例では、図２において、分散方式情報234にデータストアサーバ107のグループを認識した情報を追加する。第一の実施例では、分散方式情報234には、キーのハッシュ計算による分散方式、ラウンドロビン、リーストコネクションなどの同一のグループのデータストアサーバ107への分散方式が格納されるが、第二の実施例ではデータストアサーバ107のグループ間の分散方式も格納する。
【０１４１】
たとえば、キーのハッシュ計算により、分散先（格納先）となるデータストアサーバ107のグループと、そのグループ内のどのデータストアサーバ107に分散して格納するか決定する方法や、ラウンドロビンやリーストコネクションにおいて毎回分散先（格納先）となるグループが異なるように格納する方法がある。
【０１４２】
データストアサーバ状態情報250の稼動サーバ252は、データストアサーバ107-1、107-2グループのデータストアサーバ107のIPアドレスが格納される。分散処理部210は、担当キーレンジ情報251と稼動サーバ252を1組にした単位でデータストアサーバ状態情報250を管理し、処理性能判定時には異なるネットワークのデータストアサーバ107（稼動サーバ252）を次に選択することにより、データストアサーバ107のサービス停止を回避することができる。また、分散処理部210はデータストアサーバ構成情報222またはデータストアサーバ合議情報223より、データストアサーバ107のグループ単位での一時的な停止を検出することができ、もう一方のグループに切り替えることが可能である。
【符号の説明】
【０１４３】
101：通信端末、103：キャリア設備網、105：メッセージ転送サーバ、106：メッセージ受信サーバ、107：データストアサーバ、108：メッセージ送信サーバ。
【図１】
2014171413.tif 000003
【図２】
2014171413.tif 000004
【図３】
2014171413.tif 000005
【図４】
2014171413.tif 000006
【図５】
2014171413.tif 000007
【図６】
2014171413.tif 000008
【国際調査報告】
2014171413.tif 000009
2014171413.tif 000010
2014171413.tif 000011