JP2020500345A - 時間的に正確なイベントストリームの作成のためのシステム及び方法 - Google Patents

時間的に正確なイベントストリームの作成のためのシステム及び方法 Download PDF

Info

Publication number
JP2020500345A
JP2020500345A JP2019512214A JP2019512214A JP2020500345A JP 2020500345 A JP2020500345 A JP 2020500345A JP 2019512214 A JP2019512214 A JP 2019512214A JP 2019512214 A JP2019512214 A JP 2019512214A JP 2020500345 A JP2020500345 A JP 2020500345A
Authority
JP
Japan
Prior art keywords
message
writer
writers
messages
reader
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.)
Granted
Application number
JP2019512214A
Other languages
English (en)
Other versions
JP7200455B2 (ja
JP2020500345A5 (ja
Inventor
パーク,ロバート
アイセン,ダニエル,チャールズ
ビショップ,アリソン,ブレトン
サングヴィ,プレラク,ピー.
タテヤマ,ビアウ,セイチ
ケープ,ジェイムズ,エム.
チュン,フランシス
ソコロフ,コンスタンティン
Original Assignee
アイイーエックス グループ,インコーポレーテッド
アイイーエックス グループ,インコーポレーテッド
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 アイイーエックス グループ,インコーポレーテッド, アイイーエックス グループ,インコーポレーテッド filed Critical アイイーエックス グループ,インコーポレーテッド
Publication of JP2020500345A publication Critical patent/JP2020500345A/ja
Publication of JP2020500345A5 publication Critical patent/JP2020500345A5/ja
Application granted granted Critical
Publication of JP7200455B2 publication Critical patent/JP7200455B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R22/00Arrangements for measuring time integral of electric power or current, e.g. electricity meters
    • G01R22/06Arrangements for measuring time integral of electric power or current, e.g. electricity meters by electronic methods
    • G01R22/061Details of electronic electricity meters
    • G01R22/063Details of electronic electricity meters related to remote communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/33Director till display
    • G05B2219/33149Publisher subscriber, publisher, master broadcasts data to slaves, subscriber
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/765Cache
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本発明の実施形態は、改良された分散型コンピューティングシステムを提供する。分散型コンピューティングシステム内のエンティティは、ライタ、リーダ、ゲートウェイ、及びアプリケーションの4つのカテゴリに分類できる。エンドユーザは、ゲートウェイにより、アプリケーションを介してシステムとインタラクトできる。ライタとリーダの役割は、演算負荷を分散するために分離してもよい。ライタは、イベントストリームのためのメッセージを生成できる。メッセージは、一貫したグローバルな順序付けのためのタイムスタンプを含むことができる。リーダは、タイムスタンプに基づいて様々なライタからのメッセージを配列し、時間的に一貫したイベントストリームを生成する。【選択図】 図1

Description

関連出願
本出願は、2016年9月2日に出願された米国仮特許出願第62/382,911号、発明の名称「System and Method for Creating Time-Accurate Event Streams」の優先権を主張し、この内容は、参照により本明細書に援用される。
発明の分野
本発明の実施形態は、包括的に、分散型コンピュータネットワークを使用して時間的に正確なイベントストリームを作成するためのシステム及び方法に関する。
近年の最も複雑なコンピューティングは、集中型方式(centralized fashion)で行われている。例えば、所与のアプリケーションについて、異なる場所からのユーザが中央プロセッサとインタラクトし、中央プロセッサは、そのアプリケーションに関連する全ての処理機能を処理する。この例として、世界中の複数のユーザが中央サーバにログオンして、共に対話型ゲームをプレイするゲーム環境がある。各ユーザは、その指示を中央サーバに送信し、中央サーバは、ユーザの指示の順序に基づいて指示を実行する。プレイヤAとプレイヤBがゲーム内で武器を互いに向け合っている状態で、プレイヤAがプレイヤBより早く射撃ボタンを押すと、プレイヤAは生き残り、プレイヤBは死亡する。しかしながら、集中型コンピューティングには限界がある。例えば、単一のプロセッサの使用によってスループットが制限される。集中型システムのスループットが単一の集中型処理システムのスループットを超えることは、あり得ない。
分散型コンピューティングは、集中型コンピューティングの代替となる。分散型コンピューティングでは、単一のノードではなく、複数のノードを同時に使用してアプリケーションを処理できる。しかしながら、分散型コンピューティングは、二重支払い(double spend)等の欠点がある。複数のノードが異なる命令を処理する可能性があるため、ノードは、イベントの順序に同意する必要がある。例えば、売り手がオンラインで商品のオファーを投稿するとする。中国の買い手Aがオファーに承諾を送信すると、その承諾は、中国にあるノード1によって処理される。略同時に、米国内の別の買い手である買い手Bがオファーに承諾を送信すると、その承諾は、アメリカにあるノード2によって処理される。ノード1とノード2は、買い手A又は買い手Bの何れが先にオファーを承諾したかについて、見解が一致しない可能性がある。
分散型コンピューティング環境におけるイベントの順序付けに対する従来のソリューションは、不十分であった。例えば、PaxosやRaft等のコンセンサスアルゴリズムでは、参加者間でイベントの順序を確実に一致させるための高負荷な調整が必要である。これにより、スループットが低下する。ビットコインのためのアルゴリズムのような他の従来のソリューションは、イベントの順序を合意するための明示的な調整ではなく、作業証明(プルーフオブワーク:proof-of-work)に依存している。しかしながら、これにより、待ち時間が長くなり、スループットが低下する。
したがって、本発明者らは、当技術分野において、高スループット及び低遅延を達成し、リアルタイムに近い一貫したグローバルな順序付けイベントを行う分散型コンピュータネットワークの必要性を認識した。
本発明をより完全に理解するために、以下では、添付の図面を参照して説明を行い、この添付の図面では、同様の要素に同様の符号を付している。これらの図面は、本発明を限定するものとして解釈されるべきではなく、単に例示的であることを意図している。
図1Aは、本発明の一実施形態に基づく分散型コンピューティングネットワークの一部を示すブロック図である。図1Bは、本発明の一実施形態に基づく分散型コンピューティングネットワークのトランスポート層セクションを示すブロック図である。 本発明の一実施形態に基づくライタデバイスのブロック図である。 本発明の一実施形態に基づくライタデバイスの動作のフローチャートである。 本発明の一実施形態に基づくリーダデバイスの動作のフローチャートである。 本発明の一実施形態に基づくリーダデバイスの動作のフローチャートである。 本発明の一実施形態に基づくリーダ動作の一例を示す図である。
本発明の実施形態は、分散型コンピューティングに関する。分散型コンピューティングネットワークでは、複数のノードの各ノードが処理責任を担っている。ノードは、異なる物理的位置に配置してもよい。異なるノードは、メッセージを使用して互いに通信できる。
図1Aは、本発明の一実施形態に基づく分散型コンピューティングネットワーク100の一部を示すブロック図である。図1Aは、本発明の一実施形態に基づく分散型コンピューティングネットワーク100の論理図でもある。分散型コンピューティングネットワーク100は、複数のアプリケーション110.1〜110.M(Mは、正の整数)、ゲートウェイ120、複数のライタ(writer)130.1〜130.N(Nは、正の整数)、及び複数のリーダ(reader)140.1〜140.P(Pは、正の整数)を含むことができる。アプリケーション110.1〜110.Mは、エンドユーザとのインタラクションを提供できる。アプリケーション110.1〜110.Mは、イベントを作成/開始し、イベントを受信/消費し、及び/又はイベントに反応できる。
アプリケーション110.1〜110.Mは、通信リンクにより、ゲートウェイ120を介して分散型コンピューティングネットワーク100の他のネットワークエンティティと通信できる。通信リンクは、インターネット等の1つ又は複数の通信ネットワークによって提供してもよい。通信ネットワークは、有線又は無線ローカルエリアネットワーク(local area network:LAN)、広域ネットワーク(wide area network:WAN)、無線パーソナルエリアネットワーク(personal area network:PAN)、又は他の任意の種類の通信ネットワークを含むことができる。コンピュータは、インターネット、イントラネット、エクストラネット、イーサネット(登録商標)、又は通信を提供する他の任意のシステムを介して接続できる。幾つかの適切な通信プロトコルは、例えば、TCP/IP、UDP、又はOSIを含むことができる。無線通信の場合、通信プロトコルは、ブルートゥース(Bluetooth)(登録商標)、ジグビー(Zigbee)、IrDa又は他の適切なプロトコルを含むことができる。更に、ネットワークエンティティは、有線経路又は無線経路の組み合わせを介して互いに通信できる。
説明のために単一のゲートウェイ120を示しているが、2つ以上のゲートウェイを設けてもよい。ゲートウェイ120は、他のネットワークエンティティ(例えば、ライタ、リーダ、アプリケーション)からメッセージを受信し、これらのメッセージを他のエンティティに転送できる。ゲートウェイ120は、システムへのアクセスを制御できる。ゲートウェイ120は、メッセージに対して妥当性検査を実行してもよく、またメッセージ送信のペースを制御してもよい。したがって、ゲートウェイは、サービス拒否攻撃等のサイバー攻撃から分散型コンピューティングネットワーク100を保護できる。
一実施形態では、ゲートウェイ120は、プログラム可能なスロットルレベルをNとして、「Nインフライト(N-in-flight)」スロットルを使用して、メッセージのペースを制御し、信頼性を向上させることができる。例えば、アプリケーションが10個のメッセージのストリームをライタに送信しようとし、スロットルレベルNが1に設定されている場合、ゲートウェイ120は、第1のメッセージのみを続行させ、リーダからのイベントストリームを検討することによって第1のメッセージが順序付けられたことを確認できるまで待機してもよい。第1のメッセージが適切に処理された場合、ゲートウェイ120は、システム内の現在のメッセージフローに基づいて、残りの9つのメッセージを連続してライタに送信できる。一実施形態では、スループットを向上させるために、スロットルレベルNをより大きい数に設定してもよい。例えば、スロットルレベルNは、3に設定してもよい。この例では、ゲートウェイ120は、一度に3つのメッセージをアプリケーションストリームからライタに送信できる。
ライタ130.1〜130.Nは、ゲートウェイ120に接続してもよい。ライタ130.1〜130.Nは、アプリケーション110.1〜110.Mからの着信メッセージに応答して、イベントに関する発信メッセージを作成できる。ライタ130.1〜130.Nは、互いにグローバルに時間同期できる。したがって、ライタ130.1〜130.Nは、発信メッセージを順序付けることができる。ライタ130.1〜130.Nは、発信メッセージにタイムスタンプを付すことができ、また発信メッセージにデジタル署名を添付することもできる。デジタル署名は、公開鍵デジタル署名であってもよい。タイムスタンプは、グローバルに同期されたクロックに基づいて正確に同期してもよい。
ライタ130.1〜130.Nは、リーダ140.1〜140.Pに接続してもよい。各リーダ140.1〜140.Pは、1つ又は複数のライタ130.1〜130.Nを「リスン」することができる。したがって、各リーダ140.1〜140.Pは、複数のライタ130.1〜130.Nからメッセージを受信できる。各リーダ140.1〜140.Pは、セキュリティ保護目的のためにメッセージ上のデジタル署名を認証できる。そして、各リーダ140.1〜140.Pは、これらのメッセージ内のタイムスタンプに基づいて、異なるライタ130.1〜130.Nから受信したメッセージを配列して、時間的に正確なイベントストリームを作成できる。同じ組のライタに加入している任意の2つのリーダは、リーダ及び/又はライタの物理的な場所に関係なく、同じ順序のイベントストリームを生成できる。したがって、本発明の実施形態は、分散型コンピューティングの精度を向上させる。
更に、異なる役割(例えば、ライタとリーダ)を分離することにより、演算負荷がネットワーク全体に分散され、各ネットワークエンティティがより効率的に動作できるようになる。これにより、分散型コンピューティングネットワークの速度が向上し、スループットが向上する。例えば、リーダ140.1〜140.Pは、互いに通信したり、他の不要な動作を実行して、グローバルに一貫したイベントストリームの生成に時間をかける必要がなくなる。また、ライタは、リーダに送信するための順序付けられたメッセージを生成することに時間をかけるといった不要な動作から解放される。
図1Bは、本発明の一実施形態に基づく分散型コンピューティングネットワーク100のトランスポート層セクションを示すブロック図である。上述したように、ライタ130.1〜130.Nは、一方向でリーダ140.1〜140.Pと通信できる。また、分散型コンピューティングネットワーク100は、1つ又は複数の中継器150.1〜150.Qを含む中継器ブロック150を含むことができる。中継器ブロック150は、ライタ130.1〜130.Nからのサイドチャネルであってもよく、ネットワーク全体に分散させてもよい。
中継器150.1〜150.Qは、メモリストレージを含むことができ、ライタ130.1〜130.Nの発信メッセージを保存できる。中継器150.1〜150.Qは、様々な手法で編成できる。一実施形態では、中継器150.1〜150.Qは、メモリベースであってもよく、各中継器は、古い発信メッセージのウィンドウに対応してもよい。例えば、ある中継器が最新の100個の送信メッセージを保管し、別の中継器が次に古い100個の送信メッセージを保管してもよい。別の実施形態では、中継器150.1〜150.Qは、ファイルベースであってもよく、中継器150.1〜150.Qは、メッセージが関係するファイル及びアプリケーションに基づいて発信メッセージを保存してもよい。例えば、ある中継器がアプリケーションAの最新のメッセージを保存し、別の中継器がアプリケーションBとCの最新のメッセージを保存する等としてもよい。別の実施形態では、中継器は、メモリベースとファイルベースの組み合わせとして編成してもよい。
中継器150.1〜150.Qに保存されたデータは、構造化してもよく、半構造化してもよく、又は構造化しなくてもよい。中継器150.1〜150.Q内のデータ保存領域は、データを保存するためのファイルシステム及びデータベースを含むことができる。当分野で周知の手法により、中継器150.1〜150.Qに保存されたデータを管理し、データベース管理システムと通信できる。中継器150.1〜150.Qは、異なる構造を有し、異なる種類のデータを保存できる複数のデータ保存領域を含むことができる。
後に更に詳細に説明するように、リーダ140.1〜140.Pは、中継器150.1〜150.Qと通信して、欠落メッセージを要求できる。中継器150.1〜150.Qのうちの1つがその欠落メッセージを有している場合、適切な中継器が、そのメッセージを要求側のリーダに送信できる。一方、中継器150.1〜150.Qが欠落メッセージを有していない場合(中継器間で欠落メッセージをチェックした後)、適切な中継器が、再送信要求を発信元のライタに送信できる。これに応じて、発信元のライタは、欠落メッセージを再送信してもよい。この実施形態では、リーダ140.1〜140.Pは、直接(ゲートウェイを介さずに)メッセージを中継器150.1〜150.Pに送信するが、ライタ130.1〜130.Nには、送信しない。中継器150.1〜150.Pは、必要であれば、メッセージをライタ130.1〜130.Nに直接送信できる。
一実施形態では、中継器150.1〜150.Pは、階層的に配置してもよい。そして、ライタ130.1〜130.Nにメッセージを直接送信することを最上位階層の中継器のみに許可してもよい。
リーダとライタの役割を分離することにより、分散型コンピューティングネットワークが更に柔軟になり、ネットワークを動的に更新できる。ライタのメンバシップは、現在のライタによって制御してもよい。例えば、既存のライタがイベントストリームに他のライタを追加し又はこれを削除できるようにしてもよい。一実施形態では、あるライタが物理的に故障した場合、論理アドレスが同じであるが物理アドレスが異なる別のライタが、故障したライタの物理的地位を引き継いでもよい。別の例では、ライタを削除する場合、削除されようとしているライタは、そのリーダベースに「シーケンス終了(end of sequence)」メッセージを送信できる。この「シーケンス終了」メッセージは、このメッセージがそのライタによって送信された最後のメッセージになることをリーダベース(reader base)に示すことができる。これは、分散型コンピューティングネットワーク内のデバイスに冗長性を追加し、より高い柔軟性を提供するための他の手法である。また、リーダは、互いに通信する必要なく、ライタメンバシップリストを最新の状態に維持できる。これにより、分散型コンピューティングネットワークの速度が向上する。
上記のように、各ライタは、個々のイベントストリームを生成できる。一実施形態では、ライタからのメッセージ(すなわち、個々のイベントストリーム)は、リモートストレージユニット、例えば、クラウドストレージに保存できる。また、リーダのライタ加入リストの履歴を遠隔ストレージユニットに保存してもよい。したがって、リーダの過去の動作(すなわち、リーダが見たメッセージ)を再構築して再生できる。一実施形態では、遠隔ストレージユニットは、中継器ブロック構成要素に一体化してもよい。
本発明の一実施形態では、トピックによってメッセージを編成してもよく、トピックは、関連するタグ又は文字列によって指定してもよい。したがって、リーダは、異なるライタから受信したメッセージをトピックに基づいてフィルタリングできる。1つのトピックを1つ以上のライタの間で共有できる。トピックは、1つ以上のデータベースで維持してもよい。一実施形態では、トピックデータベースは、中央位置に配置してもよく、あるいは、トピックデータベースは、分散方式で提供してもよい。
新しいトピックが作成されると、対応するエントリがトピックデータベースに保存される。保存されたエントリは、そのトピックを定義する文字列、そのトピックの下でメッセージを発行するする最初のライタの識別情報、及び(そのライタに対する)そのメッセージのシーケンス番号を含むことができる。
一実施形態では、ライタが既に存在するトピックに参加することを望む場合、そのトピックに既に書き込んでいるライタによってこのことを告知してもよい。新しいライタは、この告知が行われるのを待って、そのトピックに関するメッセージを発行してもよく、これにより、そのトピックに加入している全てのリーダがタイムスタンプ付きの告知を消費し、今後そのタイムスタンプから新しいライタをフォローし始めることを確実に周知させることができる。これは、例えば、各トピックにソース告知トピックを関連付けることによってインスタンス化できる。トピックに既に関連付けられているライタは、新しいライタからの要求によって促されたとき、並びに他の状況下で、他のライタを追加する告知を行うことができる。ライタは、トピックから自らを削除することもでき、削除の告知によってこれを行うこともできる。自らを削除したライタは、(後にトピックに再度追加されない限り)そのトピックの下でメッセージを発行しなくなる。これらのメカニズムにより、いずれも一連のトピックに加入している2つのリーダが、これらのトピックで生成されたメッセージの正確な順序に同意することが保証される。
「トピック作成」ツールを使用して、新しいトピックが作成されたときにこれをリーダに知らせることができる。一実施形態では、リーダは、興味のあるトピックについての基準(例えば、文字列による表現)を維持できる。したがって、新たに作成されたトピックが告知されたとき、これをリーダの基準に基づいてチェックし、新しいトピックを消費するか否かを判断できる。
ここに説明する分散型コンピューティングネットワークは、様々な用途を有することができる。例えば、分散型コンピューティングネットワークは、グローバル決済システムに使用できる。ここに説明する本発明の実施形態は、オンラインゲーム、グローバルマッチングエンジン、軍事用途、決済機関、モノのインターネット、デジタル通貨、マイクロペイメント、様々なクラウドプラットフォーム上のアプリケーションの同期等と共に使用できる。
図2は、本発明の一実施形態に基づくライタ130を示している。ライタ130は、リードマシン(lead machine)220とキャッシュ230とを含むことができる。ライタ130は、ゲートウェイから着信メッセージを受信でき、これは、アプリケーションから発信される場合もある。リードマシーン220は、プロセッサ220.1及びクロック220.2を含むことができる。プロセッサ220.1は、着信メッセージのデジタル署名を認証できる。プロセッサ220.1は、後に更に詳細に説明するように、新しい発信メッセージを生成し、ライタ130のデジタル署名を発信メッセージに添付できる。クロック220.2は、ライタ130からの送信メッセージのタイムスタンプを作成するために使用される高精度クロックとして提供してもよい。クロック220.2は、他のライタのクロックとグローバルに同期させてもよい。一実施形態では、ライタのクロックは、ネットワークタイムプロトコル(Network Time Protocol:NTP)を使用して同期させることができる。
キャッシュ230は、メモリストレージを含むことができ、ライタ130の発信メッセージを保存できる。中継器がメッセージの再送信を要求する(稀な)状況では、キャッシュ230がその要求を処理し、要求されたメッセージを再送信できる。
ライタ130は、発信メッセージをリーダ/中継器に送信できる。一実施形態では、発信メッセージをブロードキャストしてもよく、任意の受信機が発信メッセージを受信できるようにしてもよい。別の実施形態では、発信メッセージは、特に1つ以上のリーダを対象とでき、対象となるリーダのみが(中継器に加えて)これらのメッセージを受信できるようにしてもよい。また、ライタ130は、ライタの「ハートビート(heartbeat)」をリーダに定期的に送信してもよい。リーダは、シーケンス番号とともに、このハートビートを使用して、ライタとの通信が続いていること、及びそのライタからのメッセージが誤って欠落していないことを確認してもよい。例えば、リスニングしているリーダが指定されたライタからメッセージを受信しないが、同じ時間内にそのライタのハートビートを受信した場合、そのリーダは、そのライタには、その時間内に送信するメッセージがないと見なす。
図3は、本発明の実施形態に基づく、ライタからメッセージを生成し送信する動作のフローチャートである。一実施形態では、図3の方法は、図1及び図2のライタ130によって実行してもよく、他のデバイスによって実行してもよい。ステップ310において、ライタ130は、接続されているゲートウェイ120からメッセージを受信できる。
ステップ320において、ライタ130は、デジタル署名を認証して、着信メッセージの送信者を検証できる。ステップ330において、ライタ130は、新しい発信メッセージを生成できる。着信メッセージは、ゲートウェイを介してアプリケーションからライタにマルチキャストされている可能性がある。着信メッセージは、順序付けられていない可能性がある。ステップ340において、ライタ130は、そのライタIDをメッセージに添付できる。ライタIDは、各ライタに固有のIDであってもよい。ステップ340において、ライタ130は、シーケンス番号をメッセージに添付できる。シーケンス番号は、各メッセージの後にインクリメントされて単調に増加する数であってもよい。ステップ360において、ライタ130は、メッセージにタイムスタンプを付すことができる。メッセージには、高精度のグローバルクロックによってタイムスタンプを付してもよい。分散型コンピューティングネットワーク内の全てのライタは、同じタイプの高精度グローバルクロックを使用し、これにより、一貫したイベント順序付けを保証してもよい。
ステップ370において、ライタ130は、メッセージのための固有のデジタル署名を生成し、そのデジタル署名をメッセージに添付できる。ライタのデジタル署名は、メッセージの内容(アプリケーションからの受信メッセージ本文又は受信メッセージのゲートウェイ署名、あるいは、その両方)、ライタID、シーケンス番号、及びタイムスタンプのうちの1つ以上に基づいていてもよい。デジタル署名は、各メッセージに対して一意であってもよく、発信メッセージの受信者は、これを用いて、発信メッセージの信頼性を検証してもよい。
ステップ380において、メッセージは、ライタ130のローカルキャッシュに保存してもよい。ステップ390において、ライタは、発信メッセージを1つ以上のリーダ(及び(1つ又は複数の)中継器)に送信できる。ライタは、発信メッセージをブロードキャストしてもよく、又は1つ以上のリーダに発信メッセージを直接送信してもよい。
図4Aは、本発明の実施形態に基づくメッセージ受信のフローチャートを示している。一実施形態では、図4Aの処理は、図1のリーダ140.1〜140.Pのうちの1つによって実行してもよく、別のデバイスによって実行してもよい。ステップ405において、リーダは、リスンしようとするライタのリストを設定してもよい。リスト上のライタは、分散型コンピューティングネットワーク内の異なる場所に亘って分散させることができる。ステップ410において、リーダは、そのリスト上のライタからメッセージを受信できる。更に、リーダは、そのリスト上のライタからのハートビートを受信してもよい。
各受信メッセージについて、リーダは、以下のステップを実行できる。ステップ415において、リーダは、受信したメッセージ上のデジタル署名を認証して、メッセージが実際に指定されたライタから発信されたものであることを検証できる。ステップ420において、リーダは、同じ発信ライタから最後に受信されたメッセージに基づいて、メッセージに添付されたシーケンス番号をチェックして、シーケンス番号が正しいか否かを判定する。シーケンス番号が正しい(すなわち、同じライタからの最後のメッセージのシーケンス番号の後の次のシーケンス番号である)場合、リーダは、ステップ425において、このメッセージを発信ライタのキューに割り当てることができる。リーダは、そのリストにおいて、ライタ毎に1つの複数のキューを含むことができる。シーケンス番号が正しくない(すなわち、同じライタからの最後のメッセージのシーケンス番号の後の次のシーケンス番号ではない)場合、リーダは、抜けているシーケンス番号に対応するメッセージを見逃したと推測できる。したがって、ステップ430において、リーダは、見逃したメッセージに対する要求を適切な中継器に送信できる。中継器は、メッセージを適切なリーダに直接送信できる。再送信要求に応答して中継器が行う動作は、上述の通りである。
図4Bは、本発明の実施形態に従ってイベントストリームを生成するフローチャートを示している。一実施形態では、図4Bの処理は、図1のリーダ140.1〜140.Pのうちの1つによって実行してもよく、他のデバイスによって実行してもよい。ステップ435において、リーダは、各ライタキューが少なくとも1つのメッセージ(ハートビートを含む)を有するか否かをチェックしてもよい。チェックの結果がイエスである場合、ステップ450において、リーダは、キューから(ハートビートを含まない)最も古い未コミット(yet-to-be committed)メッセージを識別できる。ステップ460において、リーダは、識別された最も古い未コミットメッセージをイベントストリームに発行できる。次に、方法は、ステップ435に戻る。
一方、ステップ435において、全てのライタキューが少なくとも1つのメッセージ(ハートビートを含む)を有していない場合、リーダは、ステップ440において、それぞれのキューにおいて、メッセージがないライタから「ストリーム終了」メッセージが受信されているかをチェックしてもよい。「ストリーム終了」メッセージを受信していない場合、方法は、ステップ435に戻り、そのライタからのコンテンツメッセージ、ハートビート、又は「ストリーム終了」メッセージのいずれかが受信されるのを待機してもよい。「ストリーム終了」メッセージを受信した場合、リーダは、ステップ445において、そのライタをそのリストから削除し、ステップ435に戻る。
図5は、本発明の一実施形態に基づき、メッセージを受信し、これらを正しい時系列順に再配列するリーダ動作の一例を示している。この例では、2つのリーダ520、550が同じ5つのライタ(A〜E)に加入できる。しかしながら、2つのリーダは、例えばリーダが異なる場所にあるために、異なる順序でライタからメッセージを受信することがある。リーダに近いライタからのメッセージは、リーダから離れたライタからのメッセージよりも速く受信されることがある。この例では、リーダ520は、1)ライタAからのメッセージ、2)ライタBからのメッセージ、3)ライタCからのメッセージ、4)ライタDからのメッセージ、及び5)ライタEからのメッセージの受信順序510でメッセージを受信する。一方、リーダ550は、1)ライタBからのメッセージ、2)ライタCからのメッセージ、3)ライタAからのメッセージ、4)ライタEからのメッセージ、及び5)ライタDからのメッセージの受信順序540でメッセージを受信する。ここで、リーダ520、550は、受信メッセージがいつ作成されたかを示すタイムスタンプをチェックした後、最も早いタイムスタンプ付きメッセージが最初になり、最も遅いタイムスタンプ付きメッセージが最後になるようにメッセージを再配列することができる。両方のリーダ520、550は、イベントストリーム530に対して、1)ライタCからのメッセージ、2)ライタEからのメッセージ、3)ライタAからのメッセージ、4)ライタDからのメッセージ、及び5)ライタBからのメッセージの同じ順序でメッセージを再配列できる。したがって、同じライタに加入している任意の2つのリーダが同じイベントストリームを生成できる。
一実施形態では、ネットワークエンティティ間でメッセージを送信するために暗号化を使用してもよい。暗号化は、ここに説明するデジタル署名の使用によって提供される認証とは別個に行ってもよく、これを補うものであってもよい。一実施形態では、幾つかのネットワークエンティティは、その機能を実行するために暗号化キーを有する必要はない。例えば、リーダは、イベントストリームのために暗号化された形式でメッセージを受信し、配列できる。リーダにとっては、メッセージが暗号化されているか否かは、問題ではない。イベントストリームのメッセージ内の情報を表示するために、アプリケーションは、メッセージを復号するための暗号化キーを要求してもよい。これにより、分散型コンピューティングネットワークに追加のセキュリティ層が提供される。
一実施形態では、「チェックポイント」を使用できる。チェックポイントにより、リーダは、イベントシーケンスの先頭から開始するのではなく、特定のチェックポイントからイベントストリームの再構築を開始できる。これにより、イベントストリームを速やかに再構成でき、したがって分散型コンピューティングネットワークにおける回復の速度が向上する。
上述の技術により、クロックドリフト(clock drift)の悪影響から分散型コンピューティングネットワークを保護できる。クロックドリフトによる誤差があっても、全てのリーダが各メッセージで同じタイムスタンプを確認するという事実に変わりはなく、したがって、クロックドリフトによってメッセージの順序に矛盾が生じることはない。これにより、分散型コンピューティングネットワークの精度が向上する。
なお、包括的に言えば、本明細書に説明する構成要素は、コンピュータ又は複数のコンピュータであってもよく、又はこれらを含むことができる。これらの構成要素は、コンピュータによって実行されるプログラムモジュール等のコンピュータ実行可能命令の一般的な文脈で説明できる。プログラムモジュールは、一般的に、特定のタスクを実行し、又は特定の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。
携帯電話又はPDA等のハンドヘルドワイヤレスデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ等を含む様々なコンピュータシステム構成を用いて本発明を実現できることは、当業者にとって明らかである。上述のように、本発明は、通信ネットワークを介してリンクされているリモート処理デバイスによってタスクが実行される分散型コンピューティング環境で実現できる。分散型コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルとリモートの両方のコンピュータストレージ媒体に配置できる。
コンピュータは、通常、様々なコンピュータ可読媒体を含み、コンピュータ可読媒体は、システムメモリの一部を構成し、処理デバイスによって読み取ることができる。限定ではなく例として、コンピュータ可読媒体は、コンピュータストレージ媒体及び通信媒体を含むことができる。システムメモリは、読取専用メモリ(read only memory:ROM)及びランダムアクセスメモリ(random access memory:RAM)等の揮発性及び/又は不揮発性メモリの形態のコンピュータストレージ媒体を含むことができる。起動時等に要素間で情報を転送するための基本ルーチンを含む基本入出力システム(basic input/output system:BIOS)は、通常、ROMに保存される。RAMは、通常、処理デバイスに直ちにアクセス可能であり、及び/又は処理デバイスによって操作されているデータ及び/又はプログラムモジュールを含む。データ又はプログラムモジュールは、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、及びプログラムデータを含むことができる。オペレーティングシステムは、マイクロソフトウィンドウズ(Microsoft Windows:商標)オペレーティングシステム、Unix(商標)オペレーティングシステム、Linux(商標)オペレーティングシステム、Xenixオペレーティングシステム、IBM AIX(商標)オペレーティングシステム、ヒューレット(Hewlett Packard)UX(商標)オペレーティングシステム、ノベルネットウェア(Novell Netware:商標)オペレーティングシステム、サンマイクロシステムズ(Sun Microsystems)ソラリス(Solaris:商標)オペレーティングシステムOS/2(商標)オペレーティングシステム、BeOS(商標)オペレーティングシステム、マッキントッシュ(Macintosh:商標)オペレーティングシステムアパッチ(Apache:商標)オペレーティングシステム、オープンステップ(OpenStep:商標)オペレーティングシステム、又はその他のプラットフォームのオペレーティングシステム等の様々なオペレーティングシステムであってもよく、又はこれらを含むことができる。
メモリは、少なくとも、恒久的又は一時的に保存される少なくとも一組の命令を含む。プロセッサは、保存されている命令を実行してデータを処理する。一連の命令は、添付のフローチャートに示されているもの等、特定の1つ又は複数のタスクを実行する様々な命令を含むことができる。このような特定のタスクを実行するための一連の命令は、プログラム、ソフトウェアプログラム、ソフトウェア、エンジン、モジュール、コンポーネント、メカニズム、又はツールとして特徴付けることができる。コンピュータは、上述のようにメモリに保存され、ここに説明したようにプロセッサ上で実行される複数のソフトウェア処理モジュールを含むことができる。プログラムモジュールは、適切な如何なるプログラミング言語の形式であってもよく、これを機械語又はオブジェクトコードに変換することにより、プロセッサ又は複数のプロセッサは、命令を読み取ることができる。すなわち、特定のプログラミング言語で書かれたプログラミングコード又はソースコードの行は、コンパイラ、アセンブラ、又はインタプリタを使用して機械語に変換できる。機械語は、特定のコンピュータに固有のバイナリコードの機械語命令であってもよい。
本発明の様々な実施形態では、任意の適切なプログラミング言語を使用できる。使用されるプログラミング言語は、例として、アセンブリ言語、Ada、APL、Basic、C、C++、COBOL、dBase、Forth、FORTRAN、Java(登録商標)、Modula−2、Pascal、Prolog、REXX、及び/又はJavaScript(登録商標)を含むことができる。更に、本発明のシステム及び方法の動作について、単一タイプの命令又はプログラミング言語を使用する必要はない。すなわち、必要に応じて又は要求に応じて、任意の数の異なるプログラミング言語を使用できる。
更に、本発明を実施するために使用される命令及び/又はデータは、必要に応じて、任意の圧縮又は暗号化技術又はアルゴリズムを利用できる。データを暗号化するために暗号化モジュールを使用してもよい。更に、ファイル又は他のデータは、適切な復号モジュールを使用して復号してもよい。
また、コンピューティング環境は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータストレージ媒体を含むことができる。例えば、ハードディスクドライブは、取り外し不能な不揮発性磁気媒体に/から情報を書き込む/読み出すことができる。磁気ディスクドライブは、取り外し可能な不揮発性磁気ディスクに/から情報を書き込む/読み出すことができ、光ディスクドライブは、CD-ROM又は他の光媒体等の取り外し可能な不揮発性光ディスクに/から情報を書き込む/読み出すことができる。例示的な動作環境で使用できる他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータストレージ媒体には、以下に限定されるものではないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM等が含まれる。ストレージ媒体は、通常、取り外し可能又は取り外し不可能なメモリインタフェースを介してシステムバスに接続される。
コマンド及び命令を実行する処理ユニットは、汎用コンピュータであってもよいが、特殊用途コンピュータ、マイクロコンピュータ、ミニコンピュータ、メインフレームコンピュータ、プログラムされたマイクロプロセッサ、マイクロコントローラ、周辺集積回路素子、顧客特定集積回路(Customer Specific Integrated Circuit:CSIC)、特定用途集積回路(Application Specific Integrated Circuit:ASIC)、論理回路、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)、プログラマブルロジックデバイス(Programmable Logic Device:PLD)、プログラマブルロジックアレイ(Programmable Logic Array:PLA)等のプログラマブルロジックデバイス、RFIDプロセッサ、スマートチップ、又は本発明のプロセスのステップを実施できる他の任意のデバイス若しくはデバイスの配置を含む他の任意の様々な技術を利用してもよい。
なお、コンピュータシステムのプロセッサ及び/又はメモリは、物理的に同じ場所にある必要はない。コンピュータシステムによって使用される各プロセッサ及び各メモリは、地理的に異なる場所にあってもよく、任意の適切な手法で互いに通信するように接続してもよい。更に、プロセッサ及び/又はメモリのそれぞれは、物理的に異なる機器から構成してもよい。
ユーザは、キーボード、及び例えば、マウス、トラックボール又はタッチパッドと呼ばれるポインティングデバイス等の入力デバイスを含むユーザインタフェースを介してコンピュータにコマンド及び情報を入力できる。他の入力デバイスは、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、音声認識デバイス、キーボード、タッチスクリーン、トグルスイッチ、押しボタン等を含むことができる。これらの及びこの他の入力デバイスは、システムバスに接続されているユーザ入力インタフェースを介して処理デバイスに接続されることが多いが、パラレルポート、ゲームポート又はユニバーサルシリアルバス(universal serial bus:USB)等の他のインタフェース及びバス構造によって接続してもよい。
インタフェースを介してシステムバスに1つ又は複数のモニタ又は表示デバイスを接続してもよい。表示デバイスに加えて、コンピュータは、他の周辺出力デバイスも含むことができ、これらは、出力用周辺機器インタフェースを介して接続できる。本発明を実施するコンピュータは、1つ又は複数のリモートコンピュータへの論理接続を使用してネットワーク環境で動作でき、リモートコンピュータは、通常、上記の要素の多く又は全てを含む。
本発明の実施形態では、有線又は無線ローカルエリアネットワーク(local area network:LAN)及びワイドエリアネットワーク(wide area network:WAN)、無線パーソナルエリアネットワーク(wireless personal area network:PAN)、及び他の種類のネットワークを含む様々なネットワークを用いることができる。LANネットワーキング環境で使用される場合、コンピュータは、ネットワークインタフェース又はアダプタを介してLANに接続してもよい。WANネットワーキング環境で使用される場合、コンピュータは、通常、モデム又は他の通信機構を含む。モデムは、内蔵でも外付けでもよく、ユーザ入力インタフェース又は他の適切な機構を介してシステムバスに接続できる。コンピュータは、インターネット、イントラネット、エクストラネット、イーサネット(商標)、又は通信を提供する他の任意のシステムを介して接続できる。幾つかの適切な通信プロトコルは、例えば、TCP/IP、UDP、又はOSIを含むことができる。無線通信の場合、通信プロトコルは、ブルートゥース(登録商標)、ジグビー(Zigbee)、IrDa又は他の適切なプロトコルを含むことができる。更に、システムの構成要素は、有線経路又は無線経路の組み合わせを介して通信できる。
なお、コンピュータの他の多くの内部構成要素を図示していないが、このような構成要素及び相互接続は、当業者にとって周知である。したがって、本発明について、コンピュータの内部構造に関する更なる詳細を開示する必要はない。
また、ここに開示する発明が広範囲に亘る産業に適用できることも当業者にとって明らかである。ここに開示した発明の様々な実施形態及び特徴は、任意に組み合わせて使用してもよく、これらの実施形態及び特徴の組み合わせも本発明の範囲に含まれる。前述の説明は、多くの詳細事項及び特定事項を含むが、これらは、説明のみを目的としており、本発明を限定するものと解釈されない。本発明の思想及び範囲から逸脱することなく、上述の実施形態を変更できることは、当業者にとって明らかである。したがって、そのような変更は、特許請求の範囲及びこれらの法的な均等物に含まれ、本発明の範囲内にあるとみなされる。
以上の説明から、本発明は、システム及び方法に固有であり自明である他の利点と共に、上述した全ての目的及び目標を達成するために適合されたものであることがわかる。特定の特徴及び副次的組み合わせを用いてもよく、これは、他の特徴及び副次的組み合わせにかかわらず採用できる。これも特許請求の範囲に含まれる。

