JP2013192025A - メッセージングシステム、メッセージング方法およびプログラム - Google Patents

メッセージングシステム、メッセージング方法およびプログラム Download PDF

Info

Publication number
JP2013192025A
JP2013192025A JP2012056644A JP2012056644A JP2013192025A JP 2013192025 A JP2013192025 A JP 2013192025A JP 2012056644 A JP2012056644 A JP 2012056644A JP 2012056644 A JP2012056644 A JP 2012056644A JP 2013192025 A JP2013192025 A JP 2013192025A
Authority
JP
Japan
Prior art keywords
storage
message
storage destination
switching
destination
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012056644A
Other languages
English (en)
Inventor
Sumiaki Sakae
純明 榮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2012056644A priority Critical patent/JP2013192025A/ja
Publication of JP2013192025A publication Critical patent/JP2013192025A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Communication Control (AREA)

Abstract

【課題】メッセージングシステムにおいて、蓄積手段の切り替え時におけるオーバーヘッドを小さくするとともにメッセージの取りこぼしを防ぐこと。
【解決手段】送信手段から送出されたメッセージの蓄積先を示す情報を第1の蓄積先情報として保持する第1の蓄積先保持手段とメッセージを一時的に蓄積する第1の蓄積手段とを有するとともに第1の蓄積手段に蓄積されたメッセージを受信手段に送出する第1のノードと、送信手段から送出されたメッセージの蓄積先を示す情報を第2の蓄積先情報として保持する第2の蓄積先保持手段を有する第2のノードと、送信手段から送出されたメッセージを一時的に蓄積する第2の蓄積手段を第2のノードに生成するとともに第1の蓄積先情報および第2の蓄積先情報を更新することにより、メッセージの蓄積先を第1の蓄積手段から第2の蓄積手段へと切り替える蓄積先切替手段と、を備える。
【選択図】図1

Description

