JP6523319B2 - メッセージ再送信メカニズムの技術 - Google Patents

メッセージ再送信メカニズムの技術 Download PDF

Info

Publication number
JP6523319B2
JP6523319B2 JP2016556798A JP2016556798A JP6523319B2 JP 6523319 B2 JP6523319 B2 JP 6523319B2 JP 2016556798 A JP2016556798 A JP 2016556798A JP 2016556798 A JP2016556798 A JP 2016556798A JP 6523319 B2 JP6523319 B2 JP 6523319B2
Authority
JP
Japan
Prior art keywords
journal
application
computer system
message
messages
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
JP2016556798A
Other languages
English (en)
Other versions
JP2017513105A (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 JP2017513105A publication Critical patent/JP2017513105A/ja
Application granted granted Critical
Publication of JP6523319B2 publication Critical patent/JP6523319B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)
  • Radio Relay Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Optical Communication System (AREA)

Description

<通知>
本特許出願は、メッセージ再送信メカニズムとメモリアドレス空間管理技術の様々な新規イノベーションおよび進歩的側面を開示および記載(以下“開示”)し、著作権、マスクワーク、および/またはその他知的財産権により保護される内容を含む。これら知的財産権の各所有者は、本開示をファックス送付することについて、特許庁のファイル/レコードに公開される限りにおいては異議を申し立てないが、そうでなければ全ての権利を留保する。
<関連出願に対する相互参照>
本願は、以下に対する優先権を主張する:(a)2014年3月11日出願の米国仮出願61/951,364号;(b)2014年3月11日出願の米国仮出願61/951,390号。本願の主題は、出願中の米国特許出願14/644,674号に関する。同願は2014年3月11日出願の米国仮出願61/951,374号の優先権を主張する。本願の内容は、2013年9月12日出願のPCT国際特許出願PCT/US2013/059558号にも関連している。上記各関連出願は、参照によりその全体が本願に組み込まれる。
<技術分野>
本願は、アプリケーションメッセージジャーナル管理についての技術を取り扱う。より具体的には、メッセージ再送信メカニズム装置、方法、システム(“MRM”)を含む。
コンピュータシステムの1側面において、その動作中、ソフトウェアアプリケーションは、動作を実施しまたは外部イベントに対して反応するとき、ジャーナルに対してメッセージを書き込むことがある。自身のメッセージを書き込むことを別にして、ソフトウェアアプリケーションは、他アプリケーションが書き込んだメッセージに対してアクセスする場合がある。
メッセージ再送信メカニズム装置、方法、システム(“MRM”)の実施形態は、メッセージジャーナルに対するアプリケーションリクエストを、MRMコンポーネントを経由して、分割メッセージストリームに対する高速アクセスに変換する。1実施例においてMRMは、システム動作中にアプリケーションが書き込んだメッセージのメッセージジャーナルを取得し、完全なメッセージジャーナルから取得したメッセージをメッセージセグメントへ分割する。実施例においてMRMは、そのメッセージセグメントに対するアプリケーションアクセスを復元することにより、高速メッセージ処理を実現する。
本発明の1実施形態によれば、コンピュータシステムにおける高速メッセージ再送信方法は、以下のステップを有する:前記コンピュータシステムの記憶媒体において、アプリケーションまたは前記コンピュータシステムの動作中におけるプロセスが書き込んだ複数のメッセージから生成されたシーケンス付メッセージのマスタジャーナルを保持するステップであって、前記アプリケーションまたはプロセスの少なくとも1つのサブセットは適切に機能するため前記シーケンス付メッセージに対するアクセスを必要とする、ステップ;フェイルオーバする可能性のある前記アプリケーションまたはプロセスの少なくとも1つのサブセットによる前記シーケンス付メッセージに対するアクセスの要求を推定するステップ;前記要求の推定に基づき、前記マスタジャーナルのコンテンツを複製することにより、1以上のジャーナルコピーおよび/または1以上のジャーナルセグメントを生成するステップであって、単一のアプリケーションまたはプロセスは任意の時点において各前記ジャーナルコピーまたはジャーナルセグメントに対して個別にアクセスすることができる、ステップ;要求されたとき、フェイルオーバするかまたは前記シーケンス付メッセージにギャップがある前記アプリケーションまたはプロセスの少なくとも1つのサブセットに対して、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントを割り当てて、前記マスタジャーナルのコンテンツに対して複数のアプリケーションまたはプロセスが同時にアクセスできるようにし、これにより前記アプリケーションまたはプロセスが前記フェイルオーバまたは前記シーケンス付メッセージにギャップがある状態からのリカバリにおいて前記マスタジャーナル内の前記シーケンス付メッセージに対して高速にアクセスできるようにする、ステップ。
本発明の別実施形態によれば、高速メッセージ再送信を実装するコンピュータシステムは、少なくとも1つのコンピュータプロセッサ、前記少なくとも1つのコンピュータプロセッサと通信できるように配置された少なくとも1つの記憶媒体、を備える。前記少なくとも1つの記憶媒体は、前記少なくとも1つのコンピュータプロセッサに以下を実施させるコンピュータ命令を格納する:前記コンピュータシステムの前記少なくとも1つの記憶媒体において、アプリケーションまたは前記コンピュータシステムの動作中におけるプロセスが書き込んだ複数のメッセージから生成されたシーケンス付メッセージのマスタジャーナルを保持し、前記アプリケーションまたはプロセスの少なくとも1つのサブセットは適切に機能するため前記シーケンス付メッセージに対するアクセスを必要とするものである;フェイルオーバする可能性のある前記アプリケーションまたはプロセスの少なくとも1つのサブセットによる前記シーケンス付メッセージに対するアクセスの要求を推定する;前記要求の推定に基づき、前記マスタジャーナルのコンテンツを複製することにより、1以上のジャーナルコピーおよび/または1以上のジャーナルセグメントを生成し、単一のアプリケーションまたはプロセスは任意の時点において各前記ジャーナルコピーまたはジャーナルセグメントに対して個別にアクセスすることができるものである;要求されたとき、フェイルオーバするかまたは前記シーケンス付メッセージにギャップがある前記アプリケーションまたはプロセスの少なくとも1つのサブセットに対して、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントを割り当てて、前記マスタジャーナルのコンテンツに対して複数のアプリケーションまたはプロセスが同時にアクセスできるようにし、これにより前記アプリケーションまたはプロセスが前記フェイルオーバまたは前記シーケンス付メッセージにギャップがある状態からのリカバリにおいて前記マスタジャーナル内の前記シーケンス付メッセージに対して高速にアクセスできるようにする。
本発明の別実施形態によれば、不揮発性コンピュータ読取可能媒体は、実行することによりコンピュータシステムに高速メッセージ再送信を実装させるコンピュータ命令を有する。前記不揮発性コンピュータ読取可能媒体は、以下のステップのコードを有する:前記コンピュータシステムの記憶媒体において、アプリケーションまたは前記コンピュータシステムの動作中におけるプロセスが書き込んだ複数のメッセージから生成されたシーケンス付メッセージのマスタジャーナルを保持するステップであって、前記アプリケーションまたはプロセスの少なくとも1つのサブセットは適切に機能するため前記シーケンス付メッセージに対するアクセスを必要とする、ステップ;フェイルオーバする可能性のある前記アプリケーションまたはプロセスの少なくとも1つのサブセットによる前記シーケンス付メッセージに対するアクセスの要求を推定するステップ;前記要求の推定に基づき、前記マスタジャーナルのコンテンツを複製することにより、1以上のジャーナルコピーおよび/または1以上のジャーナルセグメントを生成するステップであって、単一のアプリケーションまたはプロセスは任意の時点において各前記ジャーナルコピーまたはジャーナルセグメントに対して個別にアクセスすることができる、ステップ;要求されたとき、フェイルオーバするかまたは前記シーケンス付メッセージにギャップがある前記アプリケーションまたはプロセスの少なくとも1つのサブセットに対して、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントを割り当てて、前記マスタジャーナルのコンテンツに対して複数のアプリケーションまたはプロセスが同時にアクセスできるようにし、これにより前記アプリケーションまたはプロセスが前記フェイルオーバまたは前記シーケンス付メッセージにギャップがある状態からのリカバリにおいて前記マスタジャーナル内の前記シーケンス付メッセージに対して高速にアクセスできるようにする、ステップ。
本発明の技術的効果の1つは、アプリケーションまたはプロセスによるシーケンス付メッセージのジャーナルに対するアクセスまたは処理をスピードアップすることであり、これにより異常状態になったアプリケーションまたはプロセスのリカバリを大幅にスピードアップすることができる。
本発明のその他の技術的効果は、複数のアプリケーションまたはプロセスによるジャーナルアクセスの動的調整または制御である。これは、ジャーナルアクセスの要求に対する推定に基づくジャーナルコピー/セグメント間のロードバランスを含む。
その他利点、優位点、技術的効果は、本開示を読むことにより、および/または本発明の実施形態の1以上を実施することにより、当業者にとって明らかとなるであろう。
添付する付記、図面、写真、画像などは、本開示に基づき、様々な例示的で非限定的な発明の側面、実施形態、特徴(“例”または“例示”)を示す。
図1は、本発明の実施形態に基づきアプリケーションメッセージジャーナル管理を提供するMRMの例を表すブロック図を示す。
本発明の実施形態に基づくメッセージジャーナル管理の1プロセス例を表すフローチャートを示す。
本発明の実施形態に基づき、MRMコンポーネントを介してアプリケーションに対してリカバリのために完全メッセージジャーナルの複製を提供する例を表すフローチャートを示す。
本発明の実施形態に基づき、MRMコンポーネントを介してアプリケーションに対してリカバリのためにストリームセグメントメッセージジャーナルを提供する例を表すデータグラフダイアグラムを示す。
本発明の実施形態に基づくMRMコントローラの例を表すブロック図を示す。
メッセージ再送信メカニズム装置、方法、システム(以下“MRM”)の実施形態は、MRMコンポーネントを介して、メッセージジャーナルに対するアプリケーションリクエストを、分割メッセージストリームに対する高速アクセスに変換する。
図1は、メッセージジャーナルへのアクセスを必要とするアプリケーションに対してアプリケーションメッセージジャーナル管理を提供するMRMの例を表すブロック図を示す。実施例においてアプリケーションは、通常システム動作中において動作を実施しおよび/または外部イベントに対して応答するとき、ジャーナルに対してメッセージを書き込む。例えばアプリケーションは、外部主体から到着するメッセージを受け取り処理する必要がある。例えば金融商品や市場取引に関するメッセージが挙げられるが、これに限らない。例えば電子取引システムのソフトウェアアプリケーションは、例えば注文入力、変更、キャンセルなどのためのFinancial Information eXchange(FIX)フォーマットのメッセージ、取引メッセージ、注文確定レポート、市場データメッセージなどを交換および処理する。実施形態においてアプリケーションは、他アプリケーションおよび/または外部サードパーティとメッセージを交換および処理して応答すると、ジャーナルに対して書き込むことにより自身の活動を記録する。実施形態においてアプリケーションは、システム動作中に実行される他アプリケーションの一部または全ての活動について通知を受ける必要がある。実施形態においてアプリケーションは、全てのアプリケーションが書き込んだメッセージを含むメッセージジャーナルに対してアクセスする必要がある。例えばアプリケーション101は、ジャーナルメッセージを処理する際にギャップを有する場合があり、そのギャップを埋めるためジャーナルに対してアクセスする必要がある場合がある。例えばアプリケーションは、送信問題(例えばネットワーク層など)の結果としてメッセージを破壊および/または消失する場合がある。このときジャーナルから消失したメッセージを復元する必要がある。実施形態において、自身のメッセージをジャーナルに対して書き込む必要がある場合がある。
実施例においてアプリケーション101は、ジャーナルに対して定常的にアクセスすることにより消失したメッセージに再アクセスし、自身のジャーナルメッセージ処理におけるギャップを埋める必要がある。実施例において、ジャーナルのメッセージに対するアプリケーションの繰り返しリクエストは、他のアプリケーション102の同じジャーナルに対するアクセスと干渉する場合がある。例えばアプリケーション101によるリクエストは、アプリケーション102のリクエストと競合し、アプリケーションがジャーナルに対してアクセスする順番を待つキューが生じる場合がある(103)。実施例において待機中アプリケーションは、消失したメッセージを自身で復元しようと試み、ジャーナルが利用可能になるのを待機しているとき、リカバリがさらに遅れることになる。例えば他アプリケーションは、あるアプリケーションが待機しているときジャーナルに対して書き込み、その結果として待機中アプリケーションは、より多くのリカバリ時間を必要とする。アプリケーションがキューにある間にジャーナルに対して書き込まれたメッセージに対してアクセスする必要があるからである(104)。実施例において、これは後続の待機アプリケーションにとって待機時間とリカバリ時間が増加するチェーンリアクションを引き起こす場合があり、その結果として、待機アプリケーションおよび/またはシステム全体の性能が低下する。
実施例においてMRMは、アプリケーションに対して、完全メッセージジャーナルの複数のコピーとセグメントを生成することを介して(106)、ジャーナルへの高速アクセスを提供する。例えばMRMは、アプリケーションに対して一連のジャーナルを提供し、これによりアプリケーションに対して1以上のリカバリソースを提供する。これら実施形態において、ジャーナルにアクセスするプロセスは、キューが増えるとしてもより短くなるので、よりロードバランスされたものとなる。
実施形態において、キューが短くても待ち時間が長い場合がある。例えばリカバリするアプリケーションは、キャッチアップすべき多量のメッセージを有している場合があり、したがってジャーナルについて長い時間がかかり、これによりキューがどんなに短くともキュー内の他アプリケーションにとって長時間の遅延を生じさせる場合がある。そこでMRMはさらに、完全メッセージジャーナルをセグメントへ分割して複数アプリケーションが同時にそのセグメントを利用できるようにすることにより、ジャーナルアクセスポイントにおいて高速ターンアラウンドを提供する。例えばアプリケーションは、あるジャーナルセグメントから他のジャーナルセグメントへ進み、リカバリのため必要な関連メッセージを取得するが、1つのジャーナルについて大きな時間を消費することはなく、リカバリのためジャーナルにアクセスする必要がある他アプリケーションにとって遅延を引き起こすこともない。
図2を参照する。実施例においてアプリケーション207は、動作または外部イベントに対して応答するとき、ジャーナル201に対してメッセージを書き込む。実施例においてアプリケーション208〜209は、他アプリケーションのメッセージを読み取り、システム動作中の全ての活動に遅れないようにする。例えばアプリケーションAは、ジャーナル201の最初の3行に対してメッセージを書き込む。後続アプリケーションBはこれらメッセージを読み取り、ジャーナル内の次の利用可能行に対して自身のメッセージを書き込む(例えば次の3行)。実施例においてアプリケーション210は、ジャーナルメッセージを処理する際に、ギャップを有している場合がある。例えばアプリケーションは、ネットワーク層の送信問題の結果としてメッセージを消失する場合があり、消失したメッセージを復元する手段を必要とする(211)。実施例において、自身のリカバリのためジャーナルに対してアクセスしようとしている他アプリケーションが存在する場合がある。ジャーナルが1つのみである場合、または利用可能なジャーナルコピーの個数がキュー内のアプリケーションの要求を満たさない場合、キューが形成される。実施例においてMRMは、完全メッセージジャーナルのコピー202〜204を提供して、アプリケーションが消失メッセージに対して高速アクセスできるようにする(213)。例えば1つのジャーナルがアプリケーションによって占有されている場合、他アプリケーションは第1ジャーナルのコピーである他の利用可能ジャーナルから消失メッセージを復元する(212)。
実施例において、複数のジャーナル複製があったとしても、アプリケーションが長時間にわたってジャーナルを占有する場合はキューが形成される。例えばアプリケーションは初期状態で開始し、および/または大量のメッセージを消失している場合がある。例えばアプリケーションは、1日のうち遅い時間に開始し、既に処理されたメッセージすべてをキャッチアップする必要がある場合がある。実施例においてアプリケーションは、全ての消失メッセージを復元し処理するために長時間を要し、これは単一のジャーナルを占有して、キューを生じさせるとともに、ジャーナルにアクセスする必要がある他アプリケーションにとってリカバリ遅延を生じさせる。
図3を参照する。実施形態においてアプリケーション307〜309は、動作するときまたは外部イベントに対して応答するとき、ジャーナル301に対してメッセージを書き込む。そして図2で詳細に説明したように、他アプリケーションがジャーナルに対して書き込んだメッセージに遅れないようにする必要がある。実施形態において、消失メッセージを復元するアプリケーションは、長時間にわたってジャーナルを占有する場合があり、他アプリケーションが同じジャーナルに対してアクセスするリクエストと競合する。実施形態においてMRMは、完全メッセージジャーナルを分割することおよび/またはそのコピーを介して、アプリケーションに対してジャーナルへの高速アクセスを提供する(311)。例えばMRMは、完全メッセージジャーナルをセグメント302〜304へ分割し、特定のセグメントを特定のジャーナルに対して割り当てて、複数のアプリケーションがメッセージセグメントを同時利用できるようにする(313)。
実施形態において、消失メッセージを復元しようとしている非接続アプリケーション310は、次のジャーナルに移って元の完全メッセージの他セグメントを取得する前に、完全ジャーナルメッセージのセグメントを取得する。この実施形態において、アプリケーションが各ジャーナルについて消費する時間は、単一のジャーナルから完全メッセージを取得するため消費する時間よりも小さい。例えば非接続アプリケーションがジャーナルからメッセージセグメントを取得すると、他のジャーナルに移り、これにより他アプリケーションはそのジャーナルに対してより速くアクセスすることができる。実施形態において、非接続アプリケーションがまだメッセージギャップを有している場合、非接続アプリケーションは関連するメッセージセグメントを含む他ジャーナルへ進み、これらジャーナルからそのメッセージへアクセスする。実施形態において、各アプリケーションがジャーナルに対して消費する時間は限られている場合があり、これによりジャーナル内に格納されたメッセージへアクセスすることを待機しているアプリケーションのキューはより短くより高速になる。例えば分割メッセージジャーナルにより、各アプリケーションがジャーナルに対して消費する時間は、完全メッセージのジャーナルに対して消費する時間よりも小さくなる。これにより、消失メッセージを復元するよう試みているアプリケーションがメッセージギャップをより速く埋めることができる(312)。
図1Aは、本発明の実施形態に基づくメッセージジャーナル管理の1プロセス例を表すフローチャートを示す。この例示プロセスまたはその変形は、イベントが発生する順序またはシーケンスが重要なコンピュータシステムにおいて実装することができる。そのコンピュータシステムは例えば、電子取引システム、オークションベース販売システム、ゲームシステムである。例として、金融商品交換所が実装する電子取引システムの文脈で、望ましい実施形態を説明する。
ステップ110においてコンピュータシステムは、シーケンス付メッセージのマスタジャーナルを記憶媒体内に保持する。例えば株や国債などの金融商品の電子取引システムにおいて、コアソフトウェアアプリケーション(例えばFIX注文入力/取引ゲートウェイ、マッチングエンジン、市場データアプリケーション、参照データアプリケーション、取引後統合アプリケーション)は、1以上のコンピュータサーバ上で同時に実行される場合がある。これらアプリケーションは、中央メッセージングバスを介して通信し、これにより任意時点において多数のメッセージを生成する。これらメッセージは、注文、取引、クォート、アプリケーション間通信、などを含むが、これに限らない。シーケンスなしメッセージは、シーケンサを介してルーティングされる。シーケンサは、処理/シーケンス付けされた順番にしたがって、これらメッセージをシーケンス付ストリームとして構成する。その結果シーケンサは、正しい順序で全メッセージの忠実性の高い決定論的レコード(“ジャーナル”とも呼ぶ)を生成し続ける。
ジャーナルは次に、取引システムのコンポーネントに対して再発行されまたは利用可能となる。取引システムはそれぞれの機能を実施するため、シーケンス付メッセージに対するアクセスを必要とする。いずれかのコンポーネント(例えばアプリケーションまたはプロセス、以下単に“アプリケーション”と呼ぶ)がフェイルオーバからリカバする必要がある場合、増加し続けるメッセージシーケンスにキャッチアップしなければならない。これはメッセージジャーナルにアクセスすることによりなされ、これにより意図している機能状態に戻ることができる。例えば10秒間クラッシュすると、アプリケーションは数百万メッセージを消失する可能性があり、再機能する前にその数百万メッセージにキャッチアップする必要がある。したがってメッセージジャーナルは、システムリカバリと冗長性にとってクリティカルなものである。またメッセージジャーナルにより、取引所は予約とレコードの要求を満たすことができる。
ただし多数のアプリケーションが停止すると(例えば複数のアプリケーションをサポートするサーバのハードウェア障害の間)、特に慌ただしい取引時間帯においては、メッセージジャーナルに対するアクセス要求が急増する。メッセージストリームにキャッチアップしたいアプリケーションが多数あると、キュー内で待機する必要がある。あるアプリケーションがジャーナルを読み込んでいるとき、他アプリケーションはその後に並んで待つ必要がある。キャッチアップを待機している間、ジャーナルメッセージは増え続け、これによりアプリケーション(素早くリカバしようとしている)はさらに遅れることになる。
したがって、メッセージジャーナルに対する障害アプリケーションからのアクセス要求を推定することが望ましい(ステップ112)。これは、ハードウェアおよび/またはソフトウェアコンポーネントに障害が発生したコンピュータシステムの現在および/または過去のパフォーマンス、または障害によって影響を受けるアプリケーションの数に基づき、予想または予測される。複数の要因を考慮して、ジャーナルアクセス要求の推定結果を判定する。例えば、既知または可能性のあるソフトウェア障害、既知または可能性のあるハードウェア障害、ソフトウェアまたはハードウェア障害に影響されるアプリケーションまたはプロセスの数、アプリケーションまたはプロセスがジャーナル、ジャーナルコピー、またはジャーナルセグメント内のメッセージにアクセスする速度、障害アプリケーションまたはプロセスの所望リカバリ時間(例えば完全リカバリにかかる最大時間)、コンピュータシステムの予想負荷(例えば日中の時間帯や曜日によって変化する)、などが挙げられるが、これに限らない。
要求の予想に基づき、マスタジャーナルのコンテンツを複製することによりおよび/または1以上のジャーナルセグメントを生成することにより(ステップ116)、1以上のジャーナルコピーを生成する(ステップ114)ように、コンピュータシステムを構成することができる。本発明の実施形態に基づき、ジャーナルセグメントはマスタジャーナルのマスタコピー(または“ゴールデンコピー”)から直接生成し、あるいはステップ114において生成したジャーナルコピーから生成することができる。ジャーナルコピーおよび/またはジャーナルセグメントの生成は、専用ソフトウェアまたはリピータなどのハードウェアモジュールによって実現できる。
次にステップ118において、ジャーナルコピーおよび/またはジャーナルセグメントは、障害アプリケーションに対して割り当てられ、これによりリカバリを速める。割当はいくつかの方法で実施できる。例えばジャーナルコピーまたはセグメントは、障害アプリケーションに対して事前割当することができる。これに代えて(より望ましくは)アプリケーションは、ジャーナルコンテンツの特定部分に対するアクセスを要求し、占有されていないジャーナルコピー/セグメントを発見するまで待機する。これは、日用品店チェックアウト待ちにおいて1つのキューの客が複数のレジによってまとめて取り扱われ、待ち行列の最初の人が次に利用可能になったレジへ向かうことに似ている。ジャーナルコピー/セグメントの数は、障害アプリケーションの総数に対処して長いキューで順番待ちするアプリケーションがなくなるように、充分に大きいことが望ましい。1実施形態においてジャーナルコピー/セグメントは、各障害アプリケーションが即時アクセスすることができるように割り当てられ、または各キューにおいてアプリケーションが2〜3個以内となるように割り当てることができる。
具体例において、最大リカバリ時間として1マイクロ秒(すなわち1000ナノ秒)が選択され、10個の障害アプリケーションがジャーナルにキャッチアップすることによりリカバする必要があると推定される。したがって平均すると各アプリケーションはジャーナルに対するアクセス完了にかかる時間を100ナノ秒以下にする必要がある。アプリケーションがメッセージに対してアクセスするのにかかる時間は、以下に基づき計算または推定することができる:(a)Xビットおよび/またはバイトという観点のメッセージサイズ、(b)Xビットまたはバイトを処理するのにかかるナノ秒の数値。100ナノ秒で処理することができる最大メッセージ数は、ジャーナルセグメントのサイズ制約として計算することができる。
ジャーナルコピーまたはジャーナルセグメントの個数を設定する複数のオプションを用いることができる。例えば最初のアプリケーションのみがジャーナルにアクセスすることができる10アプリケーションの単一キューを用いることに代えて、ジャーナルコンテンツをジャーナルコピーに複製して、同一ジャーナルの2コピーを10アプリケーションに対して割り当てることができる。この場合、5アプリケーション/キューが2キューあることになる。より良いのは、10アプリケーションが同じジャーナルの5コピーを利用可能とすることである。この場合、2アプリケーション/キューが5キューあることになり、5アプリケーションがジャーナルに対してアクセスできる。その結果、10アプリケーションのリカバリ時間が大幅に短くなる。
これに代えて、10アプリケーションがメッセージジャーナルの異なる部分に対してアクセスする必要がある範囲で、1以上のジャーナルコピーをジャーナルセグメントへさらに分割することができる。各セグメントは、シーケンス付メッセージのより短いストリームを有するメッセージジャーナルのサブセットを含む。例えば障害アプリケーションが10個であり、3ジャーナルコピーが生成され、ジャーナルコピーの1つが3つのジャーナルセグメントへさらに分割される。したがって2つのアプリケーションを含むキューが5つ形成され、2つのキューは2つの完全ジャーナルコピーへアクセスし、3キューは3つのジャーナルセグメントへアクセスする。各アプローチ(ジャーナルセグメントがある場合とない場合)において、例えばアプリケーションキューに対して負荷バランシングを適用して、ジャーナルコピーおよび/またはジャーナルセグメントのそれぞれの割当を調整することができる。
ジャーナルコピーおよび/またはジャーナルセグメントが生成されアプリケーションに対して割り当てられた後(例えばアプリケーションに対して事前割当され、または要求に応じて割り当てられる)、コンピュータシステムはジャーナルシーケンス内にメッセージを蓄積し続ける。したがってメッセージジャーナルの“ゴールデンコピー”は、最新のシーケンス付メッセージによって継続的に更新される。
ただし以前に生成したジャーナルコピー/セグメントのコンテンツは、古くなり不完全になる場合がある。
完全ジャーナルコピーが複数ある場合において、各ジャーナルコピーはシーケンス付ストリームを読み取り続け、自身のジャーナルに追加する。これは、他のジャーナルコピーと同期されていない状態になることについて考慮されずになされる。ストリームはシーケンス付であり決定論的だからである。全てのジャーナルは、シーケンス番号にしたがって同じ順番を有する。いずれかのメッセージが消失すると、ジャーナルコピーは他のジャーナルコピーから消失メッセージを埋めるよう再リクエストする。メッセージが埋められると、リアルタイムでストリームから読み取ることを再開する。
ジャーナルセグメントを用いる場合、各ジャーナルセグメントは完了すると固定され、次に動的構築されているセグメントのみがアクティブになる。例えば各セグメントが10メッセージを保持し、35メッセージがストリームに対して書き込まれる場合、完全固定セグメントは3つであり、10メッセージキャパシティを有する動的構築セグメントには5メッセージが埋められる。メッセージを消失すると(ここではメッセージ#8を消失したとする)、メッセージ#8を再リクエストし、これを取得するとメッセージ#9と#10へ進む。#8を再リクエストしている間に#9がシーケンス付けされ、#9を消失して#9を再リクエストする必要がある、という競合状態があり得る。その後、キャッチアップおよびリアルタイムストリームへ再遷移する。
したがって、完全ジャーナルコピーまたはジャーナルセグメントが不完全になるのは、メッセージを消失した場合のみであり、これは再リクエストされる。ジャーナルセグメントを用いる場合、完全集合ジャーナルレコードは、最新動的構築セグメントがメッセージを消失して不完全になった場合、不完全となる。
ステップ120において、ジャーナルコピー/セグメントが増え続けるメッセージジャーナルにキャッチアップするため、少なくとも1つのジャーナルコピー/セグメントのコンテンツは、マスタジャーナル(すなわちゴールデンコピー)のコンテンツまたは他の(より新しい)ジャーナルコピー/セグメントのコンテンツにより更新または同期される。
(セグメント分割されていない)ジャーナルコピーは、動的にリアルタイム更新することができ、したがって継続的に長さが増え続ける。ジャーナルセグメントについて、メッセージ数はジャーナルセグメントあたり1000に制限され、1001番目のメッセージごとに新セグメントが開始し、1000番目のメッセージまで動的更新される。アプリケーションが動的更新されているジャーナルセグメントから再リクエストする必要がある場合、キャッチアップするまでの最新メッセージシーケンス番号までをリクエストすればよく、これによりジャーナルセグメントとともにストリームから読み出しを開始できる。
本発明の実施形態に基づき、ジャーナルコピーおよび/またはジャーナルセグメントは、複数層の階層に構造化することができる。ジャーナルコピー/セグメントは、他のジャーナルコピー/セグメントから“キャッチアップ”することができる。例えばジャーナルコピー/セグメントは、ティア1、ティア1、ティア3などに割り当てることができる。ティア1ジャーナルコピー/セグメントは常に“ゴールデンコピー”によって更新されており、キャッチアップする必要があるティア2および/またはティア3ジャーナルコピー/セグメントのみがアクセスできる。ティア2ジャーナルコピー/セグメントは、他のティア2ジャーナルコピー/セグメントからのみキャッチアップでき、必要であればティア1ジャーナルコピー/セグメントからキャッチアップする。ティア3ジャーナルコピー/セグメントは、他のティア3ジャーナルコピー/セグメントからのみキャッチアップでき、必要であればティア2またはティア1ジャーナルコピー/セグメントからキャッチアップする。
<MRMコントローラ>
図4は、MRMコントローラ401の例を表すブロック図を示す。この実施形態においてMRMコントローラ401は、様々な技術および/または関連データを介して、コンピュータとのやり取りを集約し、処理し、格納し、検索し、提供し、識別し、命令し、生成し、マッチングし、および/または促進する。
ユーザ433aは、人間および/または他システムであり、情報技術システム(例えばコンピュータ)を用いて情報処理を実施する。コンピュータはプロセッサを用いて情報を処理する;そのプロセッサ403は、中央演算装置(CPU)と呼ばれる。プロセッサの1形態は、マイクロプロセッサである。CPUは通信回路を用いて、命令として動作するバイナリ符号化信号を送信し、様々な動作を実施する。これら命令は、動作命令および/またはデータ命令であり、他命令を含みおよび/または参照し、様々なプロセッサがアクセスして動作することができるメモリ領域429(例えばレジスタ、キャッシュメモリ、ランダムアクセスメモリなど)に格納される。通信命令は、プログラムとしておよび/またはデータコンポーネントとしてバッチで(例えばバッチ命令で)格納されおよび/または送信され、所望の動作を実施する。これら格納されている命令コード(例えばプログラム)は、CPU回路部品やその他マザーボードおよび/またはシステム部品に組み込まれ、所望の動作を実施する。プログラムのタイプとしては例えばコンピュータオペレーティングシステムがあり、CPUがコンピュータ上でこれを実行する。オペレーティングシステムにより、ユーザはコンピュータ情報技術とリソースにアクセスし動作させることができる。情報技術システムが使用するリソースとしては以下が挙げられる:データがコンピュータに対して入力されまたはコンピュータから出ていく入出力メカニズム;データを保存するメモリストレージ;情報を処理するプロセッサ。これら情報技術システムを用いてデータを収集し、その後に取得し、分析し、操作する。これら動作はデータベースプログラムによりなされる。これら情報技術システムは、ユーザが様々なシステムコンポーネントにアクセスして操作するインターフェースを提供する。
1実施形態において、MRMコントローラ401は以下のような構成要素と接続し、および/または通信することができる:ユーザ入力デバイス411からの1以上のユーザ;周辺デバイス412;予備暗号プロセッサデバイス428;および/または通信ネットワーク413。例えばMRMコントローラ401は、ユーザ433a、クライアント操作デバイス433bと接続し、および/または通信することができる。クライアント操作デバイス433bは以下を含むが、これに限られない:パーソナルコンピュータ、サーバ、および/または様々なモバイルデバイス。モバイルデバイスは以下を含むが、これに限られない:携帯電話、スマートフォン(例えばiPhone(登録商標)、Blackberry(登録商標)、AndroidOSベース携帯電話、など)、タブレットコンピュータ(例えばApple iPad、HP Slate、Motorola Xoom、など)、eBookリーダ(例えばAmazon Kindle、Barnes and NobleのNook eReader、など)、ラップトップコンピュータ、ノートブックコンピュータ、ネットブック、ゲーム端末(例えばXBOX Live、Nintendo(登録商標)DS、Sony PlayStation(登録商標)Portable、など)、携帯スキャナ、など。
ネットワークは一般に、グラフトポロジーにおけるクライアント、サーバ、および中間ノードの相互接続と相互動作を備えるように構成される。本願における“サーバ”という用語は一般に、コンピュータ、その他デバイス、プログラム、あるいはこれらの組み合わせを指し、これらは通信ネットワークを介したリモートユーザのリクエストを処理し、これに応答する。サーバは、“クライアント”に対してリクエストするため情報を提供する。本願における“クライアント”という用語は一般に、コンピュータ。プログラム、その他デバイス、ユーザ、および/またはこれらの組み合わせを指す。これらはリクエストを処理および作成し、通信ネットワークを介してサーバからの応答を取得し処理することができる。情報とリクエストを処理し、および/または送信元ユーザから宛先に対して情報を引き渡す、コンピュータ、その他デバイス、プログラム、またはこれらの組み合わせは、“ノード”と呼ぶ。ネットワークは一般に、送信元から宛先に対して情報を伝搬しようとする。送信元から宛先に対して情報を引き渡すタスクを実施するノードは、“ルータ”と呼ばれる。ネットワークの形態としては例えば:ローカルエリアネットワーク(LAN)、Picoネットワーク、広域ネットワーク(WAN)、無線ネットワーク(WAN)などがある。例えばインターネットは一般に、複数ネットワークの相互接続として受け入れられている。これによりリモートクライアントとサーバは、互いにアクセスし相互動作することができる。
MRMコントローラ401は、コンピュータシステムに基づく。このコンピュータシステムは、例えばメモリ429に接続されたコンピュータシステム402のようなコンポーネントを備えるが、これに限らない。
<コンピュータシステム>
コンピュータシステム402は、クロック430、中央演算装置(CPUおよび/またはプロセッサ(これら用語は本明細書において明示しない限り相互交換可能である))403、メモリ429(例えば読取専用メモリ(ROM)406、ランダムアクセスメモリ(RAM)405など)、および/またはインターフェースバス407を備える。さらに必ずしも必要ではないが最もよく備えられているのは、相互接続されおよび/または通信可能なシステムバス404である。システムバス404は1以上のマザーボード402上に設けられている。マザーボード402は、導電および/または伝搬回路経路を有する。この回路経路を通じて、命令(例えばバイナリ符号化信号)が伝搬し、通信、動作、記憶などを実現する。コンピュータシステムは、電力ソース486に接続することができる。電力ソースは内部のものであってもよい。暗号プロセッサ426および/またはトランシーバ(例えばIC)474は、システムバスに接続することができる。他実施形態において、暗号プロセッサおよび/またはトランシーバは、内部および/または外部周辺デバイス412としてインターフェースバスI/Oを介して接続することができる。トランシーバはアンテナ475に接続され、これにより無線通信と様々な通信および/またはセンサプロトコルの受信を可能にする。例えばアンテナは以下に接続することができる:Texas Instruments WiLink WL1283 トランシーバチップ(例えば802.11n、Bluetooth3.0、FM、GPS(これによりMRMコントローラは位置を判定できる)を提供する);Broadcom BCM4329FKUBG トランシーバチップ(例えば802.11n、Bluetooth2.1+EDR、FMなどを提供する)、BCM28150(HSPA+)、およびBCM2076(Bluetooth4.0、GPSなど);Broadcom BCM4750IUB8レシーバチップ(例えばGPS);Infineon Technologies X−Gold618−PMB9800(例えば2G/3G HSDPA/HSUPA通信を提供する);Intel XMM7160(LTE&DC−HSPA)、Qualcom CDMA(2000)、Mobile Data/Station Modem,Snapdragon、など。システムクロックは水晶発振器を有し、コンピュータシステムの回路経路を介してベース信号を生成する。クロックは、システムバスおよび様々なクロック増幅器に接続される。クロック増幅器は、コンピュータシステムに相互接続された他コンポーネントのベース動作周波数を増減させる。クロックとコンピュータシステム内の各コンポーネントは、システム全体にわたって情報を格納する信号を駆動する。コンピュータシステム全体にわたって情報を格納した命令を送受信することは、通信と呼ばれる。これら通信命令は、さらに送受信され、本コンピュータシステムから通信ネットワーク、入力デバイス、他コンピュータシステム、周辺デバイス、などに対する応答を生じさせる。他実施形態において、上記各コンポーネントは互いに直接接続し、CPUに接続し、および/または多様なコンピュータシステムが採用する様々な変形物内に構成できることを理解されたい。
CPUは、ユーザおよび/またはシステムが生成したリクエストを実行するプログラムコンポーネントを実行するのに適した少なくとも1つの高速データプロセッサを備える。プロセッサ自身は、様々な専用処理ユニットを備える場合もある。例えば浮動点演算ユニット、整数演算ユニット、統合システム(バス)コントローラ、論理演算ユニット、メモリ管理制御ユニット、などを含むが、これらに限らない。また、グラフィック処理ユニット、デジタル信号処理ユニット、などの専用サブユニットを含む場合もある。プロセッサは、内部高速アクセスアドレスメモリを備える場合もあり、メモリ429のマッピングやアドレシングをプロセッサ自身が実施することができる。内部メモリは以下を含むが、これらに限らない:高速レジスタ、様々なレベルのキャッシュメモリ(レベル1、2、3など)、RAM、など。プロセッサは、メモリアドレス空間を介してこのメモリにアクセスする。メモリアドレス空間は、命令アドレスを介してアクセスすることができる。命令アドレスは、プロセッサが構築しデコードするものである、これにより、回路パスにアクセスしてメモリ状態/値を有する特定メモリアドレス空間に到達することができる。CPUは、例えば以下のようなマイクロプロセッサでもよい:AMD Athlon、Duron、および/またはOpteron;従前のARM(例えばARM6/9/11)、embedded(Cortex−M/R)、application(Cortex−A)、およびsecureプロセッサ;IBMおよび/またはMotorola DragonBallおよびPowerPC;IBMおよびSony Cellプロセッサ;Intel Atom、Celeron(Mobile)、Core(2/Duo/i3/i5/i6)、Itanium、Pentium、Xeon、および/またはXScale;など。CPUは、命令を通過させる導体および/または伝搬経路(例えば(プリント)電子および/または光回路)を介してメモリと通信し、格納されている命令(すなわちプログラムコード)を実行する。この命令引き渡しにより、MRMコントローラ内および各インターフェースを介した通信を実施する。処理要件が多大な速度および/または性能を必要とする場合、分散プロセッサ(例えばDistributed MRM)、メインフレーム、マルチコア、パラレル、および/またはスーパーコンピュータアーキテクチャを同様に用いることができる。これに代えて、配置要件が可搬性を必要とする場合、小型モバイルデバイス(例えばスマートフォン、携帯個人端末(PDA)など)を採用することができる。
実装によっては、MRMの機能はマイクロコントローラを実装することによって実現できる。マイクロコントローラは例えば、CAST R8051XC2マイクロコントローラ、Intel MCS51(すなわち8051マイクロコントローラ)、などである。MRMの機能を実装するため、組込コンポーネントを用いることもできる。例えば:特定用途集積回路(ASIC)、デジタル信号プロセッサ(DSP)、Field Programmable Gate Array(FPGA)、および/または同様の組込技術である。例えばMRMのコンポーネント集合(分散配置されているものでもよいしそれ以外でもよい、例えばIMAS341など)および/または機能は、マイクロプロセッサおよび/または組込コンポーネントを用いて実装することができる。例えば:ASIC、コプロセッサ、DSP、FPGA、など。これに代えてMRMの機能は、多様な機能や信号処理を実現するように構成された組込コンポーネントにより実装することができる。
実装によっては、組込コンポーネントは、ソフトウェア、ハードウェア、および/またはハードウェア/ソフトウェアの組み合わせを含むことができる。例えばMRM機能は、FPGAを実装することにより実現できる。FPGAは、“論理ブロック”というプログラム可能論理部品とプログラム可能相互接続を含む半導体デバイスである。FPGAの例は、Xilinxが製造する高性能FPGA Virtexシリーズおよび/またはSpartanシリーズである。論理ブロックと相互接続は、FPGAが製造された後、顧客や設計者によってプログラムすることができる。これにより、MRM機能を実装する。プログラム可能相互接続の階層により、論理ブロックはMRMシステム設計者/管理者が必要であれば相互接続することができる。これは1チッププログラム可能breadboardに似ている。FPGAの論理ブロックをプログラムして、AND、XORなどの基本論理ゲートの動作、またはデコーダや簡易数式などのより複雑な演算子の組み合わせを実施することができる。多くのFPGAにおいて、論理ブロックもメモリを備える。このメモリは例えば、回路フリップフロップまたはより複雑なメモリブロックである。状況によっては、MRMを通常のFPGA上に開発し、ASICにより近い固定バージョンに移行することもできる。代替または協調実装は、MRMコントローラ機能をFPGAに代えてまたはFPGAに加えて最終ASICに移行することができる。実装によっては、上記組込コンポーネントの全ておよびマイクロプロセッサは、MRMの“CPU”および/または“プロセッサ”とみなすことができる。
<電力ソース>
電力ソース486は、小型電子回路ボードデバイスに電力を供給する任意の標準形式のものを用いることができる。例えば以下のようなパワーセルである:アルカリ、リチウム水化物、リチウムイオン、リチウムポリマ、ニッケルカドミウム、太陽電池、など。その他タイプのACまたはDC電力ソースを用いることもできる。太陽電池の場合、1実施形態において、ケースは太陽電池が光エネルギーを取り込む開口を有する。パワーセル486は、相互接続されたMRMコンポーネントの少なくとも1つと接続され、これにより相互接続された全コンポーネントに対して電流を提供する。1例において、電力ソース486はシステムバスコンポーネント404に接続される。代替実施形態において、I/Oインターフェース408をまたがる接続を介して、外部電力ソース486を提供することもできる。例えばUSBおよび/またはIEEE1394接続は、接続を通じてデータと電力をともに搬送し、したがって電力ソースとして適している。
<インターフェースアダプタ>
インターフェースバス407は、複数のインターフェースアダプタに対して、受信し、接続し、および/または通信する。必須ではないが、アダプタカードの形態をとることができる。例えば以下を含むが、これらに限らない:入出力インターフェース(I/O)408、ストレージインターフェース409、ネットワークインターフェース410、など。暗号プロセッサインターフェース427も同様に、インターフェースバスに接続することができる。インターフェースバスは、インタ−フェースアダプタ同士の接続のために提供することもできるし、コンピュータステムの他コンポーネントのために提供することもできる。インターフェースアダプタは、適合するインターフェースバスのために調整することができる。インターフェースアダプタは、拡張および/またはスロットアーキテクチャを介してインターフェースバスに接続する。様々な拡張および/またはスロットアーキテクチャを採用することができる。例えば以下を含むがこれに限らない:Accelerated Graphics Port(AGP)、Card Bus、ExpressCard、(Extended)Industry Standard Architecture((E)ISA)、Micro Channel Architecture(MCA)、NuBus、Peripheral Component Interconnect(Extended)(PCI(X))、PCI Express、Personal Computer Memory Card International Association(PCMCIA)、Thunderbolt、など。
ストレージインターフェース409は、複数のストレージデバイスに対して、受信し、通信し、および/または接続する。ストレージデバイスは例えば以下のようなものであるが、これに限らない:ストレージデバイス414、リムーバブルディスクデバイス、など。ストレージインターフェースは、通信プロトコルを採用することができる。通信プロトコルは例えば以下のものを含むが、これに限らない:(Ultra)(Serial)Advanced Technology Attachment(Packet Interface)((Ultra)(Serial)ATA(PI))、(Enhanced)Integrated Drive Electronics((E)IDE)、Institute of Electrical and Electronics Engineers(IEEE)1394、Ethernet、ファイバチャネル、Small Computer Systems Interface(SCSI)、Thunderbolt、Universal Serial Bus(USB)、など。
ネットワークインターフェース410は、通信ネットワーク413に対して、受信し、通信し、および/または接続する。通信ネットワーク413を介して、ユーザ433aはリモートクライアント433b(例えばwebブラウザを備えるコンピュータ)経由でMRMコントローラにアクセスすることができる。ネットワークインターフェースは、通信プロトコルを採用することができる。通信プロトコルは例えば以下のものがあるが、これに限らない:直接接続、Ethernet(thick、thin、twisted pair 10/100/1000Base T、など)、トークンリング、IEEE802.11a−xなどの無線接続、など。処理要件が多大な速度および/または性能を必要とする場合、分散ネットワークコントローラ(例えば分散4)アーキテクチャを同様に採用して、MRMコントローラが必要とする通信帯域幅をプールし、負荷分散し、および/または増加させることができる。通信ネットワークは、以下のいずれかまたは組み合わせを用いることができる:直接相互接続;インターネット;ローカルエリアネットワーク(LAN);メトロポリタンエリアネットワーク(MAN);Operating Missions as Nodes on the Internet(OMNI);セキュアカスタム接続;Wide Area Network(WAN);無線ネットワーク(例えばWireless Application Protocol(WAP)、I−modeなどのプロトコルを採用したものが挙げられるが、これらに限らない);など。ネットワークインターフェースは、入出力インターフェースの特殊形態とみなすことができる。さらに複数のネットワークインターフェース410を用いて、様々な通信ネットワークタイプ413に接続することができる。例えば複数のネットワークインターフェースを用いて、ブロードキャスト、マルチキャスト、および/またはユニキャストネットワーク上で通信することができる。
入出力インターフェース(I/O)408は、ユーザ入力デバイス411、周辺デバイス412、暗号プロセッサデバイス428、などに対して、受信し、通信し、および/または接続する。I/Oは、以下のような通信プロトコルを用いることができるが、これに限らない:オーディオ:アナログ、デジタル、モノラル、RCA、ステレオ、など;データ:Apple Desktop Bus(ADB)、Bluetooth、IEEE1394a−b、シリアル、USB;赤外線;ジョイスティック;キーボード;midi;光;PC AT;PS/2;パラレル;無線;ビデオインターフェース:Apple Desktop Connector (ADC)、BNC、同軸、コンポーネント、コンポジット、デジタル、DisplayPort、Digital Visual Interface (DVI)、high−definition multimedia interface(HDMI)、RCA、RF antenna、S−Video、VGA、など;無線トランシーバ:802.11a/b/g/n/x;Bluetooth;携帯(例えばcode division multiple access(CDMA)、high speed packet access(HSPA(+))、high−speed downlink packet access(HSDPA)、global system for mobile communications(GSM)、long term evolution(LTE)、WiMax、など);など。出力デバイスは、例えばビデオディスプレイである。ビデオディスプレイは、以下の形態をとることができる:Cathode Ray Tube(CRT)、Liquid Crystal Display(LCD)、Light Emitting Diode(LED)、Organic Light Emitting Diode(OLED)、プラズマ、など。ビデオディスプレイは、ビデオインターフェースから信号を受け取るインターフェース(例えばVGA、DVI回路およびケーブル)を備える。ビデオインターフェースは、コンピュータシステムが生成した情報を複合し、複合した情報に基づきビデオメモリフレーム内でビデオ信号を生成する。他の出力デバイスは、例えばテレビセットである。テレビセットは、ビデオインターフェースから信号を受け取る。ビデオインターフェースは、ビデオディスプレイインターフェース(例えば、RCAコンポジットビデオケーブルを接続するRCAコンポジットビデオコネクタ;DVIディスプレイケーブルを接続するDVIコネクタ、HDMIなど)を接続するビデオ接続インターフェースを介して複合ビデオ情報を提供する。
ユーザ入力デバイス411は周辺デバイス412(下記参照)のタイプである場合もあり、以下を含む:カードリーダ、ドングル、指紋リーダ、グローブ、グラフィックタブレット、ジョイスティック、キーボード、マイクロフォン、マウス、リモコン、網膜リーダ、タッチスクリーン(容量型、抵抗型など)、トラックボール、センサ(例えば加速度計、環境光、GPS、ジャイロスコープ、近接センサ、など)、スタイラス、など。
周辺デバイス412は、I/Oおよび/または、ネットワークインターフェース、ストレージインターフェース、インターフェースバス直接、システムバス、CPUなどのその他デバイスと接続し、および/または通信することができる。周辺デバイスは、外部デバイス、内部デバイス、および/またはMRMコントローラの一部である。周辺デバイスは以下を含む:アンテナ、オーディオデバイス(例えばline−in、line−out、マイクロフォン入力、スピーカなど)、カメラ(例えば静止カメラ、ビデオカメラ、webcamなど)、ドングル(例えばデジタル署名で安全な通信を保証するコピー保護したものなど)、外部プロセッサ(例えば暗号デバイス428などの追加機能のためのもの)、力フィードバックデバイス(例えば振動モータ)、近接場通信(NFC)デバイス、ネットワークインターフェース、プリンタ、無線ID(RFID)、スキャナ、ストレージデバイス、トランシーバ(例えば携帯、GPSなど)、ビデオデバイス(例えばゴーグル、モニタなど)、ビデオソース、など。周辺デバイスは、入力デバイスタイプを含む(例えばマイクロフォン、カメラなど)。
ユーザ入力デバイスと周辺デバイスを採用してもよいが、MRMコントローラは組込デバイス、専用デバイス、および/またはモニタなし(すなわちヘッドなし)デバイスとして実装することもできる。この場合アクセスは、ネットワークインターフェース接続を介してなされる。
マイクロコントローラ、プロセッサ426、インターフェース427、および/またはデバイス428などの暗号ユニットをMRMに取り付け、および/またはMRMと通信することができる。Motorola製のMC68HC16マイクロコントローラを暗号ユニット内で用いることができる。MC68HC16マイクロコントローラは、16MHz設定で16ビット関和演算命令を利用し、512ビットRSAプライベートキー動作を1秒以下で実施する。暗号ユニットは、通信エージェントからの通信認証をサポートし、匿名通信も許可する。暗号ユニットは、CPUの一部として構成することができる。同等のマイクロコントローラおよび/またはプロセッサを用いることもできる。その他商用利用可能な専用暗号プロセッサとして以下が含まれる:Broadcom CryptoNetXその他セキュリティプロセッサ;nCipher nShield (例えばSolo、 Connect、など)、SafeNet Luna PCI(例えば7100)シリーズ;Semaphore Communications 40MHz Roadrunner184;sMIP(例えば208956);Sun Cryptographic Accelerator(例えばAccelerator6000 PCIeボード、Accelerator500 Daughtercard);500+MB/sの暗号命令を実施できるVia Nano Processor(例えばL2100、L2200、U2400)ライン;VLSI Technology 33MHz 6868;など。
<メモリ>
一般に、プロセッサがストレージに影響を及ぼし、および/または情報を取得できるようにするデバイスは、メモリ429とみなすことができる。ただしメモリは代替可能な技術およびリソースであり、よって任意個数のメモリを代わりにまたは連携して用いることができる。MRMコントローラおよび/またはコンピュータシステムは、様々な形態のメモリ429を採用できることを理解されたい。例えばコンピュータシステムは、オンチップCPUメモリ(例えばレジスタ)、RAM、ROM、その他ストレージデバイスが紙パンチテープまたは紙パンチカードによって提供されるように構成することができる。ただしそのような実施形態は、動作レートが非常に遅い。1実施例においてメモリ429は、ROM406、RAM405、ストレージデバイス414を含む。ストレージデバイス414は、任意個数のコンピュータストレージデバイス/システムを採用することができる。ストレージデバイスは以下を含む:ドラム;(固定および/またはリムーバブル)磁気ディスクドライブ;光磁気ドライブ;光ドライブ(すなわちBlueray、CD ROM/RAM/RecoMRMble(登録商標)/ReWritable(RW)、DVD R/RW、HD DVD R/RWなど);デバイスアレイ(例えばRAID);固体メモリデバイス(ISBメモリ、solid stateドライブ(SSD)など);その他プロセッサ読取可能記憶媒体;など。よってコンピュータシステムは一般に、メモリを利用する。
<コンポーネントコレクション>
メモリ429は、プログラムおよび/またはデータベースコンポーネントおよび/またはデータのコレクションを含む。例えば以下を含むがこれに限らない:OSコンポーネント415(オペレーティングシステム);情報サーバコンポーネント416(情報サーバ);ユーザインターフェースコンポーネント417(ユーザインターフェース);Webブラウザコンポーネント418(Webブラウザ);データベース419;メールサーバコンポーネント421;メールクライアントコンポーネント422;暗号サーバコンポーネント420(暗号サーバ);MRMコンポーネント435;など(すなわちまとめてコンポーネントコレクション)。これらコンポーネントは、ストレージデバイスに格納し、ストレージデバイスからアクセスし、および/またはインターフェースバスを介してアクセスできるストレージデバイスからアクセスすることができる。上記コンポーネントコレクションのようなプログラムコンポーネントはローカルストレージデバイス414に格納することができるが、メモリに読み出し、および/または格納することもできる。メモリは例えば以下を含む:周辺デバイス、RAM、通信ネットワークを介したリモートストレージ、ROM、様々なメモリ、など。
<オペレーティングシステム>
OSコンポーネント415は、実行可能プログラムコンポーネントであり、MRMコントローラの動作を実施する。オペレーティングシステムは、I/O、ネットワークインターフェース、周辺デバイス、ストレージデバイス、などへのアクセスを実施する。オペレーティングシステムは、フォールトトレランスが高くスケーラブルでセキュアなシステムである。例えば以下を含む:Apple Macintosh OS X(サーバ);AT&T Plan 9;Be OS;UnixおよびUnixライクなシステム(例えばAT&T UNIX;Berkley Software Distribution(BSD)系列、例えばFreeBSD、NetBSD、OpenBSDなど;Linuxディストリビューション、例えばRedHat、Ubuntuなど);その他同様のOS。ただしより限定的および/またはセキュリティの低いOSを採用することもできる。例えば:Apple Macintosh OS、IBM OS/2、Microsoft DOS、Microsoft Windows2000/2003/3.1/95/98/CE/Millenium/NT/Vista/XP(サーバ)、PalmOS、など。また、モバイルOSを採用することもできる。例えば:Apple iOS、Google Android、Hewlett Packard WebOS、Microsoft Windows Mobile、など。これらOSは、MRMコントローラのハードウェアに組み込み、および/またはメモリ/ストレージに格納/読み出すことができる。OSは、コンポーネントコレクションの他コンポーネントと通信することができる。OSは他プログラムコンポーネント、ユーザインターフェースなどと通信する。例えばOSは、プログラムコンポーネント、システム、ユーザ、および/またはデータ通信、リクエスト、および/またはレスポンスを含み、通信し、生成し、取得し、および/または提供する。CPUがOSを実行すると、通信ネットワーク、データ、I/O、周辺デバイス、プログラムコンポーネント、メモリ、ユーザ入力デバイスなどとの通信が可能になる。OSは、通信プロトコルを提供する。通信プロトコルにより、MRMコントローラは通信ネットワーク413を介して他構成要素と通信することができる。MRMコントローラは、サブスクライバ通信メカニズムとして様々な通信プロトコルを使用することができる。例えばマルチキャスト、TCP/IP、UDP、ユニキャストなどを含むが、これに限らない。
<情報サーバ>
情報サーバコンポーネント416は、CPUが実行するプログラムコンポーネントである。情報サーバは例えばインターネット情報サーバであり、以下を含むがこれに限らない:Apache Software FoundationのApache、Microsoft Internet Information Server、など。情報サーバにより、プログラムコンポーネントを実行することができる。例えば以下のような機能を介して実行する:Active Server Page(ASP)、ActiveX、 (ANSI)(Objective−)C(++)、C#、および/または.NET、Common Gateway Interface(CGI)スクリプト、dynamic(D) hypertext markup language(HTML)、FLASH、Java、JavaScript、Practical Extraction Report Language(PERL)、Hypertext Pre−Processor(PHP)、パイプ、Python、wireless application protocol(WAP)、WebObjects、など。情報サーバは、セキュア通信プロトコルをサポートする。例えば以下を含むがこれに限らない:File Transfer Protocol(FTP);HyperText Transfer Protocol(HTTP);Secure Hypertext Transfer Protocol(HTTPS)、Secure Socket Layer(SSL)、メッセージングプロトコル(例えばAmerica Online(AOL)Instant Messenger(AIM)、Apple iMessage、Application Exchange(APEX)、ICQ、Internet Relay Chat(IRC)、Microsoft Network(MSN)Messenger Service、Presence and Instant Messaging Protocol(PRIM)、Internet Engineering Task Force(IETF)Session Initiation Protocol(SIP)、SIP for Instant Messaging and Presence Leveraging Extensions(SIMPLE)、open XML−based Extensible Messaging and Presence Protocol(XMPP) (すなわち、Jabber or Open Mobile Alliance(OMA)Instant Messaging and Presence Service(IMPS))、Yahoo! Instant Messenger Service、など。情報サーバは、Webブラウザに対してWebページの形態で結果を提供し、他プログラムコンポーネントとのやり取りを通じてWebページの生成を操作する。HTTPリクエストのうちDomain Name System (DNS)が解決する部分が情報サーバに対して提供されると、情報サーバはHTTPリクエストの残部分に基づきMRMコントローラ上の特定場所における情報リクエストを取得する。例えばリクエストhttp://123.124.125.126/myInformation.htmlは、DNSサーバが解決して情報サーバに対して提供するIP部分“123.124.125.126”を有する。情報サーバは次に、httpリクエストをパースして“/myInformation.html”部分を取得し、“myInformation.html”を含むメモリ位置を特定する。その他情報提供プロトコルを様々なポートで用いることもできる。例えばポート21のFTP通信などである。情報サーバは、コンポーネントコレクションの他コンポーネントと通信する。情報サーバは、MRMデータベース419、OS、他プログラムコンポーネント、ユーザインターフェース、Webブラウザ、などと通信する。
MRMデータベースに対するアクセスは、データベースブリッジメカニズムを介して実現することができる。例えば以下に列挙するスクリプト言語(例えばCGI)や、以下に列挙するアプリケーション間通信チャネル(例えばCORBA、WebObjectsなど)を用いることができる。Webブラウザを介したデータリクエストは、ブリッジメカニズムを介してパースされ、MRMが要求する適切な文法に変換される。1実施形態において情報サーバは、Webブラウザがアクセス可能なWebフォームを提供することができる。Webフォーム上で提供するフィールドに対する入力は、入力した旨をタグ付され、そのようにパースされる。入力された語句はフィールドタグとともに引き渡され、適当なテーブルおよび/またはフィールドへのクエリを生成するようパーサに対して指示する。1実施形態においてパーサは、タグ付けされたテキスト入力に基づき適当なjoin/selectコマンドを含む検索文字列を有する標準SQLクエリを生成する。得られたコマンドは、ブリッジメカニズムを通じてMRMに対してクエリとして提供される。クエリから結果を生成するとき、その結果はブリッジメカニズムを介して引き渡され、ブリッジメカニズムは整形パースして新たな結果Webページを生成する。新たな結果Webページは情報サーバに対して提供され、情報サーバはこれをリクエスト元のWebブラウザへ提供する。
情報サーバは、プログラムコンポーネント、システム、ユーザ、および/またはデータ通信、リクエスト、および/またはレスポンスを、含み、通信し、生成し、取得し、および/または提供する。
<ユーザインターフェース>
コンピュータインターフェースは、自動車操作インターフェースに似ている。ステアリングホイール、ギアシフト、スピードメータなどの自動車操作インターフェース要素は、自動車リソースとステータスに対してアクセスし、操作し、表示する。チェックボックス、カーソル、メニュー、スクローラ、ウィンドウ(まとめてウィジェット)などのコンピュータ操作インターフェース要素も同様に、データ、コンピュータハードウェア、OSリソース、ステータスに対するアクセス、性能、操作、表示を実施する。操作インターフェースは一般にユーザインターフェースと呼ばれる。グラフィカルユーザインターフェース(GUI)は、基本機能および情報にアクセスしグラフィカル表示する手段をユーザに対して提供する。GUIの例は以下である:Apple Macintosh Operating System AquaとiOS Cocoa Touch、IBM OS/2、Google Android Mobile UI、Microsoft Windows 2000/2003/3.1/95/98/CE/Millenium/ Mobile/NT/XP/Vista/7/8(すなわちAero、Metro)、 Unix X−Windows(例えば、以下のようなUnixグラフィックインターフェースライブラリを含む:K Desktop Environment(KDE)、mythTV、GNU Network Object Model Environment(GNOME))、webインターフェースライブラリ(例えばActiveX、AJAX、(D)HTML、FLASH、Java、JavaScriptなど、以下のようなインターフェースライブラリ(ただしこれらに限らない):Dojo、jQuery(UI)、MooTools、Prototype、script.aculo.us、SWFObject、Yahoo! User Interface)。
ユーザインターフェースコンポーネント417は、CPUが実行するプログラムコンポーネントである。ユーザインターフェースは、OSおよび/または上記動作環境が提供し、これらとともに提供され、および/またはこれら上に提供されるグラフィックユーザインターフェースである。ユーザインターフェースは、テキストおよび/またはグラフィカル機能を介して、プログラムコンポーネントおよび/またはシステム機能を表示し、実行し、相互やり取りし、操作し、および/または動作させる。ユーザインターフェースは、ユーザがコンピュータシステムに接触し、やり取りし、および/または操作する機能を提供する。ユーザインターフェースは、コンポーネントコレクションの他コンポーネントと通信する。ユーザインターフェースは、OS、他プログラムコンポーネント、などと通信する。ユーザインターフェースは、プログラムコンポーネント、システム、ユーザ、および/またはデータ通信、リクエスト、および/またはレスポンスを、含み、通信し、生成し、取得し、および/または提供する。
<Webブラウザ>
Webブラウザコンポーネント418は、CPUが実行するプログラムコンポーネントである。Webブラウザは、ハイパーテキストを見るアプリケーションであり、例えば以下のようなものである:Google (Mobile)Chrome、Microsoft Internet Explorer、Netscape Navigator、Apple (Mobile)Safari、Apple Cocoa(Touch)オブジェクトクラスなどの組込webブラウザオブジェクト、など。128ビット(またはそれ以上)暗号をHTTPS、SSLなどにより提供し、セキュアWebブラウズを実施することができる。Webブラウザは、以下のような機能を介してプログラムコンポーネントを実行する:ActiveX、AJAX、(D)HTML、FLASH、Java、JavaScript、webブラウザプラグインAPI(例えばChrome、FireFox、Internet Explorer、Safari Plug−in、などのAPI)、など。Webブラウザおよび同様の情報アクセスツールは、PDA、携帯電話、スマートフォン、および/またはモバイルデバイスに統合することができる。Webブラウザは、コンポーネントコレクションの他コンポーネントと通信することができる。Webブラウザは、情報サーバ、OS、統合プログラムコンポーネント(例えばプラグイン)などと通信する。Webブラウザは、プログラムコンポーネント、システム、ユーザ、および/またはデータ通信、リクエスト、および/またはレスポンスを、含み、通信し、生成し、取得し、および/または提供する。Webブラウザと情報サーバに代えて、組み合わせアプリケーションを開発し、これら双方と同様の動作を実施することもできる。組み合わせアプリケーションは同様に、MRM実装ノードからユーザやユーザエージェントに対して情報取得または提供を実施する。組み合わせアプリケーションは、標準Webブラウザを採用したシステムにとっては無用である。
<メールサーバ>
メールサーバコンポーネント421は、CPU403が実行するプログラムコンポーネントである。メールサーバは、以下のようなインターネットメールサーバであるが、これらに限らない:Apple Mail Server(3)、dovecot、sendmail、Microsoft Exchange、など。メールサーバにより、以下のような機能を介してプログラムコンポーネントを実行することができる:ASP、ActiveX、(ANSI)(Objective−)C(++)、C#、および/または.NET、CGIスクリプト、Java、JavaScript、PERL、PHP、パイプ、Python、WebObjects、など。メールサーバは、以下のような通信プロトコルをサポートするが、これらに限らない:Internet message access protocol(IMAP)、Messaging Application Programming Interface(MAPI)/Microsoft Exchange、post office protocol(POP3)、simple mail transfer protocol(SMTP)、など。メールサーバは、MRMに対して送信され、リレーされ、および/または通過する発着メールメッセージをルーティングし、転送し、処理する。
MRMメールへのアクセスは、個々のWebサーバコンポーネントおよび/またはOSが提供するAPIを通じて実現できる。
メールサーバは、プログラムコンポーネント、システム、ユーザ、および/またはデータ通信、リクエスト、および/またはレスポンスを、含み、通信し、生成し、取得し、および/または提供する。
<メールクライアント>
メールクライアントコンポーネント422は、CPU403が実行するプログラムコンポーネントである。メールクライアントは、以下のようなメールを見るアプリケーションである:Apple(Mobile)Mail、Microsoft Entourage、Microsoft Outlook、Microsoft Outlook Express、Mozilla、Thunderbird、など。メールクライアントは、以下のような通信プロトコルをサポートする:IMAP、Microsoft Exchange、POP3、SMTP、など。メールクライアントは、コンポーネントコレクションの他コンポーネントと通信することができる。メールクライアントは、メールサーバ、OS、他メールクライアントなどと通信する。メールクライアントは、プログラムコンポーネント、システム、ユーザ、および/またはデータ通信、リクエスト、および/またはレスポンスを、含み、通信し、生成し、取得し、および/または提供する。一般にメールクライアントは、電子メールメッセージを編集し送信する機能を提供する。
<暗号サーバ>
暗号サーバコンポーネント420は、CPU403、暗号プロセッサ426、暗号プロセッサインターフェース427、暗号プロセッサデバイス428などが実行するプログラムコンポーネントである。暗号プロセッサインターフェースにより、暗号コンポーネントは暗号および/または復号リクエストを実行する。ただし暗号コンポーネントはこれに代えて、CPU上で動作することもできる。暗号コンポーネントにより、提供されたデータを暗号化しおよび/または復号化する。暗号コンポーネントにより、対称/非対称(例えばPretty Good Protection(PGP))暗号および/または復号を実施することができる。暗号コンポーネントは、以下のような暗号技術を採用できるが、これらに限らない:デジタル証明書(例えばX.509認証フレームワーク)、デジタル署名、デュアル署名、enveloping、パスワードアクセス保護、公開鍵管理、など。暗号コンポーネントにより、以下のようなセキュリティプロトコル(暗号化および/または復号化)を実施することができるが、これらに限らない:checksum、Data Encryption Standard(DES)、Elliptical Curve Encryption(ECC)、International Data Encryption Algorithm(IDEA)、Message Digest 5(MD5、1方向ハッシュ)、パスワード、Rivest Cipher(RC5)、Rijndael、RSA(1966年にRon Rivest、Adi Shamir、Leonard Adlemanが開発したアルゴリズムを用いるインターネット暗号および認証システム)、Secure Hash Algorithm(SHA)、Secure Socket Layer(SSL)、Secure Hypertext Transfer Protocol(HTTPS)、など。これら暗号セキュリティプロトコルを用いて、MRMは全ての発着通信を暗号化し、より広い通信ネットワークを有する仮想プライベートネットワーク(VPN)内のノードとして動作する。暗号コンポーネントは、“セキュリティ認証”プロセスを実施し、ソースに対するアクセスはセキュリティプロトコルによって禁止される。暗号コンポーネントは、セキュアリソースに対するアクセス認証を実施する。また暗号コンポーネントは、コンテンツのユニークIDを提供する。例えばMD5ハッシュを採用してデジタルオーディオファイルのユニークIDを取得する。暗号コンポーネントは、ンポーネントコレクションの他コンポーネントと通信することができる。暗号コンポーネントは、通信ネットワーク上で情報を安全に送信する暗号方式をサポートし、MRMコンポーネントはこれによりセキュア通信を実施できる。暗号コンポーネントは、MRM上のリソースに対するセキュアアクセスを実現し、リモートシステム上のリソースに対するセキュアアクセスを実現する。すなわち、セキュアリソースのクライアントおよび/またはサーバとして動作する。暗号コンポーネントは、情報サーバ、OS,他プログラムコンポーネントなどと通信する。暗号コンポーネントは、プログラムコンポーネント、システム、ユーザ、および/またはデータ通信、リクエスト、および/またはレスポンスを、含み、通信し、生成し、取得し、および/または提供する。
<MRMデータベース>
MRMデータベースコンポーネント419は、データベースとそのデータ内に実装することができる。データベースはプログラムコンポーネントであり、CPUが実行する。プログラムコンポーネントは、格納されているデータをCPUに処理させる。データベースは、任意個数のフォールトトレラント、関係、スケーラブル、セキュアデータベースであり、例えばDB2、MySQL、Oracle、Sybaseなどである。関係データベースは、フラットファイルの拡張である。関係データベースは、関係テーブルによって構成される。テーブルは、キーフィールドによって相互接続される。キーフィールドを用いて、キーフィールドに対してインデックスすることにより、テーブルを組み合わせることができる。キーフィールドは、複数のテーブルからの情報を組み合わせる次元ピボットポイントとして動作する。関係は一般に、プライマリキーをマッチングすることにより、テーブル間で維持されたリンクを識別する。プライマリキーは、関係データベース内のテーブルの行を一意に識別するフィールドを表す。より正確には、プライマリキーは1:多関係における“一方の”テーブルの行を一意に識別する。
これに代えてMRMデータベースは、様々な標準データ構造を用いて実装することができる。例えば、アレイ、ハッシュ(リンク)リスト、構造、構造化テキストファイル(例えばXML)、テーブル、などである。このデータ構造は、メモリおよび/または(構造化)ファイルに格納することができる。他実施例において、オブジェクト指向データベースを用いることもできる。例えばFrontier、ObjectStore、Poet、Zopeなどである。オブジェクトデータベースは、共通属性によりグループ化されおよび/またはリンクされたオブジェクトコレクションを含む。オブジェクトコレクションは、共通属性により他オブジェクトコレクションに関連付けることができる。オブジェクト指向データベースは、関係データベースと同様に動作する。ただし、オブジェクトは単なるデータではなくそのオブジェクトにカプセル化された機能タイプを有する点を除く。MRMデータベースがデータ構造として実装されている場合、MRMデータベース419をMRMコンポーネント435などの他コンポーネントと統合して用いることができる。またデータベースは、データ構造、オブジェクト、関係構造の組み合わせとして実装することができる。データベースは、標準データ処理技術を通じて様々なバリエーションで統合しおよび/または分散させることができる。データベースの一部(例えばテーブル)は、エクスポートおよび/またはインポートすることができ、よって分割および/または統合することができる。
1実施形態において、データベースコンポーネント419は、複数のテーブル419a−eを含む。ユーザテーブル419aは、以下のようなフィールドを含むが、これらに限らない:user_id、ssn、dob、first_name、last_name、age、state、address_firstline、address_secondline、zipcode、devices_list、contact_info、contact_type、alt_contact_info、alt_contact_type、など。ユーザテーブルは、MRM上の複数要素のアカウントをサポートおよび/またはトラッキングする。クライアントテーブル419bは、以下のようなフィールドを含むが、これに限らない:device_ID、device_name、device_IP、device_MAC、device_type、device_model、device_version、device_OS、device_apps_list、device_securekey、など。アプリケーションテーブル419cは、以下のようなフィールドを含むが、これに限らない:application_ID、application_name、application_type、application_backup_list、application_sync、など。メッセージテーブル419dは、以下のようなフィールドを含むが、これに限らない:msg_id、msg_application、timestamp、msg_details_list、message_size、message_origin、msg_journal、msg_read_detail、など。ジャーナルテーブル419eは、以下のようなフィールドを含むが、これに限らない:journal_ID、journal_timestamp、msg_source、journal_access_apps、segmented_msg_list、など。
1実施形態において、MRMデータベースは他データベースシステムと通信する。例えばMRMコンポーネントが分散データベース、クエリ、データアクセスを採用すると、MRMデータベースの組み合わせを単一データベースの統合データセキュリティレイヤとして取り扱うことができる。
1実施形態において、ユーザプログラムは様々なユーザインターフェースを含むことができる。これらはMRMを更新することができる。またアカウントは、環境やMRMがサービスを提供する必要があるクライアントタイプに応じて、カスタムデータベーステーブルを必要とする場合がある。ユニークフィールドは、キーフィールドとして指定することができる。代替実施形態において、これらテーブルは自身のデータベースおよびデータベースコントローラ(すなわち各テーブルのデータベースコントローラ)に分離することができる。標準データ処理技術を用いて、いずれかをさらに複数のコンピュータシステムおよび/またはストレージデバイスに分散することができる。同様に分散データベースコントローラの構成は、データベースコンポーネント419a−eを統合しおよび/または分散させることにより、変更することができる。MRMは、データベースコントローラを介して、様々な設定、入力、パラメータをトラッキングするように構成することができる。
MRMデータベースは、コンポーネントコレクションの他コンポーネントと通信することができる。MRMデータベースは、MRMコンポーネント、他プログラムコンポーネント、などと通信することができる。データベースは、他ノードおよびデータに関する情報を含み、保持し、提供することができる。
<MRM>
MRMコンポーネント435は、CPUが実行するプログラムコンポーネントである。1実施形態において、MRMコンポーネントは先の図面で説明したMRM機能の任意および/または全組み合わせを備えることができる。MRMは通信ネットワークを介して、情報、サービス、トランザクションにアクセスし、取得し、提供することができる。
MRMコンポーネントは、MRMコンポーネントを介して変換し、MRMを用いる。1実施形態においてMRMコンポーネント435は、入力を受け取り(例えば完全メッセージジャーナル201と301など)、MRMコンポーネントを介してその入力を出力へ変換する(例えば完全メッセージジャーナルのコピー202〜204;完全メッセージのセグメントを含むジャーナル302〜304、など)。
ノード間の情報アクセスを可能にするMRMコンポーネントは、標準開発ツールおよび言語により開発することができる。例えば以下を含むがこれらに限らない:Apacheコンポーネント、アセンブリ、ActiveX、バイナリ実行ファイル、(ANSI)(Objective−)C(++),C#、および/または.NET、データベースアダプタ、CGIスクリプト、Java,JavaScript、マッピングツール、手続型およびオブジェクト指向開発ツール、PERL,PHP,Python、シェルスクリプト、SQLコマンド、webアプリケーションサーバ拡張、web開発環境およびライブラリ(例えばMicrosoft ActiveX、Adobe AIR、FLEX&FLASH;AJAX;(D)HTML;Dojo、Java;JavaScript;jQuery(UI);MooTools;Prototype;script.aculo.us;Simple Object Access Protocol(SOAP);SWFObject;Yahoo! User Interface;など)、WebObjects、など。1実施形態において、MRMサーバは暗号サーバを採用し、通信を暗号化および復号化する。MRMコンポーネントは、コンポーネントコレクションの他コンポーネントなどと通信する。MRMコンポーネントは、MRMデータベース、OS、他プログラムコンポーネント、などと通信する。MRMは、プログラムコンポーネント、システム、ユーザ、および/またはデータ通信、リクエスト、および/またはレスポンスを含み、通信し、生成し、取得し、および/または提供する。
<分散MRM>
MRMノードコントローラコンポーネントの構造および/または動作は、任意の方法で組み合わせ、連結し、および/または分散させて、開発および/または配置を進めることができる。同様にコンポーネントコレクションは、任意の方法で組み合わせて、配置および/または開発を進めることができる。これを実現するため、コンポーネントを共通コードベースに統合し、またはオンデマンドでコンポーネントを動的に読みだして統合することができる。
コンポーネントコレクションは、標準データ処理および/または開発技術を介して、様々な態様で統合しおよび/または分散させることができる。プログラムコンポーネントコレクション内のプログラムコンポーネントの複数のインスタンスは、単一ノード上および/または複数ノードにまたがってインスタンス化し、ロードバランスおよび/またはデータ処理技術を通じてパフォーマンスを向上させることができる。さらに単一インスタンスを複数コントローラおよび/またはストレージデバイス(例えばデータベース)に分散させることができる。全てのプログラムコンポーネントインスタンスおよび連動するコントローラは、標準データ処理通信技術を介してこれを実施できる。
MRMコントローラの構成は、システム配置に依拠する。予算、性能、位置、および/またはハードウェアリソースなどの要因は、配置要件と構成に影響する。構成が(i)より統合されおよび/または統合プログラムコンポーネントになるか否かによらず、(ii)より分散したプログラムコンポーネントになるか否かによらず、および/または(iii)統合コンポーネントと分散コンポーネントの組み合わせになるか否かによらず、データを通信し、取得し、および/または提供することができる。プログラムコンポーネントコレクションから共通コードベースへ統合したコンポーネントのインスタンスは、データを通信し、取得し、および/または提供することができる。これはアプリケーション内データ処理通信技術を通じて実現できる。例えば以下のようなものであるが、これに限らない:データ参照(例えばポインタ)、内部メッセージング、オブジェクトインスタンス変数通信、共有メモリ空間、変数引き渡し、など。
コンポーネントコレクションコンポーネントが離散し、分割され、および/または互いに外部コンポーネントである場合、他コンポーネントに対するデータ通信、取得、および/または提供は、アプリケーション間データ処理通信技術を介して実現できる。例えば以下を含むがこれに限らない:Application Program Interface(API)情報引き渡し;(Distributed)Component Object Model((D)COM)、(Distributed)Object Linking and Embedding((D)OLE)、など)、Common Object Request Broker Architecture(CORBA)、Jini local and remote application program interface、JavaScript Object Notation(JSON)、Remote Method Invocation(RMI)、SOAP、プロセスパイプ、共有ファイル、など。アプリケーション間通信または単一コンポーネントのメモリ空間内でアプリケーション間通信として分離コンポーネント間で送信されたメッセージは、文法を生成しパースすることにより実施される。文法は、lex、yacc、XMLなどの開発ツールを用いて開発できる。これにより、文法生成とパース機能を実現し、コンポーネント間の通信メッセージの基盤を形成することができる。
例えば文法は、以下のようなHTTP postコマンドのトークンを認識するように、構成することができる:
w3c −post http://...Value1
Value1はパラメータとして認識される。“http://”は文法シンタックスの一部であり、その後はpost値とみなすことができるからである。同様にこの文法において、変数“Value1”を“http://”postコマンドに挿入して送信することができる。文法シンタックスそのものは、構造化データとして提示することができる。この構造化データを解釈および/または用いて、パースメカニズムを生成することができる(例えばlex、yaccなどが処理するシンタックス記述テキストファイル)。パースメカニズムを生成および/またはインスタンス化すると、パースメカニズムは構造化データを処理し、および/またはパースする。構造化データは例えば以下のようなものであり、これらに限らない:文字(例えばタブ)区切りテキスト、HTML、構造化テキストストリーム、XML、など。別実施形態において、アプリケーション間処理プロトコル自身が、統合されたおよび/または容易に利用できるパーサ(例えばJSON,SOAPなどのパーサ)を備え、これらを用いてデータをパース(例えば通信)できる。さらにパース文法は、メッセージパースに用いることもできるし、以下のようなもののパースに用いることもできる:データベース、データコレクション、データストア、構造化データ、など。所望する構成は、コンテキスト、環境、システム配置要件に依拠する。
例えば実施例において、MRMコントローラはPHPスクリプトを実行する。PHPスクリプトは、情報サーバを通じてSecure Socket Layer(SSL)ソケットサーバを実装する。情報サーバは、クライアントがデータを送信するサーバポート上で到着する通信を待ち受ける。フォーマットは例えばJSON形式である。到着した通信を識別すると、PHPスクリプトはクライアントデバイスから到着メッセージを読み取り、JSONエンコードされたテキストデータをパースし、JSONエンコードされたテキストデータから情報を抽出してPHPスクリプト変数に格納し、そのデータ(例えばクライアント識別情報など)を保存、および/または抽出された情報は関係データベースに格納されStructured Query Language(SQL)を用いてアクセスできる。PHP/SQLコマンドの形式で記述され、JSONエンコード入力データをクライアントデバイスからSSL経由で受け取り、そのデータを抽出して変数に格納し、データベースに格納するプログラムリストを、以下に示す:
Figure 0006523319
以下のリソースを用いて、SOAPパーサに関する実施形態を提供することができる:
http://www.xav.com/perl/site/lib/SOAP/Parser.html
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=/com.ibm.IBMDI.doc/referenceguide295.htm
他のパーサ実施例は以下である:
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=/com.ibm.IBMDI.doc/referenceguide259.htm
これら全ては、参照により本願に組み込まれる。
様々な課題を解決し技術を進めるため、本願(カバーページ、タイトル、ヘッダ、フィールド、背景技術、概要、図面の簡単な説明、発明を実施するための形態、特許請求の範囲、要約、図面、付録、など)は、特許請求する発明を実施する様々な形態を説明するためのものである。本願の利点および機能は、実施形態の代表例のみを示しており、それ以外を排除するものではない。これらは特許請求範囲の原理の理解を促し教示するためのみのものである。これらは特許請求する発明の全てを表しているものではないことを理解されたい。よって本発明の一部は本明細書には記載されていない。本発明の特定部分の代替実施形態は記載していない場合もあり、その代替実施形態は特許請求範囲から除外されたものと解釈すべきではない。それら実施形態は本発明と同じ原理を備え、等価なものである。よって、その他実施形態を利用でき、本発明の範囲および/または原理から逸脱することなく機能的、論理的、動作的、組織的、構造的、および/またはトポロジー的変更が可能であることを理解されたい。全ての実施例および/または実施形態は、本明細書全体を通じて非限定的なものである。記載していない実施形態は、スペースと繰り返しを避けるため以外のものとしてみなすべきではない。例えば、図面などに記載したデータフローシーケンス、プログラムコンポーネント(コンポーネントコレクション)、他コンポーネント、および/または機能セットの組み合わせの論理および/またはトポロジー構造は、固定された動作順序および/または配置に限定されるものではない。むしろ説明した順序は例示であり、等価で順序に関係しないものも本開示に含まれると解釈すべきである。さらに、これら機能は順次実行のみに限定されるものではなく、非同期、一斉、平行、同時、同期、などで実行する任意個数のスレッド、プロセス、プロセッサ、サービス、サーバ、なども本開示の範囲内であることを理解されたい。単一実施形態において同時に存在できない場合、これら機能は相互矛盾することもある。同様に機能のなかには、本発明の1側面に対して適用できるものもあり、他側面に対して適用できないものもある。また本開示は、特許請求していない他の発明を含む場合がある。出願人は、それら特許請求していない発明の全権利を留保する。これは、その発明を特許請求し、別出願し、継続出願し、一部継続出願し、および/または分割出願する権利を含む。本発明の利点、実施形態、実施例、機能、特徴、論理、動作、組織、構造、トポロジーに関する側面は、特許請求範囲が定義する本発明の限定、または特許請求範囲の等価物に対する限定とみなすべきではないことを理解されたい。MRMのニーズおよび/または特徴に応じて、個人および/または企業ユーザ、データベース構成および/または関係モデル、データタイプ、データ通信および/またはネットワークフレームワーク、シンタックス構造、すなわちMRMの実施形態は、柔軟にカスタマイズ実装できることを理解されたい。例えばMRMの側面は、データネットワーク帯域幅管理に合わせることができる。MRMの様々な実施形態は電子取引プラットフォームに関するものであるが、本実施形態はさまざまな他のオークションベースシステム、アプリケーション、および/または実装のために容易に構成および/またはカスタマイズできることを理解されたい。

