特制的消息傳送的制作方法
【專利說明】特制的消息傳送
[0001] 相關申請交叉引用
[0002] 本申請要求2014年7月11日提交的標題為"Tailored Messaging"的第14/329,602 號美國專利申請的優(yōu)先權,并且要求2013年7月12日提交的標題為"System and Method for Dynamically Distributing Market Data Across Multiple Devices in an Electronic Trading Environment"的第61/845,613號美國臨時專利申請的優(yōu)先權,而且 要求2014年7月 10 日提交的標題為 "System and Method for Dynamically Distributing Market Data Across Multiple Devices in an Electronic Trading Environment"的第 62/022,736號美國臨時專利申請的優(yōu)先權。為了所有目的,通過引用將每一個前述申請的 全部內容完整地并入本文。
【背景技術】
[0003] 電子設備可以交換數據消息,以提供例如關于設備的狀態(tài)的最新信息。在一些系 統中,多個接收方對于從數據源接收更新感興趣。數據源可以使用諸如廣播消息傳送或多 播消息傳送這樣的技術在某些類型的網絡中提供這些更新。在其它系統中,由于例如網絡 限制、通信偏好(例如,可靠交付、下訂單等)和/或安全性要求,因此一些接收方可能使用點 對點連接與數據源進行通信。
[0004] -些接收方可能偏好以不同速率從同一數據源接收更新。在使得將不期望的消息 發(fā)送到接收方最小化的同時以不同的速率提供更新,限制了廣播和多播消息傳送技術的有 用性,并且隨著具有不同更新速率偏好的接收方的數量增加,點對點連接變得更有效。然 而,在點對點連接的情況下,必須對于每個接收方生成消息。此外,一些接收方可能偏好在 它們的更新中接收不同級別或層級的數據?;诓煌墑e或層級的數據來定制消息,要求 對于每個級別或層級的數據生成不同的消息。尤其是對于在接收數據時延時增加是不可接 受的時間敏感信息,隨著具有不同偏好的接收方的數量增長,接納不同更新速率以及不同 級別或層級的數據變成累贅。
【附圖說明】
[0005] 參照以下附圖公開一些實施例。
[0006] 圖1示出可以用于實現一些實施例的示例計算設備的框圖。
[0007] 圖2示出用于將特制(tailored)消息發(fā)送到一個或多個接收設備的示例系統的框 圖。
[0008] 圖3示出可以用于將快照(snapshot)和增量捕捉(deltasnap)發(fā)送到一個或多個 接收設備的示例訂閱(subscribe)控制模塊的框圖。
[0009] 圖4示出使用快照技術的例子的數據流。
[0010] 圖5示出使用增量技術的例子的數據流。
[0011]圖6示出使用增量捕捉技術的例子的數據流。
[0012]圖7A和圖7B示出說明示例數據級別的框圖。
[0013]圖8A和圖8B示出說明基于快照和增量捕捉的示例可特制消息的框圖。
[0014] 圖9示出使用特制增量捕捉技術的例子的數據流。
[0015] 圖10示出緩沖器中的示例可特制消息。
[0016] 圖11示出描述示例接收設備與示例訂閱控制模塊之間的示例連接的示例數據流 圖。
[0017] 圖12是表示可以執(zhí)行為實現圖2和圖3的訂閱控制模塊的示例機器可讀指令的示 例方法的流程圖。
[0018] 圖13是表示可以執(zhí)行為實現圖3的數據格式器的示例機器可讀指令的示例方法的 流程圖。
[0019] 圖14是表示可以執(zhí)行為實現圖3的數據格式器的示例機器可讀指令的示例方法的 流程圖。
[0020] 圖15是表示可以執(zhí)行為實現圖3的消息發(fā)送器的示例機器可讀指令的示例方法的 流程圖。
[0021] 圖16是表示可以執(zhí)行為實現圖3的消息發(fā)送器的示例機器可讀指令的示例方法的 流程圖。
[0022] 圖17是表示可以執(zhí)行為實現圖3的消息發(fā)送器的示例機器可讀指令的示例方法的 流程圖。
[0023]圖18不出表不可以米用一些實施例的不例電子交易系統的框圖。
[0024]圖19不出可以米用一些實施例的另一不例電子交易系統的框圖。
[0025]圖20A和圖20B示出用于在市場深度的多個數據級別處提供市場數據的快照和增 量捕捉的示例可特制消息。
[0026]當結合示出的例子的所提供的附圖閱讀時,將更好理解一些實施例。然而,應當理 解,實施例不限于附圖所示的布置和手段。
【具體實施方式】
[0027] 所公開的實施例總體上涉及用于特制消息以用于網絡通信的技術。更具體地,所 公開的實施例涉及基于接收方偏好高效地提供定制信息更新的系統和方法。例如,接收方 可能偏好與系統創(chuàng)建更新相比更不頻繁地接收更新,和/或可能偏好在更新中接收不同級 別的數據。在一些實施例中,提供了一種允許對提供更新消息的速率進行更高效特制的增 量捕捉技術。在一些實施例中,提供了一種允許對更新消息的內容進行更高效特制的劃分 (partition)技術。在一些實施例中,提供了允許對更新消息的速率和內容進行更高效特制 的劃分技術和增量捕捉技術的組合。
[0028] 在各種上下文中,數據消息將信息提供給接收方。一些接收方可能感興趣于以與 其它接收方不同的速率接收更新。例如,第一接收方可能期望以諸如達到每毫秒一次這樣 的第一速率(或許以正在生成更新的速率)來接收更新。第二接收方可能是帶寬受約束的, 并且因而想要以諸如每秒兩次這樣的較低速率被發(fā)送更新。第三接收方可能有時是帶寬受 約束的,并且希望以任何可能的速率可靠地接收更新,而絕不接收過期數據或體驗由于連 接重置而導致的大間隙。此外,在一些系統中,數據源可以在更新中提供不同級別或層級的 數據。例如,每個后繼級別可以包括指示超過在先前級別處所提供的細節(jié)的更多細節(jié)或附 加信息的值。一些接收方可能感興趣于在來自數據源的更新中接收不同級別數量的數據。 例如,第一接收方可能感興趣于接收對于在前五個級別處的值的更新。第二接收方可能感 興趣于接收對于在前兩個級別處的值的更新。為了提供不同級別的數據,根據接收方的偏 好來特制消息。在當前系統中,接納接收方偏好(諸如更新速率和/或不同數量的數據級 別),需要對于每個接收方基于源數據來格式化唯一消息。
[0029] 雖然該描述公開了包含除了其它組件之外的在硬件上執(zhí)行的軟件的實施例,但應 當注意的是,實施例僅僅是說明性的,而不應當被看作限制。例如,考慮到可以排他地在硬 件中、排他地在軟件中、排他地在固件中或者在硬件、軟件和/或固件的任何組合中體現任 何或所有這些硬件和軟件組件。相應地,可以以其它方式實現一些實施例。
[0030] I. 一些實施例的簡要描述
[0031] 公開示例方法、系統和計算機可讀介質以特制消息,以用于網絡通信。用于特制消 息的示例方法包括:由計算設備生成表示數據源在第一時間的狀態(tài)的第一快照消息。將第 一快照消息發(fā)送到第一接收方。示例方法包括:由計算設備生成表示數據源在第二時間的 狀態(tài)與數據源在第一時間的狀態(tài)的差的第一增量捕捉消息;以及由計算設備將第一增量捕 捉消息發(fā)送到第一接收方。
[0032] 示例方法包括:由計算設備生成表示在第一時間所捕獲的第一數據集合的第一快 照。示例方法還包括:由計算設備將第一快照的第一版本發(fā)送到第一訂閱設備。根據第一訂 閱設備的第一偏好來特制第一快照的第一版本。示例方法包括:由計算設備生成表示第一 數據集合與第二數據集合之間的差的第一增量捕捉。第二數據集合表示在第一時間之后的 第二時間處所生成的數據。示例方法包括:由計算設備將第一增量捕捉的第一版本發(fā)送到 第一訂閱設備。根據第一訂閱設備的第一偏好來特制第一增量捕捉的第一版本。
[0033] 示例的有形計算機可讀存儲介質包括指令,當該指令被運行時使得機器至少:生 成表示數據源在第一時間的狀態(tài)的第一快照消息。示例指令使得所述機器將第一快照消息 發(fā)送到第一接收方。示例指令使得所述機器生成表示數據源在第二時間的狀態(tài)與數據源在 第一時間的狀態(tài)的差的第一增量捕捉消息。示例指令使得第一增量捕捉消息被發(fā)送到第一 接收方。
[0034] II.示例計算設備
[0035]圖1示出了可以用于實現一些實施例的示例計算設備100的框圖。計算設備100包 括通信網絡110、處理器112、存儲器114、接口 116、輸入設備118和輸出設備120。計算設備 100可以包括附加組件、不同組件或更少組件。例如,可以提供多個通信網絡、多個處理器、 多個存儲器、多個接口、多個輸入設備、多個輸出設備或其任何組合。作為另一例子,計算設 備100可以不包括輸入設備118或輸出設備120。
[0036] 如圖1所示,計算設備100可以包括處理器112,其耦合到通信網絡110。通信網絡 110可以包括用于在計算設備100中的各組件之間進行數據通信的通信總線、電網絡或光網 絡、電路、開關、構造(fabric)或其它機制。可以將通信網絡110與計算設備100的任何組件 通信地進行耦合,并且通信網絡110可以在計算設備100的任何組件之間傳送數據。
[0037] 處理器112可以是任何合適的處理器、處理單元或微處理器。例如,處理器112可以 包括一個或多個通用處理器、數字信號處理器、專用集成電路、現場可編程門陣列、模擬電 路、數字電路、編程處理器和/或其組合。處理器112可以是單個設備或各設備的組合,諸如 與網絡或分布式處理相關聯的一個或多個設備??梢允褂萌魏翁幚聿呗?,諸如多處理、多任 務、并行處理和/或遠程處理。處理可以是本地或遠程的,并且可以從一個處理器移動到另 一處理器。在一些實施例中,計算設備100是多處理器系統,并且因而可以包括通信地耦合 到通信網絡110的一個或多個附加處理器。
[0038] 處理器112可以可操作為執(zhí)行在一個或多個有形介質(諸如存儲器114)中編碼的 邏輯和其它計算機可讀指令。如在此所使用的,在一個或多個有形介質中編碼的邏輯包括: 可以是可由處理器112或不同處理器執(zhí)行的指令。例如,可以將邏輯作為軟件、硬件、集成電 路、固件和/或微代碼的部分來存儲??梢越浻芍T如網絡140這樣的通信網絡從外部通信設 備接收邏輯。處理器112可以執(zhí)行該邏輯以執(zhí)行附圖中所示的或在此所描述的功能、動作或 任務。
[0039] 存儲器114可以例如是一個或多個有形介質,諸如計算機可讀存儲介質。計算機可 讀存儲介質可以包括各種類型的易失性存儲介質和非易失性存儲介質,例如包括隨機存取 存儲器、只讀存儲器、可編程只讀存儲器、電可編程只讀存儲器、電可擦除只讀存儲器、閃 存、其任何組合或任何其它有形數據存儲設備。如在此所使用的,術語非瞬時計算機可讀介 質或有形計算機可讀介質被明確地定義為包括任何類型的計算機可讀介質,并且被定義為 排除傳播信號。存儲器114可以包括任何期望類型的大容量存儲設備,包括硬盤驅動器、光 學介質、磁帶或磁盤等。
[0040] 存儲器114可以包括一個或多個存儲器設備。例如,存儲器114可以包括本地存儲 器、大容量存儲設備、易失性存儲器、非易失性存儲器或其組合。例如,存儲器114可以與處 理器112相鄰、作為處理器112的部分、用處理器112來編程、與處理器112聯網和/或與處理 器112遠程,從而可以由處理器112檢索(retrieve)并且處理在存儲器114中存儲的數據。存 儲器114可以存儲可由處理器112執(zhí)行的指令??梢赃\行該指令,以執(zhí)行在此所描述的或附 圖中所示的動作或功能中的一個或多個。
[0041]存儲器114可以存儲實現所公開的技術的應用130。在一些實施例中,可以從不同 位置存取應用130或者可以將應用130存儲在不同位置中。處理器112可以存取在存儲器114 中存儲的應用130,并且執(zhí)行在應用130中所包含的計算機可讀指令。
[0042] 在一些實施例中,在安裝過程期間,可以將應用從輸入設備118和/或網絡140傳送 到存儲器114。當計算設備100正在運行或準備運行應用130時,處理器112可以經由通信網 絡110從存儲器114檢索指令。
[0043] III.訂閱控制模塊
[0044]圖2示出了包括訂閱控制模塊201和數據源202的示例系統200。在所示的例子中, 數據源202將數據提供給訂閱控制模塊201。訂閱控制模塊201可以例如在數據源202發(fā)送數 據時、(例如以設置的時間間隔)周期性地、在檢測到更新時、和/或響應于觸發(fā)事件等,接收 和/或另外檢索數據。訂閱控制模塊201將數據變換為特制消息204。經由通信鏈路(例如,點 對點連接、單播信道、傳輸控制協議(TCP)套接字、WebSocket連接等)將特制消息204發(fā)送到 一個或多個接收設備206(例如,智能電話、平板、服務器、個人計算機等)。相對于接收設備 206定義一個或多個偏好(例如,更新速率、數據的級別數量等)。在一些例子中,電子設備 206將偏好傳遞到訂閱控制模塊201。例如,對于每100ms生成更新的訂閱控制模塊201,接收 方206可以將偏好設置為僅按每500ms的頻度接收更新。在一些例子中,由訂閱控制模塊201 確定用于電子設備206的偏好。例如,訂閱控制模塊201可以基于與電子設備206的連接過程 期間的延時,確定應當將更新速率設定為ls,并且僅具有3個級別的數據。在一些例子中,訂 閱控制模塊201基于網絡鏈路吞吐量來調整更新速率。例如,如果仍然正在發(fā)送早先更新, 則訂閱控制模塊201可以延遲發(fā)送下一更新。在該例子中,如果在延遲期間生成更加新近 (recent)的更新,則訂閱控制模塊201可以替代地發(fā)送這個更加新近的更新。訂閱控制模塊 201經由有線連接或無線連接(例如,纜線/DSL/衛(wèi)星連接、蜂窩連接、長期演進(LTE)連接 等)通過網絡(例如,互聯網、廣域網等)與接收方206進行通信。
[0045]圖3示出了圖2的訂閱控制模塊201的示例實現方式。訂閱控制模塊201從數據源 202接收和/或另外檢索數據,并且將特制消息(例如圖2的特制消息204)發(fā)送到一個或多個 電子設備206。所示的例子的訂閱控制模塊201包括數據源接收器302、數據格式器 (f 〇rmatter)304、主緩沖器306、次緩沖器308和消息發(fā)送器310。數據源接收器302從數據源 202接收和/或另外檢索數據。
[0046]在圖3所示的例子中,數據源202動態(tài)地更新(例如,當新信息變?yōu)榭捎脮r異步地更 新,用閑置時段周期性地更新等)。為了接收和處理數據并且將消息發(fā)送到接收方204,數據 源接收器302(例如,經由圖3的數據源接收器302)捕獲數據源202在離散時間點的狀態(tài)。在 一些例子中,當數據源202提供關于其狀態(tài)的改變的更新時,數據源接收器302捕獲數據源 202的狀態(tài)。在一些例子中,數據源接收器302按設置的時間間隔捕獲數據源202的狀態(tài)(例 如,數據源頻繁地更新的例子)。例如,數據源接收器302可以每100毫秒捕獲一次數據源202 的狀態(tài)。在一些例子中,數據源接收器302響應于檢測到更新而捕獲數據源202的狀態(tài)(例 如,數據源偶發(fā)性地更新的例子)。數據源接收器302可以建立基本更新速率?;靖滤俾?是訂閱控制模塊201使更新可用于接收設備206的速率。在一些例子中,(例如,當數據源202 頻繁地更新時等)按有規(guī)律的間隔來建立基本更新速率。在一些例子中,(例如,當數據源 202不頻繁地更新時等)按不規(guī)律的間隔來建立基本更新速率。在一些例子中,基本更新速 率根據數據源202的改變頻率而改變。
[0047]在圖3的所示的例子中,數據格式器304將來自數據源202的數據進行格式化(例 如,編組(marshal)、轉譯、標準化、組織等)。數據格式器304將數據變換成將要在主緩沖器 306和/或次緩沖器308中存儲的可特制消息。主緩沖器306和/或次緩沖器308存儲由數據格 式器304格式化的數據。在一些例子中,由數據格式器304存取在主緩沖器306和/或次緩沖 器308中存儲的數據,以與來自數據源202的后續(xù)數據進行比較。例如,主緩沖器306可以包 括可特制的快照消息。利用以下更詳細討論的技術,數據格式器304可以然后將來自數據接 收器302的數據與主緩沖器306中的可特制的快照消息進行比較,以在次緩沖器308中生成 可特制的增量捕捉消息。
[0048]在所示的例子中,消息發(fā)送器310管理與一個或多個接收方電子設備206的連接。 消息發(fā)送器310使用在主緩沖器306和/或次緩沖器308中存儲的可特制消息,并且將數據作 為特制消息204發(fā)送到接收方電子設備206。在一些例子中,消息發(fā)送器310從接收方電子設 備206接收偏好。例如,偏好可以包括對于更新速率的偏好和/或對于數據的級別數量的偏 好。在一些這樣的例子中,消息發(fā)送器310基于接收到的偏好,將在主緩沖器306和/或次緩 沖器308中存儲的可特制消息進行特制,以發(fā)送到接收方電子設備206。為了將可特制消息 進行特制,消息發(fā)送器310基于接收到的偏好,計算將要發(fā)送可特制消息的哪個部分(例如, 字節(jié)的總數)。例如,如果可特制消息是100個字節(jié),則消息發(fā)送器310可以基于接收到的偏 好,計算出僅前56個字節(jié)將要被發(fā)送到接收方電子設備206。以這種方式,不需要對消息進 行每接收方的再變換。數據格式器304具體地格式化可特制消息,以允許截斷式 (truncated)發(fā)送