本発明は、メッセージングシステム、メッセージング方法およびプログラムに関し、特に、結合度が低く(疎結合)、スケーラブルなメッセージングシステム、メッセージング方法およびプログラムに関する。
メッセージキューの切り替えを行う伝送システムが、一例として特許文献1に記載されている。図8は、特許文献1に記載された伝送システムの構成を示すブロック図である。図8に示した伝送システムは、伝送システムに入力されるメッセージ(図8では「データ」と表記)をキュー71,72に切り替えるスイッチ73と、スイッチ73を制御する制御手段74とを備える。図8に記載した伝送システムでは、キューを切り替える際、制御手段74が図示しない別の箇所で生成される伝送路切替情報により切り替えの要求を検出して、スイッチ73を動作させる。この切り替えの際、各伝送路に対応するキューのデータをすべて送信し、キューが空になったことを制御手段74が検出してから伝送路を切り替える。
しかし、図8に示した伝送システムによると、キューのデータをすべて送信してからでないと、キューを切り替えることができないため、キューの切り替えの際に時間を要するという問題がある。また、キューに接続される伝送路の状態が悪化したことが原因でキューを切り替える場合には、キューが空になるまでの間、悪化した伝送路にメッセージが流れることになるため、それらのメッセージの信頼性が低下するという問題がある。
特許文献1には、この問題を解決する伝送システムとして、図9に示す伝送システムが記載されている。図9に記載した伝送システムでは、キューを切り替える際にキューの内容を対応するバッファ81,82に吐き出し、切り替え先のキューに移動する。制御手段83は、伝送路切替情報を受け取った後、まず、切り替え前のキューの内容を対応するバッファに移すように指示する。バッファリングが終わると、切り替え先のバッファへ切り替え元のバッファの内容をコピーするように指示する。コピーが終わると、切り替え先のバッファから切り替え先のキューにバッファの内容を入れるように指示し、その後スイッチ73を切り替え先の方に切り替える。
また、非特許文献1には、メッセージングシステムにおいてメッセージキューの分散化を行う方法が記載されている(図10、図11)。非特許文献1に記載されたメッセージングシステムは、メッセージを送信する出版者(Publisher)Pubと、メッセージを受信する購読者(Subscriber)Subと、購読者Subがメッセージ受信時に利用する1つ以上のキュー(Queue)と、出版者Pubによってメッセージに付加されたルーティングキー(タグ、トピックとも呼ぶ。)に基づいてそのルーティングキーを購読している購読者Subのキューにメッセージを配送するExchangeとを備える。ブローカー(Broker)は、Exchangeとキューを含む。図10および図11に示したモデルは、「出版−購読型モデル」と呼ばれる(以下、「Pub−Subモデル」という。)。図10に示すように、各ブローカーのExchangeの内容は同一である。したがって、ある出版者Pubからのメッセージは、いずれのブローカーを経由しても正しい購読者Subに配送される(図11の点線矢印参照)。
次に、図10および図11に示したメッセージングシステムにおいて、特定の購読者Subまたはキューに負荷が集中することでそのキューを保持するブローカーの負荷が高くなった場合に行われる、負荷分散について考える。図12において、斜線でハッチングして示したPub/Sub/Queueは高負荷状態にあること、ドットパターンマークで示したPub/Sub/Queueは中程度の負荷であること、白地で示したPub/Sub/Queueは低負荷状態にあることを示す。ここでは、一方のブローカーに含まれるキューを他方のブローカーにマイグレーション(移行)することで負荷分散を図り、図12(a)の状態から図12(b)の状態に移行するものとする。なお、負荷の偏りの検出とマイグレーション対象のキューとそのマイグレーション先の決定に関しては、適当な方法で行うものとする。キューのマイグレーション時には、メッセージの取りこぼしの発生を防ぐために、キューデータのマイグレーション、購読者の付け替え、Exchangeの書き換えの一連の操作(図12(b)太実線矢印参照)をアトミックに行う必要がある。
特開平10−107868号公報(図7、図8)
Alvaro Videla and Jason J.W. Williams, "RabbitMQ in Action (Version 7)," Fig. 5.2.
以下の分析は、本発明者によってなされたものである。
特許文献1に記載された方式によると、キューの切り替え時にメッセージを取りこぼすおそれがある。特許文献1に記載された伝送システム(図8および図9)によると、図8および図9のいずれの構成の場合にも、キューの切り替えに際して、キューへのメッセージの配送を切り替えるスイッチ73をまずニュートラル(中立)にし、キューが空になるまで、または、バッファを経由してキューの内容を他のキューに移動し終わるまで、スイッチ73はニュートラルのまま切り替えられない。したがって、メッセージが多量に発生するシステムにおいては、メッセージの取りこぼしが生じるおそれがある。また、メッセージの取りこぼしを防ぐには、メッセージ送信元等でメッセージの流量を調整しなければならない。
一方、非特許文献1に記載されたシステム(図10、図11)によると、キューのマイグレーション(図12)の際のオーバーヘッドが大きいという問題がある。その理由は、キューのマイグレーション時にメッセージの一貫性を保つために、キューデータのマイグレーション、購読者の付け替え、Exchangeの書き換えの各操作をアトミックに行わねばならないからである。このオーバーヘッドは、ブローカーの台数が増えるに従って顕著になる。
特に、メッセージが多量で負荷変動の大きいメッセージングシステムにおいて、負荷分散を実現するためには、次々にやってくるメッセージをブロックすることなく、同期的な操作を削減しオーバーヘッドを最小限とする、効率的なキューの切り替え方式を実現することが望まれる。
そこで、メッセージングシステムにおいて蓄積手段の切り替え時におけるオーバーヘッドを小さくし、メッセージの取りこぼしを防ぐことが課題となる。本発明の目的は、かかる課題を解決するメッセージングシステム、メッセージング方法およびプログラムを提供することにある。
本発明の第1の視点に係るメッセージングシステムは、
送信手段から送出されたメッセージの蓄積先を示す情報を第1の蓄積先情報として保持する第1の蓄積先保持手段と、前記メッセージを一時的に蓄積する第1の蓄積手段とを有し、前記第1の蓄積手段に蓄積されたメッセージを受信手段に送出する第1のノードと、
前記送信手段から送出されたメッセージの蓄積先を示す情報を第2の蓄積先情報として保持する第2の蓄積先保持手段を有する第2のノードと、
前記送信手段から送出されたメッセージを一時的に蓄積する第2の蓄積手段を前記第2のノードに生成するとともに、前記第1の蓄積先情報および前記第2の蓄積先情報を更新することにより、前記メッセージの蓄積先を前記第1の蓄積手段から前記第2の蓄積手段へと切り替える蓄積先切替手段と、を備える。
本発明の第2の視点に係るメッセージング方法は、
第1のノードが、送信手段から送出されたメッセージの蓄積先を示す情報を第1の蓄積先情報として保持する工程と、
前記第1のノードが前記メッセージを一時的に蓄積する第1の蓄積手段に蓄積するとともに、前記第1の蓄積手段に蓄積されたメッセージを受信手段に送出する工程と、
第2のノードが前記送信手段から送出されたメッセージの蓄積先を示す情報を第2の蓄積先情報として保持する工程と、
蓄積先切替手段が、前記送信手段から送出されたメッセージを一時的に蓄積する第2の蓄積手段を前記第2のノードに生成するとともに、前記第1の蓄積先情報および前記第2の蓄積先情報を更新することにより、前記メッセージの蓄積先を前記第1の蓄積手段から前記第2の蓄積手段へと切り替える工程と、を含む。
本発明の第3の視点に係るプログラムは、
送信手段から送出されたメッセージの蓄積先を示す情報を第1の蓄積先情報として保持するとともに、前記メッセージを一時的に蓄積する第1の蓄積手段に蓄積し、前記第1の蓄積手段に蓄積されたメッセージを受信手段に送出する第1のノードと、前記送信手段から送出されたメッセージの蓄積先を示す情報を第2の蓄積先情報として保持する第2のノードとを備えたメッセージングシステムにおいて、前記メッセージの蓄積先を前記第1の蓄積手段から前記第2の蓄積手段へと切り替える際に、前記送信手段から送出されたメッセージを一時的に蓄積する第2の蓄積手段を前記第2のノードに生成する処理と、
前記第1の蓄積先情報および前記第2の蓄積先情報を更新する処理と、をコンピュータに実行させる。
なお、プログラムは、非トランジエントなコンピュータ読み取り可能な記録媒体(non-transient computer-readable storage medium)に記録されたプログラム製品として提供することができる。
本発明に係るメッセージングシステム、メッセージング方法およびプログラムによると、キュー切り替え時におけるオーバーヘッドを小さくし、メッセージの取りこぼしを防ぐことができる。
第1の実施形態に係るメッセージングシステムの構成を一例として示すブロック図である。 第1の実施形態に係るメッセージングシステムと出版−購読モデルに基づくメッセージングシステムとの対応関係を示す図である。 第1の実施形態に係るメッセージングシステムにおけるメッセージの構成を一例として示す図である。 第1の実施形態に係るメッセージングシステムにおける送信手段の動作を一例として示すフロー図である。 第1の実施形態に係るメッセージングシステムにおける蓄積先切替手段の動作を一例として示すフロー図である。 第1の実施形態に係るメッセージングシステムにおける受信手段およびスイープ手段の動作を一例として示すフロー図である。 第2の実施形態に係るメッセージングシステムにおける蓄積先切替手段の動作を一例として示すフロー図である。 特許文献1に記載された伝送システムの構成を示すブロック図である。 特許文献1に記載された伝送システムの構成を示すブロック図である。 非特許文献1に記載されたメッセージキューの分散化の例を示す図である。 関連技術におけるメッセージキューの分散化の例を示す図である。 関連技術におけるメッセージキューの負荷分散の例を示す図である。
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
図1は、一実施形態に係るメッセージングシステムの構成を示すブロック図である。図1を参照すると、メッセージングシステムは、メッセージを送信する送信手段(30)とメッセージを受信手段(40)の間で、メッセージを中継する複数のノード(10,20)と、メッセージの蓄積手段の切り替えを制御する蓄積先切替手段(50)と、を備える。ノード(10,20)は、メッセージの蓄積先の蓄積手段を示す情報を管理および提供する蓄積先保持手段(11,21)、および、メッセージを一時的に蓄積する蓄積手段(12,22)を備える。ノード(10)は、蓄積手段切り替え後に切り替え前の蓄積手段に迷い込んだメッセージを切り替え後の蓄積手段に転送するスイープ手段(13)を備える。受信手段(40)は、メッセージを受信する蓄積手段を切り替える受信元切替手段(41)を備える。
蓄積先切替手段(50)は、所定の方法に基づいて、負荷の偏りを検出するとともに切り替え対象の蓄積手段とその切替先を決定し、蓄積手段の切り替えを行う。蓄積先切替手段(50)は、蓄積手段の切り替えに際して、切り替え先のノード(20)に新規に蓄積手段(22)を生成し、蓄積先保持手段(11,21)のメッセージ配送テーブルを更新し、現在の蓄積手段(12)に切り替えを示すマーカーを挿入する。
マーカーは、切り替え先のノードを識別する識別子を含む。受信手段(40)は、マーカーを処理するタイミングで接続先の蓄積手段を新しく作成した蓄積手段(22)に切り替える。また、ノード(10)で動作するスイープ手段(13)は、マーカー以後に届いたメッセージを新しく作成した蓄積手段(22)に転送する。
かかるメッセージングシステムによると、蓄積手段の切り替え時にメッセージを取りこぼす可能性を削減することができる。
その理由は、切り替えに時間を要する蓄積手段(12,22)のマイグレーションを行う代わりに、マーカーを介して送信手段(30)と受信手段(40)でタイミングを調整して使用する蓄積手段を切り替えるため、待ち時間が必要ないからである。また、マーカー以降に古い蓄積手段(12)に届いたメッセージはスイープ手段(13)によって新たな蓄積手段(22)に転送されるため、蓄積先保持手段(11,21)の配送テーブルを全ノード(10,20)で同期して変更する必要がないからである。
また、前記一実施形態に係るメッセージングシステムによると、蓄積手段の切り替え時に各操作をアトミックに行う必要がなく、蓄積手段切り替えの効率がよく、蓄積手段切り替えのオーバーヘッドも小さい。
その理由は、スイープ手段(13)を導入したことにより、受信手段(40)は、まず、古い蓄積手段(12)のメッセージを処理してから新しい蓄積手段(22)に切り替えること、1つの送信手段(30)からの複数のメッセージは単一の蓄積先保持手段を経ることで、メッセージの一貫性を実現しているからである。ここで、メッセージの一貫性とは、1つの送信手段(30)から送信された特定のルーティングキーを持った複数のメッセージの順序が保存され、漏れや重複がなく受信手段(40)に届くことをいう。
本発明において、さらに、下記の形態が可能である。
[形態1]
上記第1の視点に係るメッセージングシステムのとおりである。
[形態2]
前記第1の蓄積手段は、キュー構造を有し、
前記蓄積先切替手段は、前記切り替えの際に、前記第2の蓄積手段の識別子を含むマーカーを、前記第1の蓄積手段にエンキューしてもよい。
[形態3]
前記受信手段は、前記第1の蓄積手段から前記マーカーを受信した場合、前記メッセージの受信元を前記第1の蓄積手段から前記第2の蓄積手段に切り替えてもよい。
[形態4]
前記第1のノードは、前記第1の蓄積先情報を更新した後に前記第1の蓄積手段に混入したメッセージを、前記第2の蓄積手段に転送するスイープ手段を備えていてもよい。
[形態5]
前記蓄積先切替手段は、前記第1の蓄積先情報および前記第2の蓄積先情報を同時に更新してもよい。
[形態6]
前記送信手段、前記受信手段、前記第1および第2のノード、前記第1および第2の蓄積先保持手段、ならびに、前記第1および第2の蓄積手段は、それぞれ、出版−購読型モデル(Publisher-Subscriber Model)における発行者(Publisher)、購読者(Subscriber)、ブローカー(Broker)、Exchange、および、キュー(Queue)であってもよい。
[形態7]
上記第2の視点に係るメッセージング方法のとおりである。
[形態8]
前記メッセージング方法において、
前記第1の蓄積手段は、キュー構造を有し、
前記蓄積先切替手段が、前記切り替えの際に、前記第2の蓄積手段の識別子を含むマーカーを、前記第1の蓄積手段にエンキューする工程を含んでいてもよい。
[形態9]
前記メッセージング方法は、前記受信手段が、前記第1の蓄積手段から前記マーカーを受信した場合、前記メッセージの受信元を前記第1の蓄積手段から前記第2の蓄積手段に切り替える工程を含んでいてもよい。
[形態10]
前記メッセージング方法は、前記第1のノードが、前記第1の蓄積先情報を更新した後に前記第1の蓄積手段に混入したメッセージを、前記第2の蓄積手段に転送する工程を含んでいてもよい。
[形態11]
前記メッセージング方法において、前記蓄積先切替手段が、前記第1の蓄積先情報および前記第2の蓄積先情報を同時に更新してもよい。
[形態12]
上記第3の視点に係るプログラムのとおりである。
[形態13]
前記プログラムにおいて、
前記第1の蓄積手段は、キュー構造を有し、
前記切り替えの際に、前記第2の蓄積手段の識別子を含むマーカーを、前記第1の蓄積手段にエンキューする処理を、前記コンピュータに実行させるようにしてもよい。
[形態14]
前記プログラムは、前記第1の蓄積先情報および前記第2の蓄積先情報を同時に更新する処理を、前記コンピュータに実行させるようにしてもよい。
(実施形態1)
第1の実施形態に係るメッセージングシステムについて、図面を参照して詳細に説明する。図1は、本実施形態のメッセージングシステムの構成を一例として示すブロック図である。
図1を参照すると、本実施形態に係るメッセージングシステムは、送信手段30、ノード10,20、蓄積先切替手段50、および、受信手段40を備える。ノード10は、蓄積先保持手段11、蓄積手段12およびスイープ手段13を含む。一方、ノード20は、蓄積先保持手段21、蓄積手段22およびスイープ手段(非図示)を含む。受信手段40は、受信元切替手段41を含む。
図1に示したメッセージングシステムの構成を、Pub−Subモデルの構成(図11)に対応付けると、送信手段30および受信手段40は、それぞれ、発行者(Publisher)および購読者(Subscriber)に相当し、ノード10,20、蓄積先保持手段11,21、および、蓄積手段12,22は、それぞれ、ブローカー(Broker)、Exchange、および、キュー(Queue)に相当する(図2参照)。ただし、本実施形態のメッセージングシステムは、Pub−Subモデルに限定されるものではない。
蓄積手段12,22は、キュー構造を有し、先入れ先出し(FIFO:First In First Out)動作を行うものとする。ただし、蓄積手段12,22のデータ構造はキュー構造に限定されない。
図1においては、一例として、送信手段30および受信手段40をそれぞれ1台とし、ノード10,20を2台とした。しかし、メッセージングシステムは、送信手段または受信手段を複数含んでいてもよいし、ノードの台数を3台以上としてもよい。例えば、メッセージングシステムは、数100台のオーダーの送信手段および受信手段を含み、10数台のオーダーのノードを含んでいてもよい。
図3は、メッセージのフォーマットを一例として示す図である。図3を参照すると、メッセージは、メッセージ本体とタグ(ルーティングキーやトピック等とも呼ぶ)を含む。受信手段40は、ノードに接続する際に蓄積手段を指定して接続する。また、蓄積手段を蓄積先保持手段11,21に登録する際には、ルーティングキーを指定する。したがって、蓄積先保持手段11,21は、例えば、テーブル(=ルーティングテーブル)として表現されており(ルーティングキー、ノード識別子、蓄積手段識別子)のような3つ組みの集合で管理され、送信手段30から送信されたメッセージは、蓄積先保持手段11,21を参照して適切な蓄積手段に配送され、最終的に受信手段40に届く。
次に、図1のブロック図および図4ないし図6のフロー図を参照して、本実施形態のメッセージングシステムの動作について詳細に説明する。
図4は、送信手段30の動作を一例として示すフロー図である。図4を参照すると、送信手段30は、メッセージを送信する際、送信手段30が接続しているノード10の蓄積先保持手段11に蓄積先の蓄積手段を問い合わせ(ステップS1)、メッセージを該当の蓄積先の蓄積手段12(または22)に送信する(ステップS2)。
図5は、蓄積先切替手段50の動作を一例として示すフロー図である。図5を参照すると、蓄積先切替手段50は、所定の方法に基づいて、ノード10,20間の負荷の偏りを検出するとともに(ステップS11)、切り替え対象の蓄積手段とその切り替え先のノードを決定する(ステップS12)。ここでは、蓄積手段12を切り替え対象の蓄積手段とし、切り替え先のノードをノード20とする。次に、蓄積先切替手段50は、ノード20に切り替え先の蓄積手段22を作成し(ステップS13)、蓄積先保持手段11,21のルーティングテーブルを更新し(ステップS14)、切り替え対象の蓄積手段12に届いていたメッセージを切り替え先の蓄積手段22に配送されるように設定する。ここでは、蓄積先保持手段11,21の更新を、同時に行う必要はない。次に、蓄積先切替手段50は、切り替え対象の蓄積手段12に蓄積手段の切り替えが行われたことを示すマーカーをエンキュー(enqueue)する(ステップS15)。ここで、マーカーは、少なくとも切り替え先の蓄積手段の識別子と、その蓄積手段が存在するノードの識別子を含む。
図6は、受信手段40およびスイープ手段13の動作を一例として示すフロー図である。図6を参照すると、受信手段40は、通常、蓄積手段に届いたメッセージを処理している(ステップS21)。受信手段40は、ステップS15でエンキューされたマーカーを検出すると(ステップS22)、切り替え対象の蓄積手段12にメッセージが残っているかどうかを確認する(ステップS23)。蓄積手段12にメッセージが残っている場合(ステップS23のYes)、受信手段40は、蓄積手段12に残っているメッセージを処理する(ステップS24)。一方、蓄積手段12にメッセージがなくなった時点で(ステップS23のNo)、受信手段40の受信元切替手段41は、接続先の蓄積手段を切り替え対象の蓄積手段12から切り替え先の蓄積手段22に変更し(ステップS25)、スイープ手段13を起動する(ステップS26)。
ここで、マーカーよりも後にメッセージが届くケースとして、送信手段30が配送先の蓄積手段を問い合わせて(ステップS1)、メッセージを送信する(ステップS2)間に、蓄積先切替手段50が蓄積先保持手段を更新(ステップS14)した場合が考えられる。
スイープ手段13は、一定時間が経過するまで(ステップS29のNo)、待機(ステップS30)と、切り替え対象の蓄積手段12のメッセージを切り替え先の蓄積手段22に配送する処理(ステップS27,S28)とを行い、一定時間経過後(ステップS29のYes)、切り替え対象蓄積手段12を削除して(ステップS31)、処理を終了する。
ここで、ステップS27,S28によって処理されるメッセージは、送信手段30が配送先の蓄積手段を問い合わせて(ステップS1)、メッセージを送信する(ステップS2)間に、蓄積先切替手段50が蓄積先保持手段を更新(ステップS14)した場合のメッセージのうちの、ステップS23のメッセージ到着確認に間に合わなかったメッセージである。このようなメッセージが生じる原因として、ネットワークの輻輳、送信手段30の過負荷等が考えられる。
なお、一定時間経過し(ステップS29のYes)、切り替え対象の蓄積手段12が削除された(ステップS31)後に届いたメッセージは、蓄積手段が存在しないため受信エラーとなる。したがって、送信手段30は、このようなメッセージを再送する等の適切な対処が必要とされる。このようなメッセージが生じる場合として、送信手段30に回復不能な問題または極端な高負荷状態が発生している場合、または、高速化等のために蓄積先保持手段11に配送先蓄積手段の問い合わせをした結果が送信手段30にキャッシュされているときにキャッシュの有効期限が長すぎる場合等が考えられる。いずれにしても、ステップS29における「一定時間」は、システムの他のパラメータに応じて調整する必要がある。
次に、本実施形態のメッセージングシステムによる効果について説明する。本実施形態では、ノード間の負荷のアンバランス(不均衡)を蓄積手段のマイグレーションではなく、切り替えによって行うとともに、蓄積手段の切り替え時にロックや分散コミット等を使用せず、マーカーとスイープ手段によって一貫性を保つ。これにより、蓄積手段切り替え時のメッセージの取りこぼしとオーバーヘッドを最小限にしつつ、ノード間の負荷分散を実現することができる。また、本実施形態のメッセージングシステムによると、スケーラブルな分散メッセージングシステムにおいて、アプリケーション特性あるいは複数サービスのコンソリデーション等の要因によりメッセージが多量で負荷変動が多い状況で、複数のメッセージ送信者からのメッセージを取りこぼすことなく、効率的に負荷分散を行うことができる。
(実施形態2)
第2の実施形態に係るメッセージングシステムについて、図面を参照して説明する。
本実施形態に係るメッセージングシステムは、第1の実施形態に係るメッセージングシステムの構成(図1)と同一の構成を有する。ただし、本実施形態のメッセージングシステムでは、蓄積先切替手段50の動作が、第1の実施形態のメッセージングシステムにおけるものと相違する。
図7は、本実施形態に係るメッセージングシステムの蓄積先切替手段50の動作を一例として示すフロー図である。図7を参照すると、蓄積先切替手段50は、蓄積先保持手段(Pub−SubモデルにおけるExchange)の更新の際、全ノードの蓄積先保持手段の更新を一度に行う(ステップS34)。全ノードの蓄積先保持手段の更新を一度に行う方法として、例えば、分散コミット技術等の公知技術を利用することができる。
第1の実施形態では、各ノードの蓄積先保持手段が同時に更新されるわけではないため、異なる送信手段から特定の受信手段(に対応する蓄積手段)へのメッセージの到着の順序が入れ替わる可能性がある。例えば、第1の送信手段Pub1が接続されているノードの蓄積先保持手段が更新済みで、第2の送信手段Pub2が接続しているノードの蓄積先保持手段が更新前の状態で、第2の送信手段Pub2が第1の送信手段Pub1よりも先に出した第1のメッセージが切り替え対象の蓄積手段にエンキューされ、第1の送信手段Pub1から後に出された第2のメッセージが切り替え先の蓄積手段にエンキューされ、その後に切り替え対象の蓄積手段にエンキューされた第1のメッセージがスイープ手段によって切り替え先の蓄積手段に転送された場合、第1のメッセージと第2のメッセージとの間で到着順序が入れ替わるおそれがある。
一方、本実施形態のメッセージングシステムによると、全ノードの蓄積先保持手段が同時に更新されるため、異なる送信手段から送信されたメッセージの到着順が入れ替わるおそれがない。
上記第1および第2の実施形態に係るメッセージングシステムは、一例として、複数のソフトウェアコンポーネントをネットワーク結合して、アプリケーションまたはサービスを実現する際のメッセージングシステムとして適用することができ、アプリケーション特性、複数サービスのコンソリデーション(consolidation、整理統合)等の要因によりメッセージが多量で負荷変動の大きいメッセージングにおいて負荷分散のためのメッセージキューの切り替えを行うメッセージングシステムとして適用することができる。
なお、上記の特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
10,20 ノード
11,21 蓄積先保持手段
12,22 蓄積手段
13 スイープ手段
30 送信手段
40 受信手段
41 受信元切替手段
50 蓄積先切替手段
71,72 キュー
73 スイッチ
74 制御手段
81,82 バッファ
83 制御手段
Pub 出版者(Publisher)
Sub 購読者(Subscriber)

