JP2014531072A - 多数のデバイスへのイベントの配信 - Google Patents

多数のデバイスへのイベントの配信 Download PDF

Info

Publication number
JP2014531072A
JP2014531072A JP2014529929A JP2014529929A JP2014531072A JP 2014531072 A JP2014531072 A JP 2014531072A JP 2014529929 A JP2014529929 A JP 2014529929A JP 2014529929 A JP2014529929 A JP 2014529929A JP 2014531072 A JP2014531072 A JP 2014531072A
Authority
JP
Japan
Prior art keywords
event
transmission
consumers
distribution
routing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014529929A
Other languages
English (en)
Inventor
ヴァスターズ,クレメンス・フリードリッチ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014531072A publication Critical patent/JP2014531072A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1854Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1895Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for short real-time information, e.g. alarms, notifications, alerts, updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Operations Research (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

メッセージコピーおよびメッセージ待ち時間を最小限にすることができる方式で、多数のイベントコンシューマにイベントを配信する。方法は、イベントが特定のコンシューマの集合に送信されるべきかを決定することを含む。この方法はさらに、イベントをコピーし、個々のコピーを複数の配信区分に提供することを含む。この方法はさらに、それぞれの配信区分においてイベントのコピーを複数のルーティングスリップとまとめて複数の送信バンドルを作成することを含む。このルーティングスリップは、イベントの受信が意図される複数の個々のコンシューマを表す。方法はさらに、ルーティングスリップで指定された個々のコンシューマにイベントを配信する送信バンドルを用いることを含む。

Description

本願発明の一実施例は、例えば、多数のデバイスへのイベントの配信に関する。
[0001]コンピュータおよびコンピューティングシステムは、現代生活のほとんどすべての側面に影響を与えている。コンピュータは、仕事、レクリエーション、健康管理、運輸、エンターテイメント、家庭管理などに広く関わる。
[0002]さらに、コンピューティングシステムがネットワーク接続によって他のコンピューティングシステムと相互接続可能であることによって、コンピューティングシステムの機能性は拡大されることができる。ネットワーク接続は、限定はされないが、有線もしくは無線のイーサネットによる接続、セルラー式接続、またはシリアル、パラレル、USBもしくは他の接続によるコンピュータ間接続をも含んでよい。これらの接続は、コンピューティングシステムが他のコンピューティングシステムでのサービスにアクセスできるようにし、また、他のコンピューティングシステムから迅速かつ効率的にアプリケーションデータを受信できるようにする。
[0003]多くのコンピュータは、コンピュータとの直接のユーザ対話による使用が意図される。そのため、コンピュータは入力ハードウェアおよびソフトウェアユーザインターフェースを有して、ユーザ対話を容易にする。たとえば、ユーザがコンピュータにデータを入力できるようにするために、現代の汎用のコンピュータは、キーボード、マウス、タッチパッド、カメラなどを含んでよい。その上、さまざまなソフトウェアユーザインターフェースが利用可能である。
[0004]ソフトウェアユーザインターフェースの例としては、グラフィカルユーザインターフェース、テキストコマンドラインベースのユーザインターフェース、ファンクションキーまたはホットキーのユーザインターフェースなどを含む。
[0005]iOS、アンドロイド(Android)、ウィンドウズフォン(Windows Phone)、ウィンドウズ(Windows)などでモバイルアプリを構築する開発者を仮定すると、一般大衆が興味を持つニュース、世界の出来事に関する情報および事実、またはサッカー、フットボール、ホッケー、もしくは野球のリーグもしくはチームのスポーツファンのための情報および事実を配信して、これらのニュースや情報、事実を最新のものにすることに焦点を合わせる。これらのアプリケーション(および幅広い種類の他のアプリ)にとって、ファンのひいきのチームのスコアまたは世界で発生するある種のニュースイベントとして注意喚起または祝いの表示をする通知は、大きな差別化技法(differentiator)である。その差別化技法は通常、サーバインフラストラクチャの構築および管理を実行して供給者が提供する通知チャネルにそれらのイベントをプッシュ配信するが、これは最適化されたユーザ経験に焦点を合わせる多くのモバイルアプリケーション(「アプリ」)の開発者の技能範囲を超える。そして、彼らのアプリが非常に成功した場合、イベントを何万、さらには何十万ものデバイスにタイムリーな方式で配信することは非常に困難であるので、単純なサーバベースのソリューションはすぐに拡張性の上限に達する。
[0006]タイムリーであることは、この種の多くのアプリケーションにとって重要な価値のある問題であろう。たとえば、スポーツファンは、最新であることに関して言えば忍耐力をあまり持っていない。同様に、閾値に達する金融ポートフォリオの状況を見ている個人および機関、大きなオークションに参加している人々、または、自分達のフェイスブック上の仮想の農業領域が通過するハリケーンにまさに襲われようとしているプレイヤー達は、最新であることに関して言えば忍耐力をあまり持っていないことが多い。
[0007]AppleのiOS用Push Notification Services、Googleのアンドロイド用C2DMサービス、Microsoftのウィンドウズフォン用MPNSサービス、および他の多くのモバイルプラットフォームは、最大エネルギーを供給するデバイス(したがってバッテリ)の効率に何らかの形の最適化された共有の接続を提供し、アプリケーションがそれぞれのプラットフォームのプッシュ通知APIを介してその共有のチャネルを利用できるようにする。しかしながら、上述のとおり、これらのプラットフォームを用いて単一のイベントに基づく多数の通知を配信することは困難であり、かつ/または、大量のコンピューティングリソースを必要とする場合がある。
[0008]本明細書で主張する内容は、前述のような環境においてのみにおけるあらゆる不利を解決し、または前述のような環境においてのみ動作する実施形態に限定されるものではない。むしろこの背景は、本明細書において述べられるいくつかの実施形態が実施されることができる例示的な技術分野を説明するために提供されるにすぎない。
[0009]本明細書における一実施形態は、コンピューティング環境において実施されうる方法を対象とする。この方法は、メッセージコピーおよびメッセージ待ち時間を最小限にすることができる方式で多数のイベントコンシューマにイベントを配信するための動作を含む。この方法は、イベントが特定のコンシューマの集合に送信されるべきか決定することを含む。この方法はさらに、イベントをコピーし、個々のコピーを複数の配信区分に提供することを含む。この方法はさらに、それぞれの配信区分においてイベントのコピーを複数のルーティングスリップとまとめて複数の送信バンドルを作成することを含む。このルーティングスリップは、イベントの受信が意図される複数の個々のコンシューマを表す。方法はさらに、ルーティングスリップで指定された個々のコンシューマにイベントを配信する送信バンドルを用いることを含む。
[0010]本概要は、詳細な説明においてさらに後述される概念の選択を、単純化された形で紹介するために提供される。本概要は、主張される内容の重要な特徴または本質的な特徴を特定するよう意図されるものではなく、主張される内容の範囲を決定する助けとなるものとして使用されるよう意図されるものでもない。
[0011]さらなる特徴および利点は以下に続く説明に記述され、一部は説明から明白であり、または本明細書における教示の実施によって知ることができる。本発明の特徴および利点は、添付の特許請求の範囲において具体的に指摘される機器および組合せによって実現され、取得されうる。本発明の特徴は、後述する詳細および添付の特許請求の範囲からより充分に明らかになり、また、以下に記載の本発明の実施によって知ることができる。
[0012]上述その他の利点および特徴を得られる方法を説明するために、上記に簡潔に述べられた内容のさらに具体的な説明が、添付の図面に示される具体的な実施形態を参照することによりなされる。これらの図面は典型的な実施形態のみを表し、したがって、範囲が限定されるものと考えられるべきではないことが理解され、実施形態は、添付の図面を使用して、さらに具体的かつ詳細に記述され、説明される。
[0013]イベントデータ配信システムの例を示す図である。 [0014]イベントデータの取得および配信システムを示す図である。 [0015]イベントを配信する方法を示す図である。
[0016]本明細書で説明されるいくつかの実施形態はプッシュ通知機構を利用し、さらに通知管理および配信層をまず提供し、モバイルおよびデスクトップの開発者が、所定の規模で非常にタイムリーな配信特性を伴うこれらのプッシュ通知チャネルを利用できるようにする。
[0017]いくつかの実施形態は、カスケーディングおよび区分された配信による通知の同報通信、ならびに、個々の対象ごとの入口から出口までの通知の平均フロー時間を最小限にしつつメッセージコピーの数を最小限にし、かつ非常に多数の送信対象に拡大することができる送信システムを実行する方法を含んでよい。
[0018]いくつかの実施形態は、クライアントおよび第三者の序列を監視するシステムの目的で送信統計を収集し、データウェアハウスソリューションに流す方法を含んでよい。
[0019]いくつかの実施形態は、一時的または永続的な送信エラー状態のために一時的または永続的に対象をブラックリストに載せる方法を含んでよい。
[0020]基礎として、一実施形態のシステムは、ワシントン州レッドモンド(Redmond Washington)のMicrosoft Corporationから入手可能なWindows Azure Service Busにより提供されるパブリッシュ/サブスクライブのインフラストラクチャを使用するが、これはまた、さまざまな他のメッセージングシステムにおいて似たような形で存在する。このインフラストラクチャは、提示される方法の説明される実施を容易にする2つの機能を提供する。すなわち、トピックとキューである。
[0021]キューはメッセージの格納構造であり、メッセージが起こった順番に追加され(エンキューされ)、また、メッセージが追加されたのと同じ順番で取り出される(デキューされる)ようにする。メッセージは、任意の数の同時に存在するクライアントによって追加され、取り出されることができ、エンキュー側の負荷を平滑化することと、デキュー側のレシーバにかかる処理負荷のバランスをとることとを可能にする。キューはまた、メッセージがデキューされるときにエンティティがメッセージ上でロックを取得することを可能にし、いつメッセージが実際にキューから削除されるか、または取り出されたメッセージの処理が失敗した場合にメッセージをキューに戻すことができるかどうかに対する消費クライアントの明示制御を可能にする。
[0022]トピックは、キューのすべての特性を有する格納構造であるが、複数の同時に存在する「サブスクリプション」を可能にし、サブスクリプションはそれぞれ、一連のエンキューされたメッセージに対し、切り離された、選別された表示を可能にする。トピックのそれぞれのサブスクリプションは、サブスクリプションの関連したフィルタ条件(複数可)がメッセージに明確に一致するという条件で、エンキューされた各メッセージのコピーを得る。その結果、各サブスクリプションがすべてのメッセージに合致する単純な「パススルー」状況を有する10のサブスクリプションを備えるトピックにエンキューされたメッセージは、サブスクリプションごとに1つの、計10個のメッセージを得る。キューのようなサブスクリプションは、レシーバにかかる処理負荷のバランスをとる複数の同時に存在するコンシューマを有することができる。
[0023]別の基礎的な概念は「イベント」の概念であるが、基本的なパブリッシュ/サブスクライブのインフラストラクチャの観点から、これは単にメッセージである。一実施形態に照らして、イベントは、メッセージ本体およびメッセージプロパティの使用に影響する単純な制約の集合の影響を受ける。イベントのメッセージ本体は通常曖昧なデータブロックとして流れ、一実施形態によって考えられるあらゆるイベントデータは通常メッセージプロパティに流れるが、これはイベントを表すメッセージの一部であるキーと値のペアの集合である。
[0024]実施形態は、所与の入力イベントから、ある範囲に関連付けられた多数の「対象102」のそれぞれに情報のコピーを配信するように、また、対象102ごとに最短時間で配信するように構成されてよい。対象102は、ある第三者通知システム、またはあるネットワークアクセス可能な外部インフラストラクチャ、およびその通知システムまたはそのインフラストラクチャにアクセスするための補助データへのアダプタの識別子に結合されたデバイスまたはアプリケーションのアドレスを含んでよい。
[0025]いくつかの実施形態は、3つの異なる処理役割に分割されるアーキテクチャを含んでよく、以下で詳細に説明され、図1を参照することによって理解されることができる。図1において「1」とエリプシスと「n」とによって記されるように、処理役割はそれぞれ1つまたは複数の処理役割の段階を有することができる。それぞれの場合での「n」の使用は、処理役割に適用される他の場合とはそれぞれ異なると考えられるべきであることに留意すべきであり、つまり、処理役割はそれぞれ同じ数の段階を有する必要はない。「配信エンジン」112の役割は、イベントを受け取り、それらを対象102の群を含むルーティングスリップとバンドルする(たとえば図2のルーティングスリップ128−1を参照のこと)。「送信エンジン」108はこれらのバンドルを受け取り、対象102によって表されるネットワークロケーションへの送信のためのルーティングスリップを処理する。管理サービス142によって示される「管理役割」は外部APIを提供して対象102を管理し、また、送信エンジン108からの統計およびエラーデータを受け取り、かつそのデータを処理、記憶する役割を担う。
[0026]データフローは、イベントが配信用に提出される「配信トピック144」に固定される。提出されたイベントは、メッセージプロパティを用いて関連付けられる範囲を示すラベルを付けられる。これは、イベントと未加工のメッセージとを区別する前述の制約のひとつとなりうる。
[0027]図示された例における配信トピック144は、「配信区分120」ごとに1つのパススルー(フィルタ処理されていない)サブスクリプションを有する。「配信区分」は、所与の範囲の対象102の一部分に通知を配信、送信する役割を担う切り離されたリソースの集合である。配信トピックに送信される各イベントのコピーは、関連するサブスクリプションによって、同時に存在するように構成されたすべての配信区分が効率的に同時に利用することができ、配信ワークの並列化を可能にする。
[0028]区分化することによる並列化はタイムリーな配信を達成するのに役立つ。このことを理解するために、1000万の対象102を有する範囲を考察する。対象のデータが区分化されていない記憶装置に保持された場合、システムは単一の大きなデータベースの結果の集合を順々に横断しなければならず、または、結果の集合が同じ記憶装置の区分化クエリを用いて取得された場合、対象データを取得するためのスループットは少なくとも所与の記憶装置が面するネットワークゲートウェイのインフラストラクチャのスループット上限によって抑えられ、その結果、所与の結果の集合において説明記録が生じるのが非常に遅い対象102への通知の送信の送信待ち時間が不満足なものとなる可能性が高い。
[0029]そうではなく、1000万の対象102が、それぞれが1万の対象の記録を保持する1000の記憶装置にわたって配信され、それらの記憶装置が、ここで説明されるような区分の形でクエリを実行し結果を処理する専用の計算インフラストラクチャ(本明細書で説明される「配信エンジン122」および「送信エンジン108」)と組み合わされた場合、対象の説明の取得は、計算およびネットワークリソースの広範な集合にわたって並列化されることができ、配信される最初のイベントから最後のイベントまで計測された、すべてのイベントの配信についての時間差を著しく短縮させる。
[0030]配信区分の実際の数は技術的には限定されない。単一の区分から2つ以上の任意の数の区分まで及ぶことができる。
[0031]図示された例において、配信区分120用の「配信エンジン122」がイベント104を取得すると、まずイベントデータの大きさを計算し、次にルーティングスリップ128の大きさを計算するが、これはイベントの大きさと、基本的なメッセージングシステムの許容される最大のメッセージの大きさと大きさの絶対上限とのうちの小さい方との差分に基づいて算出することができる。イベントは、「ルーティングスリップ」のデータのための最小限の余裕があるように大きさが限定される。
[0032]ルーティングスリップ128は、対象102の説明を含むリストである。ルーティングスリップは、区分の記憶装置124に保持された対象102に対するイベントの範囲に一致する検索クエリを実行することによって配信エンジン122により作成され、イベントの範囲に一致するすべての対象102と、イベントデータのフィルタリング条件に基づく選択を狭めるさらなる条件の集合とを返す。実施形態は、それらのフィルタリング条件の中に、結果を現時点で有効とみなされるそれらの対象102に限定する時間窓条件を含んでよく、つまり、現在のUTC時間が対象の説明記録に含まれる開始/終了有効性時間窓内にあることを意味する。この機能はブラックリストに載せるために用いられ、本書で後述される。検索結果が横断されると、エンジンはイベント104のコピーを作成し、記憶装置124から取り出された対象の説明でルーティングスリップ128を最大限の大きさまで満たし、結果として生じたイベントとルーティングスリップとのバンドルを区分の「送信キュー130」にエンキューする。
[0033]ルーティングスリップの技術は、配信エンジン122から送信エンジン108(複数可)へのイベントのイベントフロー速度が、基本的なインフラストラクチャ上の実際のメッセージフロー速度より速くなることを確実にし、つまり、たとえば30の対象の説明がイベントデータと共にルーティングスリップ128にまとめられることができる場合、イベントと対象の組合せのフロー速度は、イベントと対象の組合せが直ちにメッセージにグループ化される場合より30倍速いことを意味する。
[0034]送信エンジン108は、送信キュー130からのイベントとルーティングスリップのバンドル126のコンシューマである。送信エンジン108の役割はこれらのバンドルをデキューすることであり、また、イベント104をルーティングスリップ128に列挙されたすべての宛先に送信することである。送信は通常、イベントメッセージを各対象インフラストラクチャによって理解される通知メッセージのフォーマットにするアダプタを介して生じる。たとえば、通知メッセージは、ウィンドウズ(登録商標)7フォン用のMPNSフォーマット、iOSデバイス用のAPN(Apple Push Notification)フォーマット、アンドロイドデバイス用のC2DM(Cloud To Device Messaging)フォーマット、デバイス上のブラウザ用のJSON(Java Script Object Notation)フォーマット、HTTP(Hyper Text Transfer Protocol)などで送信されることができる。
[0035]送信エンジン108は通常、独立した対象102にわたる送信を並列化し、対象インフラストラクチャによって強制される範囲を共有する対象102への送信を直列化する。後者の例として、送信エンジンの特定のアダプタは、特定の通知プラットフォーム上の特定の対象アプリケーションにおいて対象とされたすべてのイベントを単一のネットワーク接続によって送信するよう選択することができる。
[0036]配信エンジン122と送信エンジン108とは送信キュー130を用いて分離されて、送信エンジン108の独立したスケーリングを可能にし、また、送信の後退が配信クエリ/パッキング段階に逆流したり配信クエリ/パッキング段階を遮断したりすることがないようにする。
[0037]配信区分120はそれぞれ、送信キュー130を同時に監視する任意の数の送信エンジン段階を有してよい。送信キュー130の長さは、いくつの送信エンジンが同時に活動するかを決定するために用いることができる。キューの長さがある一定の閾値を超える場合、新しい送信エンジンの段階が区分120に追加されて、送信スループットを増大させることができる。
[0038]配信区分120および関連する配信エンジンと送信エンジンの段階は、大きな規模で最適な並列化を達成するために、実質的には限定のない方式で拡大されることができる。対象インフラストラクチャが100万のイベント要求を受信し並行した方式でデバイスに転送することができる場合、対象インフラストラクチャが負荷および所与の任意の送信割当の下で許可するのと同じくらいタイムリーに、すべての所望の対象102への送信のためのイベントサブミッションで対象インフラストラクチャを満たすことができる方法で、可能性としてはデータセンターにわたるネットワークインフラストラクチャおよびバンド幅を利用して、説明されたシステムはその送信インフラストラクチャにわたりイベントを配信することができる。
[0039]いくつかの実施形態においては、メッセージはそれぞれのインフラストラクチャのアダプタを介して対象102に送信されるので、システムはさまざまな統計情報項目に注目する。それらの中には、送信バンドルおよび任意の個々のメッセージの送信を受信することと実際の送信オペレーションの継続との間の継続の計測された期間がある。さらに、統計情報の一部は、送信が成功したか失敗したかに関する指標でもある。この情報は送信エンジン108の内部で収集され、範囲ごとおよび対象アプリケーションごとの平均値にロールアップされる。この「対象アプリケーション」は、統計ロールアップの特定の目的のために採用されるグループ化識別子である。計算された平均値は、確定された間隔で送信統計キュー146に送信される。このキューは、管理サービス142内でワーカー(またはワーカーの集合)によって排出され、管理サービス142はさまざまな目的のためにイベントデータをデータウェアハウスに提出する。これらの目的は、操作上の監視に加えて、イベントが送信されるテナントの序列および/または第三者自身の序列に関するテナントへの統計の開示を含んでよい。
[0040]送信エラーが検出されると、これらのエラーは一時的エラー状態と永続的エラー状態とに分類される。一時的エラー状態は、たとえば、システムが対象インフラストラクチャの送信点に到達することを許可しない、または対象インフラストラクチャが送信割当が一時的に到達したことを報告することを許可しない、というネットワークの障害を含んでよい。永続的エラー状態は、たとえば、対象インフラストラクチャに関する認証/承認エラー、または手動の介入がなければ修復することができない他のエラー、および対象インフラストラクチャが対象がもはや利用できないこと、または永続的な基礎でメッセージを受け取ることを望んでいないということを報告するエラー状態を含んでよい。分類されると、エラー報告は送信失敗キュー148に提出される。一時的エラー状態については、エラーは、エラー状態が解決されると予想されるまで絶対UTCタイムスタンプを含んでもよい。同時に、対象は、この送信エンジン段階による任意のさらなる局所的送信のための対象アダプタによって局所的にブラックリストに載せられる。ブラックリストは、タイムスタンプを含んでもよい。
[0041]送信失敗キュー148は、管理役割においてワーカー(またはワーカーの集合)によって排出される。永続的エラーは、管理役割がアクセスするそれぞれの配信区分の記憶装置124から各対象を即座に削除させることができる。「削除」は、記録が確かに取り除かれたこと、または代替的に、有効期間の「終了」タイムスタンプをエラーのタイムスタンプに設定することによって記録が単に検索クエリから見えないところに移動されることを意味することができる。一時的エラー状態は、エラーによって示される期間、対象を非活動化させることができる。非活動化は、対象の有効期間の開始を、エラー状態が修復されると予想されるエラーにおいて示されるタイムスタンプまで移動させることによって行うことができる。
[0042]次に図2を参照すると、代替の図が示される。既に示したとおり、実施形態は単一のイベントが複数の(多数の可能性がある)エンドユーザーに広がるメッセージファンアウトのシステムにおいて特に有用でありうる。図2には、そのような例が示される。図2は、多数の異なるソースからの情報が多数の異なる対象に送信される例を示す。いくつかの例において、単一のソースからの情報、または複数のソースから集約された情報が用いられて多数の対象に送信される単一のイベントを作成することができる。これは、いくつかの実施形態において、図2に示すファンアウトトポロジーを用いて達成されうる。
[0043]図2は、ソース116を示す。本明細書で後述されるように、実施形態は取得区分140を利用してよい。取得区分140はそれぞれ、多くのソース116を含んでよい。多数かつ多様なソース116である可能性もある。ソース116は情報を提供する。その情報は、たとえば、電子メール、テキストメッセージ、リアルタイムの株式相場、リアルタイムのスポーツスコア、ニュースの更新などを含んでよいが、これらに限定されない。
[0044]図2は、各区分が例示の取得エンジン118のような取得エンジンを含むことを示す。取得エンジン118はソース116から情報を収集し、その情報に基づいて、イベントを生成する。図2に示される例において、さまざまなソースを用いて取得エンジンによって生成されたものとして、多くのイベントが示される。例証のためにイベント104−1が用いられる。いくつかの実施形態では、本明細書でさらに解説されるように、イベント104−1は標準化されてもよい。取得エンジン118は、インターネットのようなネットワーク上のサービスであってよく、ネットワーク上でソース116から情報を収集する。
[0045]図2は、イベント104−1が配信トピック144に送信されることを示す。この配信トピック144は、多くの配信区分にイベントを広げる。配信区分120−1は、すべての配信区分のためのアナログとして用いられる。配信区分はそれぞれ、サブスクリプションによって表される多くのエンドユーザーまたはデバイスにサービスを提供する。配信区分によってサービスを提供されるサブスクリプションの数は、他の配信区分の場合の数と異なっていてよい。いくつかの実施形態では、区分によりサービスを提供されるサブスクリプションの数は、配信区分の容量によることができる。代替的または追加的に、配信区分は、エンドユーザーに論理的または地理的に近いことに基づいてユーザにサービスを提供するよう選択されてもよい。このことは、よりタイムリーな方式でエンドユーザーにアラートが送信されることを可能にする。
[0046]図示された例において、配信区分120−1は配信エンジン122−1を含む。配信エンジン122−1はデータベース124−1を参考にする。データベース124−1は、関連する送信対象102についての詳細を有するサブスクリプションについての情報を含む。特にデータベースは、対象102、対象102に使用されるアプリケーション、対象102のネットワークアドレス、対象102を用いるエンドユーザーのユーザ嗜好などのためのプラットフォームを説明する情報のような情報を含んでよい。データベース124−1の情報を用いて、配信エンジン122−1はバンドル126−1を構成し、ここでバンドル126−1はイベント104(または、少なくともイベント104からの情報)、および、イベント104−1からの情報が通知として送信される対象102の中から複数の対象102を識別するルーティングスリップ128−1を含む。次に、バンドル126−1はキュー130−1に配置される。
[0047]配信区分120−1は、多くの送信エンジンを含んでよい。送信エンジンは、キュー103−1からバンドルをデキューし、対象102に通知を送信する。たとえば、送信エンジン108−1は、キュー13−1からバンドル126−1を取り出し、ルーティングスリップ128−1内で識別された対象102にイベント104の情報を送信することができる。したがって、イベント104−1の情報を含む通知134は、さまざまな配信区分から対象102に、異なる対象102に適し、また個々の対象102に特有の、多くの異なるフォーマットで送信されることができる。このことは、送信システムによって多数の個別化された通知を運搬するのではなく、個々の対象102に合わせて個別化された個別化通知134が送信システムの周辺部で共通のイベント104−1から作成されることを可能にする。
[0048]ここで以下の議論は、実行されうる多くの方法および方法の動作について言及する。方法の動作はある順序で説明され、または特定の順序で生じるとおりにフローチャートで図示されることができるが、動作は実行されている動作より前に完了された他の動作によって決まるため、特に述べられない限り、または要求されない限り、特定の順序付けを要するものではない。
[0049]次に図3を参照すると、方法300が図示される。この方法は、コンピューティング環境で実施されてよい。方法は、メッセージコピーおよびメッセージ待ち時間を最小限にしうる方式で多数のイベントコンシューマにイベントを配信する動作を含む。方法は、イベントが特定のコンシューマの集合に送信されるべきであることを決定すること(動作302)を含む。たとえば、図2に示されるように、イベント104は1つまたは複数の対象102に送信される必要がありうる。
[0050]方法はさらに、イベントをコピーし、個々のコピーを複数の配信区分に提供すること(動作304)を含む。たとえば、図2に示されるように、イベントは、配信トピックで配信区分120−1および図示された他の配信区分のような多くの配信区分にコピーされる。
[0051]方法はさらに、各配信区分において、イベントのコピーを複数のルーティングスリップとまとめて複数の送信バンドルを作成すること(動作306)を含む。このルーティングスリップは、イベントの受信が意図される複数の個々のコンシューマを表すことができる。そのような送信バンドルの例は、図2の126−1で示される。
[0052]方法はさらに、ルーティングスリップで指定された個々のコンシューマにイベントを配信する送信バンドルを用いること(動作308)を含む。たとえば、図2に示されるように、送信エンジン108−1は、ルーティングスリップ128−1を用いてさまざまな対象102にイベント104を送信することができる。
[0053]方法300のいくつかの実施形態は、区分が区分の容量に基づいて決定される場合に実施されてよい。たとえば、送信区分によってイベントが配信される対象の数は、システムハードウェア、ネットワーク接続、電流負荷などの要因によって定められる容量によって決定されてよい。
[0054]方法300のいくつかの実施形態は、区分が場所によって決定される場合に実施されてよい。たとえば、区分120−1のような区分は、区分に地理的または論理的にごく接近した対象が割り当てられてよい。
[0055]方法300のいくつかの実施形態は、ルーティングスリップが個々のコンシューマにイベントを送信する方法について規則および制約を定める場合に実施されてよい。たとえば、ルーティングスリップは、コンシューマの特定のフィルタを含んでよい。一例において、コンシューマ(すなわち対象ユーザ)は、どのようなタイプのイベントを受け取り、または受け取らないかについての嗜好を定めてよい。この情報は、イベントを送信するか否かの決定を送信エンジンによって送信システムの周辺で行えるように、ルーティングスリップに含まれることができる。
[0056]代替または追加の実施形態では、ルーティングスリップは、ネットワーク位置の規則を定めることができる。たとえば、ルーティングスリップは特定の対象に達するネットワークパスを含んでよい。
[0057]代替または追加の実施形態では、ルーティングスリップは、セキュリティ資格情報を含んでよい。たとえば、セキュリティ資格は送信されるイベントに必要であるとしてよい。特に、イベントデータを提供するサーバと通信するときに、デバイス上のアプリケーションはセキュリティプロトコル情報を要求することができる。このセキュリティプロトコル情報は送信エンジン108−1によって含まれて、イベントが適切に送信されることを確実にすることができる。
[0058]代替または追加の実施形態では、ルーティングスリップは、未加工のイベントデータをコンシューマによって要求されるフォーマットにマッピングする規則を含んでよい。たとえば、イベントは一般形式であってよいが、ルーティングスリップは対象のためのプラットフォームを定めることができる。このことは、対象にイベントを送信する前に、送信エンジン108−1が、イベント104を定められたプラットフォームに適した特定のフォーマットにフォーマットすることができるようにする。
[0059]方法は、1つまたは複数のプロセッサおよびコンピュータメモリのようなコンピュータ読取可能媒体を含むコンピュータシステムによって実施されてよい。特に、コンピュータメモリは、1つまたは複数のプロセッサによって実行されるとき、実施形態に列挙される動作のようなさまざまな機能を実行させるコンピュータ実行可能命令を記憶することができる。
[0060]本発明の実施形態は、以下でより詳細に議論されるように、コンピュータハードウェアを含む特殊目的または汎用のコンピュータを備え、または利用してよい。本発明の範囲内の実施形態はまた、コンピュータ実行可能命令および/もしくはデータ構造を運搬し、または記憶する物理的および他のコンピュータ読取可能媒体を含む。このようなコンピュータ読取可能媒体は、汎用または特殊目的のコンピュータシステムによりアクセス可能な任意の利用可能な媒体でありうる。コンピュータ実行可能命令を記憶するコンピュータ読取可能媒体は、物理的ストレージ媒体である。コンピュータ実行可能命令を運搬するコンピュータ読取可能媒体は、伝送媒体である。したがって、限定ではなく例として、本発明の実施形態は、少なくとも2つの明らかに異なる種類のコンピュータ読取可能媒体、すなわち物理的コンピュータ読取可能ストレージ媒体と伝送コンピュータ読取可能媒体とを備えることができる。
[0061]物理的コンピュータ読取可能ストレージ媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスクストレージ(CD、DVDなど)、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、コンピュータ実行可能命令もしくはデータ構造の形で所望のプログラムコード手段を記憶するために用いることができ、汎用または特殊目的のコンピュータによってアクセス可能な任意の他の媒体を含む。
[0062]「ネットワーク」は、コンピュータシステムおよび/またはモジュールおよび/または他の電子デバイスの間で電子データの移送を可能にする1つまたは複数のデータリンクと定義される。ネットワークまたは他の通信接続(有線、無線、または有線もしくは無線の組合せのいずれか)によって情報がコンピュータに転送または提供されるとき、コンピュータは接続を伝送媒体として適切にみなす。伝送媒体は、コンピュータ実行可能命令またはデータ構造の形で所望のプログラムコード手段を運搬するために用いることができ、汎用または特殊目的のコンピュータによってアクセスされうるネットワークおよび/またはデータリンクを含むことができる。上記の組合せもまた、コンピュータ読取可能媒体の範囲に含まれる。
[0063]さらに、さまざまなコンピュータシステムの構成要素に到達すると、コンピュータ実行可能命令またはデータ構造の形のプログラムコード手段は、伝送コンピュータ読取可能媒体から物理的コンピュータ読取可能ストレージ媒体に(または逆に)自動的に転送されうる。たとえば、ネットワークまたはデータリンクによって受信されたコンピュータ実行可能命令またはデータ構造は、ネットワークインターフェースモジュール(たとえば「NIC」)内のRAMにバッファリングされることができ、最終的にコンピュータシステムのRAMおよび/またはコンピュータシステムのより揮発性の低いコンピュータ読取可能の物理的ストレージ媒体に転送される。したがって、コンピュータ読取可能の物理的ストレージ媒体は、伝送媒体を同様に(または主として)利用するコンピュータシステムの構成要素に含まれうる。
[0064]コンピュータ実行可能命令は、たとえば、汎用のコンピュータ、特殊目的のコンピュータまたは特殊目的の処理デバイスに、ある機能または機能群を実行させる命令およびデータを含む。このコンピュータ実行可能命令は、たとえば、バイナリ、アセンブリ言語などの中間フォーマットの命令、さらにはソースコードであってもよい。内容は構造的特徴および/または方法論的動作に特有の言語で説明されるが、添付の特許請求の範囲で明確にされる内容は必ずしも上述の特徴または上記の動作に限定されるものではないことを理解されたい。むしろ、述べられた特徴および動作は特許請求の範囲を実施する例示の形態として開示される。
[0065]本発明は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、携帯デバイス、マルチプロセッサシステム、マイクロプロセッサ型またはプログラム可能な家庭用電化製品、ネットワークPC、小型コンピュータ、メインフレームコンピュータ、携帯電話、PDA、ポケットベル、ルータ、スウィッチなどを含む多種のコンピュータシステム構成を備えるネットワークコンピューティング環境において実施できることが、当業者には十分に理解されるであろう。本発明はまた、ネットワークによってリンクされている(有線データリンク、無線データリンク、または有線データリンクと無線データリンクとの組合せのいずれかによる)ローカルコンピュータシステムとリモートコンピュータシステムとがいずれもタスクを実行する分散型のシステム環境において実施されてもよい。分散型のシステム環境においては、プログラムモジュールは、ローカルメモリストレージデバイスおよびリモートメモリストレージデバイスのいずれにも配置することができる。
[0066]本発明は、その精神または特性から逸脱することなく他の特定の形態で実施されてよい。述べられた実施形態は、あらゆる点で単に例示的なものであって限定的なものではないとみなされるべきである。したがって、本発明の範囲は、上述の説明によるのではなく添付の特許請求の範囲によって示される。特許請求の範囲と同等の意味および範囲内で生じる変更はすべて、その範囲内に包含されるべきものである。

Claims (7)

  1. コンピューティング環境において、メッセージコピーおよびメッセージ待ち時間を最小限にすることができる方式(fashion)で多数のイベントコンシューマ(event consumers)にイベントを配信する方法であって、
    イベントが特定のコンシューマの集合(set)に送信されるべきかを決定するステップと、
    前記イベントをコピーし、個々のコピーを複数の配信区分(distribution partitions)に提供するステップと、
    前記配信区分のそれぞれにおいて前記イベントのコピーを複数のルーティングスリップ(routing slips)とまとめて複数の送信バンドル(delivery bundles)を作成するステップであって、前記ルーティングスリップは前記イベントの受信が意図される複数の個々の(individual)コンシューマを表す、ステップと、
    前記ルーティングスリップで指定された個々のコンシューマに前記イベントを配信する(distributing)前記送信バンドルを用いるステップと、
    を備える方法。
  2. 前記配信区分は配信区分の容量に基づいて決定される、請求項1に記載の方法。
  3. 前記区分(partitions)は場所(locale)によって決定される、請求項1に記載の方法。
  4. 前記ルーティングスリップは個々のコンシューマに前記イベントを送信する方法について規則(rules)および制約(constraints)を定める、請求項1に記載の方法。
  5. 前記制約はユーザ嗜好(preferences)を定め、前記ルーティングスリップで指定された個々のコンシューマに前記イベントを配信する前記送信バンドルを用いるステップは、前記ルーティングスリップの前記ユーザ嗜好に基づいてイベントを送信するか否かを決定するステップを備える、請求項4に記載の方法。
  6. 前記制約は、未加工のイベントデータ(raw event data)を個々の(individual)コンシューマデバイス用のプラットフォーム特定(platform specific)フォーマットにマッピングする(map)規則を定める、請求項4に記載の方法。
  7. 前記ルーティングスリップはセキュリティ資格(credential)情報を備える、請求項1に記載の方法。
JP2014529929A 2011-09-12 2012-09-10 多数のデバイスへのイベントの配信 Pending JP2014531072A (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201161533669P 2011-09-12 2011-09-12
US201161533657P 2011-09-12 2011-09-12
US61/533,657 2011-09-12
US61/533,669 2011-09-12
US13/278,401 2011-10-21
US13/278,401 US20130066979A1 (en) 2011-09-12 2011-10-21 Distributing events to large numbers of devices

Publications (1)

Publication Number Publication Date
JP2014531072A true JP2014531072A (ja) 2014-11-20

Family

ID=47830808

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014529929A Pending JP2014531072A (ja) 2011-09-12 2012-09-10 多数のデバイスへのイベントの配信

Country Status (5)

Country Link
US (1) US20130066979A1 (ja)
EP (1) EP2756418A4 (ja)
JP (1) JP2014531072A (ja)
KR (1) KR20140063690A (ja)
WO (1) WO2013039797A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018525761A (ja) * 2015-08-07 2018-09-06 サトリ ワールドワイド リミテッド ライアビリティ カンパニー スケーラブルなリアルタイムメッセージングシステム
JP2018531472A (ja) * 2015-08-07 2018-10-25 サトリ ワールドワイド リミテッド ライアビリティ カンパニー スケーラブルなリアルタイムメッセージングシステム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595322B2 (en) 2011-09-12 2013-11-26 Microsoft Corporation Target subscription for a notification distribution system
US9830603B2 (en) 2015-03-20 2017-11-28 Microsoft Technology Licensing, Llc Digital identity and authorization for machines with replaceable parts
CN113159910A (zh) * 2016-07-29 2021-07-23 京东方科技集团股份有限公司 进行通知的方法、装置和系统
US10805236B2 (en) * 2018-08-31 2020-10-13 Twitter, Inc. Event content delivery

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001067690A1 (fr) * 2000-03-07 2001-09-13 Nippon Telegraph And Telephone Corporation Reseau d'information semantique
JP2001249873A (ja) * 2000-03-07 2001-09-14 Nippon Telegr & Teleph Corp <Ntt> コンテンツ情報流通網、処理方法、及び記憶媒体
WO2003094534A2 (en) * 2002-05-06 2003-11-13 Telefonaktiebolaget Lm Ericsson (Publ) Multi-user multimedia messaging services

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8001232B1 (en) * 2000-05-09 2011-08-16 Oracle America, Inc. Event message endpoints in a distributed computing environment
US7287089B1 (en) * 2000-10-25 2007-10-23 Thomson Financial Inc. Electronic commerce infrastructure system
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US20040002958A1 (en) * 2002-06-26 2004-01-01 Praveen Seshadri System and method for providing notification(s)
US20060235715A1 (en) * 2005-01-14 2006-10-19 Abrams Carl E Sharable multi-tenant reference data utility and methods of operation of same
US7743137B2 (en) * 2005-02-07 2010-06-22 Microsoft Corporation Automatically targeting notifications about events on a network to appropriate persons
US20060224772A1 (en) * 2005-04-04 2006-10-05 Digital Shoeboxes Llc Apparatus and computer readable medium for transporting and processing digital media
US20080222283A1 (en) * 2007-03-08 2008-09-11 Phorm Uk, Inc. Behavioral Networking Systems And Methods For Facilitating Delivery Of Targeted Content
JP4894550B2 (ja) * 2007-02-19 2012-03-14 富士通株式会社 コンテンツ配信システム、サーバ装置、およびコンテンツ配信方法
US20110125753A1 (en) * 2009-11-20 2011-05-26 Rovi Technologies Corporation Data delivery for a content system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001067690A1 (fr) * 2000-03-07 2001-09-13 Nippon Telegraph And Telephone Corporation Reseau d'information semantique
JP2001249873A (ja) * 2000-03-07 2001-09-14 Nippon Telegr & Teleph Corp <Ntt> コンテンツ情報流通網、処理方法、及び記憶媒体
CN1428033A (zh) * 2000-03-07 2003-07-02 日本电信电话株式会社 语义信息网络
US20030167352A1 (en) * 2000-03-07 2003-09-04 Takashige Hoshiai Semantic information network (sion)
WO2003094534A2 (en) * 2002-05-06 2003-11-13 Telefonaktiebolaget Lm Ericsson (Publ) Multi-user multimedia messaging services
US20050220064A1 (en) * 2002-05-06 2005-10-06 Frank Hundscheidt Multi-user multimedia messaging services
JP2005532714A (ja) * 2002-05-06 2005-10-27 テレフオンアクチーボラゲット エル エム エリクソン(パブル) マルチユーザマルチメディアメッセージサービス

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018525761A (ja) * 2015-08-07 2018-09-06 サトリ ワールドワイド リミテッド ライアビリティ カンパニー スケーラブルなリアルタイムメッセージングシステム
JP2018531472A (ja) * 2015-08-07 2018-10-25 サトリ ワールドワイド リミテッド ライアビリティ カンパニー スケーラブルなリアルタイムメッセージングシステム

Also Published As

Publication number Publication date
US20130066979A1 (en) 2013-03-14
WO2013039797A2 (en) 2013-03-21
KR20140063690A (ko) 2014-05-27
EP2756418A4 (en) 2015-04-22
WO2013039797A3 (en) 2013-05-10
EP2756418A2 (en) 2014-07-23

Similar Documents

Publication Publication Date Title
JP6126099B2 (ja) タイムリーイベントデータ分配用マーケットプレイス
US20130067024A1 (en) Distributing multi-source push notifications to multiple targets
US9208476B2 (en) Counting and resetting broadcast system badge counters
US10924414B2 (en) Processing high volume network data
US10210115B2 (en) System for handling event messages for file collaboration
US20130067025A1 (en) Target subscription for a notification distribution system
WO2016115734A1 (en) Processing high volume network data
US11394794B2 (en) Fast ingestion of records in a database using data locality and queuing
US9396500B2 (en) Methods and systems for adaptive capacity management
US20130066980A1 (en) Mapping raw event data to customized notifications
US20200044881A1 (en) Managing channels in an open data ecosystem
JP2014531072A (ja) 多数のデバイスへのイベントの配信
US20120210017A1 (en) Efficiently isolating malicious data requests
WO2019231645A1 (en) Change notifications for object storage
EP2756421A2 (en) Scale-out system to acquire event data
US10445136B1 (en) Randomized subrequest selection using request-specific nonce
US10348596B1 (en) Data integrity monitoring for a usage analysis system
US10511656B1 (en) Log information transmission integrity
CN117178539A (zh) 混合云事件通知管理

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150528

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150803

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160818

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161118

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170420