Claims (25)

  1. それぞれがメッセージを生成し、前記メッセージにタイムスタンプを添付する複数のライタと、
    前記複数のライタから分離された複数のリーダであって、少なくとも1つのリーダが、前記複数のライタのうちの少なくとも2つのライタに加入し、少なくとも1つのリーダが、前記加入している少なくとも2つのライタからメッセージを受信し、前記メッセージに添付されたタイムスタンプに基づいて、前記少なくとも2つのライタからのメッセージを時系列順に配列してイベントストリームを生成する複数のリーダと、
    を備える分散型コンピューティングシステム。
  2. 請求項1において、
    前記複数のライタのうちの少なくとも1つのライタと、前記複数のリーダのうちの少なくとも1つのリーダとにエンドユーザアプリケーションを通信可能に接続するゲートウェイを更に備えるシステム。
  3. 請求項2において、
    前記エンドユーザアプリケーションは、前記少なくとも1つのライタにメッセージを送信するシステム。
  4. 請求項1において、
    各ライタは、前記メッセージに一意のデジタル署名を添付するシステム。
  5. 請求項4において、
    前記デジタル署名は、タイムスタンプ、メッセージの内容、ライタID、及びシーケンス番号の1つ以上に基づいているシステム。
  6. 請求項1において、
    前記少なくとも2つのライタからの以前に送信されたメッセージを保存するための1つ又は複数の中継器を更に備えるシステム。
  7. 請求項6において、
    前記中継器は、前記少なくとも1つのリーダからの再送信の要求に応答して、保存されたメッセージを読み出し、送信するシステム。
  8. 請求項1において、
    前記複数のライタのうちの1つのライタは、前記複数のライタに新しいライタを追加する能力を有するシステム。
  9. 請求項1において、
    前記複数のライタのうちの1つのライタは、前記複数のライタのうちの別のライタを削除する能力を有するシステム。
  10. 請求項1において、
    前記複数のライタは、ハートビートを周期的に送信するシステム。
  11. 請求項1において、
    異なるライタによる少なくとも2つのメッセージがトピック毎に編成されるシステム。
  12. クロック信号を生成するクロックと、
    ゲートウェイからの着信メッセージに基づいて発信メッセージを生成し、前記クロック信号に基づいて前記発信メッセージにタイムスタンプを添付し、前記発信メッセージを1つ又は複数のリーダデバイスに送信するプロセッサと、
    を備えるライタデバイス。
  13. 請求項12において、
    以前に送信されたメッセージを保存するためのキャッシュを更に備えるライタデバイス。
  14. 請求項13において、
    前記キャッシュは、前記保存されたメッセージの要求時に応じた再送信のために前記保存されたメッセージを取り出すライタデバイス。
  15. 請求項12において、
    前記プロセッサは、前記発信メッセージにデジタル署名を添付するライタデバイス。
  16. 請求項15において、
    前記デジタル署名は、タイムスタンプ、メッセージの内容、ライタID、及びシーケンス番号の1つ以上に基づいているライタデバイス。
  17. 請求項12において、
    前記プロセッサは、定期的にハートビートを送信するライタデバイス。
  18. 請求項12において、
    前記クロックは、分散型コンピューティングネットワーク内の他のライタの他のクロックと同期するライタデバイス。
  19. 請求項12において、
    前記ライタデバイスは、前記発信メッセージを1つ以上のリーダデバイスに直接送信するライタデバイス。
  20. 請求項12において、
    前記ライタデバイスは、前記ライタデバイスが廃止される前に「シーケンス終了」メッセージを送信するライタデバイス。
  21. イベントストリームを作成する方法において、
    複数のライタからメッセージを受信することと、
    前記メッセージに含まれるタイムスタンプに基づいて前記メッセージを時系列順に配列することと、
    前記配列されたメッセージをイベントストリームとして送信することと、
    を含む方法。
  22. 請求項21において、
    前記メッセージに含まれるデジタル署名に基づいてメッセージを認証することを更に含む方法。
  23. 請求項21において、
    前記イベントストリームは、ゲートウェイに送信され、前記ゲートウェイは、前記イベントストリームをエンドユーザアプリケーションに転送する方法。
  24. 請求項21において、
    ライタのセットを確立することと、
    前記ライタのセットの各ライタから定期的なハートビートを受信することと、
    を更に含む方法。
  25. 請求項21において、
    異なるライタによる少なくとも2つのメッセージをトピック毎に編成することを更に含む方法。