Claims (10)

  1. 送信手段から送出されたメッセージの蓄積先を示す情報を第1の蓄積先情報として保持する第1の蓄積先保持手段と、前記メッセージを一時的に蓄積する第1の蓄積手段とを有し、前記第1の蓄積手段に蓄積されたメッセージを受信手段に送出する第1のノードと、
    前記送信手段から送出されたメッセージの蓄積先を示す情報を第2の蓄積先情報として保持する第2の蓄積先保持手段を有する第2のノードと、
    前記送信手段から送出されたメッセージを一時的に蓄積する第2の蓄積手段を前記第2のノードに生成するとともに、前記第1の蓄積先情報および前記第2の蓄積先情報を更新することにより、前記メッセージの蓄積先を前記第1の蓄積手段から前記第2の蓄積手段へと切り替える蓄積先切替手段と、を備えるメッセージングシステム。
  2. 前記第1の蓄積手段は、キュー構造を有し、
    前記蓄積先切替手段は、前記切り替えの際に、前記第2の蓄積手段の識別子を含むマーカーを、前記第1の蓄積手段にエンキューする、請求項1に記載のメッセージングシステム。
  3. 前記受信手段は、前記第1の蓄積手段から前記マーカーを受信した場合、前記メッセージの受信元を前記第1の蓄積手段から前記第2の蓄積手段に切り替える、請求項2に記載のメッセージングシステム。
  4. 前記第1のノードは、前記第1の蓄積先情報を更新した後に前記第1の蓄積手段に混入したメッセージを、前記第2の蓄積手段に転送するスイープ手段を備える、請求項3に記載のメッセージングシステム。
  5. 前記蓄積先切替手段は、前記第1の蓄積先情報および前記第2の蓄積先情報を同時に更新する、請求項2ないし4のいずれか1項に記載のメッセージングシステム。
  6. 前記送信手段、前記受信手段、前記第1および第2のノード、前記第1および第2の蓄積先保持手段、ならびに、前記第1および第2の蓄積手段は、それぞれ、出版−購読型モデル(Publisher-Subscriber Model)における発行者(Publisher)、購読者(Subscriber)、ブローカー(Broker)、Exchange、および、キュー(Queue)である、請求項1ないし5のいずれか1項に記載のメッセージングシステム。
  7. 第1のノードが、送信手段から送出されたメッセージの蓄積先を示す情報を第1の蓄積先情報として保持する工程と、
    前記第1のノードが前記メッセージを一時的に蓄積する第1の蓄積手段に蓄積するとともに、前記第1の蓄積手段に蓄積されたメッセージを受信手段に送出する工程と、
    第2のノードが前記送信手段から送出されたメッセージの蓄積先を示す情報を第2の蓄積先情報として保持する工程と、
    蓄積先切替手段が、前記送信手段から送出されたメッセージを一時的に蓄積する第2の蓄積手段を前記第2のノードに生成するとともに、前記第1の蓄積先情報および前記第2の蓄積先情報を更新することにより、前記メッセージの蓄積先を前記第1の蓄積手段から前記第2の蓄積手段へと切り替える工程と、を含むメッセージング方法。
  8. 前記第1の蓄積手段は、キュー構造を有し、
    前記蓄積先切替手段が、前記切り替えの際に、前記第2の蓄積手段の識別子を含むマーカーを、前記第1の蓄積手段にエンキューする工程を含む、請求項7に記載のメッセージング方法。
  9. 前記受信手段が、前記第1の蓄積手段から前記マーカーを受信した場合、前記メッセージの受信元を前記第1の蓄積手段から前記第2の蓄積手段に切り替える工程を含む、請求項8に記載のメッセージング方法。
  10. 送信手段から送出されたメッセージの蓄積先を示す情報を第1の蓄積先情報として保持するとともに、前記メッセージを一時的に蓄積する第1の蓄積手段に蓄積し、前記第1の蓄積手段に蓄積されたメッセージを受信手段に送出する第1のノードと、前記送信手段から送出されたメッセージの蓄積先を示す情報を第2の蓄積先情報として保持する第2のノードとを備えたメッセージングシステムにおいて、前記メッセージの蓄積先を前記第1の蓄積手段から前記第2の蓄積手段へと切り替える際に、前記送信手段から送出されたメッセージを一時的に蓄積する第2の蓄積手段を前記第2のノードに生成する処理と、
    前記第1の蓄積先情報および前記第2の蓄積先情報を更新する処理と、をコンピュータに実行させるプログラム。
