説明

通信方法、通信システム及びサーバ

【課題】既存の通信プロトコルに基づいており、フロー制御に加えて、優先度制御が可能なメッセージング基盤を提供することを目的とする。
【解決手段】複数の計算機間でメッセージを転送する通信システムにおける通信方法であって、計算機はメッセージ送信部又はメッセージ受信部の少なくとも一方を備え、少なくとも一以上の計算機はメッセージ制御部とメッセージ管理部とを備え、メッセージ管理部が、メッセージ制御部を備える前記計算機の負荷又は各メッセージ送信部から送信されたメッセージの送信量若しくはメッセージの送信数の少なくともいずれかを取得するステップと、優先度設定を取得するステップと、各メッセージ送信部が送信可能なメッセージの容量を決定するステップと、各メッセージ送信部が送信可能なメッセージの容量に基づいて、メッセージの送信量を制御するステップと、を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ・ネットワークの分野に関する。具体的には、メッセージング基盤における複数のメッセージ伝達間の優先度制御技術に関する。
【背景技術】
【0002】
コンピュータ・ネットワークを介したアプリケーション間の通信においては、各アプリケーション、アプリケーションが動作する各コンピュータ、通信を仲介するルータ等の各装置が使用できるネットワーク帯域、Central Processing Unit(CPU)の処理能力、及び、メモリ容量等の資源が有限であるため、通信品質が制限される。
【0003】
通信品質としては、信頼性、遅延、及び帯域が考慮される。通信品質のうち、信頼性については、冗長化等によって確保することが可能である。また、通信の遅延については、帯域の制御と、Weighted Fair Queuing(WFQ)とよばれる通信順序の制御によって保証できる(例えば、非特許文献1参照)。
【0004】
帯域については、個々の通信の送信側が送るデータ量が受信側の処理能力を超えないように制御するフロー制御と、複数の通信間において有限な資源を共有するための通信間の優先度制御とが必要となる。従って、フロー制御と優先度制御とによって通信品質は保証される。
【0005】
複数アプリケーション間の通信方式として、疎結合を特徴とするメッセージング基盤が提案されている。メッセージング基盤では、データをメッセージという形で扱い、メッセージの送信者がメッセージ伝達を仲介するメッセージサーバにメッセージを送り、メッセージサーバがメッセージの受信者にメッセージを送るという形で通信を行うことで疎結合を実現している(例えば、特許文献1参照)。
【0006】
すなわち、メッセージング基盤においては、メッセージ送信者からメッセージ受信者へのメッセージの伝達が、メッセージ送信者とメッセージサーバとの間の通信、及びメッセージサーバとメッセージ受信者との間の通信という2種類の通信によって実現される。
【0007】
以下、本明細書では、「伝達」の語は、メッセージ送信者からメッセージ受信者へメッセージを伝えることを表現するものとし、メッセージの「伝達」と他の通信とを区別して扱う。
【0008】
メッセージング基盤は、多数のメッセージ送信者と多数のメッセージ受信者との間でメッセージ伝達を行うため、全てのメッセージ送信者とメッセージ受信者とは定められた通信プロトコルに従ってメッセージサーバと通信する必要がある。
【0009】
また、メッセージサーバは、有限な資源の中でメッセージ送信者からメッセージ受信者への複数のメッセージ伝達を仲介するために、フロー制御と優先度制御とによって通信品質を保証する必要がある。
【0010】
特許文献1では、メッセージ送信者からメッセージ受信者へのメッセージ伝達において、メッセージサーバが、他のメッセージサーバと連携してメッセージを伝達する方法が開示されている。なお、特許文献1においては、メッセージサーバはブローカーという用語で表現されている。
【0011】
また、メッセージング基盤で用いられる通信プロトコルとして、Advanced Message Queuing Protocol(AMQP)が提案されている(例えば、非特許文献2参照)。
【0012】
非特許文献2では、メッセージ送信者及びメッセージ受信者とメッセージサーバとの通信方法、並びに、メッセージサーバの動作が規定されている。そして、メッセージ送信者及びメッセージ受信者とメッセージサーバとの通信方法において、メッセージ送信者からメッセージサーバへのメッセージ送信と、メッセージサーバからメッセージ受信者へのメッセージ送信を制御するフロー制御について規定されている。なお、非特許文献2においては、メッセージサーバはServer、メッセージ送信者はPublisher、メッセージ受信者はConsumerという用語でそれぞれ表現されている。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特表2006−523905号広報
【非特許文献】
【0014】
【非特許文献1】A. Parekh and R. Gallerger, "A generalized processor sharing approach to flow control in integrated services networks: the single node case," IEEE ACM transaction on Networking, 1993.
【非特許文献2】AMQP Workgroup, "AMQP 0-10 Specification"
【発明の概要】
【発明が解決しようとする課題】
【0015】
前述したように、メッセージング基盤においてメッセージ伝達の通信品質を保証するためには、フロー制御と優先度制御とを行う必要がある。
【0016】
しかし、特許文献1に記載されるメッセージサーバにおいては、通信品質について考慮されていない。また、非特許文献2には、通信のフロー制御方法については規定されているが、通信の優先度制御については規定されていない。
【0017】
従って、特許文献1及び非特許文献2を用いたメッセージング基盤では、複数のメッセージ伝達の間で優先度制御ができない。その結果、例えば、あるメッセージ送信者が大量のメッセージを送信した場合に、メッセージ伝達のためのネットワーク帯域又はメッセージサーバのCPUの処理能力などの資源が不足し、他のメッセージ送信者からのメッセージが伝達されづらくなるといった、メッセージ伝達の通信品質を保証できないという問題がある。
【0018】
また、メッセージング基盤においては、全てのメッセージ送信者及びメッセージ受信者が、定められた通信プロトコルに従ってメッセージサーバと通信する必要がある。そのため、既存の通信プロトコルを拡張して優先度制御機能を追加しても、当該拡張部分を解釈できないメッセージ送信者又はメッセージ受信者がひとつでも存在すると、当該メッセージ送信者又はメッセージ受信者に対して優先度制御が行えない。その結果、通信全体の優先度制御も行うことができない。
【0019】
従って、解決されるべき課題は、既存の通信プロトコルに基づいて、フロー制御に加えて、さらに優先度制御が可能なメッセージング基盤を提供することである。
【課題を解決するための手段】
【0020】
本発明の代表的な一例を示せば以下の通りである。すなわち、複数の計算機間でメッセージを転送する通信システムにおける通信方法であって、前記計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続され、他の前記計算機と通信するためのネットワークインタフェースとを備え、前記各計算機は、前記メッセージを送信するためのメッセージ送信部、又は前記メッセージ送信部から送信されたメッセージを受信するためのメッセージ受信部の少なくとも一方を備え、少なくとも一以上の前記計算機は、前記メッセージの伝達を制御するメッセージ制御部と、前記各メッセージ送信部から送信されるメッセージの転送の優先度を制御するメッセージ管理部と、を備え、前記方法は、前記メッセージ管理部が、前記メッセージ制御部を備える前記計算機の負荷、又は、前記各メッセージ送信部から送信されたメッセージの送信量若しくはメッセージの送信数の少なくともいずれかを取得する第1のステップと、前記メッセージ管理部が、前記各メッセージの転送の優先度を制御するための優先度設定を取得する第2のステップと、前記メッセージ管理部が、前記取得された優先度設定と、前記取得された計算機の負荷又は前記取得されたメッセージの送信量とに基づいて、前記各メッセージ送信部が送信可能なメッセージの容量を決定する第3のステップと、前記メッセージ管理部が、前記決定された各メッセージ送信部が送信可能なメッセージの容量を前記各メッセージ送信部に送信する第4のステップと、前記各メッセージ送信部が、前記受信した各メッセージ送信部が送信可能なメッセージの容量に基づいて、前記メッセージの送信量を制御する第5のステップと、を含むことを特徴とする。
【発明の効果】
【0021】
本発明の一実施形態によれば、複数のメッセージの転送の間における優先度制御が可能となる。
【図面の簡単な説明】
【0022】
【図1】本発明の第1の実施形態のメッセージング基盤システム全体の構成例を示すブロック図である。
【図2】本発明第1の実施形態におけるメッセージ基盤システム全体のソフトウェア構成を説明するブロック図である。
【図3】本発明の第1の実施形態のメッセージサーバのソフトウェア構成を説明するブロック図である。
【図4】本発明の第1の実施形態のメッセージサーバにおける受信/配送部の処理を説明するフローチャートである。
【図5】本発明の第1の実施形態のメッセージサーバにおける送信部の処理を説明するフローチャートである。
【図6】本発明の第1の実施形態のメッセージサーバにおけるキュー部の処理を説明するフローチャートである。
【図7】本発明の第1の実施形態のメッセージサーバにおけるクレジット集中管理部の処理を説明するフローチャートである。
【図8】本発明の第1の実施形態のメッセージサーバにおけるクレジット集中管理部が実行する発行クレジット算出処理を説明するフローチャートである。
【図9】本発明の第2の実施形態におけるメッセージング基盤システム全体のソフトウェア構成を説明するブロック図である。
【図10】本発明第2の実施形態のQoS制御部の構成を説明するブロック図である。
【図11】本発明の第2の実施形態のQoS制御部における転送制御部の処理を説明するフローチャートである。
【図12】本発明の第2の実施形態のQoS制御部におけるクレジット集中管理部の処理を説明するフローチャートである。
【図13】本発明の第3の実施形態におけるメッセージ基盤システム全体のソフトウェア構成を説明するブロック図である。
【図14】本発明の第4の実施形態におけるメッセージ基盤システム全体のソフトウェア構成を説明するブロック図である。
【図15】本発明の第5の実施形態におけるメッセージ基盤システム全体のソフトウェア構成を説明するブロック図である。
【図16】本発明の第5の実施形態のQoS制御部に含まれるクレジット集中管理部の処理を説明するフローチャートである。
【図17】本発明の第1の実施形態のサーバ状態情報の一例を示す説明図である。
【図18】本発明の第1の実施形態の優先度情報の一例を示す説明図である。
【図19】本発明の第1の実施形態の配送状態の一例を示す説明図である。
【図20】本発明の第1の実施形態のキュー状態の一例を示す説明図である。
【図21】本発明の第1の実施形態のクレジット管理情報の一例を示す説明図である。
【図22】クレジット集中管理部を備えていないメッセージサーバのソフトウェア構成を説明するブロック図である。
【発明を実施するための形態】
【0023】
以下、本発明を実施するための最良の形態を図に即して説明する。
【0024】
(第1の実施形態)
図1は、本発明の第1の実施形態のメッセージング基盤システム全体の構成例を示すブロック図である。
【0025】
本実施形態のメッセージング基盤システムは、メッセージサーバ装置101、メッセージクライアント装置102及びメッセージクライアント装置103の三つの計算機を備え、ネットワーク104を介して互いに接続される。
【0026】
本実施形態では、メッセージクライアント装置102からメッセージクライアント装置103に情報を適切に伝達することを目的とする。情報はメッセージという単位で扱われる。
【0027】
まず、メッセージクライアント装置102は、メッセージクライアント装置103に送信する情報をメッセージとして、ネットワーク104を介してメッセージサーバ装置101に送信する。
【0028】
メッセージサーバ装置101は、メッセージクライアント装置102から受信したメッセージに対して、必要な場合は蓄積又は変換を実行した後、ネットワーク104を介してメッセージクライアント装置103に送信する。
【0029】
以上の処理によって、メッセージクライアント装置103は、メッセージクライアント装置102からのメッセージを受信し、情報の伝達が完了する。
【0030】
メッセージクライアント装置102からメッセージクライアント装置103への情報の伝達において、メッセージサーバ装置101が仲介することによって、メッセージサーバ装置101が情報伝達を制御することが可能となり、ユーザの要求に応じた通信品質保証、メッセージクライアント装置102、103の性質若しくは状態に合わせた通信、又は、送信先のメッセージクライアント装置を変更するなどの柔軟な情報伝達が可能となる。
【0031】
本実施形態では、前述した情報伝達を実現するため、メッセージサーバ装置101、メッセージクライアント装置102及びメッセージクライアント装置103の各計算機上でプログラムが実行される。各計算機は以下のようなハードウェア構成をとる。
【0032】
メッセージサーバ装置101は、ネットワーク104を介して、メッセージクライアント装置102及びメッセージクライアント装置103と通信する。
【0033】
メッセージサーバ装置101は、CPU105、記憶装置106、入出力装置107及びネットワークインタフェース108を備え、共通バス109を介して互いに接続される。
【0034】
CPU105は、中央演算装置(Central Processing Unit)であり、記憶装置106上に展開されたプログラムを実行する。CPU105が記憶装置106上に展開されたプログラムを実行することによって、メッセージサーバ装置101が備える機能を実現できる。
【0035】
記憶装置106は、CPU105によって実行されるプログラム並びに当該プログラムが実行されることによって作成されるデータ及び設定を格納する。記憶装置106は、例えば、メモリ、ハードディスク、若しくは光ディスク等のデータを記憶できる装置(遠隔地に設置され、ネットワーク104を介して通信される装置を含む)、又はこれらを組み合わせたものが考えられる。
【0036】
本実施形態では、記憶装置106にはプログラムであるメッセージサーバ120が展開され、CPU105によって実行される。また、記憶装置106は、サーバ状態121、優先度情報122、配送状態123、キュー状態124、及びクレジット管理情報125が格納される。前述したデータはメッセージサーバ120によって作成された情報であり、詳細については図17〜図21を用いて後述する。なお、記憶装置106には、メッセージサーバ120によって作成された、他のデータが格納されていてもよい。
【0037】
入出力装置107は、メッセージサーバ装置101に対して情報の入出力を行う装置である。入出力装置107は、例えば、スイッチ、キーボード、マウス、マイクロホン、ビデオカメラ、ディスプレイ、又はスピーカなど機器が考えられる。また、入出力装置107には、信号ケーブル又は電波及び赤外線等の無線を介して行うシリアル通信などの通信によるものも含まれる。メッセージサーバ装置101は、入出力装置107によって、ユーザ又は管理者からの指示を受けたり、結果を出力したりすることが可能となる。
【0038】
ネットワークインタフェース108は、ネットワーク104を介して他の計算機と通信するための装置であり、例えばイーサネット(登録商標、以下同じ)カードなどが考えられる。計算機間の通信は、CPU105の指示に従ってネットワークインタフェース108を通して行われる。
【0039】
ただし、他の機器と通信が可能であればよいため、通信方法はイーサネットに限らず、例えば、シリアル通信などが考えられる。イーサネット以外の通信方法を用いることによって、消費電力を減らしたり、通信速度を上げたり、又は情報伝達の安全性を向上したりできる。
【0040】
また、共通バス109は、メッセージサーバ装置101の各構成要素間の通信を行うためのものであるが、本発明ではこれに限定されない。各構成要素間で必要な通信を行えるようになっていれば、共通バスを用いる以外の方法によって接続されてもよい。例えば、各構成要素を直接接続することによって、要素間の接続を最適化し、処理に必要な消費電力を減らしたり、処理効率を上げたりすることが可能となる。
【0041】
メッセージクライアント装置102は、ネットワーク104を介して、メッセージサーバ装置101と通信する。本実施形態では、メッセージクライアント装置102は、メッセージサーバ装置101にメッセージを送信する。
【0042】
メッセージクライアント装置102は、CPU110、記憶装置111、入出力装置112及びネットワークインタフェース113を備え、共通バス114を介して互いに接続される。
【0043】
CPU110は、中央演算装置(Central Processing Unit)であり、記憶装置111上に展開されたプログラムを実行する。CPU110が記憶装置111上に展開されたプログラムを実行することによって、メッセージクライアント装置102が備える機能を実現できる。
【0044】
記憶装置111は、CPU110によって実行されるプログラム並びに当該プログラムが実行されることによって作成されるデータ及び設定を格納する。記憶装置111は、例えば、メモリ、ハードディスク、若しくは光ディスク等のデータを記憶できる装置(遠隔地に設置され、ネットワーク104を介して通信される装置を含む)、又はこれらを組み合わせたものが考えられる。
【0045】
本実施形態では、記憶装置111にはプログラムであるメッセージ送信者126が展開され、CPU110によって実行される。なお、記憶装置111には図示しないデータが格納されていてもよい。
【0046】
入出力装置112は、メッセージクライアント装置102に対して情報の入出力を行う装置である。入出力装置112は、例えば、スイッチ、キーボード、マウス、マイクロホン、ビデオカメラ、ディスプレイ、又はスピーカなど機器が考えられる。また、入出力装置112には、信号ケーブル又は電波及び赤外線等の無線を介して行うシリアル通信などの通信によるものも含まれる。メッセージクライアント装置102は、入出力装置112によって、ユーザ又は管理者からの指示を受けたり、結果を出力したりすることが可能となる。
【0047】
ネットワークインタフェース113は、ネットワーク104を介して他の計算機と通信するための装置であり、例えばイーサネットカードなどが考えられる。計算機間の通信は、CPU110の指示に従ってネットワークインタフェース113を通して行われる。
【0048】
ただし、他の機器と通信が可能であればよいため、通信方法はイーサネットに限らず、例えば、シリアル通信などが考えられる。イーサネット以外の通信方法を用いることによって、消費電力を減らしたり、通信速度を上げたり、又は情報伝達の安全性を向上したりできる。
【0049】
メッセージクライアント装置103は、ネットワーク104を介して、メッセージサーバ装置101と通信する。本実施形態では、メッセージクライアント装置103は、メッセージサーバ装置101からメッセージを受信する。
【0050】
メッセージクライアント装置103は、CPU115、記憶装置116、入出力装置117及びネットワークインタフェース118を備え、共通バス119を介して互いに接続される。
【0051】
CPU115は、中央演算装置(Central Processing Unit)であり、記憶装置116上に展開されたプログラムを実行する。CPU115が記憶装置116上に展開されたプログラムを実行することによって、メッセージクライアント装置103が備える機能を実現できる。
【0052】
記憶装置116は、CPU115によって実行されるプログラム並びに当該プログラムが実行されることによって作成されるデータ及び設定を格納する。記憶装置116は、例えば、メモリ、ハードディスク、若しくは光ディスク等のデータを記憶できる装置(遠隔地に設置され、ネットワーク104を介して通信される装置を含む)、又はこれらを組み合わせたものが考えられる。
【0053】
本実施形態では、記憶装置116にはプログラムであるメッセージ受信者127が展開され、CPU115によって実行される。なお、記憶装置116には図示しないデータが格納されていてもよい。
【0054】
入出力装置117は、メッセージクライアント装置103に対して情報の入出力を行う装置である。入出力装置117は、例えば、スイッチ、キーボード、マウス、マイクロホン、ビデオカメラ、ディスプレイ、若しくはスピーカなど機器が考えられる。また、入出力装置117には、信号ケーブル若しくは電波及び赤外線等の無線を介して行うシリアル通信などの通信によるものも含まれる。メッセージクライアント装置103は、入出力装置117によって、ユーザ又は管理者からの指示を受けたり、結果を出力したりすることが可能となる。
【0055】
ネットワークインタフェース118は、ネットワーク104を介して他の計算機と通信するための装置であり、例えばイーサネットカードなどが考えられる。計算機間の通信は、CPU115の指示に従ってネットワークインタフェース118を通して行われる。
【0056】
ただし、他の機器と通信が可能であればよいため、通信方法はイーサネットに限らず、例えば、シリアル通信などが考えられる。イーサネット以外の通信方法を用いることによって、消費電力を減らしたり、通信速度を上げたり、又は情報伝達の安全性を向上したりできる。
【0057】
なお、本実施形態では、三つの計算機から構成されるメッセージング基盤システムを例に説明するが、本発明はこれに限定されない。各計算機が備える機能は各計算機上で実行されるプログラムによって実現されるため、計算機の数は一以上であればよい。
【0058】
例えば、メッセージ基盤システムがメッセージサーバ装置101のみを備える構成である場合、メッセージサーバ装置101、メッセージクライアント装置102、及びメッセージクライアント装置103の機能を備えるプログラムをメッセージサーバ装置101上で実行し、管理しやすくしてもよい。また、メッセージクライアント装置の数を増やしてより大きな計算資源を利用することも可能である。
【0059】
また、本実施形態では、メッセージサーバ装置101、メッセージクライアント装置102、及びメッセージクライアント装置103はそれぞれ単一のCPUを備える構成で説明したが、それぞれの装置が物理的または論理的に複数のCPUを搭載していてもよい。各計算機の機能はプログラムがCPUによって実行されることで実現されているが、実現される機能自体はプログラムが実行されるCPUの個数には依存しないためである。また、各装置に搭載されるネットワークインタフェース、入出力装置、記憶装置の個数についても、同様にそれぞれ1つに限るものではない。
【0060】
また、本実施形態では、記憶装置106、記憶装置111及び記憶装置116に格納されるプログラムによって実現される機能のうち、一部または全部の機能を、ハードウェアとして実装してもよい。ハードウェアとして実装されることによって、例えば、処理の高速化及び低消費電力化が可能となる。
【0061】
また、仮想マシンのように、当該ハードウェアが備える機能をプログラムとして実現してもよい。ハードウェアが備える機能をプログラムとして実現することによって、例えば、設置スペースを削減したり、管理を単純化したりできる。
【0062】
また、プログラムによって実現される機能の構成は、後述する構成(図2及び図3参照)に限るものではなく、後述する構成(図2及び図3参照)のうちの複数の機能が統合される構成、又は一つの機能が複数に分割される構成でもよい。
【0063】
また、各機能によって実行される処理の順序についても、後述する順序に限るものではなく、処理の依存関係が許すならば、並列で同時に実行したり、順序を入れ替えて実行したりしてもよい。例えば、並列実行することによって処理時間を短縮したり、順序を入れ替えることによって待ち時間を減らしたりすることが可能となる。
【0064】
図2は、本発明第1の実施形態におけるメッセージ基盤システム全体のソフトウェア構成を説明するブロック図である。
【0065】
なお、図において、四角又は丸四角は、メッセージサーバ装置101、メッセージクライアント装置102又はメッセージクライアント装置103上で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報又は指示が伝えられることを示す。また、矢印に対するキャプション及び符号は処理ブロック間で伝えられる情報又は指示を表す。
【0066】
メッセージ送信者302、303は、メッセージクライアント装置102上で実行されるプログラムであり、メッセージ送信者126と同一のものである。当該プログラムが実行されることによって、メッセージをメッセージサーバ装置101に送信することが可能となる。
【0067】
具体的には、メッセージ送信者302、303は、受信/配送部315−1、315−2から受信した送信制御情報307、309に従って、適切なデータ量のヘッダ付メッセージ306、308を受信/配送部315−1、315−2に送信する。
【0068】
メッセージ受信者304、305は、メッセージクライアント装置103上で実行されるプログラムであり、メッセージ受信者127と同一のものである。当該プログラムが実行されることによって、メッセージをメッセージサーバ装置101から受信することが可能となる。
【0069】
具体的には、メッセージ受信者304、305は、送信制御情報312、313を送信部317−1、317−2に送信することによって、送信部317−1、317−2から適切なデータ量のヘッダ付メッセージ310、311を受信する。
【0070】
メッセージサーバ301は、メッセージ伝達を仲介するためのプログラムであり、メッセージサーバ120と同一のものである。当該プログラムが実行されることによって、メッセージ送信者302、303から、メッセージ受信者304、305へメッセージが伝達される。
【0071】
メッセージサーバ301は、受信/配送部315−1、315−2、キュー部316−1、316−2、送信部317−1、317−2、全体制御部322及びクレジット集中管理部321を含む。
【0072】
受信/配送部315−1、315−2は、メッセージ送信者302、303からヘッダ付メッセージ306、308を受信し、適切なキュー部316−1、316−2にメッセージ323、325を配送する。
【0073】
また、受信/配送部315−1、315−2は、メッセージ送信者302、303から送信されたデータ量に関する情報である配送状態328をクレジット集中管理部321に送信し、クレジット集中管理部321によって決定されたクレジット(発行クレジット327)をクレジット集中管理部321から受信する。ここで、クレジットとは、メッセージ送信者(本実施形態では、メッセージ送信者302、303)が送信可能なメッセージの容量を示す。すなわち、メッセージサーバ装置101が受信を想定するメッセージの容量を示す。
【0074】
また、受信/配送部315−1、315−2は、メッセージ送信者302、303が送信可能なメッセージの容量を示す情報、すなわち、発行クレジット327を含む送信制御情報307、309をメッセージ送信者302、303に送信する。これによって、メッセージ送信者302、303から送信されるメッセージの容量を制御することが可能となる。
【0075】
以下、受信/配送部315−1、315−2を区別しない場合、受信/配送部315と記載する。
【0076】
キュー部316−1、316−2は、受信/配送部315の指示に従ってメッセージ323、325を保存し、送信部317−1、317−2の指示に従ってメッセージ324、326を読み出す。メッセージの保存及び読み出しは、最初に保存されたものを最初に取り出すFirst−In First−Out(FIFO)で行う。
【0077】
キュー部316−1、316−2は、当該キュー部316−1、316−2に保存されているメッセージのデータ量を示すキュー状態329をクレジット集中管理部321に送信する。
【0078】
以下、キュー部316−1、316−2を区別しない場合、キュー部316と記載する。
【0079】
送信部317−1、317−2は、メッセージ受信者304、305から受信した送信制御情報312、313に従って適切なキュー部316からメッセージ324、326を読み出し、読み出されたメッセージ324、326をヘッダ付メッセージ310、311としてメッセージ受信者304、305に送信する。以下、送信部317−1、317−2を区別しない場合、送信部317と記載する。
【0080】
全体制御部322は、メッセージサーバ301全体の制御を行う。具体的には、全体制御部322は、メッセージサーバ301起動時の初期化処理、メッセージサーバ301終了時の処理、並びに、スレッド及びプロセスの管理等を行う。
【0081】
クレジット集中管理部321は、優先度設定314、受信/配送部315から受信した配送状態328、及びキュー部316から受信したキュー状態329に基づいて、受信/配送部315に対して発行する発行クレジット327を決定する。決定された発行クレジット327は、クレジット管理情報125に格納される。
【0082】
さらに、クレジット集中管理部321は、当該決定された発行クレジット327を各受信/配送部315に通知することによって複数のメッセージ伝達間の優先度を制御する。なお、優先度設定314は、外部から入力される情報である。
【0083】
本実施形態では、クレジット集中管理部321が、入力された優先度設定314に基づいて、各受信/配送部315に発行する発行クレジット327を管理する。これによって、メッセージ送信者302からメッセージ受信者304へのメッセージ伝達と、メッセージ送信者303からメッセージ受信者305へのメッセージ伝達との間の優先度制御を行うことが可能となる。
【0084】
なお、図2に示す例では、受信/配送部315、キュー部316、及び送信部317は、それぞれ二つずつあるが、本発明はこれに限定されない。全体制御部322が必要に応じて、受信/配送部315、キュー部316、及び送信部317を作成し、又は削除することができる。例えば、受信/配送部315が3個、キュー部316が5個、送信部317が2個という構成もとることが可能である。
【0085】
なお、クレジット集中管理部321及び全体制御部322についてはメッセージサーバ201にそれぞれ1個ずつ含まれる。
【0086】
以下、メッセージサーバ201を構成する、受信/配送部315、キュー部316、送信部317、クレジット集中管理部321及び全体制御部322の具体的な処理について詳述する。
【0087】
図3は、本発明の第1の実施形態のメッセージサーバ301のソフトウェア構成を説明するブロック図である。
【0088】
なお、図において、四角又は丸四角は、メッセージサーバ装置101上で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報又は指示が伝えられることを示す。また、矢印に対するキャプション及び符号は処理ブロック間で伝えられる情報又は指示を表す。
【0089】
図3は図2に示すメッセージサーバ301の内部構成をより詳しく図示したものであり、図3の各処理ブロックは、図2で同一名称の処理ブロックにそれぞれ対応する。
【0090】
メッセージサーバ301では、まず、全体制御部322がメッセージサーバ301の初期化を行い、キュー部316を作成する。
【0091】
全体制御部322は、メッセージ送信者302、303からメッセージサーバ301への接続を受け付けると受信/配送部315を作成し、メッセージ送信者302、303からの接続が終了すると受信/配送部315を削除する。
【0092】
また、全体制御部322は、メッセージ受信者304、305からの接続を受け付けると、送信部317を作成し、メッセージ受信者304、305からの接続が終了すると送信部317を削除する。
【0093】
すなわち、受信/配送部315、キュー部316及び送信部317は、それぞれ、0以上の任意の数だけ設定可能である。
【0094】
なお、全体制御部322は、接続の度に受信/配送部315又は送信部317を作成するのではなく、以前作成した受信/配送部315又は送信部317を再利用することによって、処理時間を削減してもよい。
【0095】
受信/配送部315は、データ受信部419、メッセージ抽出部420、配送管理部422、及び送信制御情報送信部421を含む。
【0096】
データ受信部419は、メッセージ送信者302、303からヘッダ付メッセージ402を受信し、受信したヘッダ付メッセージ402をヘッダ付メッセージ430としてメッセージ抽出部420に送信する。
【0097】
メッセージ抽出部420は、受信したヘッダ付メッセージ430からメッセージ412とヘッダ情報431とを抽出する。また、メッセージ抽出部420は、抽出されたヘッダ情報431を配送管理部422に送信する。また、メッセージ抽出部420は、配送管理部422によって決定されたキュー部316にメッセージ412を送信する。
【0098】
メッセージ412の送信については、例えば、一つの受信/配送部315から複数のキュー部316に送信される場合、又は、複数の受信/配送部315から一つのキュー部316に送信される場合等が考えられる。
【0099】
配送管理部422は、受信したヘッダ情報431に基づいて、メッセージを配送するキュー部316を決定し、決定されたキュー部316にエンキュー指示413を送信する。また、配送管理部422は、配送状態328をクレジット集中管理部321に送信する。
【0100】
送信制御情報送信部421は、クレジット集中管理部321から送信された発行クレジット327を受信し、受信した発行クレジット327を含む送信制御情報403をメッセージ送信者302、303に送信する。
【0101】
なお、受信/配送部315の処理の詳細については、図4を用いて後述する。
【0102】
キュー部316は、キュー423及びキュー状態管理部424を含む。
【0103】
キュー423は、キュー状態管理部424からの操作指示432に従ってメッセージ412を保存し、また、メッセージ414読み出す。
【0104】
キュー状態管理部424は、受信/配送部315からのエンキュー指示413に基づいて、キュー423にメッセージ412の保存を操作指示432として指示し、また、送信部317からのデキュー指示415に基づいて、キュー423にメッセージ414の読み出しを操作指示432として指示する。
【0105】
なお、キュー部316の処理の詳細については、図6を用いて後述する。
【0106】
送信部317は、データ送信部425及び送信制御情報受信部426を含む。
【0107】
データ送信部425は、キュー部316からメッセージ414を読み出し、送信制御情報受信部426から受信した送信指示433に基づいて、読み出されたメッセージ414にヘッダ情報が付加されたヘッダ付メッセージ404をメッセージ受信者304、305に送信する。
【0108】
送信制御情報受信部426は、メッセージ受信者304、305から受信した送信制御情報405に基づいて、デキュー指示415をキュー部316に送信し、また、送信指示433をデータ送信部425に送信する。
【0109】
なお、送信部317の処理の詳細については、図5を用いて後述する。
【0110】
クレジット集中管理部321は、優先度管理部427、クレジット制御部428、及びサーバ状態検出部429を含む。
【0111】
優先度管理部427は、外部から優先度設定314を受信し、受信した優先度設定314を優先度情報434としてクレジット制御部428に送信する。
【0112】
サーバ状態検出部429は、メッセージサーバ装置101の状態を取得し、サーバ状態情報435としてクレジット制御部428に送信する。
【0113】
クレジット制御部428は、配送状態328、キュー状態329、優先度情報434、及びサーバ状態情報435に基づいて、発行クレジット327を決定し、決定された発行クレジット327を受信/配送部315に送信する。
【0114】
なお、クレジット集中管理部321の処理の詳細については、図7を用いて後述する。
【0115】
以下、メッセージ送信者302、303からメッセージ受信者304、305へのメッセージの伝達を例に、各構成の処理の詳細を説明する。
【0116】
図4は、本発明の第1の実施形態のメッセージサーバ301における受信/配送部315の処理を説明するフローチャートである。
【0117】
開始状態501から処理が開始されると、まず、受信/配送部315は、クレジット集中管理部321から発行クレジット327が通知されたか否かを判定する(ステップ502)。具体的には、送信制御情報送信部421が、クレジット制御部428から発行クレジット327を受信したか否かを判定する。
【0118】
クレジット制御部428から発行クレジット327が通知されていないと判定された場合、受信/配送部315は、ステップ504に進む。
【0119】
クレジット制御部428から発行クレジット327が通知されたと判定された場合、受信/配送部315は、受信した発行クレジット327を含む送信制御情報403をメッセージ送信者302、303に送信する(ステップ503)。具体的には、送信制御情報送信部421が送信制御情報403を送信する。
【0120】
受信/配送部315から送信制御情報403を受信したメッセージ送信者302、303は、送信制御情報403に含まれる発行クレジット327に示されたデータ量の範囲内で、メッセージのあて先等のヘッダ情報が付加されたヘッダ付メッセージ402を受信/配送部315のデータ受信部419に送信する。
【0121】
また、メッセージ送信者302、303は、メッセージを送信する際に受信した発行クレジット327から送信するメッセージの容量に対応するクレジット量を減算する。メッセージ送信者302、303は、当該クレジットの減算結果が「0」未満となる場合、メッセージの送信を停止する。すなわち、受信/配送部315は、発行クレジット327を用いてメッセージ送信者302、303から送信されるメッセージの容量を制御する。
【0122】
次に、受信/配送部315は、ヘッダ付メッセージ402を受信したか否かを判定する(ステップ504)。具体的には、データ受信部419が、ヘッダ付メッセージ402を受信したか否かを判定する。
【0123】
ヘッダ付メッセージ402を受信していないと判定された場合、受信/配送部315は、終了状態510に移り処理を終了する。
【0124】
ヘッダ付メッセージ402を受信したと判定された場合、受信/配送部315は、ヘッダ付メッセージ402をヘッダ付メッセージ430として受信し、当該ヘッダ付メッセージ430からメッセージ412とヘッダ情報431とを抽出する(ステップ505)。具体的には、メッセージ抽出部420が、データ受信部419から受信したヘッダ付メッセージ402をヘッダ付メッセージ430として取得し、当該ヘッダ付メッセージ430からメッセージ412とヘッダ情報431とを抽出する。
【0125】
次に、受信/配送部315は、メッセージ412を配送するキュー部316を決定する(ステップ506)。具体的には、配送管理部422が、メッセージ抽出部420によって抽出されたヘッダ情報431に基づいてメッセージ412を配送するキュー部316を決定する。
【0126】
受信/配送部315は、決定されたキュー部316にエンキュー指示413を送信し、エンキューに成功したか否かを判定する(ステップ507)。具体的には、配送管理部422が、ステップ506において決定された配送先のキュー部316のキュー状態管理部424に対してエンキュー指示413を送信し、エンキューに成功したか否かを判定する。例えば、キュー状態管理部424からエンキュー成功の応答が返ってきた場合に、配送管理部422はエンキューに成功したと判定する。
【0127】
エンキューに失敗したと判定された場合、受信/配送部315は、メッセージ送信者302、303にエラーを返し、その後終了状態510へと移り処理を終了する。
【0128】
エンキューに成功したと判定された場合、受信/配送部315は、決定されたキュー部316にメッセージ412を書き込むことによって保存する(ステップ508)。具体的には、メッセージ抽出部420が、決定された配送先のキュー部316のキュー423に抽出されたメッセージ412を保存する。
【0129】
次に、受信/配送部315は、配送状態328をクレジット集中管理部321に送信し(ステップ509)、その後終了状態510へと移り処理を終了する。具体的には、配送管理部422が、抽出されたヘッダ情報431に含まれる配送先、メッセージサイズ等の情報及び時刻から配送状態328を作成し、作成された配送状態328をクレジット集中管理部321のクレジット制御部428に通知する。
【0130】
なお、配送状態328を用いた処理の具体的な内容については、クレジット制御部428の処理の説明にて詳細を述べる。
【0131】
受信/配送部315は、メッセージ送信者302、303からの接続が切断されるまで前述した処理を繰り返し実行する。
【0132】
図5は、本発明の第1の実施形態のメッセージサーバ301における送信部317の処理を説明するフローチャートである。
【0133】
開始状態601から処理が開始されると、送信部317は、まず、メッセージ受信者304、305から通知クレジットを含む送信制御情報405を受信したか否かを判定する(ステップ602)。具体的には、送信制御情報受信部426が、メッセージ受信者304、305から通知クレジットを含む送信制御情報405を受信したか否かを判定する。
【0134】
なお、送信制御情報405に含まれる通知クレジットは、メッセージ受信者304、305がそれぞれ決定したクレジットである。
【0135】
メッセージ受信者304、305から通知クレジットを含む送信制御情報405を受信していないと判定された場合、送信部317は、ステップ604に進む。
【0136】
メッセージ受信者304、305から通知クレジットを含む送信制御情報405を受信したと判定された場合、送信部317は、受信した送信制御情報405に基づいてクレジットを更新する(ステップ603)。具体的には、送信制御情報受信部426が、受信した送信制御情報405に含まれる通知クレジットを送信制御クレジットとして保存する。
【0137】
送信部317は、送信制御クレジットに基づいて、メッセージが送信可能であるか否かを判定する(ステップ604)。具体的には、送信制御情報受信部426が、送信制御クレジットを参照して、送信制御クレジットに対応する容量と送信しようとしているメッセージのデータ量とを比較し、メッセージのデータ量の方が大きければメッセージを送信できないと判定し、そうでなければ送信できると判定する。
【0138】
なお、メッセージのデータ量が送信制御クレジットに対応する容量を超えていた場合、メッセージを送信できないと判定するのではなく、送信制御クレジットに対応する容量の範囲内でメッセージの一部を分割して送信するという処理にしてもよい。また、送信制御クレジットが保存されていない場合、送信制御情報受信部426は、送信制御クレジットを「0」として前述の判定を行う。
【0139】
メッセージが送信できないと判定された場合、送信部317は、終了状態610へと移り処理を終了する。
【0140】
メッセージが送信可能であると判定された場合、送信部317は、デキュー指示をキュー部316に送信する(ステップ605)。具体的には、送信制御情報受信部426は、受信した送信制御情報405に基づいて決定されたキュー部316のキュー状態管理部424にデキュー指示415を送信する。
【0141】
なお、決定されたキュー部316は、メッセージ受信者304、305からメッセージサーバ301への接続時に全体制御部322が決定してもよい。
【0142】
次に、送信部317は、デキューに成功したか否かを判定する(ステップ606)。具体的には、送信制御情報受信部426が送信したデキュー指示415に対するキュー部316の応答に基づいてデキューに成功したか否かを判定する。
【0143】
例えば、キュー423にメッセージが保存されていない場合にはキュー部316はデキューに失敗したと応答する。
【0144】
デキューに失敗したと判定された場合、送信部317は、終了状態610へと移り処理を終了する。
【0145】
デキューに成功したと判定された場合、送信部317は、キュー部316からメッセージ414を読み出す(ステップ607)。具体的には、送信制御情報受信部426が送信指示433をデータ送信部425に送信し、当該送信指示433を受信したデータ送信部425がキュー部316のキュー423からメッセージ414を読み出す。
【0146】
次に、送信部317は、読み出されたメッセージ414にヘッダを付与する(ステップ608)。具体的には、データ送信部425が、読み出されたメッセージ414にメッセージサイズなどのヘッダ情報を付加し、メッセージ受信者304、305が受信可能な形式に変更する。
【0147】
送信部317は、ヘッダ情報が付加されたヘッダ付メッセージ404をメッセージ受信者304、305に送信し(ステップ609)、その後終了状態610へと移り処理を終了する。具体的には、データ送信部425が、ヘッダ情報が付加されたメッセージ414をヘッダ付メッセージ404としてメッセージ受信者304、305に送信する。さらに、送信制御情報受信部426が送信制御クレジットに対応する容量を減らし、次回使用される送信制御クレジットとして保存する。
【0148】
送信部317は、メッセージ受信者304、305から接続が切断されるまで前述した処理を繰り返し実行する。
【0149】
図6は、本発明の第1の実施形態のメッセージサーバ301におけるキュー部316の処理を説明するフローチャートである。
【0150】
開始状態701から処理が開始されると、キュー部316は、受信/配送部315からエンキュー指示413を受信したか否かを判定する(ステップ702)。具体的には、キュー状態管理部424が、受信/配送部315の配送管理部422からエンキュー指示413を受信したか否かを判定する。
【0151】
エンキュー指示413を受信していないと判定された場合、キュー部316は、ステップ704に進む。
【0152】
エンキュー指示413を受信したと判定された場合、キュー部316は、受信したエンキュー指示413に従ってエンキュー操作を実行する(ステップ703)。具体的には、キュー状態管理部424がエンキューについての操作指示432をキュー423に送信し、当該操作指示432を受信したキュー423が受信/配送部315のメッセージ抽出部420によって抽出されたメッセージ412を保存する。
【0153】
なお、使用可能なメモリが足りないなど、エンキューに失敗した場合、キュー状態管理部424がエンキュー指示413に対してエラーを返し、キュー423にはメッセージ412は保存されない。
【0154】
次に、キュー部316は、送信部317からデキュー指示415を受信したか否かを判定する(ステップ704)。具体的には、キュー状態管理部424が、送信部317の送信制御情報受信部426からデキュー指示415を受信したか否かを判定する。
【0155】
デキュー指示415を受信していないと判定された場合、キュー部316は、ステップ706に進む。
【0156】
デキュー指示415を受信したと判定された場合、キュー部316は、受信したデキュー指示415に従ってデキュー操作を実行する(ステップ705)。具体的には、キュー状態管理部424が、デキューについての操作指示432をキュー423に送信し、当該操作指示432を受信したキュー423が保存しているメッセージ412を読み出し、メッセージ414として送信部317のデータ送信部425に送信する。
【0157】
なお、キュー423が空であったり、デキュー指示415に含まれる最大読み出し可能量を超えたメッセージしか読み出せなかったりした等、デキューに失敗した場合、キュー状態管理部424がデキュー指示415に対してエラーを返して、キュー423からメッセージ414は読み出されない。
【0158】
キュー部316は、キュー状態329をクレジット集中管理部321に通知し(ステップ706)、その後終了状態707へと移り処理を終了する。具体的には、キュー423の状態を参照してキュー状態329を取得し、取得されたキュー状態329をクレジット集中管理部321のクレジット制御部428に送信する。
【0159】
なお、キュー状態329を用いた処理の具体的な内容については、クレジット制御部428の処理の説明にて詳細を述べる。
【0160】
キュー部316は、前述した処理を繰り返し実行する。
【0161】
なお、キュー423に保存されたメッセージ412を読み出す順序はFIFOでなくてもよい。例えば、最初に保存された任意のメッセージ送信者から送信されたメッセージよりも、後から保存された別のメッセージ送信者から送信されたメッセージを先に読み出すことによって、後のメッセージ送信者を優先的に扱うことが可能となる。
【0162】
図7は、本発明の第1の実施形態のメッセージサーバ301におけるクレジット集中管理部321の処理を説明するフローチャートである。
【0163】
開始状態801から処理が開始されると、クレジット集中管理部321は、優先度設定314を受け付ける(ステップ802)。具体的には、優先度管理部427がメッセージサーバ301の管理者から優先度設定314を受け付ける。
【0164】
優先度管理部427が優先度設定314を受け付けた場合、優先度設定情報として保存される。優先度管理部427が優先度設定314を受け付けていない場合、クレジット集中管理部321は、ステップ803に進む。
【0165】
なお、優先度設定406の具体的な内容については、クレジット制御部428における処理の説明にて詳細を述べる。
【0166】
次に、クレジット集中管理部321は、サーバ状態を検出する(ステップ803)。具体的には、サーバ状態検出部429がメモリの使用量又はCPU105の使用率などのメッセージサーバ装置101の状態情報を検出する。例えば、サーバ状態検出部429が、メッセージサーバ装置101上で実行されるオペレーティングシステム(図示省略)に問い合わせることによって、メッセージサーバ装置101の状態情報を取得することができる。
【0167】
クレジット集中管理部321は、優先度情報434を参照する(ステップ804)。具体的には、クレジット制御部428が、優先度管理部427に保存される優先度設定情報を優先度情報434として参照する。
【0168】
クレジット集中管理部321は、サーバ状態情報435を参照する(ステップ805)。具体的には、クレジット制御部428が、サーバ状態検出部429によって検出されたサーバ状態情報をサーバ状態情報435として参照する。
【0169】
クレジット集中管理部321は、配送状態328を参照する(ステップ806)。具体的には、クレジット制御部428が、受信/配送部315の配送管理部422から送信された配送状態328を参照する。
【0170】
クレジット集中管理部321は、キュー状態329を参照する(ステップ807)。具体的には、クレジット制御部428が、キュー部316のキュー状態管理部424から送信されたキュー状態329を参照する。
【0171】
クレジット集中管理部321は、参照した各情報に基づいて発行クレジット327を算出し、クレジット管理情報125に格納する(ステップ808)。具体的には、クレジット制御部428が、優先度情報434、サーバ状態情報435、配送状態328及びキュー状態329を用いて、各受信/配送部315に通知する発行クレジット327を算出し、算出された発行クレジット327をクレジット管理情報125に格納する。なお、発行クレジット327の算出方法については、図8を用いて後述する。
【0172】
なお、ステップ808において算出される発行クレジット327は、メッセージ送信者302からメッセージ受信者304へのメッセージ伝達と、メッセージ送信者303から305へのメッセージ伝達の間の優先度を考慮して決定されたものである。
【0173】
クレジット集中管理部321は、各受信/配送部315に発行クレジット327を送信し(ステップ809)、その後終了状態810へと移り処理を終了する。具体的には、クレジット制御部428が、クレジット管理情報125を参照して、各受信/配送部315に対応する発行クレジット327を送信制御情報送信部421に送信する。
【0174】
クレジット集中管理部321は、前述した処理を繰り返し実行する。
【0175】
本実施形態の全体制御部322は、サーバプログラムにおけるメインスレッドの動作を行うものであり、メッセージサーバ301起動時の初期化処理、メッセージサーバ301終了時の処理、メッセージサーバ301の設定の管理、メッセージ送信者又はメッセージ受信者との各接続の開始及び終了処理、受信/配送部315、キュー部316及び送信部317の作成及び削除、並びに、スレッド及びプロセスの管理等を行う。
【0176】
以上、メッセージサーバ301が含む、受信/配送部315、送信部317、キュー部316、クレジット集中管理部321、及び全体制御部322のそれぞれの処理について説明した。
【0177】
なお、ステップ802及びステップ803の処理は、順番を入れ替えて実行されてもよい。また、ステップ804〜ステップ807の処理についても、いずれの処理から実行してもよい。
【0178】
なお、受信/配送部315、キュー部316、送信部317、全体制御部322及びクレジット集中管理部321の各部は、それぞれ、所定の間隔で繰り返し処理を実行する。
【0179】
各処理の実行間隔は、予め設定された一定間隔でもよいし、メッセージサーバ装置101の処理負荷が高い場合に処理の実行間隔を長くするなど処理負荷に応じて動的に変更してもよいし、接続の受け付け、キュー状態の変更、又はサーバ状態の変更等の何らかのイベントを基準にしてもよい。
【0180】
各処理の実行間隔を変更することによって、低消費電力化及び処理の高速応答が実現できる。
【0181】
また、処理ブロック間における情報又は指示の送受信については、必ずしもネットワークを介した通信に限定したものではなく、例えば、プロセス間通信、ウィンドウメッセージ若しくはシグナルによる通知、オブジェクトのメソッド呼び出し、又は、グローバル変数若しくは共有メモリ、ファイルへの書き込みと読み出し等、他の方法を用いてもよい。
【0182】
例えば、送信者が共有メモリへの書き込み、受信者が共有メモリから書き込まれた情報を読み出して情報を伝えることによって、情報又は指示の送信者と受信者とが独立して動作できるため、応答待機時間を削減し処理速度を高速化できる。
【0183】
以下、クレジット集中管理部321のクレジット制御部428における処理、すなわちステップ808における処理について、フローチャートを用いて具体的に説明する。
【0184】
図8は、本発明の第1の実施形態のメッセージサーバ301におけるクレジット集中管理部321が実行する発行クレジット算出処理を説明するフローチャートである。
【0185】
図7に示したように、ステップ808では、クレジット制御部428が、優先度情報434、サーバ状態情報435、配送状態328及びキュー状態329を用いて、発行クレジット327を決定(算出)する。
【0186】
本実施形態では、優先度情報434には、(a)全接続において使用できるネットワーク帯域(以下、全ネットワーク帯域とも記載する。)、(b)ネットワーク帯域に余裕がない場合に各接続が使用できる帯域の比(以下、各接続の帯域比とも記載する。)、及び(c)CPU使用率の上限が含まれる。
【0187】
また、サーバ状態情報435には、(d)CPU使用率が含まれる。また、配送状態328には、(e)各接続の前回発行された発行クレジット327の消費量(以下、各接続のクレジット消費量とも記載する。)が含まれる。また、キュー状態329には、(f)各キューの空き容量(以下、キューの受信可能量とも記載する。)が含まれる。
【0188】
クレジット制御部428は、前述した(a)〜(f)を用いて、(g)発行クレジット327を算出する。
【0189】
なお、(a)〜(g)における単位は、通常、(a)が「ビット/秒」、(b)が数値の比、(c)が「%」、(d)が「%」、(e)が「クレジット」、(f)が「バイト」、(g)が「クレジット」であるが、説明をわかりやすくするため、本実施形態では(a)の単位を「バイト/秒」、(e)及び(g)の単位を「バイト」とする。
【0190】
また、発行クレジット327が発行される間隔は1秒とする。すなわち、メッセージ送信者に対して発行クレジット327が、10クレジット発行された場合、1秒以内にメッセージ送信者が全て消費したときには10バイト/秒のネットワーク帯域が使われたことになる。また、キューの空き容量が5バイトでデキューがない場合、当該キューを使用するメッセージ送信者に対して、5より多い発行クレジット327が配布され、メッセージ送信者が発行クレジット327に相当する容量のメッセージを送信したときにはキューがあふれることになる。
【0191】
以下の説明では、前述した単位の変換については説明を省略する。なお、優先度情報434において対象となる各接続の識別には、接続してきたメッセージ送信者におけるIP(Internet Protocol)アドレスに代表される識別情報、あて先となるキュー情報、メッセージ受信者の識別情報、又は、これらの組み合わせのいずれかが用いられる。
【0192】
例えば、メッセージ送信者のIPアドレスを識別情報として用いて、メッセージ送信者毎の優先度を設定してもよいし、メッセージ送信者のIPアドレスとあて先となるメッセージ受信者との組み合わせを識別情報として用いて、メッセージを伝達する経路毎に優先度を設定してもよい。
【0193】
なお、以下の説明において「各接続の変数」という表現を用いた場合は、各接続について1個ずつ変数が用意されており、それぞれ異なる値を保持できる。
【0194】
また、変数名が2回以上出現する場合には、初回以外では「変数」という記述を省略する場合があり、また変数名に対する参照は変数の保持している値に対する参照を表す。
【0195】
まず、開始状態901から処理が開始されると、クレジット制御部428は、total_creditを初期化する(ステップ902)。具体的には、クレジット制御部428は、優先度情報434に含まれる(a)を変数total_creditに代入する。
【0196】
クレジット制御部428は、各接続のnext_creditを初期化する(ステップ903)。具体的には、クレジット制御部428は、優先度情報434に含まれる(b)を用いてtotal_creditを各接続に比例配分し、比例配分されたネットワーク帯域を各接続の変数next_creditに代入する。
【0197】
クレジット制御部428は、各接続のused_creditを初期化する(ステップ904)。具体的には、クレジット制御部428は、配送状態328に含まれる(e)の情報を用いて、各接続において前回発行クレジット327が発行されて以降、1秒間に消費された発行クレジット327を各接続の変数used_creditに代入する。
【0198】
クレジット制御部428は、total_used_creditを算出する(ステップ905)。具体的には、クレジット制御部428は、各接続のused_creditの合計を算出し、当該算出された値を変数total_used_creditに代入する。
【0199】
クレジット制御部428は、total_used_creditがtotal_creditより大きいか否かを判定する(ステップ906)。具体的には、クレジット制御部428は、ステップ902からステップ905において設定された各変数に基づいて、total_used_creditとtotal_creditとを比較し、total_used_creditがtotal_creditより大きいか否かを判定する。
【0200】
total_used_creditがtotal_creditより大きいと判定された場合、クレジット制御部428は、各接続のnext_creditを削減し、新たにnext_creditを再設定する(ステップ907)。具体的には、クレジット制御部428は、各接続において、( next_credit * (2 - total_used_credit / total_credit ))を計算することによって算出された値を、変数next_creditに代入する。なお、total_creditが「0」である場合、next_creditには「0」が設定される。その後、クレジット制御部428は、ステップ911に進む。
【0201】
total_used_creditがtotal_credit以下と判定された場合、クレジット制御部428は、total_unused_creditを初期化する(ステップ908)。具体的には、以下のような処理が実行される。
【0202】
まず、クレジット制御部428は、変数total_unused_creditに「0」を代入し、各接続において(next_credit - used_credit)を算出し、当該算出結果が正の場合のみtotal_unused_creditに(next_credit - used_credit)を加算する。すなわち、クレジット制御部428は、全接続において、(next_credit - used_credit)が正である接続の(next_credit - used_credit)の値のみを合計し、当該合計値を変数total_unused_creditに代入する。
【0203】
次に、クレジット制御部428は、total_creditに基づいて、total_unused_creditを再設定する(ステップ909)。具体的には、クレジット制御部428は、total_unused_creditがtotal_creditより大きいか否かを判定し、total_unused_creditがtotal_creditより大きい場合には、total_unused_creditにtotal_creditを代入する。
【0204】
クレジット制御部428は、各接続のnext_creditを増加させるように再設定する(ステップ910)。具体的には、クレジット制御部428は、(total_credit + total_unused_credit)を算出し、優先度情報434に含まれる(b)を用いて、当該算出結果を各接続に比例配分し、比例配分された値を各接続の変数next_creditに代入する。その後、クレジット制御部428は、ステップ911に進む。
【0205】
クレジット制御部428は、各接続のmax_creditを算出する(ステップ911)。具体的には、クレジット制御部428は、キュー状態329に含まれる(f)を用いて、各接続において、キューが受信できる容量である発行クレジット327を算出し、当該算出された値を各接続の変数max_creditに代入する。
【0206】
前述した発行クレジット327の算出において、全キューの(f)の最小値が全ての接続に対して共通のmax_creditとして用いられる。また、各接続とキューとの対応が分かっている場合には、各接続において対応するキューの(f)の最小値が、各接続のmax_creditとして用いられる。
【0207】
クレジット制御部428は、ステップ911において算出されたmax_creditに基づいて、next_creditを再設定する(ステップ912)。具体的には、クレジット制御部428は、各接続において、next_creditがmax_creditより大きいか否かを判定し、next_creditがmax_creditより大きい場合、next_creditにmax_creditを代入する。
【0208】
次に、クレジット制御部428は、prev_total_creditを設定する(ステップ913)。具体的には、クレジット制御部428は、前回実行されたクレジット計算処理808によって設定された変数last_total_creditの値を、変数previous_total_creditに代入する。なお、last_total_creditが未設定の場合、クレジット制御部428は、previous_total_creditに「0」を設定する。
【0209】
クレジット制御部428は、total_creditを再計算する(ステップ914)。具体的には、クレジット制御部428は、全接続のnext_creditを合計し、当該合計結果をtotal_creditに代入する。
【0210】
クレジット制御部428は、used_cpuを設定する(ステップ915)。具体的には、クレジット制御部428は、サーバ状態情報435に含まれる(d)を用いて、サーバのCPU使用率を変数used_cpuに代入する。
【0211】
次に、クレジット制御部428は、predicted_cpuを算出する(ステップ916)。具体的には、クレジット制御部428は、(used_cpu * total_credit / previous_total_credit)を算出し、当該算出結果を変数predicted_cpuに代入する。なお、previous_total_creditが「0」の場合、クレジット制御部428は、used_cpuをpredicted_cpuに代入する。
【0212】
クレジット制御部428は、total_cpuを設定する(ステップ917)。具体的には、クレジット制御部428は、優先度情報434に含まれる(c)を用いて、メッセージサーバ301によって使用されるCPU使用率の上限を変数total_cpuに代入する。
【0213】
クレジット制御部428は、predicted_cpuとtotal_cpuとを比較し、predicted_cpuがtotal_cpuより大きいか否かを判定する(ステップ918)。
【0214】
predicted_cpuがtotal_cpu以下と判定された場合、クレジット制御部428は、ステップ921に進む。
【0215】
predicted_cpuがtotal_cpuより大きいと判定された場合、クレジット制御部428は、predicted_cpuに基づいて各接続のnext_creditを再設定する(ステップ919)。具体的には、クレジット制御部428は、各接続において( next_credit * total_cpu / predicted_cpu )を算出し、当該算出結果をnext_creditに代入する。なお、predicted_cpuが「0」の場合、クレジット制御部428は、next_creditに算出結果を代入しない。
【0216】
クレジット制御部428は、total_creditを再度算出する(ステップ920)。具体的には、クレジット制御部428は、全接続のnext_creditを合計し、当該合計結果をtotal_creditに代入する。
【0217】
クレジット制御部428は、次回実行される発行クレジット算出処理(ステップ808)において使用するための変数last_total_creditを設定する(ステップ921)。具体的には、クレジット制御部428は、変数last_total_creditにtotal_creditを代入する。
【0218】
クレジット制御部428は、以上の手順によって算出された、各接続のnext_creditを対応する受信/配送部315の送信制御情報送信部421に対して通知する発行クレジット327として使用し(ステップ922)、その後終了状態923へと移り処理を終了する。
【0219】
本実施形態では、ステップ903において、(b)各接続の帯域比に基づいて、(a)全ネットワーク帯域を発行クレジット327として比例配分する。
【0220】
さらに、ステップ906〜ステップ910において(e)各接続のクレジット消費量と(a)全ネットワーク帯域に対応するクレジット量とを比較して、(e)各接続のクレジット消費量が(a)全ネットワーク帯域に対応するクレジット量より大きい場合、すなわち、比例配分された発行クレジット327が余っている場合、当該余剰した発行クレジット327を追加で各接続に対して分配する。発行クレジット327の分配はネットワーク帯域の分配に対応するため、前述の追加の分配によって、余剰帯域を有効活用できる。
【0221】
ステップ909では、追加で分配されるクレジット量の最大値が制限される。
【0222】
ステップ907では、各接続のクレジット消費量の合計が(a)全ネットワーク帯域に対応するクレジット量を超えていた場合に、次回の発行クレジット327の発行量を最大で「0」まで制限しているため、2回の発行クレジット327発行における平均ネットワーク帯域が(a)全ネットワーク帯域を超えないようにしている。
【0223】
ステップ911〜912では、(f)キューの受信可能量にクレジット配布量を制限することによってキューがあふれることがないようにしている。
【0224】
ステップ913〜921では、(d)CPU使用率に基づいてクレジット量を制限し、メッセージサーバ301の処理能力を超えないようにメッセージの流入量を制限している。
【0225】
以上のように、図8に示した処理によって発行クレジット327を制御することができるため、各接続に優先度を設定できる。従って、ネットワーク帯域を有効活用でき、また、メッセージサーバ301は負荷が集中することなく、安定して処理を実行することができる。
【0226】
なお、ステップ911において、各メッセージ送信者との接続及びキューの対応関係は動的に変化する。そのため、あるキューに対して高い負荷をかけるメッセージ送信者との接続と、ほとんど負荷をかけないメッセージ送信者との接続との間において、キューの受信可能容量を変えてもよい。
【0227】
例えば、キューに対する負荷が高い接続には、キューの受信可能容量を低めに扱い、発行クレジット327の発行量を低めに制限することによって、当該キューがあふれる頻度を低くできる。
【0228】
なお、負荷の見積もりには履歴に基づく統計値の他、ニューラルネットワーク又は隠れマルコフモデル等による学習を用いて見積もりの精度を高めてもよい。
【0229】
また、本実施形態では、ステップ909において、total_unused_creditを最大でtotal_creditに制限することによって、ステップ910において、再分配対象のクレジットである(total_credit + total_unused_credit)の算出結果がtotal_creditの2倍以下になるようにするため、ステップ907において用いられた計算式に「2」という定数を用いた。しかし、本発明はこれに限定されず、様々な計算式を用いることができる。
【0230】
従って、ステップ907において用いられる計算式に変更を加えてステップ909における制限を増やすことによって、再分配対象の発行クレジット2203(図21参照)を増やしてもよい。これによって全接続で使用したネットワーク帯域の合計値の一時的な最大値が増加する一方、余剰ネットワーク帯域をより有効に使用できる。
【0231】
本実施形態では、優先度情報434に含まれる(a)全ネットワーク帯域、(b)各接続の帯域比、及び(c)CPU使用率の上限、サーバ状態情報435に含まれる(d)CPU使用率、配送状態328に含まれる(e)各接続のクレジット消費量、並びに、キュー状態329に含まれる(f)各キューの空き容量を用いたが、これらの情報は一例であって、本発明はこれに限定されない。
【0232】
例えば、CPU使用率の代わりに(c)メモリ使用率上限、(d)メモリ使用率又はメモリ使用率の変化量を用いれば、メッセージサーバ301によって使用されるメモリ量を制限できる。
【0233】
また、(b)各接続の帯域比に加えて各接続が使用できる最小保証帯域を指定して、全接続の最小保証帯域の合計値をステップ902においてtotal_creditから減算し、ステップ922の前で、各接続においてnext_creditに最小保証帯域を加算してnext_creditに代入するという処理を追加すれば最小帯域の保証が可能である。
【0234】
また、(b)各接続の帯域比に加えて各接続が使用できる最大帯域を指定してステップ911〜912と同じような制限を加える処理を追加することによって最大帯域を制限でき、さらに、最小保証帯域指定と組み合わせることで一部の接続に固定的に帯域を割り当てることが可能となる。また、固定ではなく、優先度設定314を変更することによって、前述した設定を動的に変更することもできる。
【0235】
なお、優先度設定314の設定方法は、予めプログラム作成時に埋め込む方法、メッセージサーバ301起動時に設定する方法、設定ファイル若しくはメモリ上に記述し、メッセージサーバ301が参照する方法、ネットワークを介してメッセージサーバ301が参照する方法、ネットワークを介してメッセージ送信者、メッセージ受信者、メッセージサーバ301の管理者、システム全体、各装置の管理者、若しくは第三者からの指定によって設定する方法、又は、キーボード若しくはマウスなどメッセージサーバ装置101における入出力装置107を介して設定する方法などが考えられる。
【0236】
本実施形態では、メッセージサーバ301は、指定された間隔(図8に示す例では1秒毎)で、各メッセージ送信者に発行する発行クレジット327を算出し、算出された発行クレジット327を各メッセージ送信者に通知しているが、本発明はこれに限定されない。
【0237】
例えば、メッセージサーバ301が、発行される発行クレジット327のクレジット量を固定して、発行クレジット327を通知する間隔を算出し、算出された間隔で固定量の発行クレジット327を各メッセージ送信者に通知してもよい。
【0238】
例えば、メッセージ送信者A及びメッセージ送信者Bとの接続に対して、1秒おきにステップ808における処理が実行されている状況であるとする。また、計算結果を用いて、1秒という固定の間隔で、メッセージ送信者Aに2、メッセージ送信者Bに5という量の発行クレジット327を発行して通知しているとする。すなわち、メッセージ送信者Aに1秒あたり2、メッセージ送信者Bに1秒あたり5の発行クレジット327を通知しているとする。
【0239】
前述のような場合において、発行クレジット327の通知間隔を固定でするのではなく、メッセージ送信者Aに対しては10秒、メッセージ送信者Bに対しては4秒と接続ごとに変更し、当該間隔で20という固定量の発行クレジット327を各メッセージ送信者に通知すると、発行クレジット327の通知間隔を固定して通知するクレジット量を変えた場合と同様に、メッセージ送信者Aに1秒あたり2、メッセージ送信者Bに1秒あたり5のクレジットを通知していることになる。
【0240】
すなわち、通知する発行クレジット327の量と間隔のどちらを変動させても単位時間当たりの通知するクレジット量は同じように調整可能である。なお、発行クレジット327の通知間隔を変動させる場合、ステップ808における処理の実行間隔は1秒のままで、メッセージサーバ301が、接続ごとに前回発行クレジット327を通知した時刻と通知間隔とを保持しておき、それぞれの接続における発行クレジット327の通知間隔が保持された通知間隔と一致するようにメッセージ送信者に発行クレジット327を通知する。
【0241】
また、(e)各接続のクレジット消費量については、これに替えて時間当たりのクレジット消費量を用いる。
【0242】
前述したように、通知する発行クレジット327を固定して発行クレジット327の通知間隔を変化させることによって、発行クレジット327の消費量の少ない、すなわち、使用帯域の狭い通信への発行クレジット327の通知の頻度を減らすことができ、ネットワーク帯域を有効に活用することができる。
【0243】
当然、通知間隔があまりに頻繁になった場合に、通知する発行クレジット327の発行量を増やして通知間隔を広げるなど、通知間隔と通知するクレジット量との両方を変動させてもよい。
【0244】
また、本実施形態においては、メッセージング基盤において、送信可能量を表す発行クレジット327を用いて優先度を制御する方法を説明したが、本発明で開示する優先度制御方法の実施はメッセージング基盤に限るものではない。例えば、複数のTCP(Transmission Control Protocol)接続を中継する装置において、TCPのACK応答おけるウィンドウを発行クレジット327として用いることによって、複数のTCP接続の優先度を制御することができる。
【0245】
また、イーサネットのスイッチングハブにおいても、PAUSEフレームの送出タイミング又は中断時間を制御することによって、PAUSEフレームが本実施形態における発行クレジット327の役割を果たすことができ、スイッチングハブで中継する複数のイーサネット接続間の優先度制御を行うことができる。
【0246】
クレジット制御部428は、ステップ808において、優先度情報434、サーバ状態情報435、配送状態328及びキュー状態329を用いて、発行クレジット327を決定する。
【0247】
図1で説明したように、優先度情報434、サーバ状態情報435、配送状態328及びキュー状態329は、メッセージサーバ装置101の記憶装置106に格納される。
【0248】
以下、それぞれの情報について説明する。
【0249】
なお、図3における優先度情報434は優先度情報122に、サーバ状態情報435はサーバ状態121に、配送状態328は配送状態123に、キュー状態329はキュー状態124に、それぞれ対応する。
【0250】
図17は、本発明の第1の実施形態のサーバ状態情報435の一例を示す説明図である。
【0251】
サーバ状態情報435は、サーバID1801、CPU使用率1802、及び検出時刻1803を含む。
【0252】
サーバID1801は、メッセージサーバ301を実行するメッセージサーバ装置101を一意に識別するための識別子である。CPU使用率1802は、サーバID1801に対応するメッセージサーバ装置101におけるCPUの使用率である。CPU使用率1802は、(d)CPU使用率に対応する情報である。検出時刻1803は、サーバ状態(CPU使用率1802)が検出された時刻である。メッセージサーバ装置101が複数のCPUを搭載している場合は、各CPU使用率の平均を用いたり、合計値を用いたりすることによって本実施形態を適用可能である。
【0253】
図18は、本発明の第1の実施形態の優先度情報434の一例を示す説明図である。
【0254】
優先度情報434は、送信者ID1901、受信者ID1902及び帯域比1903を含む。
【0255】
送信者ID1901は、メッセージを送信するメッセージ送信者を一意に識別するための識別子である。受信者ID1902は、メッセージを受信するメッセージ受信者を一意に識別するための識別子である。送信者ID1901及び受信者ID1902によって、対象となるメッセージ伝達を識別することが可能となる。
【0256】
帯域比1903は、送信者ID1901に対応するメッセージ送信者と受信者ID1902に対応するメッセージ受信者との間の接続に割り当てられた帯域比である。帯域比1903は、(b)ネットワーク帯域に余裕がない場合に各接続が使用できる帯域の比に対応する情報である。
【0257】
なお、図18に示すものとは別に、(a)全接続において使用できるネットワーク帯域、及び(c)CPU使用率の上限が保持される。
【0258】
図19は、本発明の第1の実施形態の配送状態328の一例を示す説明図である。
【0259】
配送状態328は、送信者ID2001、受信者ID2002、転送量2003及び検出時刻2004を含む。
【0260】
送信者ID2001は、メッセージを送信するメッセージ送信者を一意に識別するための識別子である。受信者ID2002は、メッセージを受信するメッセージ受信者を一意に識別するための識別子である。送信者ID2001及び受信者ID2002によって、対象となるメッセージ伝達を識別することが可能となる。
【0261】
転送量2003は、送信されたメッセージのデータ量、すなわち、消費された発行クレジット327のクレジット量を表す。転送量2003は、(e)各接続の前回発行された発行クレジット327の消費量に対応する情報である。検出時刻2004は、転送量2003が検出された時刻である。
【0262】
図20は、本発明の第1の実施形態のキュー状態329の一例を示す説明図である。
【0263】
キュー状態329は、キューID2101、使用容量2102、全体容量2103及び検出時刻2104を含む。
【0264】
キューID2101は、対象とするキュー423を一意に識別するための識別子である。使用容量2102は、キューID2101に対応するキュー423の使用容量である。全体容量2103は、キューID2101に対応するキュー423の全体容量である。検出時刻2104は、使用容量2102及び全体容量2103が検出された時刻である。
【0265】
クレジット制御部428は、使用容量2102、全体容量2103及び検出時刻2104を用いて、(f)各キューの空き容量を算出することができる。
【0266】
クレジット制御部428は、図17〜図20に示した情報を用いて発行クレジット327を算出する。
【0267】
図21は、本発明の第1の実施形態のクレジット管理情報125の一例を示す説明図である。
【0268】
クレジット管理情報125は、送信者ID2201、受信者ID2202、発行クレジット2203及び発行時刻2204を含む。
【0269】
送信者ID2201は、メッセージを送信するメッセージ送信者を一意に識別するための識別子である。受信者ID2202は、メッセージを受信するメッセージ受信者を一意に識別するための識別子である。送信者ID2201及び受信者ID2202によって、対象となるメッセージ伝達を識別することが可能となる。
【0270】
発行クレジット2203は、ステップ808において算出された発行クレジット327のクレジット量である。発行時刻2204は、発行クレジット2203が発行された時刻である。
【0271】
クレジット管理情報125は、例えば以下に示すように作成される。
【0272】
ステップ808において、クレジット集中管理部321は、優先度情報434から各接続を識別するための情報(例えば、IPアドレス等)を取得し、当該取得した情報に基づいてエントリを生成する。さらに、クレジット集中管理部321は、当該エントリに発行される発行クレジット327を算出し、発行クレジット2203に格納する。
【0273】
なお、図17〜21に示す各IDには、例えば、ホスト名、IPアドレス、ポート番号、プロセス番号、単調増加するカウンタ値、及び、これらの組み合わせが考えられるが、これらに限るものではない。また、時刻については、前後関係を一意に識別するための値であり、例えば、日付、時刻、単調増加するカウンタ値などが考えられるが、これらに限るものではない。さらに、送信者IDと受信者IDとの組み合わせは制御対象のメッセージ伝達を識別するための一例であり、制御対象のメッセージ伝達を識別可能であればこれに限るものではない。
【0274】
図22は、クレジット集中管理部321を備えていないメッセージサーバ201のソフトウェア構成を説明するブロック図である。
【0275】
なお、図において、四角又は丸四角は、メッセージサーバ装置101、メッセージクライアント装置102又はメッセージクライアント装置103上で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報又は指示が伝えられることを示す。また、矢印に対するキャプション及び符号は処理ブロック間で伝えられる情報又は指示を表す。
【0276】
メッセージ送信者202、203、受信/配送部214−1、214−2、キュー部215−1、215−2、送信部216−1、216−2、全体制御部222、及び、メッセージ受信者204、205の基本的な機能は、図2に示すメッセージサーバ301と同一であるため説明を省略する。図22に示す例では、各受信/配送部214−1、214−2が、それぞれ、クレジット発行部217−1、217−2を備える点が異なる。
【0277】
また、ヘッダ付メッセージ206、208、210、212、送信制御情報207、209、211、213、及びメッセージ223、224、225、226は、図2に示すメッセージサーバと同一であるため説明を省略する。
【0278】
以下、メッセージ送信者202がメッセージ受信者204に対してメッセージを伝達する場合を例に、図2との差異を中心に説明する。
【0279】
まず、メッセージ送信者202は、メッセージサーバ201に接続し、メッセージサーバ201の受信/配送部214−1から送信制御情報207を受信する。送信制御情報207には、クレジット発行部217−1が発行した送信可能容量を表す発行クレジットを含む。
【0280】
メッセージ送信者202は、受信した送信制御情報207に含まれる発行クレジットを記憶する。また、メッセージ送信者202は、受信した送信制御情報207に含まれる発行クレジットの範囲内で、送信するメッセージに送信先であるメッセージ受信者204を示す情報又はメッセージサイズなどのヘッダ情報を追加し、ヘッダ付メッセージ206として受信/配送部214−1へ送信する。
【0281】
メッセージ送信者202は、ヘッダ付メッセージ206を送信する際に、記憶された発行クレジットから当該送信したヘッダ付メッセージ206の容量に対応するクレジット量を減算する。メッセージ送信者202は、当該発行クレジットの減算結果が「0」未満となる場合、メッセージの送信を停止する。
【0282】
すなわち、発行クレジットを通して受信/配送部214−1は、メッセージ送信者202から送信されるメッセージの容量を制御する。
【0283】
クレジット発行部217−1は、キュー部215−1の空き容量を基準に、メッセージ送信者202発行する発行クレジットの量を決定する。
【0284】
すなわち、クレジット発行部217−1は、キュー部215−1に関する情報のみに基づいて、発行する発行クレジットを決定するものであって、メッセージ送信者202からメッセージ受信者204への伝達のみを考慮したものである。すなわち、各メッセージ伝達は、独立して行われているため、メッセージ送信者202、203間の優先度制御をすることができない。
【0285】
メッセージ送信者202、203から送信されるメッセージに優先度を付加した場合であっても、各メッセージの伝達は互いに独立して制御されるものであるため、メッセージ送信者202、203の優先度制御はできない。また、メッセージ送信者202、203が同じキューに優先度を付加してメッセージを送信した場合であっても、優先度の制御はメッセージの受信後に行われるため、以下に述べるような状況においては優先度の制御が行えない。例えば、メッセージ送信者202が低優先度のメッセージを送信し、メッセージ送信者203が高優先度のメッセージを送信している場合で、メッセージ送信者202がメッセージサーバ201の使用できるネットワーク帯域を使い切ってしまうほど大量に送信を行った場合には、たとえ高優先度のメッセージであっても、メッセージ送信者203からのメッセージ受信が妨げられるために、メッセージ伝達の優先度制御ができない。
【0286】
メッセージサーバ301は、メッセージサーバ201と比較して、それぞれの受信/配送部にクレジット発行部を設置するのではなく、クレジット集中管理部321が発行するクレジットを集中管理している点、クレジット集中管理部321に対して優先度設定314が入力として与えられる点が異なる。
【0287】
第1の実施形態によれば、メッセージサーバ301は、メッセージ送信者302、303間のメッセージ送信量を制御することができる。つまり、メッセージサーバ301は、メッセージ送信者302からメッセージ受信者304へのメッセージ伝達と、メッセージ送信者303からメッセージ受信者305へのメッセージ伝達の間で優先度制御を行うことができる。また、メッセージサーバ301が受信可能なメッセージの容量を超えるメッセージが、メッセージ送信者302、303から送信されることを防止できる。
【0288】
すなわち、プロトコルに規定されたフロー制御を用いて複数接続間の優先度を制御することができる。
【0289】
また、発行クレジット327を通知する間隔を変化させることによって、発行クレジット327の通知に必要な通信を減らすことができ、ネットワーク帯域を有効に使うことができる。
【0290】
(第2の実施形態)
本発明の第2の実施形態は、第1の実施形態の機能を既存のメッセージサーバに加えてQoS制御部を設置することによって実現する。
【0291】
本発明第2の実施形態のシステムの全体構成、ハードウェア構成、プログラムの実行方法は、第1の実施形態と同一であるため説明を省略する。以下、第1の実施形態との差異を中心に説明する。
【0292】
図9は、本発明の第2の実施形態におけるメッセージング基盤システム全体のソフトウェア構成を説明するブロック図である。
【0293】
なお、図において、四角又は丸四角は、メッセージサーバ装置101、メッセージクライアント装置102又はメッセージクライアント装置103上で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報又は指示が伝えられることを示す。また、矢印に対するキャプション及び符号は処理ブロック間で伝えられる情報又は指示を表す。
【0294】
なお、本発明によって提供される機能はメッセージサーバ装置101、メッセージクライアント装置102及びメッセージクライアント装置103上で実行されるプログラムによって実現されるため、以下で説明する各プログラムがどの装置で実行されてもよい。
【0295】
図9に示す例では、メッセージサーバ1001とメッセージ送信者1003、1004との間にQoS制御部1002を備える点が第1の実施形態と異なる。また、メッセージサーバ1001がサーバ状態検出部1025を含む点が第1の実施形態と異なる。
【0296】
本実施形態では、メッセージ送信者1003、1004は、メッセージサーバ1001と直接接続するのではなく、QoS制御部1002と接続し、QoS制御部1002がメッセージサーバ1001と接続する。
【0297】
本実施形態において、メッセージサーバ1001とQoS制御部1002とをまとめて、一つの機能としてメッセージサーバ301とみなせば、本実施形態は第1の実施形態と同一のソフトウェア構成である。
【0298】
メッセージサーバ1001は、図22に示すメッセージサーバ201にサーバ状態検出部1025を追加した構成となっている。
【0299】
サーバ状態検出部1025は、サーバ状態検出部429と同様に、メモリ使用量及びCPU使用率などメッセージサーバ装置101等の状態情報を検出し、検出された状態情報をQoS制御部1002のクレジット集中管理部1023に、サーバ状態1020として通知(送信)する。
【0300】
なお、状態情報を取得できるのであれば、サーバ状態検出部1025は、メッセージサーバ1001内部に含まれる必要はない。例えば、メッセージサーバ1001が実行される同一の装置上で別にサーバ状態検出部1025を稼働させるもよいし、メッセージサーバ1001とQoS制御部1002とが同一の装置上で実行された場合には、QoS制御部1002にサーバ状態検出部1025の機能を含めてもよい。
【0301】
前述のような構成にすることによって、図22に示すメッセージサーバ201をなんら変更することなくメッセージサーバ1001として使用できるため、サーバ状態検出部1025を含むメッセージサーバ1001を開発する手間を減らすことができる。
【0302】
QoS制御部1002は、全体制御部1024、クレジット集中管理部1023、転送制御部1021−1、1021−2を含む。
【0303】
全体制御部1024は、QoS制御部1002全体の動作を制御する。
【0304】
クレジット集中管理部1023は、転送制御部1021−1、1021−2から送信される消費クレジット1027及び利用可能クレジット1028と、メッセージサーバ1001のサーバ状態検出部1025から通知されるサーバ状態1020と、優先度設定1019の各設定情報とに基づいて、転送制御部1021−1、1021−2に対して発行する発行クレジット1026を調整し、複数のメッセージ伝達間の優先度を制御する。
【0305】
転送制御部1021−1、1021−2は、メッセージ送信者1003、1004と、メッセージサーバ1001とのメッセージ伝達をそれぞれ仲介する。
【0306】
転送制御部1021−1、1021−2は、ヘッダ付メッセージ1007、1009から、それぞれのメッセージ伝達によって消費されたクレジット量をそれぞれ検出して消費クレジット1027としてクレジット集中管理部1023に送信する。また、転送制御部1021−1、1021−2は、メッセージサーバ1001から受信した送信制御情報1016、1018から、それぞれの接続に対して発行されたクレジット量を検出して利用可能クレジット1028としてクレジット集中管理部1023に送信する。
【0307】
また、転送制御部1021−1、1021−2は、メッセージ送信者1003、1004に対して、クレジット集中管理部1023から送信された発行クレジット1026を含む送信制御情報1008、1010をそれぞれ送信する。
【0308】
以下、転送制御部1021−1、1021−2を区別しない場合、転送制御部1021と記載する。
【0309】
なお、転送制御部1021は、必要に応じて全体制御部1024によって作成され、また削除されるため転送制御部1021の個数は2個に限られるものではない。
【0310】
以下、QoS制御部1002に含まれる、全体制御部1024、クレジット集中管理部1023及び転送制御部1021の処理について詳述する。
【0311】
図10は、本発明第2の実施形態のQoS制御部1002の構成を説明するブロック図である。
【0312】
なお、図において、四角又は丸四角は、メッセージサーバ装置101、メッセージクライアント装置102又はメッセージクライアント装置103上で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報又は指示が伝えられることを示す。また、矢印に対するキャプション及び符号は処理ブロック間で伝えられる情報又は指示を表す。
【0313】
QoS制御部1002は、全体制御部1024、クレジット集中管理部1023、及び転送制御部1021を含む。
【0314】
転送制御部1021は、必要に応じて全体制御部1024によって作成され、また、削除され、転送制御部1021の個数は0以上の任意の値を取り得る。
【0315】
続いて、各部の内部構成について説明する。
【0316】
転送制御部1021は、データ受信部1114、ヘッダ抽出部1115、データ送信部1116、送信制御情報送信部1117、クレジット消費検出部1118、及び送信制御情報受信部1119を含む。
【0317】
データ受信部1114は、メッセージ送信者1003、1004からヘッダ付メッセージ1102を受信し、受信したヘッダ付メッセージ1102をヘッダ付メッセージ1123としてヘッダ抽出部1115に送信する。
【0318】
ヘッダ抽出部1115は、受信したヘッダ付メッセージ1123からヘッダ情報1125を抽出する。また、ヘッダ抽出部1115は、ヘッダ付メッセージ1123をヘッダ付メッセージ1124としてデータ送信部に送信する。
【0319】
データ送信部1116は、受信したヘッダ付メッセージ1124をヘッダ付メッセージ1104としてメッセージサーバ1001に送信する。
【0320】
送信制御情報送信部1117は、発行クレジット1026を含む送信制御情報1103をメッセージ送信者1003、1004に送信する。メッセージ送信者1003、1004は、受信した送信制御情報送信部1117に含まれる発行クレジット1026に基づいて、適切な容量のメッセージを送信する。
【0321】
なお、メッセージ送信者1003、1004は、メッセージを送信する際に受信した送信制御情報1008、1010に含まれる発行クレジット1026から送信するメッセージの容量に対応するクレジット量を減算する。メッセージ送信者1003、1004は、当該発行クレジット1026の減算結果が「0」未満となる場合、メッセージの送信を停止する。
【0322】
クレジット消費検出部1118は、受信したヘッダ情報1125に基づいて、発行クレジット1026の消費量を検出し、検出された発行クレジット1026の消費量を消費クレジット1027としてクレジット制御部1121に送信する。すなわち、消費クレジット1027は、メッセージ送信者1003、1004から送信されたメッセージの送信量又は送信によって消費されたクレジット量を表す。
【0323】
送信制御情報受信部1119は、メッセージサーバ1001から送信制御情報1105を受信し、受信した送信制御情報1105に含まれるクレジット量を利用可能クレジット1028としてクレジット制御部1121に送信する。ここで、利用可能クレジット1028とは、メッセージ送信者(本実施形態では、メッセージ送信者1003、1004)が送信可能なメッセージの容量を示す。すなわち、それぞれのメッセージ送信者1003、1004についてメッセージサーバ1001が送信を許可したメッセージの容量を表す。
【0324】
クレジット集中管理部1023は、優先度管理部1120、クレジット制御部1121、及びサーバ状態受付部1122を含む。
【0325】
優先度管理部1120は、外部から優先度設定1019を受信し、受信した優先度設定1019を優先度情報1126としてクレジット制御部1121に送信する。
【0326】
サーバ状態受付部1122は、サーバ状態検出部1025によって検出されたサーバ状態1020を受信し、受信したサーバ状態1020をサーバ状態情報1127としてクレジット制御部1121に送信する。
【0327】
クレジット制御部1121は、消費クレジット1027、利用可能クレジット1028、優先度情報1126、及びサーバ状態情報1127に基づいて、発行クレジット1026を決定し、決定された発行クレジット1026を送信制御情報送信部1117に送信する。
【0328】
次に、メッセージ送信者1003、1004からメッセージサーバ1001へのメッセージの送信を例に、図10、図11及び図12を用いて各部の動作を説明する。
【0329】
図11は、本発明の第2の実施形態のQoS制御部1002における転送制御部1021の処理を説明するフローチャートである。図12は、本発明の第2の実施形態のQoS制御部1002におけるクレジット集中管理部1023の処理を説明するフローチャートである。
【0330】
前述したように、本実施形態では、メッセージ送信者1003、1004は、QoS制御部1002と接続し、QoS制御部1002はメッセージサーバ1001と接続する。
【0331】
QoS制御部1002は、メッセージ送信者1003、1004から接続を受け付けると、全体制御部1024が転送制御部1021を作成し、転送制御部1021はメッセージサーバ1001に接続する。また、メッセージ送信者1003、1004からの接続が終了すると、転送制御部1021はメッセージサーバ1001への接続を切断し、全体制御部1024が転送制御部1021を削除する。
【0332】
なお、転送制御部1021を接続の度に作成せずに、以前作成された転送制御部1021を再利用して、処理時間を削減してもよい。
【0333】
まず、図11を用いて転送制御部1021の処理を説明する。転送制御部1021は前述の処理にしたがって作成され、また、メッセージサーバ1001及びメッセージ送信者1003又は1004に接続されているものとする。
【0334】
開始状態1201から処理が開始されると、転送制御部1021は、送信制御情報1105を受信したか否かを判定する(ステップ1202)。具体的には、送信制御情報受信部1119が、メッセージサーバ1001から通知クレジットが含まれる送信制御情報1105を受信しているか否かを判定する。
【0335】
送信制御情報1105を受信していないと判定された場合、転送制御部1021は、ステップ1204に進む。
【0336】
送信制御情報1105を受信したと判定された場合、転送制御部1021は、クレジット集中管理部1023に利用可能クレジット1028を通知(送信)する(ステップ1203)。具体的には、送信制御情報受信部1119が、受信した送信制御情報1105に含まれる量を利用可能クレジット1028としてクレジット集中管理部1023のクレジット制御部1121に通知する。
【0337】
次に、転送制御部1021は、クレジット集中管理部1023から発行クレジット1026が通知されたか否かを判定する(ステップ1204)。具体的には、送信制御情報送信部1117が、クレジット制御部1121から発行クレジット1026が通知されたか否かを判定する。
【0338】
クレジット集中管理部1023から発行クレジット1026が通知されていないと判定された場合、転送制御部1021は、ステップ1206に進む。
【0339】
クレジット集中管理部1023から発行クレジット1026が通知されたと判定された場合、転送制御部1021は、メッセージ送信者1003、1004に送信制御情報1103を送信する(ステップ1205)。具体的には、送信制御情報送信部1117が、通知された発行クレジット1026を含む送信制御情報1103をメッセージ送信者1003、1004に送信する。
【0340】
次に、転送制御部1021は、メッセージ送信者1003、1004からメッセージを受信したか否かを判定する(ステップ1206)。具体的には、データ受信部1114が、メッセージ送信者1003、1004からヘッダ付メッセージ1102を受信しているか否かを判定する。
【0341】
メッセージ送信者1003、1004からメッセージを受信していないと判定された場合、転送制御部1021は、終了状態1210へと移り処理を終了する。
【0342】
メッセージ送信者1003、1004からメッセージを受信したと判定された場合、転送制御部1021は、受信したメッセージからヘッダ情報を抽出する(ステップ1207)。具体的には、ヘッダ抽出部1115が、データ受信部1114が受信したヘッダ付メッセージ1102をヘッダ付メッセージ1123として受信し、当該ヘッダ付メッセージ1123からヘッダ情報1125を抽出する。さらに、ヘッダ抽出部1115が、抽出されたヘッダ情報1125をクレジット消費検出部1118に送信する。
【0343】
次に、転送制御部1021は、クレジット集中管理部1023に消費クレジット1027を通知(送信)する(ステップ1208)。具体的には、クレジット消費検出部1118が、受信したヘッダ情報1125を用いて、メッセージ送信によって消費されたクレジット量を算出し、算出結果を消費クレジット1027としてクレジット集中管理部1023のクレジット制御部1121に通知する。
【0344】
次に、転送制御部1021は、データ(メッセージ)を送信し(ステップ1209)、その後終了状態1210へと移り処理を終了する。具体的には、データ送信部1116が、ヘッダ抽出部1115からヘッダ付メッセージ1123をヘッダ付メッセージ1124として受信し、当該ヘッダ付メッセージ1124をヘッダ付メッセージ1104としてメッセージサーバ1001に送信する。
【0345】
転送制御部1021は、前述した処理をメッセージ送信者1003、1004からの接続が切断されるまで繰り返し実行する。
【0346】
次に、図12を用いてクレジット集中管理部1023の処理を説明する。
【0347】
開始状態1301から処理が開始されると、クレジット集中管理部1023は、優先度設定1019を受け付ける(ステップ1302)。具体的には、優先度管理部1120が、QoS制御部1002の管理者等から優先度設定1019を受け付ける。
【0348】
優先度管理部1120が優先度設定1019を受け付けた場合、優先度設定情報として保存され、優先度管理部1120が優先度設定1019を受け付けていない場合、ステップ1303に進む。
【0349】
次に、クレジット集中管理部1023は、サーバ状態1020を受け付ける(ステップ1303)。具体的には、サーバ状態受付部1122が、メッセージサーバ1001から、メモリ使用量又はCPU使用率などを含むサーバ状態1020を受け付ける。サーバ状態受付部1122がサーバ状態1020を受け付けた場合、サーバ状態情報として保存され、サーバ状態受付部1122がサーバ状態1020を受け付けていない場合ステップ1304に進む。
【0350】
クレジット集中管理部1023は、優先度情報1126を参照する(ステップ1304)。具体的には、クレジット制御部1121が、優先度管理部1120に保存される優先度設定情報を優先度情報1126として参照する。
【0351】
クレジット集中管理部1023は、サーバ状態情報1127を参照する(ステップ1305)。具体的には、クレジット制御部1121が、サーバ状態受付部1122に保存されるサーバ状態情報をサーバ状態情報1127として参照する。
【0352】
クレジット集中管理部1023は、消費クレジット1027を参照する(ステップ1306)。具体的には、クレジット制御部1121が、転送制御部1021のクレジット消費検出部1118から通知された消費クレジット1027を参照する。
【0353】
クレジット集中管理部1023は、利用可能クレジット1028を参照する(ステップ1307)。具体的には、クレジット制御部1121が、送信制御情報受信部1119から通知された利用可能クレジット1028を参照する。
【0354】
クレジット集中管理部1023は、参照した各情報に基づいて、各転送制御部1021に通知する発行クレジット1026を算出する(ステップ1308)。具体的には、クレジット制御部1121が、優先度情報1126、サーバ状態情報1127、消費クレジット1027及び利用可能クレジット1028を用いて、各転送制御部1021に通知する発行クレジット1026を決定する。なお、発行クレジット1026の算出方法については後述する。
【0355】
クレジット集中管理部1023は、各転送制御部1021に発行クレジット1026を通知(送信)し(ステップ1309)、その後終了状態1310へと移り処理を終了する。具体的には、クレジット制御部1121が、決定された発行クレジット1026を各転送制御部1021の送信制御情報送信部1117に通知する。
【0356】
クレジット集中管理部1023は、前述した処理を繰り返し実行する。
【0357】
本実施形態の全体制御部1024は、QoS制御部1002におけるメインスレッドの動作を行うものであり、QoS制御部1002起動時の初期化、QoS制御部1002終了時の処理、QoS制御部1002の設定の管理、メッセージ送信者又はメッセージサーバとの各接続の開始及び終了処理、転送制御部1021の作成及び削除、並びに、スレッド及びプロセスの管理等を行う。
【0358】
以上、QoS制御部1002に含まれる転送制御部1021、クレジット集中管理部1023及び全体制御部1024のそれぞれの動作を説明した。
【0359】
なお、転送制御部1021及びクレジット集中管理部1023のそれぞれが繰り返し処理を実行する間隔の決定方法については、第1の実施形態と同一の方法を用いることが考えられる。
【0360】
以下、クレジット制御部1121が発行クレジット1026を算出する処理(ステップ1308)について説明する。
【0361】
ステップ1308では、クレジット制御部1121が、優先度情報1126、サーバ状態情報1127、消費クレジット1027及び利用可能クレジット1028を用いて、発行クレジット1026を決定する。
【0362】
発行クレジット1026の算出方法は、第1の実施形態におけるクレジット集中管理部321のクレジット制御部428が発行クレジット1026を算出する処理(ステップ808)と同様に方法を用いることができる。
【0363】
すなわち、ステップ808において、優先度情報434として優先度情報1126を、サーバ状態情報435としてサーバ状態情報1127を、配送状態328として消費クレジット1027を、キュー状態329として利用可能クレジット1028を用い、また、決定された発行327を発行クレジット1026として用いればよい。
【0364】
なお、ステップ1308において用いられる情報の例、及び算出方法については第1の実施形態と同一であるため説明を省略する。
【0365】
(第2の実施形態の変形例)
メッセージサーバ1001とQoS制御部1002とを同一の装置上で実行した場合、QoS制御部1002にサーバ状態検出部1025の機能を含めることができる。
【0366】
この場合、クレジット集中管理部1023のサーバ状態受付部1122に代えてサーバ状態検出部を設置すれば、クレジット集中管理部1023は、第1の実施形態におけるクレジット集中管理部321と同一の構成になる。このような構成にした場合、図22に示すメッセージサーバ201を、なんら変更することなくメッセージサーバ1001として使用できるため、メッセージサーバを開発する手間を減らすことができる。
【0367】
また、サーバ状態1020、並びに、当該サーバ状態1020に付随する処理及び機能ブロックを省略した構成(以下、サーバ状態省略構成とも記載する。)としてもよい。サーバ状態省略構成では、プログラム及び制御を簡素化できるとともに、メッセージサーバ201を、なんら変更することなくメッセージサーバ1001として使用できるため、メッセージサーバを開発する手間を減らすことができる。
【0368】
本実施形態によれば、既存のメッセージサーバに対してほとんど変更を加えることなく優先度制御機能を実現できる。
【0369】
(第3の実施形態)
本発明の第3の実施形態は、QoS制御部の設置位置が変更されている点が第2の実施形態と異なる。以下、第2の実施形態と共通する部分の説明は省略し、第2の実施形態との差異を中心に説明する。
【0370】
図13は、本発明の第3の実施形態におけるメッセージ基盤システム全体のソフトウェア構成を説明するブロック図である。
【0371】
なお、図において、四角又は丸四角は、メッセージサーバ装置101、メッセージクライアント装置102又はメッセージクライアント装置103上で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報又は指示が伝えられることを示す。また、矢印に対するキャプション及び符号は処理ブロック間で伝えられる情報又は指示を表す。
【0372】
以下、図13、図9及び図10を用いて本実施形態を説明する。
【0373】
図9に示す例では、メッセージ送信者1003、1004とメッセージサーバ1001との間にQoS制御部1002が挿入された構成であったが、本実施形態では図13に示すように、メッセージサーバ1401とメッセージ受信者1405、1406との間にQoS制御部1402が挿入された構成となっている。
【0374】
なお、QoS制御部1402は、サーバ状態省略構成を取り、サーバ状態1020に基づく制御が行われない。
【0375】
第3の実施形態では、図13に示すような構成によって、メッセージ受信者間(メッセージ受信者1405とメッセージ受信者1406との間)の優先度制御が可能となる。
【0376】
具体的には、QoS制御部1402が、優先度設定1419と送信制御情報1412、1414とに基づいて決定された送信制御情報1416、1418を用いて、メッセージサーバ1401からのヘッダ付メッセージ1415、1417の送信量を制御する。すなわち、QoS制御部1402は、ヘッダ付メッセージ1411及びヘッダ付メッセージ1413を制御する。
【0377】
当該制御によって、メッセージ受信者1405、1406から送信された送信制御情報1412、1414と、QoS制御部1402に入力された優先度設定1419とに基づいた、各メッセージ伝達間の優先度制御が可能となる。
【0378】
また、本実施形態では、メッセージ受信者1405、1406はQoS制御部1402に接続し、QoS制御部1402はメッセージサーバ1401に接続する。
【0379】
本実施形態では、QoS制御部1402は、メッセージ受信者1405、1406から接続を受け付け、全体制御部1024が転送制御部1021を作成し、作成された転送制御部1021がメッセージサーバに接続する。
【0380】
メッセージ受信者1405、1406からの接続が終了すると、転送制御部1021はメッセージサーバ1401への接続を切断し、全体制御部1024が転送制御部1021を削除する。
【0381】
なお、接続の度に転送制御部1021を作成せずに、以前作成された転送制御部1021を再利用することで、処理時間を削減してもよい。
【0382】
なお、QoS制御部1402の動作については、第2の実施形態のQoS制御部1002と同一である。ただし、各構成の設置位置が変更されているため、第2の実施形態の説明におけるメッセージサーバ1001がメッセージ受信者1405、1406となり、第2の実施形態の説明におけるメッセージ送信者1003、1004がメッセージサーバ1401となる。また、本実施形態では、QoS制御部1402はサーバ状態省略構成を取っているため、サーバ状態1020に基づく制御を行わない。
【0383】
(第4の実施形態)
本発明の第4の実施形態は、QoS制御部の設置位置が変更されている点が第2の実施形態と異なる。以下、第2の実施形態と共通する部分の説明は省略し、第2の実施形態との差異を中心に説明する。
【0384】
図14は、本発明の第4の実施形態におけるメッセージ基盤システム全体のソフトウェア構成を説明するブロック図である。
【0385】
なお、図において、四角又は丸四角又はQoS制御部1502は、メッセージサーバ装置101、メッセージクライアント装置102又はメッセージクライアント装置103上で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報又は指示が伝えられることを示す。また、矢印に対するキャプション及び符号は処理ブロック間で伝えられる情報又は指示を表す。
【0386】
以下、図14、図9及び図10を用いて本実施形態を説明する。
【0387】
図9に示す例では、メッセージ送信者1003、1004とメッセージサーバ1001との間にQoS制御部1002が挿入された構成であったが、本実施形態では図14に示すように、メッセージサーバ1501とメッセージ受信者1505、1506との間にもQoS制御部1502が挿入された構成となっている。
【0388】
なお、QoS制御部1502の構成は第2の実施形態と同一である。
【0389】
図14に示すような構成によって、メッセージ送信者間(メッセージ送信者1503とメッセージ送信者1504との間)、メッセージ受信者間(メッセージ受信者1505とメッセージ受信者1506との間)、及びメッセージ送信者(メッセージ送信者1503及びメッセージ送信者1504)とメッセージ受信者(メッセージ受信者1505及びメッセージ受信者1506)との間の優先度制御が可能となる。
【0390】
本実施形態におけるQoS制御部1502は、優先度設定1519とサーバ状態1520、メッセージサーバ1501から送信される送信制御情報1516、1518、メッセージ受信者1505、1506から送信される送信制御情報1512、1514に基づいて、メッセージ送信者1503、1504へ送信される送信制御情報1508、1510、及びメッセージサーバ1501へ送信される送信制御情報1515、1517をそれぞれ制御する。
【0391】
これによって、メッセージ送信者1503、1504からメッセージサーバ1501へ送信されるヘッダ付メッセージ1507、1509、及び、メッセージサーバ1501からメッセージ受信者1505、1506へ送信されるヘッダ付メッセージ1511、1513をそれぞれ制御することが可能となる。
【0392】
従って、QoS制御部1502によって、メッセージサーバ1501及びメッセージ受信者1505、1506の送信制御情報1512、1514、1516、1518と、メッセージサーバ1501の状態と、優先度設定1519とに基づいた各メッセージ伝達間の優先度制御が可能となる。
【0393】
本実施形態において、メッセージ送信者1503、1504及びメッセージ受信者1505、1506はQoS制御部1502に接続し、QoS制御部1502はメッセージサーバ1501に接続する。
【0394】
QoS制御部1502の内部構成は図10に示すものと同一であるが、接続時の処理については、メッセージ送信者1503、1504からの接続については第2の実施形態におけるQoS制御部1002と同一の処理を実行し、メッセージ受信者1505、1506からの接続については第3の実施におけるQoS制御部1402と同一の処理を実行する。
【0395】
QoS制御部1502の他の処理については、第2の実施形態のQoS制御部1002と同一である。ただし、メッセージ受信者1505、1506からの接続については、第2の実施形態の説明におけるメッセージサーバ1001が本実施形態でのメッセージ受信者1505、1506に対応し、第2の実施形態でのメッセージ送信者1503、1504が本実施形態でのメッセージサーバ1501に対応する。
【0396】
本実施形態によれば、例えば、メッセージサーバの状態が高負荷である場合、メッセージ送信者との接続に割り当てるネットワーク帯域を少なくし、メッセージ受信者との接続に割り当てるネットワーク帯域を増やすといった制御が可能になり、メッセージサーバ1501に手を加えることなくメッセージサーバ1501の負荷の調整が可能となる。
【0397】
従って、第2の実施形態と比べて、よりメッセージサーバの状態に合わせた優先度制御が可能となる。
【0398】
また、例えば、あるメッセージ送信者からメッセージサーバへのメッセージ伝達と、メッセージサーバからメッセージの宛先であるメッセージ受信者へのメッセージ伝達と、をまとめて1つの接続として扱うことによって、メッセージ送信者からメッセージ受信者へのメッセージ伝達間で優先度制御が可能となる。
【0399】
(第5の実施形態)
本発明の第5の実施形態は、複数のメッセージサーバを備えるメッセージ基盤システムに適用した点が第2の実施形態と異なる。以下、第2の実施形態と共通する部分の説明は省略し、第2の実施形態との差異を中心に説明する。
【0400】
図15は、本発明の第5の実施形態におけるメッセージ基盤システム全体のソフトウェア構成を説明するブロック図である。
【0401】
なお、図において、四角又は丸四角は、メッセージサーバ装置101、メッセージクライアント装置102又はメッセージクライアント装置103上で実行されるプログラムによって実現される処理ブロックを表す。また、処理ブロック間の矢印は、矢印の方向に情報又は指示が伝えられることを示す。また、矢印に対するキャプション及び符号は処理ブロック間で伝えられる情報又は指示を表す。
【0402】
以下、図15、図9及び図10を用いて本実施形態を説明する。
【0403】
図9に示す例では、1個以上のメッセージ送信者と1個のメッセージサーバとの間にQoS制御部1002が挿入された構成であったものが、本実施形態では図16に示すように、1個以上のメッセージ送信者と複数のメッセージサーバ1601、1602との間にQoS制御部1603が挿入された構成となっている。なお、メッセージサーバは1601及び1602の2個に限るものではなく、2個以上あってもよい。
【0404】
なお、QoS制御部1603の内部構成は、第2の実施形態と同一である。
【0405】
本実施形態によって、メッセージ送信者がそれぞれ異なるメッセージサーバと通信している場合であっても、メッセージ送信者間の優先度制御を行うことができる。
【0406】
図15のQoS制御部1603においては、図9とメッセージ送信者及びメッセージ受信者の個数が異なるため、経由する信号の数が増えているが、図10において転送制御部1021の個数が増えただけであり、第2の実施形態のQoS制御部1002で対応可能である。
【0407】
本実施形態と第2の実施形態との相違点は、メッセージサーバ1601、1602が複数ある点と、サーバ状態検出部1639、1640からのサーバ状態1637、1638が複数入力される点である。
【0408】
なお、QoS制御部1603の構成及び処理は、クレジット集中管理部1023を除いて第2の実施形態におけるQoS制御部1002と同一である。以下、QoS制御部1603に含まれるクレジット集中管理部(図示省略)の処理について説明する。
【0409】
図16は、本発明の第5の実施形態のQoS制御部1603に含まれるクレジット集中管理部の処理を説明するフローチャートである。
【0410】
図12に示す、クレジット集中管理部1023の処理と比較して、本実施形態ではメッセージサーバを2個備えることに伴って、2回同様の処理が実行される点が異なる。
【0411】
図16において、各処理の方法は第2の実施形態と同一であるが、各処理で用いられる情報が異なる。
【0412】
開始状態1301は開始状態1701と対応する。
【0413】
ステップ1702は、ステップ1302と対応する。なお、ステップ1702では、QoS制御部1603が優先度設定1636を受け付ける。
【0414】
ステップ1703及びステップ1704は、ステップ1303と対応する。なお、ステップ1703では、QoS制御部1603がサーバ状態1637を受け付け、ステップ1704では、QoS制御部1603がサーバ状態1638を受け付ける。
【0415】
ステップ1705は、ステップ1304と対応する。
【0416】
ステップ1706及びステップ1711は、ステップ1305と対応する。なお、ステップ1706では、QoS制御部1603がサーバ状態1637をサーバ状態情報として参照し、ステップ1711では、QoS制御部1603がサーバ状態1638をサーバ状態情報として参照する。
【0417】
ステップ1707及びステップ1712は、ステップ1306と対応する。なお、ステップ1707では、QoS制御部1603がメッセージ送信者1604、1605から受信したヘッダ付メッセージ1612、1614から抽出された消費クレジットを参照し、ステップ1712では、QoS制御部1603がメッセージ送信者1606、1607から受信したヘッダ付メッセージ1616、1618から抽出された消費クレジットを参照する。
【0418】
ステップ1708及びステップ1713は、ステップ1307と対応する。なお、ステップ1708では、QoS制御部1603がメッセージサーバ1601から送信された送信制御情報1629、1631から検出された利用可能クレジットを参照し、ステップ1713では、QoS制御部1603がメッセージサーバ1602から送信された送信制御情報1633、1635から検出された利用可能クレジットを参照する。
【0419】
ステップ1709及びステップ1714は、ステップ1308と対応する。なお、ステップ1709では、QoS制御部1603がメッセージサーバ1601にメッセージを送信するメッセージ送信者1604、1605に対する発行クレジットを算出し、ステップ1714では、QoS制御部1603がメッセージサーバ1602にメッセージを送信するメッセージ送信者1606、1607に対する発行クレジットを算出する。
【0420】
ステップ1710及びステップ1715は、ステップ1309と対応する。なお、ステップ1710では、QoS制御部1603がメッセージサーバ1601にメッセージを送信するメッセージ送信者1604、1605と接続する各転送制御部に算出された各発行クレジットを通知し、ステップ1715では、QoS制御部1603がメッセージサーバ1602にメッセージを送信するメッセージ送信者1606、1607と接続する各転送制御部に算出された各発行クレジットを通知する。
【0421】
終了状態1716は終了状態1310と対応する。
【0422】
すなわち、ステップ1706〜1710では、ステップ1702、ステップ1703及びステップ1705で取得された情報を用いて、メッセージサーバ1601にメッセージを送信するメッセージ送信者1604、1605に対する発行クレジットが算出され、各転送制御部の送信制御情報送信部に通知される。
【0423】
また、ステップ1711〜ステップ1715では、ステップ1702、ステップ1704及びステップ1705で取得された情報を用いて、メッセージサーバ1602にメッセージを送信するメッセージ送信者1606、1607に対する発行クレジットが算出され、各転送制御部の送信制御情報送信部に通知される。
【0424】
なお、図16の各ステップにおける処理内容は、第2の実施形態と同一であるため説明を省略する。
【0425】
第5の実施形態によれば、メッセージ送信者がそれぞれ異なるメッセージサーバと通信する場合であっても、メッセージ送信者間の優先度制御を行うことができる。以下、具体的な例をあげて説明する。
【0426】
まず、図15に示す構成において、優先度設定1636として、例えば、メッセージ送信者1604〜1607が使用できる帯域を「1000Mbps」、各メッセージ送信者1604〜1607の帯域比を「4:3:2:1」と割り当てる。
【0427】
この場合、QoS制御部1603は、ステップ1702において前述の優先度設定1636を受け付け、ステップ1705において当該優先度設定を優先度情報として参照し、ステップ1709及びステップ1714において発行クレジットを算出するために用いる。
【0428】
ステップ1709における発行クレジットの算出処理では、ステップ902においてtotal_creditに前述した1000Mbpsが設定され、ステップ903において前述した帯域比4:3:2:1を用いてtotal_creditが比例配分される。
【0429】
具体的には、next_creditは、メッセージ送信者1604に対して400Mbps、メッセージ送信者1605に対して300Mbps、メッセージ送信者1606に対して200Mbps、メッセージ送信者1607に対して100Mbpsと割り当てられる。
【0430】
さらに、前述したnext_creditに基づいて、ステップ1709においてはメッセージサーバ1601にメッセージを送信するメッセージ送信者1604、1605への発行クレジットが算出され、ステップ1714においてはメッセージサーバ1602にメッセージを送信するメッセージ送信者1606、1607への発行クレジットが算出される。
【0431】
ステップ1709において算出された発行クレジットは、メッセージサーバ1601にメッセージを送信するメッセージ送信者1604、1605のみに通知される。
【0432】
一方、ステップ1714において算出された発行クレジットは、メッセージサーバ1602にメッセージを送信するメッセージ送信者1606、1607のみに通知される。
【0433】
前述したように、ステップ1709と、ステップ1714とにおいて、それぞれ個別に発行クレジットが算出されるが、全体として使用できる帯域として設定された帯域が、設定された各メッセージ送信者の帯域比に基づいて分配される。従って、メッセージサーバ1601、1602と異なるサーバと通信しているメッセージ送信者1604〜1607の間で優先度制御が可能となる。
【0434】
(第5の実施形態の変形例)
第2の実施形態に対してQoS制御部1002の設置位置を変更した実施形態としての第3の実施形態及び第4の実施形態と同様に、第5の実施形態に対してもQoS制御部1603の設置位置を変更した実施形態をとることが可能である。この場合についても、第3の実施形態及び第4の実施形態と同様の効果が、複数のメッセージサーバに対して得られる。
【0435】
また、同様に、第2の実施形態において示したQoS制御部1002のプログラム構成の変形例は、第5の実施形態に対しても適用可能である。
【0436】
これらの変形例については、第2の実施形態、第3の実施形態及び第4の実施形態と同一であるため説明を省略する。
【0437】
本発明の一実施形態によれば、既存のプロトコルを基づいて、複数のメッセージ伝送間の優先度制御を実現することが可能となる。
【符号の説明】
【0438】
101 メッセージサーバ装置
102 メッセージクライアント装置
103 メッセージクライアント装置
104 ネットワーク
105 CPU
106 記憶装置
107 入出力装置
108 ネットワークインタフェース
109 共通バス
110 CPU
111 記憶装置
112 入出力装置
113 ネットワークインタフェース
114 共通バス
115 CPU
116 記憶装置
117 入出力装置
118 ネットワークインタフェース
119 共通バス
120 メッセージサーバ
121 サーバ状態
122 優先度情報
123 配送状態
124 キュー状態
125 クレジット管理情報
126 メッセージ送信者
127 メッセージ受信者
201 メッセージサーバ
202、203 メッセージ送信者
204、205 メッセージ受信者
206、208、210、212 ヘッダ付メッセージ
207、209、211、213 送信制御情報
207 送信制御情報
214 受信/配送部
215 キュー部
216 送信部
217 クレジット発行部
223、224、225、226 メッセージ
301 メッセージサーバ
302、303 メッセージ送信者
304、305 メッセージ受信者
306、308、310、311 ヘッダ付メッセージ
307、309、312、313 送信制御情報
314 優先度設定
315 受信/配送部
316 キュー部
317 送信部
321 クレジット集中管理部
322 全体制御部
323、324、325、326 メッセージ
327 発行クレジット
328 配送状態
329 キュー状態
402、404、430 ヘッダ付メッセージ
403、405 送信制御情報
412、414 メッセージ
413 エンキュー指示
415 デキュー指示
419 データ受信部
420 メッセージ抽出部
421 送信制御情報送信部
422 配送管理部
423 キュー
424 キュー状態管理部
425 データ送信部
426 送信制御情報受信部
427 優先度管理部
428 クレジット制御部
429 サーバ状態検出部
431 ヘッダ情報
432 操作指示
433 送信指示
434 優先度情報
435 サーバ状態情報
1001 メッセージサーバ
1002 QoS制御部
1003、1004 メッセージ送信者
1005、1006 メッセージ受信者
1007、1009、1011、1013、1015、1017 ヘッダ付メッセージ
1008、1010、1012、1014、1016、1018 送信制御情報
1019 優先度設定
1020 サーバ状態
1021 転送制御部
1023 クレジット集中管理部
1024 全体制御部
1025 サーバ状態検出部
1026 発行クレジット
1027 消費クレジット
1028 利用可能クレジット
1102、1104、1123、1124 ヘッダ付メッセージ
1103、1105 送信制御情報
1114 データ受信部
1115 ヘッダ抽出部
1116 データ送信部
1117 送信制御情報送信部
1118 クレジット消費検出部
1119 送信制御情報受信部
1120 優先度管理部
1121 クレジット制御部
1122 サーバ状態受付部
1125 ヘッダ情報
1126 優先度情報
1127 サーバ状態情報
1401 メッセージサーバ
1402 QoS制御部
1403、1404 メッセージ送信者
1405、1406 メッセージ受信者
1407、1409、1411、1413、1415、1417 ヘッダ付メッセージ
1408、1410、1412、1414、1416、1418 送信制御情報
1419 優先度設定
1501 メッセージサーバ
1502 QoS制御部
1503、1504 メッセージ送信者
1505、1506 メッセージ受信者
1507、1509、1511、1513 ヘッダ付メッセージ
1508、1510、1512、1514、1515、1516、1517、1518 送信制御情報
1519 優先度設定
1520 サーバ状態
1601、1602 メッセージサーバ
1603 QoS制御部
1604、1605、1606、1607 メッセージ送信者
1608、1609、1610、1611 メッセージ受信者
1612、1614、1616、1618、1620、1622、1624、1626、1628、1630、1632、1634 ヘッダ付メッセージ
1613、1615、1617、1619、1621、1623、1625、1627、1629、1631、1633、1635 送信制御情報
1636 優先度設定
1637、1638 サーバ状態
1639、1640 サーバ状態検出部
1801 サーバID
1802 CPU使用率
1803 検出時刻
1901 送信者ID
1902 受信者ID
1903 帯域比
2001 送信者ID
2002 受信者ID
2003 転送量
2004 検出時刻
2101 キューID
2102 使用容量
2103 全体容量
2104 検出時刻
2201 送信者ID
2202 受信者ID
2203 発行クレジット
2204 発行時刻