JP2019512214A 2016-09-02 2017-08-29 時間的に正確なイベントストリームの作成のためのシステム及び方法 Active JP7200455B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662382911P 2016-09-02 2016-09-02
US62/382,911 2016-09-02
PCT/US2017/049000 WO2018044828A1 (en) 2016-09-02 2017-08-29 System and method for creating time-accurate events streams

Publications (3)

Publication Number Publication Date
JP2020500345A true JP2020500345A (ja) 2020-01-09
JP2020500345A5 JP2020500345A5 (ja) 2020-10-08
JP7200455B2 JP7200455B2 (ja) 2023-01-10

Family

ID=61281627

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019512214A Active JP7200455B2 (ja) 2016-09-02 2017-08-29 時間的に正確なイベントストリームの作成のためのシステム及び方法

Country Status (7)

Country Link
US (2) US10678694B2 (ja)
JP (1) JP7200455B2 (ja)
KR (1) KR102306496B1 (ja)
CN (1) CN109716317B (ja)
CA (1) CA3035404C (ja)
TW (2) TWI808891B (ja)
WO (2) WO2018044334A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018044334A1 (en) * 2016-09-02 2018-03-08 Iex Group. Inc. System and method for creating time-accurate event streams
US9996664B2 (en) 2016-10-07 2018-06-12 Redox, Inc. Systems and methods for translating messages between a healthcare entity and a vendor entity
US20200034929A1 (en) * 2018-07-26 2020-01-30 Nasdaq, Inc. In-Order Processing of Transactions
US10937553B2 (en) 2018-11-13 2021-03-02 Redox, Inc. Systems and methods to organize the flow and processing of queued messages that have been received from healthcare entities
US11055313B2 (en) 2018-12-05 2021-07-06 Ebay Inc. Free world replication protocol for key-value store
US11126482B1 (en) * 2020-03-20 2021-09-21 Microsoft Technology Licensing, Llc Remote logging via telemetry
CN111913807B (zh) * 2020-08-13 2024-02-06 支付宝(杭州)信息技术有限公司 一种基于多个存储区域的事件处理方法、系统及装置
WO2022150185A1 (en) 2021-01-11 2022-07-14 Iex Group, Inc. Schema and application code management using an event stream
US20220222132A1 (en) * 2021-01-11 2022-07-14 Iex Group, Inc. Application code management using an event stream
FR3120715B1 (fr) * 2021-03-09 2024-04-05 Commissariat Energie Atomique Méthode de vérification de l’habilitation d’un terminal a contrôler un attribut d’identité d’un utilisateur
US11983772B2 (en) 2021-10-15 2024-05-14 Iex Group, Inc. Communication techniques for a distributed computing system
US11431823B1 (en) * 2021-11-19 2022-08-30 Stripe, Inc. Systems and methods for context-aware event ordering protocol for distributed service systems

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09244984A (ja) * 1996-03-08 1997-09-19 Nippon Telegr & Teleph Corp <Ntt> イベント順序補正方法
JP2006134344A (ja) * 2005-11-21 2006-05-25 Hitachi Ltd 電子計算機間のジョブ転送方法およびジョブ転送システム
JP2008134947A (ja) * 2006-11-29 2008-06-12 National Institute Of Information & Communication Technology ネットワーク時空情報配信システム,ネットワーク時空情報配信装置,時空情報を受信する端末装置,およびネットワーク時空情報配信方法
JP2008134726A (ja) * 2006-11-27 2008-06-12 Toshiba Corp トレーサビリティ情報記録装置、トレーサビリティ情報記録方法及びプログラム
JP2008257381A (ja) * 2007-04-03 2008-10-23 Sony Corp 情報解析システム、情報解析装置、情報解析方法および情報解析プログラム、ならびに、記録媒体
US20150341422A1 (en) * 2014-05-21 2015-11-26 Omx Technology Ab Efficient and reliable host distribution of totally ordered global state
JP2016025653A (ja) * 2014-07-25 2016-02-08 三菱電機株式会社 通信システムおよび通信システムの通信方法
US9319365B1 (en) * 2015-10-09 2016-04-19 Machine Zone, Inc. Systems and methods for storing and transferring message data

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4736294A (en) 1985-01-11 1988-04-05 The Royal Bank Of Canada Data processing methods and apparatus for managing vehicle financing
US5887167A (en) * 1995-11-03 1999-03-23 Apple Computer, Inc. Synchronization mechanism for providing multiple readers and writers access to performance information of an extensible computer system
WO1998003910A1 (en) * 1996-07-24 1998-01-29 Hewlett-Packard Company Ordered message reception in a distributed data processing system
US7162510B2 (en) 1998-03-16 2007-01-09 Schneider Automation Inc. Communication system for a control system over Ethernet and IP networks
JP2003526833A (ja) 1999-02-26 2003-09-09 レヴェオ・インコーポレーテッド グローバル時間同期システム、装置および方法
US8112303B2 (en) * 2001-02-28 2012-02-07 Digonex Technologies, Inc. Digital online exchange for pricing items to exhaust inventory by an expiration time
US7882253B2 (en) * 2001-04-05 2011-02-01 Real-Time Innovations, Inc. Real-time publish-subscribe system
US7162524B2 (en) 2002-06-21 2007-01-09 International Business Machines Corporation Gapless delivery and durable subscriptions in a content-based publish/subscribe system
US7621447B1 (en) * 2003-01-31 2009-11-24 Massachusetts Institute Of Technology Method and apparatus for routing data in an automatic identification system
GB2411492B (en) 2004-02-25 2006-06-07 Patsystems Electronic trading system
US8014296B1 (en) * 2004-03-31 2011-09-06 Cisco Technology, Inc. Method and apparatus for enabling LCAS-like feature through embedded software
US7680838B1 (en) * 2004-11-12 2010-03-16 Intuit Inc. Maintaining data synchronization in a file-sharing environment
WO2006073979A2 (en) * 2005-01-06 2006-07-13 Tervela, Inc. End-to-end publish/subscribe middleware architecture
US7487216B2 (en) * 2005-01-18 2009-02-03 International Business Machines Corporation System and method for managing display of a multiple message electronic mail thread
US20070240166A1 (en) 2006-04-05 2007-10-11 Kumar Marappan System and method of providing inter-application communications
US10845399B2 (en) * 2007-04-03 2020-11-24 Electro Industries/Gaugetech System and method for performing data transfers in an intelligent electronic device
CA2746384A1 (en) 2008-12-29 2010-07-08 Openmatch Llc Trading system
US8655842B2 (en) * 2009-08-17 2014-02-18 Yahoo! Inc. Push pull caching for social network information
CA2681251A1 (en) 2009-09-30 2011-03-30 Royal Bank Of Canada System and method for monitoring securities compliance for related entities
US9940670B2 (en) 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US9959572B2 (en) 2009-12-10 2018-05-01 Royal Bank Of Canada Coordinated processing of data by networked computing resources
CA3109739A1 (en) 2009-12-10 2011-01-11 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US9979589B2 (en) 2009-12-10 2018-05-22 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US10057333B2 (en) 2009-12-10 2018-08-21 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US8356007B2 (en) * 2010-10-20 2013-01-15 Microsoft Corporation Distributed transaction management for database systems with multiversioning
US8392473B2 (en) * 2010-09-07 2013-03-05 Microgen Aptitude Limited Fast hierarchical enrichment
EP2656293B1 (en) 2010-12-22 2019-10-09 HyannisPort Research, Inc. Data capture and real time risk controls for electronic markets
KR101229162B1 (ko) 2011-02-14 2013-02-01 주식회사 케이티 온라인 게임 제어 방법 및 시스템
US8531983B2 (en) 2011-02-28 2013-09-10 Tellabs Operations, Inc. System and method for identifying a length of an installed fiber cable
US20140019323A1 (en) 2011-05-19 2014-01-16 Royal Bank Of Canada Processing of electronically traded fixed-income security based funds
US9654896B2 (en) * 2011-09-22 2017-05-16 International Business Machines Corporation Smart online services presence in a cellular network
JP5856684B2 (ja) * 2011-10-31 2016-02-10 フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン イベントを順序付けるための装置および方法
US10127612B2 (en) 2012-05-03 2018-11-13 Tamer Trading Technologies Llc System, method, and computer-readable medium for improving the efficiency and stability of financial markets
US20160019536A1 (en) 2012-10-17 2016-01-21 Royal Bank Of Canada Secure processing of data
US11080701B2 (en) 2015-07-02 2021-08-03 Royal Bank Of Canada Secure processing of electronic payments
US11210648B2 (en) 2012-10-17 2021-12-28 Royal Bank Of Canada Systems, methods, and devices for secure generation and processing of data sets representing pre-funded payments
CA3126471A1 (en) 2012-10-17 2014-04-17 Royal Bank Of Canada Virtualization and secure processing of data
CA2844318A1 (en) 2013-03-01 2014-09-01 Royal Bank Of Canada Guarantor mortgages
US9553831B2 (en) 2013-04-11 2017-01-24 Cisco Technology, Inc. Adaptive publish/subscribe system
CA3012609A1 (en) 2013-06-24 2014-12-31 Aequitas Innovations Inc. System and method for automated trading of financial interests
US10362145B2 (en) * 2013-07-05 2019-07-23 The Boeing Company Server system for providing current data and past data to clients
US9654408B2 (en) * 2013-11-06 2017-05-16 Amazon Technologies, Inc. Strict queue ordering in a distributed system
EP2945074A1 (en) * 2014-05-13 2015-11-18 Thomson Licensing Method and apparatus for sequencing metadata events
US20150333930A1 (en) * 2014-05-15 2015-11-19 Akamai Technologies, Inc. Dynamic service function chaining
AU2015327722A1 (en) 2014-09-29 2017-04-20 Royal Bank Of Canada Secure processing of data
CN107004190A (zh) 2014-10-10 2017-08-01 加拿大皇家银行 用于处理电子交易的系统
CN104539512B (zh) * 2014-12-05 2018-11-23 百度在线网络技术(北京)有限公司 一种分布式系统中用于消息传送的方法与装置
CA2913700A1 (en) 2014-12-09 2016-06-09 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US11165714B2 (en) 2014-12-15 2021-11-02 Royal Bank Of Canada Verification of data processes in a network of computing resources
ES2957843T3 (es) 2014-12-15 2024-01-26 Royal Bank Of Canada Verificación de procesos de datos en una red de recursos informáticos
US10546335B2 (en) 2014-12-24 2020-01-28 Royal Bank Of Canada Systems and methods for presenting vehicular transaction information in a data communication network
CN113379401B (zh) 2015-01-19 2024-05-14 加拿大皇家银行 电子支付的安全处理
BR112017018133B1 (pt) 2015-02-27 2022-11-08 Royal Bank Of Canada Sistemas e métodos para coordenar o processamento de dados por múltiplos recursos de computação em rede, e meio legível por computador
WO2016141491A1 (en) 2015-03-10 2016-09-15 Royal Bank Of Canada Systems and methods for managing data
WO2016149807A1 (en) 2015-03-20 2016-09-29 Royal Bank Of Canada System and methods for message redundancy
KR102619230B1 (ko) 2015-07-02 2023-12-28 로얄 뱅크 오브 캐나다 전자 지불의 보안 처리
US11599879B2 (en) 2015-07-02 2023-03-07 Royal Bank Of Canada Processing of electronic transactions
US9973306B2 (en) * 2015-09-14 2018-05-15 Amazon Technologies, Inc. Freshness-sensitive message delivery
US9922436B2 (en) 2015-10-01 2018-03-20 Royal Bank Of Canada System and method for presenting dynamic visualizations
US11461359B2 (en) 2015-10-01 2022-10-04 Royal Bank Of Canada System and method for duplicating an application state
US20170124494A1 (en) 2015-10-29 2017-05-04 Royal Bank Of Canada Systems, methods and devices for modelling operational risk
CA2910754C (en) 2015-10-29 2023-08-22 Royal Bank Of Canada Systems, methods and devices for modelling operational risk
CN105392068B (zh) * 2015-11-04 2019-01-01 合一网络技术(北京)有限公司 分布式多传输信道网络直播视频并行分发方法及系统
CA2952874A1 (en) 2015-12-23 2017-06-23 Royal Bank Of Canada System and method for dynamic monitoring of credit parameters
CA3014392C (en) 2016-02-12 2024-04-16 Royal Bank Of Canada Methods and systems for digital reward processing
US11176550B2 (en) 2016-02-22 2021-11-16 Royal Bank Of Canada Electronic document platform
CN109313762B (zh) 2016-03-08 2023-07-14 加拿大皇家银行 用于表征预存资金支付的数据集的安全生成和处理的系统、方法和设备
CA2970686A1 (en) 2016-06-14 2017-12-14 Royal Bank Of Canada Verification of data processes in a network of computing resources
WO2018010009A1 (en) 2016-07-13 2018-01-18 Royal Bank Of Canada Processing of electronic transactions
WO2018014123A1 (en) 2016-07-18 2018-01-25 Royal Bank Of Canada Distributed ledger platform for vehicle records
CA2976505A1 (en) 2016-08-15 2018-02-15 Royal Bank Of Canada System and method for predictive digital profiles
CA2976618A1 (en) 2016-08-16 2018-02-16 Royal Bank Of Canada System for network incident management
WO2018044334A1 (en) * 2016-09-02 2018-03-08 Iex Group. Inc. System and method for creating time-accurate event streams
US20180075527A1 (en) 2016-09-14 2018-03-15 Royal Bank Of Canada Credit score platform
US10032450B2 (en) 2016-09-22 2018-07-24 Royal Bank Of Canada System and method for electronic communications

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09244984A (ja) * 1996-03-08 1997-09-19 Nippon Telegr & Teleph Corp <Ntt> イベント順序補正方法
JP2006134344A (ja) * 2005-11-21 2006-05-25 Hitachi Ltd 電子計算機間のジョブ転送方法およびジョブ転送システム
JP2008134726A (ja) * 2006-11-27 2008-06-12 Toshiba Corp トレーサビリティ情報記録装置、トレーサビリティ情報記録方法及びプログラム
JP2008134947A (ja) * 2006-11-29 2008-06-12 National Institute Of Information & Communication Technology ネットワーク時空情報配信システム,ネットワーク時空情報配信装置,時空情報を受信する端末装置,およびネットワーク時空情報配信方法
JP2008257381A (ja) * 2007-04-03 2008-10-23 Sony Corp 情報解析システム、情報解析装置、情報解析方法および情報解析プログラム、ならびに、記録媒体
US20150341422A1 (en) * 2014-05-21 2015-11-26 Omx Technology Ab Efficient and reliable host distribution of totally ordered global state
JP2016025653A (ja) * 2014-07-25 2016-02-08 三菱電機株式会社 通信システムおよび通信システムの通信方法
US9319365B1 (en) * 2015-10-09 2016-04-19 Machine Zone, Inc. Systems and methods for storing and transferring message data