JP2012056644A 2012-03-14 2012-03-14 メッセージングシステム、メッセージング方法およびプログラム Pending JP2013192025A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012056644A JP2013192025A (ja) 2012-03-14 2012-03-14 メッセージングシステム、メッセージング方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012056644A JP2013192025A (ja) 2012-03-14 2012-03-14 メッセージングシステム、メッセージング方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2013192025A true JP2013192025A (ja) 2013-09-26

Family

ID=49391879

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012056644A Pending JP2013192025A (ja) 2012-03-14 2012-03-14 メッセージングシステム、メッセージング方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2013192025A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018531465A (ja) * 2015-10-09 2018-10-25 サトリ ワールドワイド リミテッド ライアビリティ カンパニー メッセージデータを格納するためのシステム及び方法
WO2019087786A1 (ja) * 2017-11-06 2019-05-09 日本電信電話株式会社 情報分散記憶システム、方法およびプログラム
JP2019096297A (ja) * 2017-11-23 2019-06-20 ドゥサン ヘヴィー インダストリーズ アンド コンストラクション カンパニー リミテッド 電力充電/販売装置および方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018531465A (ja) * 2015-10-09 2018-10-25 サトリ ワールドワイド リミテッド ライアビリティ カンパニー メッセージデータを格納するためのシステム及び方法
WO2019087786A1 (ja) * 2017-11-06 2019-05-09 日本電信電話株式会社 情報分散記憶システム、方法およびプログラム
JPWO2019087786A1 (ja) * 2017-11-06 2020-04-02 日本電信電話株式会社 情報分散記憶システム、方法およびプログラム
US11381642B2 (en) 2017-11-06 2022-07-05 Nippon Telegraph And Telephone Corporation Distributed storage system suitable for sensor data
JP2019096297A (ja) * 2017-11-23 2019-06-20 ドゥサン ヘヴィー インダストリーズ アンド コンストラクション カンパニー リミテッド 電力充電/販売装置および方法
US10919406B2 (en) 2017-11-23 2021-02-16 DOOSAN Heavy Industries Construction Co., LTD Power charging/selling device and method