Claims (19)

  1. コンピュータシステムにおける高速メッセージ再送信方法であって、
    前記コンピュータシステムの記憶媒体において、アプリケーションまたは前記コンピュータシステムの動作中におけるプロセスが書き込んだ複数のメッセージから生成されたシーケンス付メッセージのマスタジャーナルを保持するステップであって、前記アプリケーションまたはプロセスの少なくとも1つのサブセットは適切に機能するため前記シーケンス付メッセージに対するアクセスを必要とする、ステップ、
    フェイルオーバする可能性のある前記アプリケーションまたはプロセスの少なくとも1つのサブセットによる前記シーケンス付メッセージに対するアクセスの要求を推定するステップ、
    前記要求の推定に基づき、前記マスタジャーナルのコンテンツを複製することにより、1以上のジャーナルコピーおよび/または1以上のジャーナルセグメントを生成するステップであって、単一のアプリケーションまたはプロセスは任意の時点において各前記ジャーナルコピーまたはジャーナルセグメントに対して個別にアクセスすることができる、ステップ、
    要求に応じて、フェイルオーバするかまたは前記シーケンス付メッセージにギャップがある前記アプリケーションまたはプロセスの少なくとも1つのサブセットに対して、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントを割り当てて、前記マスタジャーナルのコンテンツに対して複数のアプリケーションまたはプロセスが同時にアクセスできるようにし、これにより前記アプリケーションまたはプロセスが前記フェイルオーバまたは前記シーケンス付メッセージにギャップがある状態からのリカバリにおいて前記マスタジャーナル内の前記シーケンス付メッセージに対してアクセスする速度を速める、ステップ、
    を有することを特徴とする方法。
  2. 前記コンピュータシステムの動作中に前記アプリケーションまたはプロセスが書き込んだ前記複数のメッセージは、シーケンサによって前記シーケンス付メッセージへ変換される
    ことを特徴とする請求項1記載の方法。
  3. 前記シーケンサは、前記複数のシーケンス付メッセージを前記アプリケーションまたはプロセスに対して再発行する
    ことを特徴とする請求項2記載の方法。
  4. 前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントは、専用ソフトウェアまたはハードウェアモジュールによって生成される
    ことを特徴とする請求項1記載の方法。
  5. 前記方法はさらに、
    前記マスタジャーナルの更新されたコンテンツにより、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントのコンテンツを更新するステップを有する
    ことを特徴とする請求項1記載の方法。
  6. 前記方法はさらに、
    前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントのうちの1つのコンテンツを、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントのうちの他のコンテンツに基づき、更新または復元するステップを有する
    ことを特徴とする請求項1記載の方法。
  7. 前記方法はさらに、
    前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントを少なくとも第1ティアと第2ティアへ分割するステップ、
    他の第2ティアジャーナルコピー/セグメントまたは第1ティアジャーナルコピー/セグメントのみに基づき第2ティアジャーナルコピー/セグメントコンテンツを復元するステップ、
    を有することを特徴とする請求項1記載の方法。
  8. 前記コンピュータシステムは、電子取引システム、オークションベース販売システム、ゲームシステムを含むグループから選択されている
    ことを特徴とする請求項1記載の方法。
  9. 前記推定される要求は、
    既知または可能性のあるソフトウェア障害;
    既知または可能性のあるハードウェア障害;
    ソフトウェアまたはハードウェア障害に影響されるアプリケーションまたはプロセスの数;
    アプリケーションまたはプロセスが前記マスタジャーナル、ジャーナルコピー、またはジャーナルセグメント内のメッセージにアクセスする速度;
    障害アプリケーションまたはプロセスの所望リカバリ時間;
    前記コンピュータシステムの予想負荷;
    を含むグループから選択された1以上の要因に基づき判定される
    ことを特徴とする請求項1記載の方法。
  10. 高速メッセージ再送信を実装するコンピュータシステムであって、
    少なくとも1つのコンピュータプロセッサ、
    前記少なくとも1つのコンピュータプロセッサと通信できるように配置され、前記少なくとも1つのコンピュータプロセッサに処理を実施させるコンピュータ命令を格納する、少なくとも1つの記憶媒体、
    を備え、
    前記処理は、
    前記コンピュータシステムの前記少なくとも1つの記憶媒体において、アプリケーションまたは前記コンピュータシステムの動作中におけるプロセスが書き込んだ複数のメッセージから生成されたシーケンス付メッセージのマスタジャーナルを保持するステップであって、前記アプリケーションまたはプロセスの少なくとも1つのサブセットは適切に機能するため前記シーケンス付メッセージに対するアクセスを必要とする、ステップ
    フェイルオーバする可能性のある前記アプリケーションまたはプロセスの少なくとも1つのサブセットによる前記シーケンス付メッセージに対するアクセスの要求を推定するステップ、
    前記要求の推定に基づき、前記マスタジャーナルのコンテンツを複製することにより、1以上のジャーナルコピーおよび/または1以上のジャーナルセグメントを生成するステップであって、単一のアプリケーションまたはプロセスは任意の時点において各前記ジャーナルコピーまたはジャーナルセグメントに対して個別にアクセスすることができる、ステップ、
    要求に応じて、フェイルオーバするかまたは前記シーケンス付メッセージにギャップがある前記アプリケーションまたはプロセスの少なくとも1つのサブセットに対して、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントを割り当てて、前記マスタジャーナルのコンテンツに対して複数のアプリケーションまたはプロセスが同時にアクセスできるようにし、これにより前記アプリケーションまたはプロセスが前記フェイルオーバまたは前記シーケンス付メッセージにギャップがある状態からのリカバリにおいて前記マスタジャーナル内の前記シーケンス付メッセージに対してアクセスする速度を速める、ステップ、
    を有することを特徴とするコンピュータシステム。
  11. 前記コンピュータシステムの動作中に前記アプリケーションまたはプロセスが書き込んだ前記複数のメッセージは、シーケンサによって前記シーケンス付メッセージへ変換される
    ことを特徴とする請求項10記載のコンピュータシステム。
  12. 前記シーケンサは、前記複数のシーケンス付メッセージを前記アプリケーションまたはプロセスに対して再発行する
    ことを特徴とする請求項11記載のコンピュータシステム。
  13. 前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントは、専用ソフトウェアまたはハードウェアモジュールによって生成される
    ことを特徴とする請求項10記載のコンピュータシステム。
  14. 前記コンピュータシステムはさらに、
    前記マスタジャーナルの更新されたコンテンツにより、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントのコンテンツを更新するように構成されている
    ことを特徴とする請求項10記載のコンピュータシステム。
  15. 前記コンピュータシステムはさらに、
    前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントのうちの1つのコンテンツを、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントのうちの他のコンテンツに基づき、更新または復元するように構成されている
    ことを特徴とする請求項10記載のコンピュータシステム。
  16. 前記コンピュータシステムはさらに、
    前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントを少なくとも第1ティアと第2ティアへ分割し、
    他の第2ティアジャーナルコピー/セグメントまたは第1ティアジャーナルコピー/セグメントのみに基づき第2ティアジャーナルコピー/セグメントコンテンツを復元する
    ように構成されていることを特徴とする請求項10記載のコンピュータシステム。
  17. 前記コンピュータシステムは、電子取引システム、オークションベース販売システム、ゲームシステムを含むグループから選択されている
    ことを特徴とする請求項10記載のコンピュータシステム。
  18. 前記推定される要求は、
    既知または可能性のあるソフトウェア障害;
    既知または可能性のあるハードウェア障害;
    ソフトウェアまたはハードウェア障害に影響されるアプリケーションまたはプロセスの数;
    アプリケーションまたはプロセスが前記マスタジャーナル、ジャーナルコピー、またはジャーナルセグメント内のメッセージにアクセスする速度;
    障害アプリケーションまたはプロセスの所望リカバリ時間;
    前記コンピュータシステムの予想負荷;
    を含むグループから選択された1以上の要因に基づき判定される
    ことを特徴とする請求項10記載のコンピュータシステム。
  19. 実行することによりコンピュータシステムに高速メッセージ再送信を実装させるコンピュータ命令を有する不揮発性コンピュータ読取可能媒体であって、
    前記コンピュータシステムの記憶媒体において、アプリケーションまたは前記コンピュータシステムの動作中におけるプロセスが書き込んだ複数のメッセージから生成されたシーケンス付メッセージのマスタジャーナルを保持するステップであって、前記アプリケーションまたはプロセスの少なくとも1つのサブセットは適切に機能するため前記シーケンス付メッセージに対するアクセスを必要とする、ステップ、
    フェイルオーバする可能性のある前記アプリケーションまたはプロセスの少なくとも1つのサブセットによる前記シーケンス付メッセージに対するアクセスの要求を推定するステップ、
    前記要求の推定に基づき、前記マスタジャーナルのコンテンツを複製することにより、1以上のジャーナルコピーおよび/または1以上のジャーナルセグメントを生成するステップであって、単一のアプリケーションまたはプロセスは任意の時点において各前記ジャーナルコピーまたはジャーナルセグメントに対して個別にアクセスすることができる、ステップ、
    要求に応じて、フェイルオーバするかまたは前記シーケンス付メッセージにギャップがある前記アプリケーションまたはプロセスの少なくとも1つのサブセットに対して、前記1以上のジャーナルコピーおよび/または前記1以上のジャーナルセグメントを割り当てて、前記マスタジャーナルのコンテンツに対して複数のアプリケーションまたはプロセスが同時にアクセスできるようにし、これにより前記アプリケーションまたはプロセスが前記フェイルオーバまたは前記シーケンス付メッセージにギャップがある状態からのリカバリにおいて前記マスタジャーナル内の前記シーケンス付メッセージに対して高速にアクセスできるようにする、ステップ、
    のコードを有することを特徴とするコンピュータ読取可能媒体。
