JP6602866B2 - 並列持続性を有するメッセージブローカシステム - Google Patents

並列持続性を有するメッセージブローカシステム Download PDF

Info

Publication number
JP6602866B2
JP6602866B2 JP2017529083A JP2017529083A JP6602866B2 JP 6602866 B2 JP6602866 B2 JP 6602866B2 JP 2017529083 A JP2017529083 A JP 2017529083A JP 2017529083 A JP2017529083 A JP 2017529083A JP 6602866 B2 JP6602866 B2 JP 6602866B2
Authority
JP
Japan
Prior art keywords
event
message
computer system
broker
message event
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.)
Active
Application number
JP2017529083A
Other languages
English (en)
Other versions
JP2018504670A (ja
JP2018504670A5 (ja
Inventor
フジット、ジェシー、エー.
カンリ、トゥルクマン
ホダ、サヒー
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.)
Informatica LLC
Original Assignee
Informatica LLC
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 Informatica LLC filed Critical Informatica LLC
Publication of JP2018504670A publication Critical patent/JP2018504670A/ja
Publication of JP2018504670A5 publication Critical patent/JP2018504670A5/ja
Application granted granted Critical
Publication of JP6602866B2 publication Critical patent/JP6602866B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/30Decision processes by autonomous network management units using voting and bidding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1895Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0668Management of faults, events, alarms or notifications using network fault recovery by dynamic selection of recovery network elements, e.g. replacement by the most appropriate element after failure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • H04L45/04Interdomain routing, e.g. hierarchical routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/782Hierarchical allocation of resources, e.g. involving a hierarchy of local and centralised entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/23Reliability checks, e.g. acknowledgments or fault reporting

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Business, Economics & Management (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Information Transfer Between Computers (AREA)

Description

関連出願の相互参照
本願は、2014年12月1日に出願された米国仮特許出願第62/086,111号および2015年11月30日に出願された米国特許出願第14/954,731号の利益を主張するものであり、これらの出願の開示全体を、ここに参照のために取込む。
本明細書に記載の発明は、概して、メッセージブローカコンピュータシステムに関し、特に、並列持続性を有するマスタ/スレーブメッセージブローカコンピュータシステムに関する。
メッセージ速度および信頼性は、メッセージングアプリケーションの非常に重要な性能要件である。例えば、金融市場は、速度が勝負であり、最大手金融サービス会社や投資ファンドにとっては、高速取引能力が、性能の差別化要因となっている。このような会社やファンドの世界規模の業務を結び付ける、効率的で、ハイスループット、低遅延、およびより安全な方法が求められている。既存の解決策は、概して、共有データベース/ファイルシステムを要するマスタ/スレーブブローカアーキテクチャを利用するものである。しかし、共有データベース/ファイルシステムは、理想とは程遠い。なぜなら、もし共有データベース/ファイルシステムに障害が発生すると、システム全体がダウンしデータ(例:委託注文)が失われる可能性があるように、共有データベース/ファイルシステムが単一障害点となるからである。
一実施形態に係る、メッセージブローカシステムの実施に適したネットワーク化コンピューティング環境を示すハイレベルブロック図である。 一実施形態に係る、ブローカ内のモジュールの詳細を示すハイレベルブロック図である。 一実施形態に係る、障害が発生したマスタブローカの場合の最終安定メッセージイベントの判定における不確実性を示すタイムチャートである。 一実施形態に係る、メッセージブローカシステムを用いてメッセージを処理する方法の相互作用図である。 一実施形態に係る、メッセージブローカシステムを用いてメッセージを処理する方法の相互作用図である。 一実施形態に係る、メッセージブローカシステムを用いてメッセージを処理する方法の相互作用図である。 一実施形態に係る、スレーブブローカからマスタブローカへ遷移する方法を示すフローチャートである。 一実施形態に係る、メッセージを処理するためのメッセージブローカシステムのレプリケーションストリームおよびレプリケーションイベントストアコンポーネントのクラス図である。 一実施形態に係る、メッセージを処理するためのメッセージブローカシステムのレプリケーションストリームおよびレプリケーションイベントストアコンポーネントのクラス図である。 一実施形態に係る、メッセージを処理するためのメッセージブローカシステムのレプリケーションストリームおよびレプリケーションイベントストアコンポーネントのクラス図である。 一実施形態に係る、メッセージを処理するためのメッセージブローカシステムの長期ストレージコンポーネントのクラス図である。 一実施形態に係る、メッセージを処理するためのメッセージブローカシステムの長期ストレージコンポーネントのクラス図である。 一実施形態に係る、メッセージを処理するためのメッセージブローカシステムの長期ストレージコンポーネントのクラス図である。 一実施形態に係る、メッセージを処理するためのメッセージブローカシステムの長期ストレージコンポーネントのクラス図である。 一実施形態に係る、メッセージを処理するためのメッセージブローカシステムのイベントストアとメッセージブローカとの間のインタフェースである。 一実施形態に係る、図1に示すネットワーク化環境での使用に適したコンピューティングシステムの構成要素のハイレベルブロック図である。
発明の詳細な説明
共用なし(shared−nothing)アーキテクチャを用いるマスタ/スレーブメッセージブローカコンピュータシステムとして構成されるメッセージブローカコンピュータシステムは、高信頼性と共に低遅延メッセージングを提供する。メッセージブローカコンピュータシステムは、少なくとも3つのブローカを含み、そのうちの1つがマスタブローカとして構成され、その他のブローカがスレーブブローカとして構成される。メッセージブローカシステムは、複数のイベントストアを含む。クライアントプロデューサコンピュータシステムは、処理用メッセージを、マスタブローカへ送信する。マスタブローカは、該メッセージの受信に応じてメッセージイベントを生成し、メッセージイベントを、スレーブブローカおよびイベントストアへ並列に配信する。各イベントストアは、メッセージイベントを持続(persistent)ストレージに記憶し、メッセージイベントが持続したことをマスタブローカに通知する。メッセージイベントが定足数のイベントストアで持続したことから、マスタブローカは、メッセージが安定化したとみなし、マスタがスレーブブローカから確認を得る必要はない。定足数のイベントストアとは、少なくとも2つのイベントストアである。いくつかの実施形態において、定足数は、イベントストアの過半数であってもよい。スレーブブローカがメッセージングイベントを持続した後、該スレーブブローカは別々にイベントストアに通知する。メッセージングイベントが安定化するまでマスタブローカが動作を行わないことから、フェイルオーバーの際には、新マスタブローカが、データの損失なしに旧マスタのブローカ状態を復元することができる。
フェイルオーバーの際(例えば、マスタブローカが動作を終了した場合や整備のために停止された場合)、スレーブブローカは、スレーブブローカの中から新マスタブローカを選択するように構成される。新たに選択されたマスタブローカは、イベントストアから任意の安定化メッセージイベントを回復できる。新たに選択されたマスタブローカは、自身が記録を有しないイベントストアからメッセージイベントを取り出し、メッセージイベントストリームを用いて最大連続(maximum contiguous)メッセージイベント(MCM)を識別する。MCMに基づいて、新マスタブローカは、MCMを用いて同期点を識別する。同期点とは、MCMに関連付けられたメタデータにおけるバックポインタが指し示すシーケンス番号である。そして、新マスタブローカは、同期点よりも上のシーケンス番号のメッセージイベントを再発行し、MCMに対応するようにメッセージブローカにおけるブローカ状態を更新する。異なるスレーブブローカは異なる時間にメッセージイベントを受信することから、スレーブブローカは異なるブローカ状態を有し得る(理想的には、ブローカ状態は同一であり、マスタブローカのブローカ状態を反映するものである)。再発行されたメッセージイベントは、新マスタブローカの存在を示すメタデータを含む。スレーブブローカは、同期点よりも後の同期番号を持つ旧マスタブローカからのメッセージイベントを廃棄するように構成される。よって、新マスタブローカは、安定化データを損失することなく、障害前の旧マスタブローカのブローカ状態を完全に回復できる。
図面および以下の説明は、ほんの一例として、メッセージブローカシステムがコンピュータネットワークに適用される実施形態を示す。当業者であれば、以下の説明から、メッセージブローカシステムが、相関する要素の他のコンピュータベース表現にも適用可能であること、および、本明細書に示す構造および方法の別の実施形態を明細書に記載の原理を逸脱することなく採用可能であることを、容易に認識できるであろう。以下、複数の実施形態を参照するが、これらの例は添付の図面中に図示する。なお、図面においては、可能な限り同様または同種の参照符号を使用し、同様または同種の機能を示すものとする。
図1は、メッセージブローカリングコンピュータシステム100を促進する環境の実施形態を示すブロック図である。該環境は、それぞれがネットワーク110でマスタブローカ140Aに結合されている、プロデューサクライアント110と、コンシューマクライアント120と、イベントストア130A、130B、および130Cと、スレーブブローカ140Bおよび140Cとを含む。ここではプロデューサクライアント110およびコンシューマクライアント120が各1つだけ図示されているが、実際にはこれらのエンティティはそれぞれ数多くの、典型的には何千以上もの事例があり、それらの間でのメッセージ配信のための高速・高信頼メカニズムを必要とする。また、2つのスレーブブローカおよび3つのイベントストアのみが図示されているが、いくつかの実施形態では、さらなるスレーブブローカおよび/またはイベントストアが含まれる。当業者には分かるように、本明細書に記載のシステムおよび方法は、本質的および必然的に、電気符号化信号上で動作する物理的有形コンピュータシステムを用いて実行されるものであり、いかなる場合でも、本明細書に記載の方法および動作が人間(または人間集団)によってまたは心理的ステップによって実行されることはない。よって、「マスタブローカ」、「スレーブブローカ」、「メッセージブローカ」、「クライアント」、および「メッセージストア」は、人間や心理的プロセスではなく、物理的コンピュータシステムを指すものとして理解されたい。
ネットワーク105は、プロデューサクライアント110と、コンシューマクライアント120と、イベントストア130A、130B、および130Cと、スレーブブローカ140Bおよび140Cと、マスタブローカ140Aとの間の通信基盤を提供する。ネットワーク105は、典型的にインターネットであるが、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、広域ネットワーク(WAN)、移動有線または無線ネットワーク、プライベートネットワーク、または仮想プライベートネットワークを非限定的に含む任意のネットワークであってもよい。
プロデューサクライアント110は、マスタブローカ140Aへメッセージを通信する、クライアントアプリケーション等のコンピュータプログラムモジュールを実行するコンピューティング装置である。メッセージは、デジタルデータである。メッセージは、例えば、委託注文や、銀行取引や、温度読み取りや、メッセージブローカリングシステム100によってレプリケートおよび持続され得るその他のデータや、それらの組み合わせであってもよい。プロデューサクライアント110は、例えば、エンタープライズ級サーバで動作するマスタブローカ140Aに結合されたデスクトップコンピュータで動作するカスタムアプリケーションであってもよい。他の実施形態において、プロデューサクライアント110は、エンタープライズのウェブサーバであって、パーソナルコンピュータやスマートフォン等でブラウザアプリケーションを用いて該ウェブサーバにアクセスするユーザから受信した命令に応じてメッセージを生成する。いくつかの実施形態において、プロデューサクライアント110は、ウルトラメッセージングキューイングアプリケーションおよび/またはJAVAメッセージングサービスアプリケーションであってもよい。プロデューサクライアント110は、マスタブローカ140Aにメッセージ(例:株の売り注文)を提供する。いくつかの実施形態において、プロデューサクライアント110は、Apacheソフトウェア財団(Apache Software FoundationTM)から入手可能なAdvanced Message Queuing Protocol(AMQP)および/またはOPENWIREプロトコルを利用して、マスタブローカ140Aと通信してもよい。
コンシューマクライアント120は、マスタブローカ140Aへメッセージを通信する、クライアントアプリケーション等のコンピュータプログラムモジュールを実行するコンピューティング装置である。いくつかの実施形態において、コンシューマクライアント120は、マスタブローカ140Aから受信したメッセージを処理するエンタープライズにおけるバックエンドサーバである。いくつかの実施形態において、コンシューマクライアント120は、レギュレータや、レギュレータへメッセージを送信するコンピューティング装置に、関連付けられてもよい。いくつかの実施形態において、コンシューマクライアント120は、ウルトラメッセージングレシーバアプリケーションおよび/またはJAVAコンシューマアプリケーションであってもよい。いくつかの実施形態において、コンシューマクライアント120は、AMQPおよび/またはOPENWIREプロトコルを利用して、マスタブローカ140Aと通信してもよい。AMQPやOPENWIREプロトコル等によりマスタブローカコンピュータシステムと相互動作するように構成されることから、クライアント110、120の動作および機能は、汎用コンピュータシステムの基本的な汎用機能を超えるものである。
イベントストア130A、130B、130Cは、それぞれ、1つ以上の非一時的コンピュータ可読媒体を備え、マスタブローカ140Aから受信したメッセージイベントを記憶するように構成されるデータストアである。イベントストア130A、130B、130Cがメッセージイベントを記憶(「持続」とも言う)すると、イベントストア130A、130B、130Cは、安定通知を用いて、メッセージイベントの持続に成功したことを、マスタブローカ140Aに通知する。
ブローカがスレーブブローカからマスタブローカに遷移する実施形態において、イベントストア130A、130B、130Cはまた、新たに選択されたマスタブローカへ同期情報を提供する。同期情報は、メッセージのシーケンス情報を含み、これは、複数のイベントストア130A、130B、130Cのそれぞれで持続したメッセージイベントの最高シーケンス番号を含む。イベントストア130A、130B、130Cはまた、1つ以上の記憶されているメッセージイベントを、新たに選択されたマスタブローカに提供してもよい。
ブローカ140A、140B、140Cは、1つのマスタブローカと、その他のスレーブブローカとを含む。本例において、ブローカ140Aがマスタブローカであり、ブローカ140Bおよび140Cがスレーブブローカである。但し、どのブローカも、マスタブローカまたはスレーブブローカとして機能することができる。また、マスタブローカ140Aに障害が発生した場合、残りのスレーブブローカ140B、140Cのうちの1つが、スレーブブローカによって新マスタブローカとして選択される。マスタ選択プロセスの詳細については、図4を参照して後述する。本明細書に記載の動作および機能によって構成されることから、ブローカ140は、汎用コンピュータシステムの基本的な汎用機能を超える特徴および機能を提供する。例えば、従来の汎用コンピュータシステムは、その命令セット、オペレーティングシステムソフトウェア、ユーティリティソフトウェア、または他のアプリケーションの一部として、既存マスタブローカのフェイルオーバーの際に複数のスレーブブローカから新マスタブローカを選択する機能を提供しない。
ブローカ140A、140B、および140Cはそれぞれ、持続ストレージ142A、142B、および142Cを含む。持続ストレージ142A、142B、142Cは、1つ以上の非一時的コンピュータ可読媒体を備え、メッセージイベントを記憶するように構成される。持続ストレージ142A、142B、142Cに記憶されるデータは、関連ブローカ140のブローカ状態を表す情報を含む。例えば、持続ストレージ142はマスタブローカ140Aのブローカ状態を表す情報を含み、持続ストレージ142Bはスレーブブローカ142Bのブローカ状態を表す情報を含む、等である。ブローカ状態は、そのブローカで持続したメッセージイベントストリームを表し、実質上、各メッセージイベントの実状態(net state)を表す。
前述の通り、マスタブローカ140Aは、メッセージイベントを生成する。メッセージイベントは、多くの異なる種類(例:エンキュー、割り当て、コンシューム、トランザクションイベント、送信先キューの生成や削除等の管理イベント等)のうちの1つであってもよい。マスタブローカ140Aは、クライアントプロデューサ110、コンシューマプロデューサ120からのメッセージや、特定のメッセージイベントについてのイベントストア130A、130B、130Cのうちの少なくとも2つからの安定通知等の受信に応じて、メッセージイベントを生成してもよい。マスタブローカ140Aは、生成したメッセージイベントを、スレーブブローカ140B、140Cおよびイベントストア130A、130B、130Cへ配信する。
メッセージイベント(レプリケーションイベントとも称する)は、マスタブローカ140Aによって付加された追加メタデータを伴う、プロデューサクライアント110から受信したメッセージである。メタデータは、最終安定シーケンス番号、最終安定エポック、およびシーケンス番号のデータフィールドを含む。エポックおよびシーケンス番号フィールドは、固有のメッセージイベント識別子を表す。エポックは、新マスタブローカが選択される度にインクリメントされ、シーケンス番号は、該マスタによって新メッセージイベントが発行される度にインクリメントされる(そして、エポック変更時に0にリセットされる)。「最終安定」フィールドは、マスタブローカが「新」メッセージイベントを送信している時にマスタブローカに既知の最終安定メッセージイベントを示す。例えば、(エポック0、シーケンス番号17)のメッセージイベントが、プロデューサクライアント110がブローカにおけるキューに持続メッセージを追加しようとしていることを示すためにマスタブローカ140Aによって発行されているエンキューメッセージイベントであるとする。このメッセージイベントをイベントストア130A、130B、130Cおよびスレーブブローカ140B、140Cへ配信した直後、マスタブローカ140Aは、このメッセージイベントがどこかで安定しているかを示す情報を有しない。しかし、イベントストア130A、130B、130Cが安定通知をマスタブローカ140Aへ返信すると、ブローカ140Aは、(エポック0、シーケンス番号17)のメッセージイベントがイベントストア130A、130B、130Cのうちの1つ以上で安定している(ディスク内にある)ことを示す情報を記憶する。次のメッセージイベント(エポック0、シーケンス番号18)を発行する際、マスタブローカ140Aは、エポック0、シーケンス番号17までの(およびエポック0、シーケンス番号17を含む)先行イベントが現在安定していることを示すために、次のメッセージイベントにおいて最終安定エポックおよび最終安定シーケンス番号をそれぞれ0および17に設定する。
マスタブローカ140Aは、メッセージングシステムにおいて、メッセージイベントのメタデータを処理しそのようなメタデータに応じて選択的に動作するように構成される唯一のエンティティである。これによって、各エンティティがメッセージメタデータにしたがって選択的に動作する処理ロジックで構成されるメッセージングシステムで発生し得る状態の数が簡素化および削減される。一実施形態において、マスタブローカ140Aによる全ての決定は、少なくとも2つの異なるイベントストア130A、130B、130Cがイベントが安定化したことを示すのを待って、なされる。少なくとも2つの異なるメッセージストア130A、130B、130Cがメッセージイベントが安定化したことを示すと、マスタブローカ140Aは、メッセージイベントに対して外部動作(external action)を行い、持続ストレージ142Aにおいてそのブローカ状態を更新するように構成される。加えて、マスタブローカ140Aは、スレーブブローカ140B、140Cおよびイベントストア130A、130B、130Cへ、安定化した最終メッセージングイベントのシーケンス番号およびエポック番号を識別する安定イベントを周期的に送出することによって、マスタブローカ140Aが安定化したと決定した最終メッセージングイベントを表す情報を配信する。一定活動状態において、マスタブローカ140Aは、周期的安定イベントを送出する必要はない。なぜなら、該情報は、各送出メッセージイベントの一部として含まれるからである。よって、スレーブブローカ140B、140Cは、メモリに保持されたメッセージイベントを安全にそれらのディスク持続層(すなわち、持続ストレージ)に適用でき、スレーブブローカは、フェイルオーバープロセスにおいてマスタになる際にこの情報を利用してクリーンカットオーバー点を識別してもよい。
マスタブローカ140Aおよびスレーブブローカ140B、140Cはそれぞれ、ブローカ状態を維持する。前述の通り、ブローカ状態は、そのブローカで持続したメッセージイベントストリームを表し、実質上、各メッセージイベントの実状態を表す。例えば、特定のメッセージについて、エンキューメッセージイベント、それに続く割り当てメッセージイベント、およびそれに続くコンシュームメッセージイベントの結果、該メッセージのブローカ状態は完全に空(empty)となるかもしれない。一方、別のメッセージについて、ブローカ状態が、エンキューイベントが該別のメッセージに関連付けられた現状態を示すように、エンキューメッセージイベントのみが生成されるかもしれない。
図2は、図1に示すブローカ140A、140B、および140C(本項では「ブローカ140」と称する)内のモジュールの詳細を示すハイレベルブロック図である。ブローカ140のいくつかの実施形態は、本明細書に記載のものと異なるモジュールを含む。同様に、機能を、本明細書に記載のものと異なる形でモジュール間に分散することもできる。ブローカ140は、持続ストレージ142、持続モジュール220、マスタ選択モジュール230、および回復モジュール240を含むモジュールから成る。
持続ストレージ142は、1つ以上の非一時的コンピュータ可読媒体を含み、持続メッセージイベントにおいてブローカ140に使用されるデータを記憶するように構成される。持続ストレージ142に記憶されるデータは、ブローカ状態を表す情報を含む。持続ストレージ142の付加的な機能は、ブローカ状態に基づいてメッセージングイベントを記憶し、周期的にメッセージングイベントのストリームをその時点のスナップショットを表す状態へとロールアップしてから該スナップショットを持続ストレージに記憶し、新メッセージングイベントを適用する前にメッセージングイベントのスナップショットを取り出し、スナップショットからのレプリケーションイベントまたはメモリに記憶したイベントを適用する機能や他の機能を含む。
持続モジュール220は、マスタブローカ140Aまたはスレーブブローカ140B、140Cとして動作中のブローカ140の動作を制御する。一実施形態において、持続モジュール220は、マスタブローカの機能を行うことができる。マスタブローカの機能は、メッセージイベントを追加、割り当て、またはコンシュームする等のトランザクションイベントの生成や、送信先イベントの追加または削除を含む。メッセージイベントが生成されると、マスタブローカ持続モジュール220は、レプリケーションイベントメッセージを、スレーブブローカおよびイベントストアへ並列に送信する。レプリケーションイベントメッセージが送出されると、持続モジュール220は、イベントストアからの安定通知を待つ。安定通知は、スレーブブローカまたはイベントストアからの、メッセージイベントがそのストレージで持続したことの保証である。定足数、すなわち所定数のイベントストア(例:2つのイベントストア)から安定通知を受信すると、持続モジュール220は、メッセージイベントが持続したと決定し、その旨をメッセージイベントのプロデューサクライアント110に通信する。定足数となる数は設定可能であり、3、4、または他の任意のイベントストア数に設定することができる。
マスタブローカの持続モジュール220が生成する全てのメッセージイベントについて、持続モジュール220は、メッセージイベントのメタデータに、先行安定化メッセージイベントに関連付けられた情報を適用する。加えて、マスタブローカの持続モジュール220は、最終安定メッセージイベントに関連付けられた情報を含む安定メッセージイベントを周期的に生成する。
持続モジュール220はさらに、メッセージイベントをコンシューマクライアント120へ送信し、コンシューマクライアント120からのメッセージをコンシュームした旨の確認を待つ。そして、持続モジュール220は、削除メッセージイベントを生成し、スレーブブローカおよびイベントストアへ配信する。削除メッセージイベントの安定通知を受信すると、マスタブローカの持続モジュール220は、マスタブローカ140Aの内部メモリからメッセージイベントを削除する。
一実施形態において、持続モジュール220は、スレーブブローカの機能を行うことができる。マスタブローカからメッセージイベントを受信すると、スレーブブローカ140Bまたは140Cの持続モジュール220は、そのメッセージイベントを内部メモリに保持する。受信したメッセージイベントは、マスタブローカに既知の最終安定イベントに関連付けられた情報を含むメタデータを含む。持続モジュール220は、メタデータに含まれる情報を抽出し、最終安定メッセージイベント番号を指し示すバックポインタを取り出す。スレーブブローカの持続モジュール220は、現メッセージイベントストリームのスナップショットとも称される現メッセージイベントを伴うバックポインタを持続ストレージ142に適用する。
スレーブブローカが中断したりスレーブブローカを再起動したりしなければならない場合、スレーブブローカは、他のブローカよりも進むかまたは遅れる可能性があり、不整合状態となる。スレーブブローカの持続モジュール220は、レプリケーションストリームプロトコルを介してスレーブブローカが復帰する際にブローカ状態の整合性の実現を助ける。例えば、スレーブブローカが他のブローカやイベントストアの前にレプリケーションメッセージイベントの一部のみを受信した場合、マスタブローカからメッセージのスナップショットに関連する追加情報を受信するまで、メッセージイベントは適用されない。もしスレーブブローカが短時間停止すると、スレーブブローカでのメッセージイベントストリームは、マスタブローカによって配信されるレプリケーションメッセージイベントストリームとほぼ同期する。持続モジュール220は、失われたメッセージイベントをイベントストアのうちの1つから回復することができ、スレーブブローカが現行レプリケーションメッセージイベントストリームと整合することになる。スレーブブローカが長時間停止すると、スレーブブローカは現レプリケーションメッセージイベントストリームからかなり遅れを取ることになり、回復モジュール240を用いてスレーブオンボーディングプロセス(slave onboarding process)によりスレーブの状態を回復する。
回復モジュール240は、マスタブローカのフェイルオーバーの場合に前マスタブローカのブローカ状態を回復することができ、スレーブブローカのフェイルオーバーまたは再起動の場合にスレーブブローカのブローカ状態を回復することができる。マスタブローカのフェイルオーバーの場合、マスタ選択モジュール230(詳細は後述する)は、スレーブブローカのうちの1つを新マスタとして選択する。新マスタブローカが選択されると、回復モジュール240は、スレーブブローカ状態の前マスタのブローカ状態への遷移を助ける。回復モジュール240は、レプリケーションストリームカットオーバー点、すなわち、マスタブローカが安定的と表示した最終イベントであって、マスタブローカがレプリケーションストリームにおける該決定メッセージイベントに対して定足数の安定通知を受信した最終イベントを定義するレプリケーションストリームからのシーケンス番号を決定する。
マスタブローカに障害が発生すると、マスタブローカの再起動または修理が必要となる。この場合、マスタブローカから最終安定メッセージイベントを取り出すのは、簡便ではなく、時間がかかる。レプリケーションストリームプロトコルに基づいて、マスタブローカは、各メッセージイベントで最終安定メッセージイベントに関連付けられた情報を生成する。マスタブローカの障害時に、メッセージイベントはインフライト(in flight)であるかもしれない。インフライトメッセージイベントに基づいて、最終安定メッセージイベントを決定する実施形態を以下に述べる。
図3は、一実施形態に係る、障害が発生したマスタブローカの場合に最終安定メッセージイベントを決定する不確実性を示すタイムチャートである。図3の例示的実施形態のケース1において、イベントストアUMPは、全てのメッセージがインフライトである唯一のイベントストアである。もしマスタブローカおよびイベントストアUMPに同時に障害が発生すると、mが最終安定メッセージ310であることを決定することはできない。上記の場合、最終良好点315は、mである。
例示的実施形態のケース2において、イベントストアUMPのいくつかのメッセージはインフライトであり、その最終メッセージであるメッセージmは、最終安定メッセージ310mを指し示す。イベントストアUMPは、全てのメッセージがインフライトである。もしマスタブローカおよびイベントストアUMPに同時に障害が発生すると、メッセージmがイベントストアUMPデーモンの中で最新の使用可能なメッセージであり、最終安定メッセージmを指し示す。メッセージ[ms+1,m]のステータスは、未知である。最終良好点は、mである。
前述の例示的実施形態から、最終安定メッセージの決定には不確実性がある。既知の良好点の後のメッセージイベントは、安定化しているかもしれず、していないかもしれない。メッセージイベントのステータスの不確実性を克服するために、ギャップがある場合、すなわち、どのイベントストアも特定のメッセージイベントを有しない場合、既知の良好点の後に安定化しているまたはしていないメッセージイベントの範囲は、既知の良好点の次のメッセージイベントからギャップ前の最終メッセージまでである。
このように、メッセージイベントストリームの回復のために、シーケンス番号ギャップに遭遇する前に観測される最高シーケンス番号メッセージである、最大連続メッセージ(MCM)が観測される。さらに、同期点が、MCMのバックポインタとして決定される。同期点は、ストリームカットオーバー点である。新マスタは、同期点からMCMまでの全てのメッセージイベントを、選択されたマスタブローカのために決定された新エポック番号と共に、再発行する。さらに、新マスタは、持続ストレージ上のそのスナップショットをMCMまで更新して、MCMと整合するようにそのブローカメモリ状態を復元する。ブローカ状態が回復すると、マスタブローカは、メッセージイベントの生成を開始し、マスタとしての役割を再開することができる。
他の実施形態において、回復モジュール240は、スレーブブローカのフェイルオーバーまたは再起動の場合に、スレーブブローカのブローカ状態を回復する。中断したスレーブブローカは、持続またはブローカ状態を持たない新スレーブブローカのように扱われる。中断していない既存スレーブブローカからのディスクスナップショットは、新たなまたは中断したスレーブブローカへコピーされる。状態を持たない新ブローカは、ライブストリームを受信し、そのディスクスナップショットへの周期的更新を一時的に中断する。既存ブローカは、レプリケーションストリームを受信し続け、また、そのディスクスナップショットへの周期的更新を一時的に中断する。そして、既存ブローカは、新ブローカへのディスクスナップショット全体の送信を試みる。送信が成功すると、両スレーブは、同一ディスクスナップショットを有し、双方とも、メモリからそれぞれの「バッファリングされた」イベントをディスクスナップショットへ適用し始め、最終的にはライブストリームに追いつく。
マスタ選択モジュール230は、フェイルオーバーが発生したと判定し、スレーブブローカ140B、140Cのうちの1つを新マスタブローカとして選択する。いくつかの実施形態において、マスタブローカは、周期的間隔で、ハートビート信号をマスタ選択モジュール230へ送信する。例えば、ハートビートは、毎マイクロ秒送信される。周期的間隔は、予め定義されたものであり、設定可能である。マスタ選択モジュール230は、所定のタイムアウト間隔の間ハートビート信号がない、例えば、1秒間信号受信がない場合に、マスタブローカの障害を検出する。
マスタ選択モジュール230はさらに、マスタブローカとして選択可能な適格スレーブブローカのリストの記録をとる。中断したマスタを検出すると、マスタ選択モジュール230は、記録した適格ブローカリストから新マスタを選択する。いくつかの実施形態において、マスタ選択モジュール230は、RAFTプロトコルを利用して、記録リストから新マスタを選択する。マスタ選択モジュール230が新マスタを選択する際、回復モジュール240によって一時的ブローカ状態が作り出されて、スレーブブローカが障害が発生したマスタブローカのメッセージイベントを回復するのを助け、障害が発生したマスタブローカのブローカ状態を回復してそれを新たに選択されたマスタブローカへ適用することができる。
図4A〜Cは、一実施形態に係る、メッセージブローカシステムを用いてメッセージを処理する方法の相互作用図である。種々の実施形態において、該方法は、図4A〜Cに関連して記載されるステップと異なるおよび/または追加のステップを含んでもよい。加えて、いくつかの実施形態において、ステップは、図4A〜Cに関連して記載される順と異なる順で行われてもよい。
プロデューサクライアント110は、メッセージ402をマスタブローカ140Aへ送信する。マスタブローカ140Aは、受信したメッセージに基づいて、エンキューイベントを生成する。生成したエンキューイベントは、最終安定メッセージイベントのシーケンス番号と、最終安定メッセージイベントを送信したマスタブローカ140Aに関連付けられたエポック番号と、エンキューイベントのシーケンス番号(例:シーケンス番号1)と、マスタブローカ140Aに関連付けられたエポック番号とを含むメタデータを含む。マスタブローカ140Aは、エンキューイベントを、スレーブブローカ140B、140Cおよびメッセージングソース130A、130B、および130Cへ並列に配信する(404)。いくつかの実施形態において、エンキューイベントの配信は、直列に行われてもよく、並列と直列との組み合わせで行われてもよい。
マスタブローカ140Aは、メモリにエンキューイベントを保持する(406)。同様に、スレーブブローカ140B、140Cが配信エンキューイベントを受信すると、スレーブブローカ140B、140Cは、メモリにエンキューイベントを保持する(408、410)。
イベントストア130A、130B、130Cは、エンキューイベントを受信し、それぞれの永久メモリにエンキューイベントを記憶する(412、414、416)。イベントストアが永久メモリにエンキューイベントを記憶すると、イベントストアは、エンキューイベントが持続した旨の通知418をマスタブローカ140Aへ送信する。こうして、メッセージストア130A、130B、130Cがエンキューイベントの持続に成功したか否かによって、マスタブローカ140Aは、0個、1個、数個、または全ての通知418を受信し得る。マスタブローカ140Aが少なくとも2つの通知418を受信すると、マスタブローカ140Aは、エンキューイベントが安定化したと判定し、その長期ストレージ(すなわち、持続ストレージ142)にエンキューイベントを記憶する(420)。エンキューイベントが安定化したとの判定に応じて、マスタブローカ140Aは、メッセージが持続した旨の通知422をプロデューサクライアント110へ送信する。
マスタブローカ140Aは、割り当てイベントを生成する。生成した割り当てイベントは、最終安定メッセージイベント(エンキューイベント)のシーケンス番号と、最終安定メッセージイベントを送信したマスタブローカ(マスタブローカ140A)に関連付けられたエポック番号と、割り当てイベントのシーケンス番号(例:シーケンス番号2)と、マスタブローカ140Aに関連付けられたエポック番号とを含むメタデータを含む。マスタブローカ140Aは、割り当てイベントを、スレーブブローカ140B、140Cおよびメッセージングソース130A、130B、および130Cへ並列に配信する(424)。
マスタブローカ140Aは、メモリに割り当てイベントを保持する(426)。スレーブブローカ140B、140Cが配信割り当てイベントを受信すると、スレーブブローカ140B、140Cは、それぞれのブローカ状態を更新する(428、430)。具体的に、各スレーブブローカ140B、140Cは、それぞれのメモリに保持していたエンキューイベントを持続し(例えば、持続ストレージ142へ移す)、その後、それぞれのメモリに割り当てイベントを保持する。スレーブブローカ140B、140Cがエンキューイベントを持続すると、スレーブブローカ140B、140Cは、持続イベントの確認432を全てのイベントストア130A、130B、130Cへ送信する。イベントストア130A、130B、130Cは、確認432を記憶する。
イベントストア130A、130B、130Cは、割り当てイベントを受信し、それぞれの永久メモリに割り当てイベントを記憶する(434、436、438)。イベントストアが永久メモリに割り当てイベントを記憶すると、イベントストアは、割り当てイベントが持続した旨の通知440をマスタブローカ140Aへ送信する。マスタブローカ140Aが少なくとも2つの通知440を受信すると、マスタブローカ140Aは、割り当てイベントが安定化したと判定し、その長期ストレージに割り当てイベントを記憶する(442)。他の実施形態において、マスタブローカ140Aは、単に長期ストレージにおけるエンキューイベントを割り当てイベントで上書きしてもよい(442)。
割り当てイベントが安定化したとの判定に応じて、マスタブローカ140Aは、メッセージをコンシューマクライアント120(例:マスタブローカ140Aから受信した注文を処理しているエンタープライズにおけるバックエンドサーバ)へ送信する(444)。コンシューマクライアント120は、メッセージ受信の確認446を送信する。
マスタブローカ140Aは、コンシュームイベントを生成する。生成したコンシュームイベントは、最終安定メッセージイベント(割り当てイベント)のシーケンス番号(例:シーケンス番号2)と、最終安定メッセージイベントを送信したマスタブローカ(マスタブローカ140A)に関連付けられたエポック番号と、割り当てイベントのシーケンス番号(例:シーケンス番号3)と、マスタブローカ140Aに関連付けられたエポック番号とを含むメタデータを含む。マスタブローカ140Aは、コンシュームイベントを、スレーブブローカ140B、140Cおよびメッセージングソース130A、130B、および130Cへ並列に配信する(448)。
マスタブローカ140Aは、メモリにコンシュームイベントを保持する(450)。スレーブブローカ140B、140Cが配信コンシュームイベントを受信すると、スレーブブローカ140B、140Cは、それぞれのブローカ状態を更新する(452、454)。具体的に、各スレーブブローカ140B、140Cは、それぞれのメモリに保持していた割り当てイベントを持続し、その後、それぞれのメモリにコンシュームイベントを保持する。他の実施形態において、スレーブブローカ140B、140Cは、単に長期ストレージにおけるエンキューイベントを割り当てイベントで上書きしてもよい。スレーブブローカ140B、140Cが割り当てイベントを持続すると、スレーブブローカ140B、140Cは、持続イベントの確認456を全てのイベントストア130A、130B、130Cへ送信する。イベントストア130A、130B、130Cは、確認356を記憶する。
イベントストア130A、130B、130Cは、コンシュームイベントを受信し、それぞれの永久メモリにコンシュームイベントを記憶する(458、460、462)。イベントストアが永久メモリにコンシュームイベントを記憶すると、イベントストアは、コンシュームイベントが持続した旨の通知464をマスタブローカ140Aへ送信する。マスタブローカ140Aが少なくとも2つの通知464を受信すると、マスタブローカ140Aは、コンシュームイベントが安定化したとみなし、その長期ストレージにコンシュームイベントを記憶する(466)。他の実施形態において、マスタブローカ140Aは、単にメモリからコンシュームイベントを消去し、長期ストレージからエンキューイベントおよび/または割り当てイベントを削除してもよい(466)。
処理フローのこの時点で、マスタは安定化コンシュームメッセージイベントを削除しているが、スレーブブローカ140B、140Cはまだコンシュームメッセージイベントをメモリに保持している。高活動期間において、マスタブローカ140Aによって生成されスレーブブローカ140B、140Cへ配信される次のメッセージイベントによって、それぞれのブローカ状態が更新される。しかし、メッセージイベント間に遅延があると、マスタブローカ140Aは、安定イベントを生成して、スレーブブローカ140B、140Cおよびイベントストア130A、130B、130Cへ配信し得る(468)。
安定メッセージは、最終安定メッセージイベント(コンシュームイベント)のシーケンス番号(例:シーケンス番号3)と、最終安定メッセージイベントを送信したマスタブローカ(マスタブローカ140A)に関連付けられたエポック番号と、安定イベントのシーケンス番号(例:シーケンス番号4)と、マスタブローカ140Aに関連付けられたエポック番号とを含むメタデータを含む。マスタブローカ140Aは、安定イベントを、スレーブブローカ140B、140Cおよびメッセージングソース130A、130B、および130Cへ並列に配信する(468)。
スレーブブローカ140B、140Cが配信安定イベントを受信すると、スレーブブローカ140B、140Cは、それぞれのブローカ状態を更新する。具体的に、各スレーブブローカ140B、140Cは、それぞれのメモリに保持していたコンシュームイベントを持続する。他の実施形態において、スレーブブローカ140B、140Cは、単にメモリからコンシュームイベントを消去し、長期ストレージからエンキューイベントおよび割り当てイベントを削除してもよい。スレーブブローカ140B、140Cはまた、単にエンキューイベントおよび/または割り当てイベントをコンシュームイベントで上書きしてもよい。スレーブブローカ140B、140Cがコンシュームイベントを持続すると(470、472)、スレーブブローカ140B、140Cは、持続イベントの確認474を全てのイベントストア130A、130B、130Cへ送信する。イベントストア130A、130B、130Cは、確認474を記憶する。
図5は、一実施形態に係る、スレーブブローカからマスタブローカへ遷移する方法を示すフローチャートである。一実施形態において、図5のプロセスが、ブローカ140によって行われる。他の実施形態において、他のエンティティが、該プロセスのステップの一部または全部を行ってもよい。同様に、実施形態は、異なるおよび/または追加のステップを含んでもよく、異なる順でステップを行ってもよい。
ブローカ140は、スレーブブローカからマスタブローカへのブローカステータスの変化の通知を受信する(505)。例えば、先行マスタブローカ140Aに障害が発生し、最後の通信から特定時間経過後、スレーブブローカ140B、140Cは、それぞれのマスタ選択モジュール240を用いて、スレーブブローカのうちの1つ(例:140B)を新マスタブローカ(本項で「ブローカ140」と称する)として選択する。エポック番号は、新ブローカ140エポックが開始したことを示すためにインクリメントされる。
ブローカ140は、基本値を識別する(510)。基本値は、メッセージングブローカの持続ストレージにおけるメッセージイベントの最高シーケンス番号である。例えば、シーケンス情報は、{509}がブローカ140の持続ストレージ142におけるメッセージのシーケンス番号の最高値であると示し得る。
ブローカ140は、複数のイベントストア130A、130B、130Cからシーケンス情報を取り出す(515)。シーケンス情報は、複数のイベントストア130A、130B、130Cそれぞれで持続したメッセージイベントの最高シーケンス番号を表す。例えば、最高シーケンス番号は、イベントストア130A、130B、および130Cで、それぞれ{510,512,514}の値であってもよい。
ブローカ140は、基本値およびシーケンス情報に基づいて取り出すべきメッセージイベントのセットを決定する(520)。基本値未満のシーケンス番号のメッセージは、既にブローカ140によって追跡されている。基本値がシーケンス情報で表される最高シーケンス番号と等しければ、ブローカ140は最新の状態である。しかし、典型的なケースでは、旧マスタブローカ140Aがオフラインになる前に、まだ安定化していないいくつかのメッセージが送出される。したがって、ブローカ140のブローカ状態は、旧マスタブローカ140Aのブローカ状態よりもわずかに遅れている可能性がある。種々のメッセージストアからのシーケンス情報を用いることによって、新たに選択されたブローカ140は、旧マスタブローカ140Aの状態を回復できる。前述の例では、シーケンス情報は、イベントストア130A、130B、および130Cでそれぞれ{510,512,514}の値を含み、基本値は{509}である。よって、ブローカは、イベントストア130A、130B、および130Cのうちの1つ以上からメッセージイベント{510−514}を取り出すべきであると判定する。なぜなら、このメッセージセットが、シーケンス番号{509}の基本値メッセージからシーケンス番号{514}の最高安定化メッセージまでのメッセージセット全体を包含しているからである。例えば、表1は、イベントストア130A、130B、および130Cそれぞれにどのメッセージイベントが記憶されているかを示す。表1におけるセル値は、メッセージイベントに関連付けられたシーケンス番号およびバックポインタを示す。バックポインタは、最終安定化メッセージイベントを指す。例えば、「509(507)」は、イベントストア130A、130B、および130Cがシーケンス番号509に関連付けられたメッセージイベントを記憶した際の最終安定化メッセージイベントに関連付けられた、シーケンス番号{507}とシーケンス番号{507}へのバックポインタとを表す。
Figure 0006602866
ブローカ140は、複数のイベントストアのうちの1つ以上からメッセージイベントセットを取り出す(525)。いくつかの実施形態において、ブローカ140は、1つのメッセージを特定のイベントストアから取り出し、次のメッセージイベントを異なるイベントストアから取り出し、次のメッセージイベントを異なるイベントストアから取り出すというように、メッセージイベントセットをラウンドロビン方式で取り出す。こうして、いずれか1つのストアへの負荷を軽減する。要求メッセージイベントがイベントストアに記憶されているメッセージイベントよりも高いシーケンス番号を有する場合、ブローカ140は、メッセージブローカ130から該メッセージイベントを要求しない。前述の例では、イベントストア130Aおよび130Bがそれぞれ{510}および{511}までのメッセージイベントしか有していないことから、ブローカ140は、イベントストア130Cのみからメッセージイベント{513}および{514}を要求することによって、イベントストア130A、130B、および130Cの間で負荷を分散させる。本例において、取り出したメッセージセットは、シーケンス番号{511−514}のメッセージイベントを含み得る。尚、シーケンス番号509に関連付けられたメッセージイベントを要求する必要はない。なぜなら、基本数は509であるため、ブローカ140のブローカ状態はシーケンス番号509に関連付けられたメッセージングイベントに既に更新されているからである。他の場合において、全メッセージイベントを単一のストア(例:メッセージストア130C)から取り出してもよい。
ブローカ140は、取り出したメッセージイベントセットに部分的に基づいて、メッセージイベントストリームをアセンブルする(530)。ブローカ140は、受信セットにおけるメッセージイベントをそれぞれのシーケンス番号で並べることによって、メッセージイベントストリームを生成する。例えば、メッセージイベントストリームとして、{510,511,512,513,514}の順のものが考えられる。メッセージイベントは、シーケンス番号におけるギャップを識別するために並べられる。場合によっては、要求したメッセージセットのうちの1つ以上が欠けていると、複数のメッセージストア130A、130B、130Cから受信したシーケンス番号にギャップがあるかもしれない。例えば、ギャップを含むメッセージイベントストリームとして、メッセージングイベント{511}が欠けている{510,512,513,514}が考えられる。、例えば、1つ以上のメッセージストアがマスタブローカ140からのメッセージイベント受信に失敗した場合に、ギャップが起こり得る。
ブローカ140は、メッセージイベントストリームを用いて、最大連続メッセージイベント(MCM)を識別する(535)。MCMは、ブローカ140がシーケンス番号におけるギャップに遭遇する前に回復することができる最高シーケンス番号の安定化メッセージイベントである。ギャップがない場合、MCMは、単に、メッセージイベントストリームにおける最高シーケンス番号の安定化メッセージイベントである。例えば、ギャップがないと想定すると、シーケンス番号{512}に関連付けられたメッセージイベントが、MCMである。なぜなら、これが、安定化された(少なくとも2つのイベントストアに記憶された)最高シーケンス番号のメッセージイベントであるからである。あるいは、メッセージイベントストリームがギャップを含む場合、例えば、シーケンス番号{511}のエントリがない以外は表1に示すものと同じストリームの場合、MCMは、シーケンス番号{510}に関連付けられたメッセージイベントである。なぜなら、これが、シーケンス番号においてギャップが起こる前の最高安定化メッセージであるからである。
ブローカ140は、MCMを用いて、同期点を識別する(540)。MCMは、最終安定メッセージへのバックポインタ(すなわち、最終安定メッセージのシーケンス番号)を含むメタデータを含む。メッセージングイベントの同期番号は、MCMのバックポインタで指し示される。MCMがシーケンス番号{512}を有する前述の例では、ブローカ140は、最終安定メッセージ(例:シーケンス番号{510}を有するメッセージイベント)を識別する該メッセージに関連付けられたメタデータ内のバックポインタを取り出す。よって、同期点は、シーケンス番号{510}である。
ブローカ140は、同期点よりも上のシーケンス番号のメッセージイベントを再発行する(545)。ブローカ140は、新エポック番号および新同期番号を用いて同期点よりも上のシーケンス番号のメッセージイベントを再生成し、再生成したメッセージイベントを全スレーブブローカおよび全イベントストア130A、130B、130Cへ配信することによって、メッセージイベントを再発行する。例えば、同期点がシーケンス番号{503}のメッセージであると想定すると、ブローカ140は、シーケンス番号{504,506,507}のメッセージイベントを全イベントストア130A、130B、130Cおよび残りのスレーブブローカ140Cへ再発行する。スレーブブローカ(例:140C)は、異なるエポック番号を伴う再発行メッセージイベントの受信に応じて、同期点後の全メッセージイベントを破棄し、前マスタブローカからの以後のメッセージを無視する。同時に、ブローカ140は、MCMまでそのブローカ状態を更新する(550)。この時点で、全ブローカ140A、140B、および140Cおよび全メッセージストア130A、130B、および130は、完全に同期する。これは、メッセージの共有中央リポジトリがないにもかかわらず、達成される。
図6Aは、一実施形態に係る、メッセージを処理するためのメッセージブローカシステムのレプリケーションストリームおよびレプリケーションイベントストアコンポーネントのクラス図である。レプリケーションストリームイベントストアコンポーネントは、UMPersistenceAdapterクラス605と、ReplicatingMessageStoreクラス610と、ReplicationStreamクラス615と、ReplicatingTransactionStoreクラス620とを含む。UMPersistenceAdapter605は、ReplicatingMessageStore610およびReplicatingTransactionStore620を実装して、中央リポジトリなしでマスタ/スレーブメッセージブローカシステムをサポートするためにディスクに書き込まれる持続データメッセージが最初にUMPインタフェースを用いてレプリケートされるようにする。プロデューサまたはコンシューマクライアントがマスタブローカと相互作用してメッセージイベントを送信するため、ActiveMQブローカは、ReplicatingMessageStoreのメソッド(すなわち、addMessage、removeMessage等)を呼び出す。ReplicationStreamクラス615のメソッドは、UMPersistenceAdapter605の全てのReplicatingMessageStore620によって使用される。例えば、ブローカからの「addMessage」コマンドは、ReplicatingMessageStore620においてAddMessageReplicationEventを生成し、イベントは、ReplicationStream615クラスの「レプリケート」メソッドへ送信される。ReplicationStream615におけるレプリケートメソッドは、メッセージイベントを、システムにおけるソースから複数のイベントストアおよびスレーブブローカへ配信する。こうして、ReplicationStreamクラス615を用いて、マスタブローカで発生するレプリケートされたイベントが送受信される。
マスタブローカは、標準イベントストアインタフェース(「create a new queue destination」や「remove an existing queue destination」等)を通じてスレーブにレプリケートされる種々の管理イベントを行う。マスタブローカによる決定は、レプリケーションストリームプロトコルによって順序付けされてレプリケートされる。
実際のディスク持続は、ReplicationStream615からレプリケーションイベントを受信した結果として起こる。ディスクへのデータ書き込みの異なる実施を可能にするために、長期ストレージインタフェースが実装される。図6Bは、一実施形態に係る、メッセージを処理するためのメッセージブローカシステムの長期ストレージコンポーネントの例示的クラス図である。長期ストレージコンポーネントは、ReplicationStreamLongTermStorageクラス635と、PersistenceAdapterBasedLongTermStorageクラス640と、LongTermStorageReplicationStreamListener645クラスとを含む。レプリケーションイベントメッセージが各スレーブブローカへ送信されると、スレーブブローカにおけるレシーバは、メッセージイベントをReplicationStreamListener645へ送信する。ReplicationStreamListenerのうちの1つ、すなわち、LongTermStorageReplicationStreamListener645は、各メッセージイベントを取得し、長期ストレージ持続アダプタ、すなわち、PersistenceAdapterBasedLongTermStorage640へ渡す。PersistenceAdapterBasedLongTermStorage640クラスは、addMessageメソッドを用いて、長期ストレージへのメッセージイベントの実際の持続を行う。
図6Cは、一実施形態に係る、メッセージを処理するためのメッセージブローカシステムのイベントストアとメッセージブローカとの間のインタフェース650の例である。図6Cに示すメッセージングキューレプリケーションインタフェースは、レプリケーションストリームプロトコルに関連するメソッドを行うために持続アダプタや他のメッセージングおよびイベントストアコンポーネントによって利用される。例えば、RepublishReplicationEventメソッド655は、スレーブブローカのマスタブローカへの遷移時に、同期点が決定されるとメッセージイベントを再発行するために、レプリケーションストリームによって用いられる。同様に、レプリケーションインタフェースに記載の他のメソッドも、レプリケーションストリームプロトコルを行う際にメッセージングシステムコンポーネントのうちの1つによって用いられる。
図7は、図1に示すエンティティを実施するための例示的コンピュータ700を示すハイレベルブロック図である。少なくとも1つのプロセッサ705が、チップセット710に結合されている。また、メモリ715、記憶装置720、キーボード725、グラフィックスアダプタ730、ポインティングデバイス735、およびネットワークアダプタ740も、チップセット710に結合されている。ディスプレイ745は、グラフィックスアダプタ530に結合されている。一実施形態において、チップセット710の機能は、メモリコントローラハブ750およびI/Oコントローラハブ755によって与えられる。他の実施形態において、メモリ715は、チップセット710ではなくプロセッサ705に直接結合される。
記憶装置720は、ハードドライブ、CD−ROM、DVD、固体メモリ装置等の任意の非一時的コンピュータ可読記憶媒体である。メモリ715は、プロセッサ705が使用する命令およびデータを保持する。ポインティングデバイス735は、マウス、トラックボール、または他のタイプのポインティングデバイスであってもよく、データをコンピュータ700に入力するためにキーボード725と組み合わせて用いられる。グラフィックスアダプタ730は、ディスプレイ745上に画像や他の情報を表示する。ネットワークアダプタ740は、コンピュータ700をネットワーク(例:図1のネットワーク105)へつなげる。
既知の通り、コンピュータ700は、図7に示すものと異なるおよび/または他の構成要素を有し得る。また、コンピュータ700は、図示の構成要素のいずれかを有しなくてもよい。例えば、コンピュータ700は、キーボード725、ポインティングデバイス735、グラフィックスアダプタ730、および/またはディスプレイ745を有しなくてもよい。他の例において、スタジアムビュービジュアリゼーションを表示するように構成されるコンピュータ700は、タッチスクリーンインタフェースを有するタブレットやスマートフォンであってもよく、キーボード725およびポインティングデバイス735を有しなくてもよい。記憶装置720は、コンピュータ700構内接続および/または遠隔接続であってもよい。
既知の通り、コンピュータ700は、本明細書に記載の機能を実現するためのコンピュータプログラムモジュールを実行するように適合されている。本明細書において、「モジュール」は、特定の機能を実現するために利用されるコンピュータプログラムロジックを指す。よって、モジュールは、ハードウェア、ファームウェア、および/またはソフトウェアで実装可能である。一実施形態において、プログラムモジュールは、記憶装置720に記憶され、メモリ715へロードされて、プロセッサ705によって実行される。
本明細書に記載の物理的構成要素の実施形態は、本明細書に記載のものと他のおよび/または異なるモジュールを含み得る。また、モジュールに帰する機能は、他の実施形態において他のまたは異なるモジュールによって行われてもよい。本明細書では、明確さおよび便宜のために、「モジュール」という語を省略することがある。
その他の構成考察
上記説明の一部では、アルゴリズム的なプロセスまたは動作の観点で実施形態を説明している。これらのアルゴリズム的な説明および表現は通常、データ処理の熟練者が当業他者に対して仕事の内容を効果的に伝達する際に用いられている。これらの動作は、機能的、計算的、または論理的に説明されているが、プロセッサまたは同等の電気回路、マイクロコード等で実行する命令を含むコンピュータプログラムによって実装されるものと理解される。さらに、一般性を失わずに、これらの機能的動作の構成をモジュールとして参照することが場合によっては都合が良いことも判明した。上記説明した動作および関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせとして具現化してもよい。
本明細書で使用する「一実施形態」または「実施形態」という表現はいずれも、その実施形態と関連して説明した特定の要素、特徴、構造、または特性が少なくとも1つの実施形態に含まれることを意味する。また、本明細書の様々な箇所に登場する「一実施形態において」という表現は、必ずしも同じ実施形態を参照しているわけではない。
一部の実施形態は、「結合(coupled)」および「接続(connected)」という表現をそれぞれの派生語とともに用いて記述してもよいが、これらの用語は、互いの同義語をなすものではないことを理解するべきである。例えば、一部の実施形態は、2つ以上の要素が互いに直接物理的または電気的に接触していることを示すために、「接続(connected)」という用語を用いて記述してもよい。他の例として、一部の実施形態は、2つ以上の要素が直接物理的または電気的に接触していることを示すために、「結合(coupled)」という用語を用いて記述してもよい。ただし、「結合(coupled)」という用語は、2つ以上の要素が互いに直接接触はしていないが、互いに協働または相互作用するということを意味していてもよい。なお、実施形態は、これに関連する制約を受けない。
本明細書で使用する「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、「含んでいる(including)」、「有する(has)」、「有している(having)」という用語、またはこれらのその他任意の変形は、非排他的な包含を網羅することを意図している。例えば、一連の要素を備えたプロセス、方法、物品、または装置は、必ずしもこれらの要素にのみ限定されず、明確に記載されていないその他の要素またはこれらのプロセス、方法、物品、または装置に固有のその他の要素を含んでいてもよい。さらに、明確に反対のことが記載されていない限り、「または(or)」は、包含的論理和の意味を有し、排他的論理和の含意はない。例えば、「条件AまたはB」は、Aが真(または存在する)でBが偽(または存在しない)、Aが偽(または存在しない)でBが真(または存在する)、AおよびBともに真(または存在する)、のいずれかによって満足される。
また、本明細書における実施形態の要素および構成要素の記述に不定冠詞(aまたはan)を使用しているが、これは、単に便宜上のことであって、本開示の一般的な意味を与えるためである。このような記述は、1つまたは少なくとも1つの要素を含むものと解釈されるべきである。また、単数形は、その他の意味が明確に記載されていない限り、複数形も含む。
当業者が本開示内容を読めば、メッセージブローカリングシステムのさらに別の構造設計および機能設計が想到されるであろう。したがって、特定の実施形態および用途を例示・説明したが、本発明は、本明細書に開示の構成および構成要素にのみ限定されるものではなく、本明細書に開示した方法および装置の構成、動作、および詳細に対して、当業者には明白な種々の改良、変更、および変形を行ってもよいものと理解するべきである。本発明の範囲は、以下の請求項によってのみ限定される。

Claims (22)

  1. メッセージを処理するメッセージブローカコンピュータシステムの方法であって、
    マスタブローカコンピュータシステムが、クライアントプロデューサからメッセージを受信するステップと、
    前記マスタブローカコンピュータシステムが、前記クライアントプロデューサからの前記メッセージの受信に応じて、メッセージイベントを生成するステップであって、前記メッセージイベントは、前記マスタブローカコンピュータシステムに関連付けられたエポック値と前記メッセージに関連付けられたシーケンス番号とで前記メッセージを固有に識別し、複数のイベントストアのうちの少なくとも2つによって関連持続ストレージシステムに記憶された最終メッセージへのポインタをさらに含むメッセージイベントである、ステップと、
    前記マスタブローカコンピュータシステムが、前記メッセージイベントを、複数のイベントストアおよび複数のスレーブブローカコンピュータシステムへ配信するステップであって、各イベントストアは、関連持続ストレージシステム内に前記メッセージイベントを記憶し、各スレーブブローカコンピュータシステムは、関連メモリ内に前記メッセージイベントを保持する、ステップと、
    前記マスタブローカコンピュータシステムが、少なくとも2つのイベントストアからの安定通知を受信するステップであって、各安定通知は前記メッセージイベントがそれぞれのイベントストアに記憶されたことを示すステップと、
    前記マスタブローカコンピュータシステムが、前記安定通知の受信に応じて、関連持続ストレージに前記メッセージイベントを記憶し、通知を前記クライアントプロデューサへ送信するステップと、
    前記マスタブローカコンピュータシステムが、前記メッセージイベントが安定化したことを示す別のメッセージイベントを生成するステップと、
    前記マスタブローカコンピュータシステムが、前記別のメッセージイベントを、前記複数のイベントストアおよび前記複数のスレーブブローカコンピュータシステムへ配信するステップであって、前記別のメッセージイベントは、各スレーブブローカコンピュータシステムに、前記メッセージイベントをその関連メモリからそれぞれの持続ストレージシステムに送信させるステップとを含む、方法。
  2. 各メッセージングブローカコンピュータシステムのブローカコンピュータシステム状態を記憶するステップをさらに含み、
    前記ブローカコンピュータシステム状態は、前記ブローカコンピュータシステムで持続したメッセージイベントストリームを表す、請求項1に記載の方法。
  3. さらに、前記マスタブローカコンピュータシステムからメッセージイベントを受信すると、各メッセージングブローカコンピュータシステムのブローカコンピュータシステム状態を更新するステップを含み、
    前記ブローカコンピュータシステム状態の更新では、前記持続ストレージからメッセージイベントを削除することと、前記メッセージイベントを前記マスタブローカコンピュータシステムから受信したメッセージイベントで上書きすることとのうちの少なくとも1つを行う、請求項2に記載の方法。
  4. さらに、前記マスタブローカコンピュータシステムが、前記メッセージイベントが安定化すると、前記メッセージイベントを前記マスタブローカコンピュータシステムの内部メモリから削除するステップを含む、請求項1に記載の方法。
  5. 各スレーブブローカシステムは、前記マスタブローカコンピュータシステムからの別のメッセージイベントと前記マスタブローカコンピュータシステムからの安定メッセージイベントとのうちの少なくとも1つを受信すると、前記メッセージイベントをスレーブブローカコンピュータシステムの内部メモリから削除するよう構成され
    前記安定メッセージイベントは、前記マスタブローカコンピュータシステムでの最終既知安定メッセージイベントに関連付けられた情報を含む、請求項1に記載の方法。
  6. 前記別のメッセージイベントは、メッセージイベントと、最終安定メッセージイベントに関連付けられたシーケンス番号と、前記最終安定メッセージイベントを送信した前記マスタブローカコンピュータシステムに関連付けられたエポック値と、前記メッセージイベントに関連付けられたシーケンス番号と、前記マスタブローカコンピュータシステムに関連付けられたエポック値とを含む、請求項1に記載の方法。
  7. 前記マスタブローカコンピュータシステムは、前記メッセージイベントを、前記複数のスレーブブローカコンピュータシステムおよび前記複数のイベントストアへ並列に配信する、請求項1に記載の方法。
  8. 1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサの少なくとも1つに動作可能に結合され、前記少なくとも1つまたは複数のプロセッサによって実行されたときに、前記少なくとも1つまたは複数のプロセッサに処理を実行させる命令を記憶した1つまたは複数のメモリとを備えた装置であって、
    前記処理は、
    クライアントからメッセージを受信するステップと、
    前記クライアントプロデューサからのメッセージの受信に応じてメッセージイベントを生成するステップであって、前記メッセージイベントは、マスタブローカコンピュータシステムに関連付けられたエポック値と前記メッセージに関連付られたシーケンス番号とで前記メッセージを固有に識別し、前記メッセージイベントは、前記関連接続ストレージシステム内の複数のイベントストアの少なくとも2つに記憶された最終メッセージへのポインタをさらに含む、ステップと、
    前記メッセージイベントを複数のイベントストアと複数のスレーブブローカコンピュータシステムへ配信するステップであって、各イベントストアは関連接続ストレージシステムにメッセージイベントを記憶し、各スレーブブローカコンピュータシステムは、関連メモリに前記メッセージイベントを保持する、ステップと、
    少なくとも2つのイベントストアから安定通知を受信するステップであって、各安定通知は、前記メッセージイベントがそれぞれのイベントストアに記憶されたことを示す、ステップと、
    前記安定通知の受信に対応して、前記メッセージイベントを関連持続ストレージに記憶し、前記クライアントプロデューサへ通知を送信するステップと、
    前記メッセージイベントが安定化したことを示す別のメッセージイベントを生成するステップと、
    前記別のメッセージイベントを前記複数のイベントストアと複数のスレーブブローカコンピュータシステムとへ配信するステップであって、前記別のメッセージイベントは、各スレーブブローカコンピュータシステムに、前記メッセージイベントをその関連メモリからそれぞれの持続ストレージシステムへ送信させる、ステップとを含む、装置。
  9. 前記1つまたは複数のメモリの少なくとも1つが、前記1つまたは複数のプロセッサの少なくとも1つに実行されたときに、前記1つまたは複数のプロセッサの少なくとも1つに、各メッセージングブローカコンピュータシステムのブローカコンピュータシステム状態を記憶させるステップを実行させる命令をさらに含み、
    ブローカコンピュータシステム状態は、前記ブローカコンピュータシステムで持続したメッセージイベントストリームを表す、請求項8に記載の装置。
  10. 前記1つまたは複数のメモリの少なくとも1つが、前記1つまたは複数のプロセッサの少なくとも1つに実行されたときに、前記1つまたは複数のプロセッサの少なくとも1つに、前記マスタブローカコンピュータシステムからメッセージイベントを受信すると、各メッセージングブローカコンピュータシステムのブローカコンピュータシステム状態を更新させるステップを実行させる命令をさらに含み、
    前記ブローカコンピュータシステム状態の更新では、前記持続ストレージからメッセージイベントを削除することと、前記メッセージイベントを前記マスタブローカコンピュータシステムから受信したメッセージイベントで上書きすることとのうちの少なくとも1つを行う、請求項9に記載の装置。
  11. 前記1つまたは複数のメモリの少なくとも1つが、前記1つまたは複数のプロセッサの少なくとも1つに実行されたときに、前記1つまたは複数のプロセッサの少なくとも1つに、前記メッセージイベントが安定化すると、前記メッセージイベントを前記マスタブローカコンピュータシステムの内部メモリから削除させるステップを実行させる命令をさらに含む、請求項8に記載の装置。
  12. 各スレーブブローカシステムは、前記マスタブローカコンピュータシステムからの別のメッセージイベントと前記マスタブローカコンピュータシステムからの安定メッセージイベントとのうちの少なくとも1つを受信すると、前記メッセージイベントをスレーブブローカコンピュータシステムの内部メモリから削除するよう構成され、
    前記安定メッセージイベントは、前記マスタブローカコンピュータシステムでの最終既知安定メッセージイベントに関連付けられた情報を含む、請求項8に記載の装置。
  13. 前記別のメッセージイベントは、メッセージイベントと、最終安定メッセージイベントに関連付けられたシーケンス番号と、前記最終安定メッセージイベントを送信した前記マスタブローカコンピュータシステムに関連付けられたエポック値と、前記メッセージイベントに関連付けられたシーケンス番号と、前記マスタブローカコンピュータシステムに関連付けられたエポック値とを含む、請求項8に記載の装置。
  14. マスタブローカコンピュータシステムは、前記メッセージイベントを、前記複数のスレーブブローカコンピュータシステムおよび前記複数のイベントストアへ並列に配信する、請求項8に記載の装置。
  15. 1つまたは複数のコンピュータ装置の少なくとも1つによって実行されたとき、前記1つまたは複数のコンピュータ装置の少なくとも1つに処理を実行させるコンピュータ可読命令を含むコンピュータプログラムであって、
    前記処理は、
    クライアントからメッセージを受信するステップと、
    前記クライアントプロデューサからのメッセージの受信に応じてメッセージイベントを生成するステップであって、前記メッセージイベントは、マスタブローカコンピュータシステムに関連付けられたエポック値と前記メッセージに関連付られたシーケンス番号とで前記メッセージを固有に識別し、前記メッセージイベントは、前記関連接続ストレージシステム内の複数のイベントストアの少なくとも2つに記憶された最終メッセージへのポインタをさらに含む、ステップと、
    前記メッセージイベントを複数のイベントストアと複数のスレーブブローカコンピュータシステムへ配信するステップであって、各イベントストアは関連接続ストレージシステムにメッセージイベントを記憶し、各スレーブブローカコンピュータシステムは、関連メモリに前記メッセージイベントを保持する、ステップと、
    少なくとも2つのイベントストアから安定通知を受信するステップであって、各安定通知は、前記メッセージイベントがそれぞれのイベントストアに記憶されたことを示す、ステップと、
    前記安定通知の受信に対応して、前記メッセージイベントを関連持続ストレージに記憶し、前記クライアントプロデューサへ通知を送信するステップと、
    前記メッセージイベントが安定化したことを示す別のメッセージイベントを生成するステップと、
    前記別のメッセージイベントを前記複数のイベントストアと複数のスレーブブローカコンピュータシステムとへ配信するステップであって、前記別のメッセージイベントは、各スレーブブローカコンピュータシステムに、前記メッセージイベントをその関連メモリからそれぞれの持続ストレージシステムへ送信させる、ステップとを含む、コンピュータプログラム。
  16. 前記1つまたは複数のコンピュータ装置の少なくとも1つに実行されたときに、前記1つまたは複数のコンピュータ装置の少なくとも1つに、各メッセージングブローカコンピュータシステムのブローカコンピュータシステム状態を記憶させるステップを実行させるコンピュータ可読命令をさらに含み、
    ブローカコンピュータシステム状態は、前記ブローカコンピュータシステムで持続したメッセージイベントストリームを表す、請求項15に記載のコンピュータプログラム。
  17. 前記1つまたは複数のコンピュータ装置の少なくとも1つに実行されたときに、前記1つまたは複数のコンピュータ装置の少なくとも1つに、前記マスタブローカコンピュータシステムからメッセージイベントを受信すると、各メッセージングブローカコンピュータシステムのブローカコンピュータシステム状態を更新させるステップを実行させるコンピュータ可読命令をさらに含み、
    前記ブローカコンピュータシステム状態の更新では、前記持続ストレージからメッセージイベントを削除することと、前記メッセージイベントを前記マスタブローカコンピュータシステムから受信したメッセージイベントで上書きすることとのうちの少なくとも1つを行う、請求項16に記載のコンピュータプログラム。
  18. 前記1つまたは複数のコンピュータ装置の少なくとも1つに実行されたときに、前記1つまたは複数のコンピュータ装置の少なくとも1つに、前記メッセージイベントが安定化すると、前記メッセージイベントを前記マスタブローカコンピュータシステムの内部メモリから削除させるステップを実行させるコンピュータ可読命令をさらに含む、請求項15に記載のコンピュータプログラム。
  19. 各スレーブブローカシステムは、前記マスタブローカコンピュータシステムからの別のメッセージイベントと前記マスタブローカコンピュータシステムからの安定メッセージイベントとのうちの少なくとも1つを受信すると、前記メッセージイベントをスレーブブローカコンピュータシステムの内部メモリから削除するよう構成され、
    前記安定メッセージイベントは、前記マスタブローカコンピュータシステムでの最終既知安定メッセージイベントに関連付けられた情報を含む、請求項15に記載のコンピュータプログラム。
  20. 前記別のメッセージイベントは、メッセージイベントと、最終安定メッセージイベントに関連付けられたシーケンス番号と、前記最終安定メッセージイベントを送信した前記マスタブローカコンピュータシステムに関連付けられたエポック値と、前記メッセージイベントに関連付けられたシーケンス番号と、前記マスタブローカコンピュータシステムに関連付けられたエポック値とを含む、請求項15に記載のコンピュータプログラム。
  21. マスタブローカコンピュータシステムは、前記メッセージイベントを、前記複数のスレーブブローカコンピュータシステムおよび前記複数のイベントストアへ並列に配信する、請求項15に記載のコンピュータプログラム。
  22. 請求項15〜21のいずれか一項に記載のコンピュータプログラムを記憶した1つまたは複数のコンピュータ可読媒体。
JP2017529083A 2014-12-01 2015-11-30 並列持続性を有するメッセージブローカシステム Active JP6602866B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462086111P 2014-12-01 2014-12-01
US62/086,111 2014-12-01
PCT/US2015/063034 WO2016089787A1 (en) 2014-12-01 2015-11-30 Message broker system with parallel persistence
US14/954,731 2015-11-30
US14/954,731 US10904155B2 (en) 2014-12-01 2015-11-30 Message broker system with parallel persistence

Publications (3)

Publication Number Publication Date
JP2018504670A JP2018504670A (ja) 2018-02-15
JP2018504670A5 JP2018504670A5 (ja) 2019-01-17
JP6602866B2 true JP6602866B2 (ja) 2019-11-06

Family

ID=56079883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017529083A Active JP6602866B2 (ja) 2014-12-01 2015-11-30 並列持続性を有するメッセージブローカシステム

Country Status (6)

Country Link
US (2) US10904155B2 (ja)
EP (1) EP3227801B1 (ja)
JP (1) JP6602866B2 (ja)
CN (1) CN107430606B (ja)
CA (1) CA2969210C (ja)
WO (1) WO2016089787A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6899837B2 (ja) * 2016-03-09 2021-07-07 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited リージョン間にわたるデータ送信
US10263661B2 (en) 2016-12-23 2019-04-16 Sierra Nevada Corporation Extended range communications for ultra-wideband network nodes
US10523498B2 (en) * 2016-12-23 2019-12-31 Sierra Nevada Corporation Multi-broker messaging and telemedicine database replication
US10917458B2 (en) 2018-11-12 2021-02-09 Pivotal Software, Inc. Message broker configuration
TWI678087B (zh) * 2018-11-22 2019-11-21 財團法人工業技術研究院 訊息佇列發佈與訂閱之同步方法及其系統
US10999392B2 (en) * 2019-03-01 2021-05-04 Accenture Global Solutions Limited Message recovery system for computing nodes with replicated databases
CN110519343B (zh) * 2019-08-13 2020-12-04 创新奇智(北京)科技有限公司 一种基于日志的事件同步方法
US11563709B2 (en) * 2020-03-31 2023-01-24 Snap Inc. Messaging system of partial and out-of-order events
EP3905606A1 (en) * 2020-04-30 2021-11-03 KONE Corporation Safety communication in an elevator communication system
US11310187B2 (en) * 2020-09-22 2022-04-19 International Business Machines Corporation Cooperative messaging environments
US11803496B2 (en) * 2021-10-29 2023-10-31 Lenovo (Singapore) Pte. Ltd. Systems, apparatus, and methods for electing a new broker for a channel on an MQTT bus
CN114827145B (zh) * 2022-04-24 2024-01-05 阿里巴巴(中国)有限公司 服务器集群系统、元数据的访问方法及装置

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481694A (en) * 1991-09-26 1996-01-02 Hewlett-Packard Company High performance multiple-unit electronic data storage system with checkpoint logs for rapid failure recovery
US6175876B1 (en) * 1998-07-09 2001-01-16 International Business Machines Corporation Mechanism for routing asynchronous state changes in a 3-tier application
US6401120B1 (en) * 1999-03-26 2002-06-04 Microsoft Corporation Method and system for consistent cluster operational data in a server cluster using a quorum of replicas
US6691245B1 (en) * 2000-10-10 2004-02-10 Lsi Logic Corporation Data storage with host-initiated synchronization and fail-over of remote mirror
US7689560B2 (en) * 2000-10-13 2010-03-30 Miosoft Corporation Persistent data storage techniques
US7010762B2 (en) * 2002-02-27 2006-03-07 At&T Corp. Pre-loading content to caches for information appliances
US6820098B1 (en) * 2002-03-15 2004-11-16 Hewlett-Packard Development Company, L.P. System and method for efficient and trackable asynchronous file replication
US20110276636A1 (en) * 2010-03-29 2011-11-10 Konaware, Inc. Efficient transactional messaging between loosely coupled client and server over multiple intermittent networks with policy based routing
GB0323780D0 (en) * 2003-10-10 2003-11-12 Ibm A data brokering method and system
US7143123B2 (en) * 2004-01-09 2006-11-28 Microsoft Corporation Well-known transactions in data replication
US7805509B2 (en) * 2004-06-04 2010-09-28 Optier Ltd. System and method for performance management in a multi-tier computing environment
GB0414291D0 (en) * 2004-06-25 2004-07-28 Ibm Methods, apparatus and computer programs for data replication
US20080288659A1 (en) * 2006-11-09 2008-11-20 Microsoft Corporation Maintaining consistency within a federation infrastructure
KR100715426B1 (ko) * 2004-12-20 2007-05-09 삼성전자주식회사 휴대단말기의 응용 프로그램 관련 이벤트 처리 장치 및방법
US8077699B2 (en) * 2005-11-07 2011-12-13 Microsoft Corporation Independent message stores and message transport agents
GB0613192D0 (en) * 2006-07-01 2006-08-09 Ibm Methods, apparatus and computer programs for managing persistence
US7689535B2 (en) * 2007-05-30 2010-03-30 Red Hat, Inc. Method for providing a unified view of a domain model to a user
US8615497B1 (en) * 2007-08-15 2013-12-24 Emc Corporation Assured federated records management
US8751626B2 (en) * 2007-10-23 2014-06-10 Microsoft Corporation Model-based composite application platform
US8413250B1 (en) * 2008-06-05 2013-04-02 A9.Com, Inc. Systems and methods of classifying sessions
US8169856B2 (en) * 2008-10-24 2012-05-01 Oracle International Corporation Time synchronization in cluster systems
US8117156B2 (en) * 2008-10-26 2012-02-14 Microsoft Corporation Replication for common availability substrate
CN101459690B (zh) * 2008-12-25 2012-05-09 哈尔滨工程大学 一种无线公共对象请求代理结构应用中的容错方法
US9417977B2 (en) * 2008-12-31 2016-08-16 Sap Se Distributed transactional recovery system and method
US20120113134A1 (en) * 2009-04-17 2012-05-10 Rainer Heller Providing a Proxy Step in a Model of an Automation System
US20100306321A1 (en) * 2009-05-29 2010-12-02 Microsoft Corporation Delivering messages using user-defined agents
US9519555B2 (en) * 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
US8909996B2 (en) * 2011-08-12 2014-12-09 Oracle International Corporation Utilizing multiple storage devices to reduce write latency for database logging
US8843441B1 (en) * 2012-01-17 2014-09-23 Amazon Technologies, Inc. System and method for maintaining a master replica for reads and writes in a data store
CN103425462B (zh) * 2012-05-14 2016-12-14 阿里巴巴集团控股有限公司 一种工作流数据持久化的方法和装置
US9348648B2 (en) * 2012-09-12 2016-05-24 Salesforce.Com, Inc. Providing a routing framework for facilitating dynamic workload scheduling and routing of message queues for fair management of resources for application servers in an on-demand services environment
US9319267B1 (en) * 2012-10-04 2016-04-19 Solace Systems, Inc. Replication in assured messaging system
US20140214891A1 (en) * 2013-01-28 2014-07-31 Hadronex, Inc. Hierarchical user interface and functional apparatus
KR101486546B1 (ko) * 2013-05-15 2015-01-27 주식회사 한국거래소 장애 대비를 위한 복제 시스템 및 그 방법
US9183103B2 (en) * 2013-05-31 2015-11-10 Vmware, Inc. Lightweight remote replication of a local write-back cache
US9411869B2 (en) * 2013-07-09 2016-08-09 Red Hat, Inc. Replication between sites using keys associated with modified data
US9639589B1 (en) * 2013-12-20 2017-05-02 Amazon Technologies, Inc. Chained replication techniques for large-scale data streams
US9405483B1 (en) * 2014-03-11 2016-08-02 Amazon Technologies, Inc. Optimized write performance at block-based storage during volume snapshot operations
US9584593B2 (en) * 2014-06-27 2017-02-28 Amazon Technologies, Inc. Failure management in a distributed strict queue

Also Published As

Publication number Publication date
US20210112013A1 (en) 2021-04-15
EP3227801B1 (en) 2020-01-08
CN107430606A (zh) 2017-12-01
JP2018504670A (ja) 2018-02-15
CA2969210A1 (en) 2016-06-09
WO2016089787A8 (en) 2017-01-26
US20160156502A1 (en) 2016-06-02
WO2016089787A1 (en) 2016-06-09
EP3227801A4 (en) 2018-05-02
EP3227801A1 (en) 2017-10-11
CN107430606B (zh) 2021-06-29
US10904155B2 (en) 2021-01-26
CA2969210C (en) 2024-02-20

Similar Documents

Publication Publication Date Title
JP6602866B2 (ja) 並列持続性を有するメッセージブローカシステム
CN106662983B (zh) 分布式存储系统中的数据重建的方法、装置和系统
EP2215773B1 (en) Method and system for handling a failover in a distributed environment that uses session affinity
US10474694B2 (en) Zero-data loss recovery for active-active sites configurations
US7594138B2 (en) System and method of error recovery for backup applications
US20120023066A1 (en) Initialization protocol for a peer-to-peer replication environment
JP5686034B2 (ja) クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム
US20140279912A1 (en) Client object replication between a first backup server and a second backup server
CN110795503A (zh) 分布式存储系统的多集群数据同步方法及相关装置
US10127077B2 (en) Event distribution pattern for use with a distributed data grid
WO2016155002A1 (en) Method and system for data recovery in a data system
KR20140106588A (ko) 공유 볼륨의 어플리케이션 일관된 스냅샷 기법
US20080115128A1 (en) Method, system and computer program product for implementing shadow queues for recovery of messages
JP2010217968A (ja) ストリームデータ処理システムにおける障害回復方法、計算機システム及び障害回復プログラム
US20120084260A1 (en) Log-shipping data replication with early log record fetching
CN105493474A (zh) 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法
US20100228849A1 (en) Deployment of Asynchronous Agentless Agent Functionality in Clustered Environments
US11223678B2 (en) Establishing paths between servers in a copy environment for different copy relationships between the servers
US11042454B1 (en) Restoration of a data source
WO2017005116A1 (zh) 中间文件处理方法、客户端、服务器和系统
JP2014529150A (ja) 再接続時の予期せぬ協調サーバ応答の通信
US20150213102A1 (en) Synchronous data replication in a content management system
US8738959B2 (en) Selective message loss handling in a cluster of replicated servers
CN113515574A (zh) 一种数据同步方法及装置
CN111767113A (zh) 一种用于实现容器驱逐的方法和装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181129

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190910

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191009

R150 Certificate of patent or registration of utility model

Ref document number: 6602866

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250