Similar Documents

Publication Publication Date Title
TWI321926B (en) Node b for communicating with radio network controller and method thereof
US20130201821A1 (en) Communication system, control device, node, processing rule setting method and program
EP2651075B1 (en) Backup method and device for tcp connection
US8218549B2 (en) Synchronization of message stream in a multi-tier messaging system
JP6427669B2 (ja) 分散トランザクション・リソースを実行するための方法、装置、及びシステム
WO2011152362A1 (ja) 放送コンテンツ送信装置及び放送コンテンツ受信装置
JP2012208649A (ja) 分散ファイルシステム
JP2013192025A (ja) メッセージングシステム、メッセージング方法およびプログラム
CN105940717A (zh) 容断/容迟/容中断网络中使用的节点设备和通信方法
CN105162829B (zh) 多个管理器-代理环境中的自动增量事件同步
US9906459B2 (en) Socket state transfer
CN104683486B (zh) 分布式系统中处理同步消息的方法、装置、分布式系统
EP3241320B1 (en) System and method for supporting efficient virtual output queue (voq) packet flushing scheme in a networking device
US9832143B2 (en) System and method for supporting efficient virtual output queue (VOQ) packet flushing scheme in a networking device
CN106657195A (zh) 任务处理方法和中继设备
JP6953713B2 (ja) 通信ノード、通信システム、通信方法及びプログラム
JP2009217765A (ja) 複数宛先への同期送信方法、その実施システム及び処理プログラム
US9621484B2 (en) System and method for supporting efficient buffer reallocation in a networking device
JP6202650B1 (ja) 通信システム及び通信方法
JP5591737B2 (ja) サービス提供システムおよびその動作方法
US20150350138A1 (en) Controller, message delivery system, message delivery method, and program
JP2007013511A (ja) パケット通信システムおよびパケット中継装置
JP6490640B2 (ja) 通信装置及び配信テーブル同期方法
US20190123936A1 (en) Communication apparatus, communication method, and recording medium
JP2017208589A (ja) 転送装置及び転送処理方法