JP2016556798A 2014-03-11 2015-03-11 メッセージ再送信メカニズムの技術 Active JP6523319B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461951390P 2014-03-11 2014-03-11
US201461951364P 2014-03-11 2014-03-11
US61/951,364 2014-03-11
US61/951,390 2014-03-11
PCT/US2015/019912 WO2015138581A1 (en) 2014-03-11 2015-03-11 Techniques for message retransmission mechanism

Publications (2)

Publication Number Publication Date
JP2017513105A JP2017513105A (ja) 2017-05-25
JP6523319B2 true JP6523319B2 (ja) 2019-05-29

Family

ID=54072360

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016556798A Active JP6523319B2 (ja) 2014-03-11 2015-03-11 メッセージ再送信メカニズムの技術

Country Status (9)

Country Link
EP (1) EP3117336B1 (ja)
JP (1) JP6523319B2 (ja)
KR (1) KR102160850B1 (ja)
AU (1) AU2015229429B2 (ja)
BR (1) BR112016020974B1 (ja)
CA (1) CA2942355A1 (ja)
ES (1) ES2930670T3 (ja)
SG (1) SG11201607520WA (ja)
WO (1) WO2015138581A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760920A (zh) * 2020-08-20 2021-12-07 北京沃东天骏信息技术有限公司 一种数据同步方法、装置、电子设备和存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676580B2 (en) * 2003-03-27 2010-03-09 Microsoft Corporation Message delivery with configurable assurances and features between two endpoints
US7065589B2 (en) 2003-06-23 2006-06-20 Hitachi, Ltd. Three data center remote copy system with journaling
JP4699091B2 (ja) * 2005-05-31 2011-06-08 株式会社日立製作所 ディザスタリカバリ方法およびシステム
JP2007286860A (ja) * 2006-04-17 2007-11-01 Hitachi Ltd データ転送方法及び情報処理装置
CA2655880A1 (en) * 2006-06-19 2007-12-27 Liquid Computing Corporation Methods and systems for reliable data transmission using selective retransmission
US8706822B2 (en) * 2010-06-23 2014-04-22 Microsoft Corporation Delivering messages from message sources to subscribing recipients
FR2984642B1 (fr) * 2011-12-20 2014-01-31 Thales Sa Procede et systeme pour une retransmission optimisee d'un message dans un contexte de communication satellite

