專利名稱:將事件分發給大量設備的制作方法
技術領域:
本發明涉及事件分發方法和系統。
背景技術:
背景和相關技術計算機和計算系 統已經影響了現代生活的幾乎每個方面。計算機通常在工作、休閑、保健、運輸、娛樂、家政管理等中都有涉獵。此外,計算系統功能還可以通過計算系統的經由網絡連接互連到其他計算系統的能力來增強。網絡連接可包括,但不僅限于,經由有線或無線以太網的連接,蜂窩式連接,或者甚至通過串行、并行、USB或其他連接的計算機到計算機的連接。這些連接允許計算系統訪問其他計算系統上的服務,并快速且有效地從其他計算系統接收應用數據。許多計算機意在通過與計算機的直接用戶交互來使用。這樣,計算機具有輸入硬件和軟件用戶接口以促成用戶交互。例如,現代通用計算機可包括用于允許用戶向計算機輸入數據的鍵盤、鼠標、觸摸墊、相機等。另外,有各種軟件用戶接口可用。軟件用戶接口的示例包括圖形用戶界面、基于文本命令行的用戶界面、功能鍵或熱鍵用戶界面等等。假定開發人員在iOS、Android、Windows Phone、Windows等之上構建移動應用程序,該移動應用程序集中于傳達大眾感興趣的新聞、關于世界大事或對球迷的關于足球、美式橄欖球、曲棍球、棒球聯盟或球隊的信息和事實,以使它們保持最新。對于這些應用程序(以及各種其他應用程序)中的任何一個,在該球迷的最喜愛球隊得分或世界上突發了某類新聞事件時彈出警報或提示的通知是極大的區分(differentiator)。該區分一般實現構建和運行服務器基礎架構以將這些事件推送到供應商提供的通知信道中,這超出了集中于優化用戶體驗的許多移動應用程序(“app”)開發人員的技能集合。并且如果他們的應用程序非常成功,則簡單的基于服務器的解決方案將會很快碰到可伸縮性上限,因為及時地將事件分發給數萬或甚至數十萬設備是非常有挑戰性的。對于這類應用程序中的許多而言,及時性是重要的價值命題。例如,球迷在更新方面沒有太大耐心。類似地,查看他們的金融投資受損閾值的各方面的個人和機構、參與大型拍賣的人、或其在Facebook上的虛擬農業帝國即將遭受所經過的颶風的襲擊的玩家在更新方面通常沒有太大耐心。Apple用于iOS的推送通知服務、Google用于Android的C2DM服務、以及微軟用于Windows Phone的MPNS服務、以及大多數其他移動平臺提供對設備的某種形式的最優共享連接(提供最大能量效率(并且因而提供最大電池效率))并允許應用程序經由相應平臺的推送通知API來充分利用這一共享信道。然而,如上所述,使用這些平臺來基于單個事件分發大量通知是困難的和/或需要大量計算資源。在此要求保護的主題不限于解決任何缺點或僅在諸如上述環境中操作的各個實施例。相反,提供該背景僅用以示出在其中可實踐在此描述的部分實施例的一個示例性技術領域。
發明內容
本文的一個實施例涉及一種可在計算環境中實施的方法。該方法包括用于以可使消息復制和消息等待時間最小化的方式來將事件分發給大量事件消費者的動作。該方法包括確定一事件應被發送給一組特定消費者。該方法還包括復制該事件并將各單獨的副本提供給多個分發分區。該方法還包括在各分發分區中的每一個處,將事件的副本與多個傳送名單(routing slip)打包以創建多個遞送包(delivery bundle)。傳送名單描述旨在接收該事件的多個單獨的消費者。該方法還包括使用遞送包將事件分發給傳送名單中指定的各單獨的消費者。提供本發明內容以便以簡化形式介紹將在以下詳細描述中進一步描述的一些概念。本發明內容并非旨在標識所要求保護的主題的關鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。另外的特征和優點將在以下的描述中闡述,并且部分可從該描述中顯而易見,或者可以從此處的教示實踐中習得。本發明的特征和優點可以通過在所附權利要求中特別指出的手段和組合來實現并獲取。本發明的特征將從以下描述和所附權利要求書中變得完全顯而易見,或者可通過如下所述對本發明的實踐而獲知。
為了描述可獲得本主題的上述和其他優點和特征的方式,將通過參考附圖中示出的本主題的具體實施例來呈現以上簡要描述的本主題的更具體描述。應該理解,這些附圖僅描繪了各典型實施例,因此其不應被認為是對范圍的限制,各實施例將通過使用附圖用附加特征和細節來描述并解釋,在附圖中圖1示出了事件數據分發系統的示例;圖2示出了事件數據獲得和分發系統;以及圖3示出了一種分發事件的方法。
具體實施例方式本文描述的一些實施例充分利用推送通知機制,并在頂層提供允許移動和桌面開發人員規模化地并且在非常及時的分發特性的情況下利用這些推送通知信道的通知管理和分發層。一些實施例可包括通過級聯和分區的分發及遞送系統來執行通知的廣播的方法,該系統最小化消息副本的數量并可擴展到非常大量的遞送目標,同時對于每一單獨的目標而言還最小化通知從入口到出口的平均流時間。一些實施例可包括一種出于系統監控以及客戶機和第三方記賬的目的來收集遞送統計信息并將其流傳輸到數據倉庫解決方案的方法。一些實施例可包括一種由于暫時或持久的遞送錯誤狀況而暫時或持久地將目標列入到黑名單的方法。 作為基礎,一個實施例系統使用可從華盛頓州雷蒙德市的微軟公司獲得的Windows Azure服務總線所提供的發布/訂閱基礎架構,但在各種其他消息收發系統中存在著類似形式的基礎架構。該基礎架構提供便于所呈現的方法的所描述的實現的兩種能力主題和隊列。隊列是用于消息的存儲結構,它允許以順序的次序來添加消息(入隊)和以與添加消息相同的次序來移除消息(出隊)。可由任何數量的并發客戶機添加和移除消息,從而允許平抑入隊側的負載并跨出隊側的各接收者來平衡處理負載。隊列還允許各實體在使消息出隊時獲得該信息上的鎖,從而允許消費客戶機對何時將消息從隊列中實際刪除或在對檢索到的消息的處理失敗的情況下它是否可被還原回隊列中進行顯式控制。主題是具有隊列的所有特性的存儲結構,但允許多個并發的現有‘訂閱’,這些訂閱各自允許對入隊消息序列的孤立的經過濾的視圖。主題上的每一訂閱都產生每一入隊消息的副本,假定該訂閱的相關聯的過濾條件肯定地匹配該消息。結果,入隊到具有10個訂閱(其中每一訂閱具有匹配所有消息的簡單的‘穿過’條件)的主題的消息將產生總共10個消息,每個訂閱一個消息。 像隊列一樣,訂閱可具有多個并發消費者,提供跨各接收者的處理負載的平衡。另一基本概念是‘事件’,就底層發布/訂閱基礎架構方面而言它就是條消息。在一個實施例的上下文中,事件服從對消息正文和消息屬性的使用進行管控的一組簡單約束。事件的消息正文一般作為不透明數據塊來流動,并且一個實施例所認為的任何事件數據一般在消息屬性中流動,它是作為表示該事件的消息的一部分的一組鍵/值對。各實施例可被配置成將來自給定輸入事件的信息的副本分發給與特定作用域相關聯的大量‘目標102’中的每一個,并且對于每一目標102在最小的時間中這樣做。目標102可包括耦合到適配器的標識符的設備或應用程序的地址和用于訪問該通知系統或基礎架構的輔助數據,其中該適配器是用于某一第三方通知系統或某網絡可訪問的外部基礎架構的。一些實施例可包括被分成三個不同的處理角色的體系結構,這些角色在下文中詳細描述并且可參考圖1來理解。如圖1中由‘ I’、……、以及‘n’所示,處理角色中的每一個可具有該處理角色的一個或多個實例。注意,在應用于處理角色時,在每一情況下使用‘n’應被認為是與另一情況不同,這意味著處理角色中的每一個不必具有相同數量的實例。‘分發引擎’ 112角色接受事件并將它們與包含各組目標102的傳送名單(參見例如圖2中的傳送名單128-1)打包在一起。‘遞送引擎’ 108接受這些包并處理傳送名單以遞送給由目標102所表示的各網絡位置。由管理服務142所示出的‘管理角色’提供管理目標102的外部API,并且還負責從遞送引擎108接受統計和出錯數據并負責處理/存儲該數據。數據流錨定在‘分發主題144’上,各事件被提交到該分發主題中以供分發。所提交的事件是使用消息屬性來用它們相關聯的作用域進行標記的,這可以是將事件與原始消息進行區分的上述約束之一。在所示示例中,分發主題144對于每一 ‘分發分區120’具有一個穿過(未過濾)訂閱。‘分發分區’是負責向給定作用域的目標102的子集分發并遞送通知的孤立的資源集合。發送到分發主題中的每一事件的副本對所有并發配置的分發分區而言通過它們相關聯的訂閱實際上是同時可用的,從而允許分發工作的并行化。通過分區(partitioning)來達到的并行化幫助實現及時的分發。為理解這一點,考慮具有一千萬個目標102的作用域。如果目標的數據被保持在未經分區的存儲中,則該系統將必須順序地遍歷單個的大型數據庫結果集,或者如果結果集是使用對同一存儲進行的分區查詢來獲得的,則用于獲取目標數據的吞吐量將至少被給定存儲的前向(fronting)網絡網關基礎架構的吞吐量上限所扼制,結果,將通知遞送給其描述記錄在給定結果集中出現得非常晚的目標102的遞送等待時間將可能是不令人滿意的。相反,如果一千萬個目標102分布在1000個存儲上,每一存儲保持10000個目標記錄,并且這些存儲與像在此描述的那樣以分區的形式執行查詢并處理結果的專用計算基礎架構(本文描述的‘分發引擎122’和‘遞送引擎108’)配對,則對目標描述的獲取可以在很大一組計算和網絡資源上并行化,從而顯著地降低分發所有事件時從所分發的第一到最后事件所測量到的時間差。分發分區的實際數量在技術上沒有限制。它的范圍可以從單個分區到大于一的任何數量的分區。在所示示例中,一旦分發分區120的‘分發引擎122’獲得了事件104,它首先計算事件數據的大小并隨后計算傳送名單128的大小,這可基于事件大小與底層消息收發系統的可允許的最大消息大小和絕對大小上限中的較小者之間的增量來計算。以如下方式來限制事件的大小存在某一最小的頭上空間來容納‘傳送名單’數據。傳送名單128是包含目標102描述的列表。傳送名單由分發引擎122通過對分區的存儲124中保持的目標102執行匹配該事件的作用域的查找查詢來創建,從而返回與該事件的作用域和基于事件數據的過濾條件來縮小選擇的一組其它條件相匹配的所有目標102。各實施例可包括將結果限制為在當前時刻被認為有效的目標102的時間窗口條件,這意味著當前UTC時間處于目標描述記錄中包含的開始/結束有效時間窗口內,以及其他過濾條件。這一設施被用于列入黑名單,這在本文中稍后描述。在遍歷查找結果時,該引擎創建事件104的副本,用從存儲124中檢索到的目標描述將傳送名單128填充到最大大小,并隨后將所得的事件包和傳送名單入隊到該分區的‘遞送隊列130’中。傳送名單技術確保 從分發引擎122到遞送引擎108的事件的事件流速高于底層基礎架構上的實際消息流速,意味著例如在30個目標描述可連同事件數據一起打包到傳送名單128中的情況下,事件/目標對的流速是事件/目標對被直接編組到消息中的情況的30倍。遞送引擎108是來自遞送隊列130的事件/傳送名單包126的消費者。遞送引擎108的角色要使這些包出隊,并將事件104遞送給傳送名單128中列出的所有目的地。遞送通常通過將事件消息格式化成相應目標基礎架構所理解的通知消息的適配器來發生。例如,通知消息可按用于Windows 7電話的MPNS格式、按用于iOS設備的APN(蘋果推送通知)格式、按用于Android設備的C2DM (云到設備消息收發)格式、按用于設備上的瀏覽器的JSON (Java腳本對象記法)格式、按HTTP (超文本傳輸協議)等來遞送。遞送引擎108通常使遞送在各獨立的目標102上并行化,并且使遞送在共享由目標基礎架構所實施的作用域的各目標102上串行化。后一情況的示例是遞送引擎中的特定適配器可選擇通過單個網絡連接發送以特定通知平臺上的特定目標應用程序為目標的所有事件。使用遞送隊列130將分發引擎122和遞送引擎108解除耦合,以允許遞送引擎108的獨立伸縮并且避免遞送減速倒退回分發查詢/打包階段和阻塞分發查詢/打包階段。每一分發分區120可具有并發地觀察遞送隊列130的任何數量的遞送引擎實例。遞送隊列130的長度可被用來確定多少遞送引擎是并發地活動的。如果隊列長度超過特定閾值,則可向分區120添加新遞送引擎實例以增加發送吞吐量。分發分區120和相關聯的分發和遞送引擎實例能以實際上無限的方式來伸縮,以達到大規模的最優并行化。如果目標基礎架構能夠接收并以并行的方式向各設備轉發一百萬個事件請求,則所描述的系統能夠跨其遞送基礎架構來分發事件——可能利用跨各數據中心的網絡基礎架構和帶寬——以用事件提交來使目標基礎架構飽和以供像目標基礎架構在負載不足且在給定的任何授予的遞送限額之下所允許的那樣及時地遞送給所有所需目標102的方式。在經由其相應基礎架構適配器將消息遞送給目標102時,在一些實施例中,該系統記錄各種統計信息條目。這包括接收到遞送包與遞送出任何單獨消息之間的持續時間的測量到的時間段以及實際發送操作的持續時間的測量到的時間段。統計信息的另一部分是遞送是成功還是失敗的指示符。這一信息被收集在遞送引擎108內并在每作用域的基礎上和每目標-應用程序的基礎上積累成平均值。‘目標應用程序’是所引入的用于統計信息累積的具體目的的編組標識符。計算得到的平均值以所定義的時間間隔被發送到遞送狀態隊列146。該隊列由管理服務142中的一(組)工作者來消耗,管理服務出于各種目的來將事件數據提交給數據倉庫。這些目的除操作監控以外可包括,對向其遞送事件的承租人記賬和/或將統計信息公開給承租人以供他們自己的第三方記賬。在檢測到遞送錯誤時,這些錯誤被分類成暫時和持久錯誤狀況。暫時錯誤狀況可包括例如不準許該系統達到目標基礎架構的遞送點的網絡故障或指示已經暫時達到了遞送限額的目標基礎架構報告。持久錯誤狀況可包括例如目標基礎架構上的認證/授權錯誤、或不能在沒有手動干預的情況下復原的其他錯誤、以及其中目標基礎架構報告該目標不再可用或不想要在持久的基礎上接受消息的錯誤狀況。一旦被分類,錯誤報告就被提交到遞送故障隊列148 。對于暫時錯誤狀況,該錯誤還可包括絕對UTC時間戳,直至該錯誤狀況預期要被解決為止。同時,對于這一遞送引擎實例所進行的任何進一步本地遞送,該目標被目標適配器在本地列入黑名單。該黑名單也可包括時間戳。遞送故障隊列148由管理角色中的一(組)工作者來消耗。持久錯誤可使得相應目標從管理角色能訪問的其相應分發分區存儲124中立即刪除。‘刪除’意味著該記錄確實被移除或者另選地通過將該記錄的有效性時間段的‘結束’時間戳設置成該錯誤的時間戳來使該記錄僅僅被移出查找查詢的視野。暫時錯誤狀況可使得目標在該錯誤所指示的時間段期間被停用。可以通過將目標的有效性時間段的開始上移到該錯誤所指示的時間戳來完成停用,在該所指示的時間戳處預期該錯誤狀況將復原。現在參考圖2,示出了替換的圖示。如上所述,各實施例在其中單個事件被散發到多個(并且可能是大量的)最終用戶的消息散發系統中尤其有用。這樣的示例在圖2中示出。圖2示出了來自大量不同源的信息被遞送給大量不同目標的示例。在一些示例中,來自單個源的信息或從多個源聚集的信息可被用來創建被遞送給大量目標的單個事件。在一些實施例中,這可以使用圖2所示的散發技術來實現。圖2示出了源116。如本文稍后將討論的,各實施例可以利用獲取分區140。獲取分區140中的每一個可包括多個源116。可能有大量且各種各樣的源116。源116提供信息。這些信息可包括例如但不限于電子郵件、文本消息、實時股票報價、實時賽事比分、新聞
更新,等等。圖2示出了每一分區包括獲取引擎,如說明性獲取引擎118。獲取引擎118從源116收集信息,并基于該信息來生成事件。在圖2所示的示例中,多個事件被示為由獲取引擎使用各個源來生成。使用事件104-1來進行說明。在一些實施例中,事件104-1可如以下解釋的那樣來標準化。獲取引擎118可以是諸如因特網等網絡上、從該網絡上的源116收集信息的服務。圖2示出了事件104-1被發送給分發主題144。分發主題144將事件散發給多個分發分區。分發分區120-1被用作所有分發分區的類似物。各分發分區各自服務于由訂閱所表示的多個最終用戶或設備。分發分區所服務的訂閱的數量可與其他分發分區所服務的數量不同。在一些實施例中,分區所服務的訂閱的數量可取決于分發分區的能力。作為替換或補充,分發分區可基于與最終用戶的邏輯或地理鄰近度來被選擇以服務用戶。這可允許以更加及時的方式將警報遞送給最終用戶。在所示示例中,分發分區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的信息)和標識目標102中的要將來自事件104-1的信息作為通知發送到的多個目標102的傳送名單128-1。包126-1隨后被置于隊列130-1中。分發分區120-1可 包括多個遞送引擎。遞送引擎使各個包從隊列130-1中出隊并將通知遞送給目標102。例如,遞送引擎108-1可從隊列130-1中取出包126-1并將事件104信息發送給傳送名單128-1中標識的目標102。因而,包括事件104-1信息的通知134能以適用于不同目標102并專用于各單獨目標102的多種不同的格式從各分發分區發送給目標102。這允許在遞送系統的邊緣處從公共事件104-1創建針對各單獨目標102進行了個別化的個別化通知134,而非通過該遞送系統運送大量個別化的通知。以下討論現涉及可以執行的多種方法以及方法動作。雖然用特定次序討論或用以特定次序發生的流程圖示出了各個方法動作,但除非明確規定否則不需要特定次序,或因為一動作依賴于另一動作在執行該動作之前完成而需要特定次序。現在參考圖3,示出了方法300。該方法可以在計算環境中實施。該方法包括用于以可最小化消息復制和消息等待時間的方式將事件分發給大量事件消費者的動作。該方法包括確定一事件應被發送給一組特定消費者(動作302)。例如,如圖2所示,事件104需要被發送給目標102中的一個或多個。該方法還包括復制該事件并將各單獨的副本提供給多個分發分區(動作304)。例如,如圖2所示,在分發主題處將該事件復制到多個分發分區,如分發分區120-1和所示的其他分發分區。該方法還包括在各分發分區中的每一個處,將事件的副本與多個傳送名單一起打包以創建多個遞送包(動作306)。傳送名單可描述旨在接收該事件的多個單獨的消費者。這樣的遞送包的示例在圖2中的126-1處示出。該方法還包括使用遞送包將事件分發給傳送名單中指定的各單獨的消費者(動作308)。例如,如圖2所示,遞送引擎108-1能夠使用傳送名單128-1將事件104遞送給各目標 102。可以實施方法300的一些實施例,其中基于分區能力來確定各分區。例如,將由分發分區對其分發事件的目標的數量可由能力來確定,如由諸如系統硬件、網絡連接、當前負載等因素來確定。可以實施方法300的一些實施例,其中基于場所來確定各分區。例如,可以向分區(如分區120-1)分配在地理上或邏輯上與該分區鄰近的目標。可以實施方法300的一些實施例,其中傳送名單定義用于如何將事件遞送給各單獨的消費者的規則和約束。例如,傳送名單可包括消費者專用的過濾器。在一個示例中,消費者(即,目標用戶)可以定義關于要接收或不接收什么類型的事件的偏好。這一信息可被包括在傳送名單中,以使得關于是否要遞送事件的決策可以由遞送引擎在遞送系統的邊緣處作出。在一替換或補充實施例中,傳送名單可以定義網絡位置規則。例如,傳送名單可包括到達特定目標的網絡路徑。在一替換或補充實施例中,傳送名單可包括安全憑證信息。例如,對于要遞送的事件可能需要安全憑證。具體而言,設備上的應用程序在與提供事件數據的服務器進行通信時可能期望一些安全協議信息。該安全協議信息可由遞送引擎108-1來包括以確保事件被正確地遞送。在一替換或補充實施例中,傳送名單可包括將原始事件數據映射到消費者所期望的格式的規則。例如,該事件可以是通用形式,但傳送名單可以定義目標的平臺。這允許遞送引擎108-1在將事件遞送給目`標之前以適于所定義的平臺的特定格式將事件104格式化。各方法可由包括一個或多個處理器和諸如計算機存儲器等計算機可讀介質的計算機系統來實施。具體而言,計算機存儲器可存儲計算機可執行指令,這些指令在由一個或多個處理器執行時使得諸如各實施例中所述的各個動作等各種功能被執行。本發明的各實施例可以包括或利用包含計算機硬件的專用或通用計算機,這將在下文中更詳細地討論。本發明范圍內的各實施例還包括用于承載或存儲計算機可執行指令和/或數據結構的物理和其他計算機可讀介質。這樣的計算機可讀介質可以是可由通用或專用計算機系統訪問的任何可用介質。存儲計算機可執行指令的計算機可讀介質是物理存儲介質。承載計算機可執行指令的計算機可讀介質是傳輸介質。由此,作為示例而非限制,本發明的各實施例可包括至少兩種顯著不同的計算機可讀介質物理計算機可讀存儲介質和傳輸計算機可讀介質。物理計算機存儲介質包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲(如CD、DVD
等)、磁盤存儲或其他磁存儲設備、或可用于存儲計算機可執行指令或數據結構形式的所需程序代碼裝置且可由通用或專用計算機訪問的任何其他介質。“網絡”被定義為允許在計算機系統和/或模塊和/或其他電子設備之間傳輸電子數據的一個或多個數據鏈路。當信息通過網絡或另一個通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計算機時,該計算機將該連接適當地視為傳輸介質。傳輸介質可包括可用于攜帶計算機可執行指令或數據結構形式的所需程序代碼裝置且可由通用或專用計算機訪問的網絡和/或數據鏈路。以上介質的組合也被包括在計算機可讀介質的范圍內。此外,在到達各種計算機系統組件時,以計算機可執行的指令或數據結構的形式存在的程序代碼裝置可以自動地從傳輸計算機可讀介質傳輸到物理計算機可讀存儲介質(或者反之亦然)。例如,通過網絡或數據鏈路接收到的計算機可執行指令或數據結構可被緩存在網絡接口模塊(例如,“NIC”)內的RAM中,然后最終被傳送到計算機系統RAM和/或計算機系統處的較不易失性的計算機可讀物理存儲介質。因此,計算機可讀物理存儲介質可被包括在同樣(或甚至主要)利用傳輸介質的計算機系統組件中。計算機可執行指令包括,例如使通用計算機、專用計算機、或專用處理設備執行某一功能或某組功能的指令和數據。計算機可執行指令可以是例如二進制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結構特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權利要求書中定義的主題不必限于上述特征或動作。相反,上述特征和動作是作為實現權利要求的示例形式而公開的。本領域的技術人員將理解,本發明可以在具有許多類型的計算機系統配置的網絡計算環境中實踐,這些計算機系統配置包括個人計算機、臺式計算機、膝上型計算機、消息處理器、手持式設備、多處理器系統、基于微處理器的或可編程消費電子設備、網絡PC、小型計算機、大型計算機、移動電話、PDA、尋呼機、路由器、交換機等等。本發明也可在其中通過網絡鏈接(或者通過硬連線數據鏈路、無線數據鏈路,或者通過硬連線和無線數據鏈路的組合)的本地和遠程計算機系統兩者都執行任務的分布式系統環境中實施。在分布式系統環境中,程序模塊可位于本地和遠程存儲器存儲設備中。本發明可具體化 為其他具體形式而不背離其精神或特征。所描述的實施例在所有方面都應被認為僅是說明性而非限制性的。因此,本發明的范圍由所附權利要求書而非前述描述指示。落入權利要求書的等效方案的含義和范圍內的所有改變被權利要求書的范圍所涵蓋。
權利要求
1.一種在計算環境中的以最小化消息復制和消息等待時間的方式將事件分發給大量事件消費者的方法,所述方法包括 確定事件(104)應被發送給一組特定消費者(302); 復制所述事件(104-1)并將各單獨的副本提供給多個分發分區(120) (304); 在所述分發分區(120)中的每一個處,將所述事件的副本(104-1)與多個傳送名單(128-1) 一起打包以創建多個遞送包(126-1) (306),所述傳送名單(128-1)描述旨在接收所述事件(104-1)的多個單獨的消費者;以及 使用所述遞送包(126-1)將所述事件(104-1)分發給所述傳送名單(128-1)中指定的各單獨的消費者。
2.如權利要求1所述的方法,其特征在于,所述分發分區是基于分發分區能力來確定的。
3.如權利要求1所述的方法,其特征在于,所述分區是通過場所來確定的。
4.如權利要求1所述的方法,其特征在于,所述傳送名單定義用于如何將所述事件遞送給各單獨的消費者的規則和約束。
5.如權利要求4所述的方法,其特征在于,所述約束定義用戶偏好,并且其中使用所述遞送包將所述事件分發給所述傳送名單中指定的各單獨的消費者包括基于所述傳送名單中的用戶偏好來確定是否遞送事件。
6.如權利要求4所述的方法,其特征在于,所述約束定義將原始事件數據映射到各單獨的消費者設備的平臺專用格式的規則。
7.如權利要求1所述的方法,其特征在于,所述傳送名單包括安全憑證信息。
全文摘要
以可最小化消息復制和消息等待時間的方式將事件分發給大量事件消費者。一種方法包括確定一事件應被發送給一組特定消費者。該方法還包括復制該事件并將各單獨的副本提供給多個分發分區。該方法還包括在各分發分區中的每一個處,將事件的副本與多個傳送名單一起打包以創建多個遞送包。傳送名單描述旨在接收該事件的多個單獨的消費者。該方法還包括使用遞送包將事件分發給傳送名單中指定的各單獨的消費者。
文檔編號H04L29/06GK103067349SQ201210335100
公開日2013年4月24日 申請日期2012年9月11日 優先權日2011年9月12日
發明者C·F·瓦斯特斯 申請人:微軟公司