Also Published As

Publication number Publication date
WO2018044334A1 (en) 2018-03-08
TWI808891B (zh) 2023-07-11
US10901905B2 (en) 2021-01-26
WO2018044828A1 (en) 2018-03-08
JP7200455B2 (ja) 2023-01-10
CA3035404C (en) 2023-10-31
CN109716317B (zh) 2024-04-02
TWI839323B (zh) 2024-04-21
US10678694B2 (en) 2020-06-09
TW202305612A (zh) 2023-02-01
US20200272569A1 (en) 2020-08-27
CA3035404A1 (en) 2018-03-08
CN109716317A (zh) 2019-05-03
KR102306496B1 (ko) 2021-09-28
KR20190046818A (ko) 2019-05-07
US20180067864A1 (en) 2018-03-08
TW201812606A (zh) 2018-04-01

Similar Documents

Publication Publication Date Title
JP7200455B2 (ja) 時間的に正確なイベントストリームの作成のためのシステム及び方法
US10764031B2 (en) Blockchain system for pattern recognition
US11063780B2 (en) Eventually consistent data replication in queue-based messaging systems
US20210018953A1 (en) Asynchronous distributed coordination and consensus with threshold logical clocks
TWI703524B (zh) 使用加速節點加速區塊鏈網路中的交易交付
TWI712303B (zh) 使用交易重發加速區塊鏈網路中的交易交付
CN115210741A (zh) 部分有序的区块链
KR20140072044A (ko) 다중-소스 푸시 통지를 다수의 타겟들로의 분배 기법
US9264414B2 (en) Retry and snapshot enabled cross-platform synchronized communication queue
Johansson et al. RabbitMQ Essentials: Build distributed and scalable applications with message queuing using RabbitMQ
Zhao BFT-WS: A Byzantine fault tolerance framework for web services
EP3803616A1 (en) Change notifications for object storage
US11537455B2 (en) Schema management using an event stream
Camaioni et al. Oracular Byzantine Reliable Broadcast
US10346366B1 (en) Management of a data processing pipeline
CA2958397A1 (en) System and method for creating time-accurate event streams
CN111162970B (zh) 在区块链系统中测试去中心化应用服务器的方法及装置
US10169598B1 (en) Systems and methods for sending and receiving encrypted submessages
CN112884579A (zh) 区块链交易共识方法和装置
CN115543178A (zh) 区块数据的处理方法、装置、计算机可读介质及电子设备
Thunberg Large Scale Server Publishing for Dynamic Content
Ganesh Gopal A Novel Approach for Efficient Resource Utilization and Trustworthy Web Service

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20191001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20191001

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200827

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200827

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200827

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201221

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20210119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210720

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220119

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220810

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220810

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220819

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220823

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: 20221101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221129

R150 Certificate of patent or registration of utility model

Ref document number: 7200455

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150