Also Published As

Publication number Publication date
EP3117336B1 (en) 2022-09-28
EP3117336A1 (en) 2017-01-18
KR102160850B1 (ko) 2020-09-28
ES2930670T3 (es) 2022-12-21
KR20160132433A (ko) 2016-11-18
AU2015229429A1 (en) 2016-09-29
BR112016020974B1 (pt) 2023-02-07
WO2015138581A1 (en) 2015-09-17
JP2017513105A (ja) 2017-05-25
SG11201607520WA (en) 2016-10-28
EP3117336A4 (en) 2018-02-28
AU2015229429B2 (en) 2019-04-04
BR112016020974A2 (ja) 2017-08-15
CA2942355A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
US10515057B2 (en) Management of data replication and storage apparatuses, methods and systems
US10963400B2 (en) Smart contract creation and monitoring for event identification in a blockchain
US11449787B2 (en) Double blind machine learning insight interface apparatuses, methods and systems
US20200057669A1 (en) Prioritization and Source-Nonspecific Based Virtual Machine Recovery Apparatuses, Methods and Systems
EP3167598B1 (en) Remote embedded device update platform apparatuses, methods and systems
CN109087101B (zh) 交易校验方法、装置、存储介质及电子设备
US20200159625A1 (en) Prioritization and Source-Nonspecific Based Virtual Machine Recovery Apparatuses, Methods and Systems
US20200111080A1 (en) Security Secret Interface and Token Wrap Structure Apparatuses, Methods and Systems
US9256657B1 (en) Tracking data communicated between services
US9547565B2 (en) Techniques for message retransmission mechanism
US20230052935A1 (en) Asynchronous accounting method and apparatus for blockchain, medium and electronic device
CN113505520A (zh) 用于支持异构联邦学习的方法、装置和系统
US11238757B2 (en) Shifting substitution cipher based efficient vaultless data tokenization apparatuses, methods and systems
CN111338834A (zh) 数据存储方法和装置
JP6523319B2 (ja) メッセージ再送信メカニズムの技術
CN111046010A (zh) 日志储存方法、装置、系统、电子设备和计算机可读介质
WO2023061329A1 (zh) 应用于计算机集群的通信方法及通信装置
CN115374098A (zh) 高并发支付订单防重方法、装置、系统、设备、介质和程序产品
KR102250613B1 (ko) 데이터 동기화 및 페일오버 관리를 위한 시스템들 및 방법들
US20210312546A1 (en) Secret Key-Based Counterparty Matching Engine Apparatuses, Methods and Systems
CN114328731A (zh) 信息处理方法、装置、电子设备和存储介质
JP7305898B2 (ja) 操作応答方法、操作応答装置、電子機器及び記憶媒体
WO2023239816A1 (en) Fleetwide adaptive rate limiting gatekeeper apparatuses, processes and systems
JP2013182430A (ja) レプリケーションシステム、情報処理装置、レプリケーション方法

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20170425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20170425

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190425

R150 Certificate of patent or registration of utility model

Ref document number: 6523319

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250