【特許請求の範囲】
【請求項1】
複数の計算機間でメッセージを転送する通信システムにおける通信方法であって、
前記計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続され、他の前記計算機と通信するためのネットワークインタフェースとを備え、
前記各計算機は、前記メッセージを送信するためのメッセージ送信部、又は前記メッセージ送信部から送信されたメッセージを受信するためのメッセージ受信部の少なくとも一方を備え、
少なくとも一以上の前記計算機は、前記メッセージの伝達を制御するメッセージ制御部と、前記各メッセージ送信部から送信されるメッセージの転送の優先度を制御するメッセージ管理部と、を備え、
前記方法は、
前記メッセージ管理部が、前記メッセージ制御部を備える前記計算機の負荷、又は、前記各メッセージ送信部から送信されたメッセージの送信量若しくはメッセージの送信数の少なくともいずれかを取得する第1のステップと、
前記メッセージ管理部が、前記各メッセージの転送の優先度を制御するための優先度設定を取得する第2のステップと、
前記メッセージ管理部が、前記取得された優先度設定と、前記取得された計算機の負荷又は前記取得されたメッセージの送信量とに基づいて、前記各メッセージ送信部が送信可能なメッセージの容量を決定する第3のステップと、
前記メッセージ管理部が、前記決定された各メッセージ送信部が送信可能なメッセージの容量を前記各メッセージ送信部に送信する第4のステップと、
前記各メッセージ送信部が、前記受信した各メッセージ送信部が送信可能なメッセージの容量に基づいて、前記メッセージの送信量を制御する第5のステップと、を含むことを特徴とする通信方法。
【請求項2】
前記各メッセージ送信部が送信可能なメッセージの容量は、前記各メッセージ送信部が単位時間に送信可能なメッセージの容量であることを特徴とする請求項1に記載の通信方法。
【請求項3】
前記各メッセージ送信部が送信可能なメッセージの容量は、前記各メッセージ送信部が所定の容量のメッセージを送信する時間間隔であり、
前記メッセージ管理部は、前記各メッセージ送信部が所定の容量のメッセージを送信する時間間隔に基づいて、前記各メッセージ送信部に送信可能なメッセージのうち、前記所定の容量の前記メッセージを送信することを特徴とする請求項1に記載の通信方法。
【請求項4】
前記第3のステップは、
前記メッセージ管理部が、前記取得されたメッセージの送信量を用いて、前記各メッセージ送信部がメッセージの転送に使用可能な帯域を算出する第6のステップと、
前記メッセージ管理部が、前記算出された各メッセージ送信部がメッセージの転送に使用可能な帯域、及び前記取得された計算機の負荷を用いて、前記各メッセージ送信部が送信可能なメッセージの容量を決定する第7のステップと、を含むことを特徴とする請求項1に記載の通信方法。
【請求項5】
前記優先度情報は、全メッセージ送信部がメッセージの送信に使用可能な帯域の合計値と、前記各メッセージ送信部がメッセージの送信に使用可能な帯域の比率と、を含み、
前記第6のステップは、
前記全メッセージ送信部がメッセージの送信に使用可能な帯域の合計値と、前記各メッセージ送信部がメッセージの送信に使用可能な帯域の比率とを用いて、前記各メッセージ送信部がメッセージの送信に使用可能な準備割当帯域を算出するステップと、
前記各メッセージ送信部によってメッセージの送信に使用された帯域を取得し、前記全メッセージ送信部によってメッセージの送信に使用された帯域の合計値を算出するステップと、
前記算出された全メッセージ送信部によってメッセージの送信に使用された帯域の合計値が、前記メッセージ送信部がメッセージの送信に使用可能な全ての帯域以上であるか否かを判定するステップと、
前記算出された全メッセージ送信部によってメッセージの送信に使用された帯域の合計値が、前記メッセージ送信部がメッセージの送信に使用可能な全ての帯域以上であるか否かの判定結果に基づいて、前記各メッセージ送信部によってメッセージの送信に使用された帯域と前記各メッセージ送信部がメッセージの送信に使用可能な準備割当帯域との差を、前記各メッセージ送信部において算出するステップと、
前記各メッセージ送信部によってメッセージの送信に使用された帯域と前記各メッセージ送信部がメッセージの送信に使用可能な準備割当帯域との差の前記全メッセージ送信部における合計値を算出するステップと、
前記全メッセージ送信部がメッセージの送信に使用可能な帯域の合計値、前記各メッセージ送信部がメッセージの送信に使用可能な帯域の比率、及び前記前記各メッセージ送信部によってメッセージの送信に使用された帯域と前記各メッセージ送信部がメッセージの送信に使用可能な準備割当帯域との差の全メッセージ送信部における合計値を用いて、前記各メッセージ送信部がメッセージの送信に使用可能な割当帯域を算出するステップと、を含むことを特徴とする請求項4に記載の通信方法。
【請求項6】
前記優先度情報は、さらに、前記メッセージ制御部を備える計算機の負荷の上限値と、を含み、
前記第7のステップは、
前記各メッセージ送信部に前回割り当てられたメッセージの送信に使用可能な帯域の合計値を取得するステップと、
前記各メッセージ送信部が前回送信したメッセージを転送した時の前記メッセージ制御部を備える計算機の負荷を取得するステップと、
前記各メッセージ送信部に前回割り当てられたメッセージの送信に使用可能な帯域の合計値と、前記各メッセージ送信部が前回送信したメッセージを転送した時のメッセージ制御部を備える計算機の負荷とに基づいて、前記メッセージ制御部を備える計算機の負荷の予測値を算出するステップと、
前記算出されたメッセージ制御部を備える計算機の負荷の予測値が前記メッセージ制御部を備える計算機の負荷の上限値より大きい場合には、前記メッセージ制御部を備える計算機の負荷が前記メッセージ制御部を備える計算機の負荷の上限値以下になるように、前記算出された各メッセージ送信部がメッセージの送信に使用可能な割当帯域を減少させるステップと、を含むことを特徴とする請求項5に記載の通信方法。
【請求項7】
複数の計算機間でメッセージを転送する通信システムであって、
前記計算機は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続され、他の前記計算機と通信するためのネットワークインタフェースとを備え、
前記各計算機は、前記メッセージを送信するためのメッセージ送信部、又は前記メッセージ送信部から送信されたメッセージを受信するためのメッセージ受信部の少なくとも一方を備え、
少なくとも一以上の前記計算機は、前記メッセージの伝達を制御するメッセージ制御部と、前記各メッセージ送信部から送信されるメッセージの転送の優先度を制御するメッセージ管理部と、を備え、
前記メッセージ管理部は、
前記メッセージ制御部を備える前記計算機の負荷、又は、前記各メッセージ送信部から送信されたメッセージの送信量若しくはメッセージの送信数の少なくともいずれかを取得し、
前記各メッセージの転送の優先度を制御するための優先度設定を取得し、
前記取得された優先度設定と、前記取得された計算機の負荷又は前記取得されたメッセージの送信量とに基づいて、前記各メッセージ送信部が送信可能なメッセージの容量を決定し、
前記決定された各メッセージ送信部が送信可能なメッセージの容量を前記各メッセージ送信部に送信し、
前記各メッセージ送信部は、
前記受信した各メッセージ送信部が送信可能なメッセージの容量に基づいて、前記メッセージの送信量を制御することを特徴とする通信システム。
【請求項8】
前記各メッセージ送信部が送信可能なメッセージの容量は、前記各メッセージ送信部が単位時間に送信可能なメッセージの容量であることを特徴とする請求項7に記載の通信システム。
【請求項9】
前記各メッセージ送信部が送信可能なメッセージの容量は、前記各メッセージ送信部が所定の容量のメッセージを送信する時間間隔であり、
前記メッセージ管理部は、前記各メッセージ送信部が所定の容量のメッセージを送信する時間間隔に基づいて、前記各メッセージ送信部に送信可能なメッセージのうち、前記所定の容量の前記メッセージを送信することを特徴とすることを特徴とする請求項7に記載の通信システム。
【請求項10】
前記メッセージ管理部は、
前記メッセージ送信部と前記メッセージ制御部との間、又は、前記メッセージ制御部と前記メッセージ受信部との間の少なくともいずれか一方のメッセージの転送を中継し、
前記メッセージ送信部と前記メッセージ制御部との間のメッセージの送信量、又は、前記メッセージ制御部と前記メッセージ受信部との間のメッセージの送信量の少なくともいずれか一方を取得することを特徴とする請求項7に記載の通信システム。
【請求項11】
前記複数の計算機は、第1の計算機、第2の計算機及び第3の計算機を含み、
前記メッセージ送信部は前記第1の計算機に備わり、前記メッセージ制御部は前記第2の計算機に備わり、前記メッセージ受信部は前記第3の計算機に備わり、
前記メッセージ制御部は、前記メッセージ管理部を含み、
前記第2の計算機は、
前記メッセージ送信部から前記メッセージ受信部に転送されるメッセージを中継するために、前記第1の計算機と前記第3の計算機との間を接続し、
前記第2の計算機の負荷、又は、前記第1の計算機から送信されたメッセージの送信量の少なくともいずれかを取得し、
前記各メッセージの転送の優先度を制御するための優先度設定を取得し、
前記取得された優先度設定と、前記取得された第2の計算機の負荷又は前記取得された第1の計算機から送信されたメッセージの送信量とに基づいて、前記第1の計算機から送信可能なメッセージの容量を示す情報を決定し、
前記決定された第1の計算機から送信可能なメッセージの容量を前記第1の計算機に送信し、
前記第1の計算機は、前記受信した第1の計算機から送信可能なメッセージの容量に基づいて、前記第1の計算機から送信されるメッセージの送信量を制御することを特徴とする請求項7に記載の通信システム。
【請求項12】
前記複数の計算機は、第1の計算機、第2の計算機、第3の計算機及び第4の計算機を含み、
前記メッセージ送信部は前記第1の計算機に備わり、前記メッセージ制御部は前記第2の計算機に備わり、前記メッセージ管理部は前記第3の計算機に備わり、前記メッセージ受信部は前記第4の計算機に備えられ、
前記第2の計算機は、前記メッセージ送信部から前記メッセージ受信部に転送されるメッセージを中継するために、前記第3の計算機と前記第4の計算機との間を接続し、
前記第3の計算機は、前記第1の計算機と前記第2の計算機との間のメッセージの転送を中継するために、前記第1の計算機と前記第2の計算機との間を接続し、
前記メッセージ管理部は、
当該第2の計算機の負荷、又は、前記第1の計算機から送信されたメッセージの送信量の少なくともいずれかを取得し、
前記各メッセージの転送の優先度を制御するための優先度設定を取得し、
前記取得された優先度設定と、前記取得された第2の計算機の負荷又は前記取得された第1の計算機から送信されたメッセージの送信量とに基づいて、前記第1の計算機が送信可能なメッセージの容量を決定し、
前記決定された第1の計算機が送信可能なメッセージの容量を前記第1の計算機に送信し、
前記第1の計算機は、前記受信した第1の計算機が送信可能なメッセージの容量に基づいて、前記第1の計算機から送信されるメッセージの送信量を制御することを特徴とする請求項7に記載の通信システム。
【請求項13】
前記複数の計算機は、第1の計算機、第2の計算機、第3の計算機及び第4の計算機を含み、
前記メッセージ送信部は前記第1の計算機に備わり、前記メッセージ制御部は前記第2の計算機に備わり、前記メッセージ管理部は前記第3の計算機に備わり、前記メッセージ受信部は前記第4の計算機に備わり、
前記第2の計算機は、前記メッセージ送信部から前記メッセージ受信部に転送されるメッセージを中継するために、前記第1の計算機と前記第3の計算機との間を接続し、
前記第3の計算機は、前記第2の計算機と前記第4の計算機との間のメッセージの転送を中継するために、前記第2の計算機と前記第4の計算機との間を接続し、
前記メッセージ管理部は、
前記第2の計算機から送信されたメッセージの送信量を取得し、
前記各メッセージの転送の優先度を制御するための優先度設定を取得し、
前記取得された優先度設定と、前記取得された第2の計算機から送信されたメッセージの送信量とに基づいて、前記第2の計算機が送信可能なメッセージの容量を決定し、
前記決定された第2の計算機が送信可能なメッセージの容量を前記第2の計算機に送信し、
前記第2の計算機は、前記受信した第2の計算機が送信可能なメッセージの容量に基づいて、前記第2の計算機から送信されるメッセージの送信量を制御することを特徴とする請求項7に記載の通信システム。
【請求項14】
複数の計算機間でメッセージを転送する通信システムにおけるサーバであって、
前記サーバは、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続され、他の前記計算機と通信するためのネットワークインタフェースとを備え、
一以上のメッセージを送信する第1の計算機と、一以上のメッセージを受信する第2の計算機との間のメッセージの転送を中継するように、前記一以上の第1の計算機と前記一以上の第2の計算機とに接続され、
前記メッセージの伝達を制御するメッセージ制御部と、
前記各メッセージ送信部から送信されるメッセージの転送の優先度を制御するメッセージ管理部と、を備え、
前記メッセージ管理部は、
前記サーバの負荷、又は、前記各第1の計算機から送信されたメッセージの送信量の少なくともいずれかを取得し、
前記各メッセージの転送の優先度を制御するための優先度設定を取得し、
前記メッセージ管理部が、前記取得された優先度設定と、前記取得されたサーバの負荷又は前記取得された各第1の計算機から送信されたメッセージの送信量とに基づいて、前記各第1の計算機が送信可能なメッセージの容量を制御するための情報を決定し、
前記決定された各第1の計算機が送信可能なメッセージの容量を制御するための情報を前記各第1の計算機に送信することを特徴とするサーバ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2011−182115(P2011−182115A)
【公開日】平成23年9月15日(2011.9.15)
【国際特許分類】
【出願番号】特願2010−42990(P2010−42990)
【出願日】平成22年2月26日(2010.2.26)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】