專利名稱:內容分發網絡中的部分對象分配的制作方法
內容分發網絡中的部分對象分配背景技術
數字內容的提供者需要將他們的產品分發給消費者的可靠且有效的方法。許多內容提供者缺少為滿足來自廣泛分布的終端用戶的高標準需求所必需的基礎設施。缺少這種基礎設施可使為服務質量變低和在線體驗普遍變差。
內容分發網絡(Content delivery network, Q)N)保持出現在因特網的各處并且將內容提供者的內容對象作為服務來提供。在這個設備中,內容提供者將它的內容對象的分發轉移給CDN。隨后,該CDN以比集中式分配系統可能具有的可靠性和效率更高的可靠性和效率來啟動向終端用戶分配大量的內容。發明內容
公開了在內容分發網絡中分配內容對象的技術。在一個實施例中,CDN分配服務器檢測內容對象的可得到性并且確定內容對象是否是用于分配的候選。該分配服務器可以響應于提供者使新的或者更新的內容可在CDN內的內容站點或者位置處得到來檢測內容對象的可得到性。該分配服務器獲取候選的內容對象的標識信息,并且確定要在CDN內分配的內容對象的選定部分。該選定部分可以是位于內容對象中的預定位置處的預定數量的字節,這些字節的大小和位置可以根據特定于內容的映射數據來確定。該分配服務器可以在沒有終端用戶請求的情況下將內容對象的選定部分推送給一個或更多個CDN邊緣服務器。
在一個實施例中,公開了一種CDN中分配內容的方法。在分配服務器處接收內容對象在CDN的第一位置處可得到的指示。該指示可以是當新的內容對象或者更新的內容對象上載到CDN源服務器時所觸發的事件。該分配服務器可以從源服務器獲得關于內容對象的信息并且可以確定內容對象是否是用于分配的候選。該分配服務器還可以將關于內容對象的信息與一組映射數據進行比較。如果確定內容對象是用于分配的候選,則內容對象的選定部分可以基于映射數據進行標識以便分配。該分配服務器能夠從源服務器取回內容對象的選定部分并且可以確定要接收該內容對象的選定部分的多個邊緣服務器。在多播通信中該內容對象的選定部分可以發送給多個邊緣服務器。
在另一實施例中,公開了 一種內容分配服務器。該內容分配服務器包括連接到內容分發網絡(CDN)的消息接發子系統。該消息接發子系統可以將事件消息與多個CDN邊緣服務器交換。該內容分配服務器還包括可以存儲映射數據或者在CDN中的其它地方可得到的映射數據的引用的存儲器。該映射數據可以包括內容標識符和對應于該內容標識符的字節值。該內容分配服務器可以包括從消息接發子系統接收表示內容對象在CDN的第一位置是可得到的事件消息的一個或更多個處理器。該一個或更多個處理器可以確定該內容對象是否是用于定位在CDN的邊緣服務器的候選并且可以獲得與該內容對象有關的標識符。使用標識符和映射數據,內容分配服務器可以從第一位置獲得部分內容對象。該內容分配服務器可以標識多個接收邊緣服務器并且可以在⑶N上發送該部分內容對象。
在又一個實施例中,公開了一種內容分發系統。該內容分發系統包括分配服務器和布置在一個或更多個多播組內的多個邊緣服務器。分配服務器包括在內容分發系統的第一位置處檢測內容對象的可得到性的消息接口。檢測該內容對象的可得到性可以在不用首先接收內容對象的分發的請求的情形下執行。該分配服務器還包括確定內容對象是否是用于定位的候選并且獲取與內容對象有關的映射信息的目標分析器。當確定內容對象是用于定位的候選時該目標分析器基于映射信息可以從第一位置取回一部分內容對象。該分配服務器還包括用于根據內容提供者信息來確定目標多播組以接收部分內容對象的多播組管理器。該多播組管理器可以將該部分內容對象發送到與其它CDN工作異步的邊緣服務器的多播組。
多播組中的每個邊緣服務器可以包括接收來自終端用戶計算機的內容請求和將所請求的內容對象發送到終端用戶計算機的請求接口。該邊緣服務器還可以包括接收包含部分內容對象的多播消息的CDN接口。在每個邊緣服務器的字節存儲區可以配置為存儲部分內容對象。該部分內容對象可以包括隨著相應的完整內容對象的類型而改變的字節數量和字節選擇。存儲控制器可以將從分配服務器接收到的部分內容對象增加到字節存儲區并且可以響應于接收內容請求而從字節存儲區取回數據。如果確定字節存儲區沒有包含與內容請求有關的部分內容對象,則存儲控制器可以產生CDN事件。
本公開的其他應用方面根據以下提供的詳細說明將變得明顯。需要理解的是,雖然顯示了各種實施例,但該詳細說明和具體示例僅僅是為了說明而必然不是想限制本公開的范圍。
圖1示出了內容分配系統的實施例。
圖2示出了出現⑶N存在點的實施例。
圖3示出了內容分配服務器的實施例。
圖4示出了示例性定位數據。
圖5示出了示例性映射數據。
圖6示出了示例性多播消息。
圖7示出了分配部分內容對象的示例性方法。
圖8示出了邊緣服務器的一個實施例。
圖9示出了保持部分對象內容存儲區的示例性方法。
圖10示出了響應內容請求的示例性方法。
圖11示出了使在多播邊緣服務器組中的部分對象內容存儲協調的示例性方法。
在這些附圖中,相似的組件和/或特征可以具有相同的附圖標記。在一些情況中,通過用破折號和進一步區分相似元件的第二附圖標記跟著第一附圖標記來標識相同類型的元件。如果僅僅使用第一參考標記,則該說明適用于由第一附圖標記指定的任何相似元件。
具體實施方式
接下來的說明只是提供優選的示例性實施例,并且該優選的示例性實施例不是想限制本發明的范圍或者可應用性。更確切地說,接下來的說明將使本領域技術人員能夠實施這種優選的示例性實施例。本領域技術人員將認識到在不脫離所附權利要求書中提出的本發明的精神和范圍的情形下可以對元件的功能和布置進行各種改變。
首先參考圖1,其是示出內容分配系統100的實施例的框圖,在該內容分配系統100中內容始發站106將內容對象的分發轉移到內容分發網絡(content deliverynetwork,⑶N)。內容始發站106產生和/或分配內容對象,并且可以包括內容提供者108和內容站點110。⑶N經由終端用戶系統102在因特網104上將內容對象分發到終端用戶128。
如圖所示,⑶N可以包括源服務器112、分配服務器(也稱為“控制服務器”)116和各種存在點120 (points of presence, POP)。POP 120可以配置在內容分配系統100的各處并且可以在特定的地理區域中和/或通過特定業務提供者將內容對象提供到終端用戶系統102。例如,POP 120可以指定為將內容對象供應到特定接入網絡上、特定城市中或者特定城市中的特定接入網絡上的終端用戶128以便于有效的分發和促進良好的用戶體驗。正如這里所使用的,內容對象是任何內容文件或者內容流并且可以包括例如視頻、圖片、數據、音頻、軟件和/或文本。在這說明書中,術語“內容對象、內容、內容流和/或內容文件”可以可交替的方式使用。
當內容提供者108產生新的內容或者對現有的內容更新時,它們可以通過⑶N將內容對象上載到用于分配的源服務器112。源服務器112包括保存一個或更多個內容提供者108的內容對象的副本的存儲器114并且可以用作CDN內的內容對象的來源。在一些實施例中,CDN的元件可以監測內容站點110并且當新的和/或更新的內容對象變得可得到時可以將它們復制到源服務器112。
當終端用戶128通過它各自的終端用戶系統102來請求分發內容時,該請求可以經由因特網104直接或者間接地傳遞到內容站點110。終端用戶系統102可以是個人電腦、媒體播放機、手持式計算機、因特網設備、電話、IPTV機頂盒、流式收音機或者接收和處理內容對象的任何其它的裝置。內容站點110可以是可用網絡瀏覽器瀏覽內容的網絡站點。一些或者所有的內容站點110還可以用除了網絡瀏覽器以外的應用軟件來訪問。
當內容請求被接收時,可以將該內容請求從內容站點110重定向到⑶N位置。這可以包括制訂分發路徑和將該分發路徑嵌入到與網頁或者其它的機制有關的URL。一旦內容的請求傳遞到CDN,它可以被分派給POP 120,POP 120進而管理所請求的內容對象到終端用戶系統102的分發。
如果內容對象在指定的POP位置是不可得到的,則內容對象的請求可以朝向CDN的核心傳播并且最終可以從在源服務器112的存儲器114被完成。在某種意義上,內容對象通過⑶N拖拉(pull)到POP 120,該內容對象可以從POP 120分配給發出請求的終端用戶系統102。在請求之后,完整內容對象可以緩存在核心CDN和網絡邊緣之間的一個或更多的位置。隨后的內容對象的請求可以從該所緩存的位置被完成。
將內容對象從源服務器112拖拉到發出請求的終端用戶系統102也許是耗時和資源密集的。另一方面,在CDN邊緣處保存每個內容對象的副本是低效率的,因為許多內容對象只是偶爾被請求。此外,如果所有對象永久地存儲在邊緣位置處,則所得到的系統將具有有限的可擴展性。
分配服務器116使向終端用戶128快速分發內容對象的需求與有效地利用網絡資源的需求達到平衡。當內容提供者108將新的或者修改過的內容對象上載到存儲器114時分配服務器116可以監視在源服務器112處的內容對象的狀態。在各種實施例中,分配服務器116可以連接到CDN的消息接發系統118并且可以在源服務器112處出現內容相關的事件時通過WAN 122接收通知。例如,消息接發系統118可以是基于高級消息隊列協議(Advanced Message Queuing Protocol, AMQP)的中間件。⑶N消息接發可以是發布和訂閱、請求-響應或者其它的鏈接,分配服務器116通過該鏈接對源服務器112處的內容相關事件進行監測、檢測和/或警報。當新的內容對象被增加或者現有的內容對象被改變時,分配服務器116進行分析以確定該改變是否應該反映在CDN中。確定是否根據源服務器112處的事件進行作用可以基于內容提供者的需求、內容對象的類型、地理考量、網絡考量、終端用戶考量或者許多因素的組合。例如,內容提供者108可能希望將它的內容對象指向特定地理區域中的用戶,該用戶將使用諸如音樂播放器、視頻播放器、文檔閱讀器等特定類型的軟件應用以特定數據格式來訪問內容。如果分配服務器116確定⑶N事件是可動作的,它可以從源服務器112獲取關于內容對象或者內容對象本身的一部分的元數據。使用這個信息,分配服務器116可以確定分配到CDN中的POP位置的部分內容對象。部分內容對象可以包括少量字節或者基于內容的類型所確定的其它數據單元。例如,如果內容對象是窗口媒體視頻(Window MediaVideo, WMV)文件,分配服務器116可以選擇表示編解碼器的字節、幀大小和與內容再現有關的其它屬性。在一些實施例中,分配服務器116保存特定于內容的映射,通過該特定于內容的映射來確定的相關數據單元的位置。當從源服務器112獲取內容對象的相關部分時,分配服務器116確定在⑶N中該內容對象應該分配在哪里。這個操作可以單獨進行或者它可以與確定在源服務器112的事件是否是可動作的操作一起進行。例如,確定事件是否可動作可能導致進一步確定CDN的哪部分被影響。因此,如果公司X希望瞄準洛杉磯市場來分配移動裝置的內容,則分配服務器116可以同時確定與公司X內容有關的新文件事件是可動作的并且通過分析所確定的新內容對象的部分應該分配給服務于適當的地理區域、硬件平臺、軟件平臺等的P0P120。在一些實施例中,服務器116將一個或更多個多播數據包中的部分內容發送給POP 120。需要注意的是,與請求驅動的操作不同,116可以響應于出現在源服務器112處的事件來將部分內容拖拉到POP 120。有利地,該處理可以與其他的⑶N操作異步地進行并且可以避免拖拉數據(或者模擬拖拉)以將部分內容移動到邊緣位置的需求。在POP 120處的邊緣服務器接收多播包并且可以將部分內容對象增加到本地的數據存儲區。因為多播包常常僅包括很少字節的內容對象,因此對應整個內容庫的部分內容對象可以容易地保存在本地數據存儲區中。同樣,因為邊緣服務器可以在對⑶N操作的影響最小的情形下來有效地增加、更新或者移除,因此⑶N中的可擴展性被保持。此外,當內容請求被接收時,部分內容對象可以迅速地分配到發出請求的終端用戶系統102并且被客戶機軟件使用以準備接完整內容對象。例如,為了啟動客戶機軟件、選擇適當的編解碼器、調整閱讀器窗口的大小、更新文件特性等,WMV內容對象的相關字節可以直接地傳遞到終端用戶系統。以這種方式,即使當必須從遠程位置取回完整內容對象時,CDN的所感知的響應度提高。接著參考圖2,示出了可以是分散在⑶N各處的許多個POP 120中的一個POP 120的實施例的框圖。在該實施例中,POP 120包括內容請求接口 220、邊緣服務器選擇功能224和均具有相應的內容存儲區232的多個邊緣服務器230。如以上結合圖1所述,當內容的請求移交到CDN時,它可以與對所請求的內容對象到終端用戶的分發進行處理的特定P0P120相關。指定的POP 120通過內容請求接口 220接收內容請求。邊緣服務器選擇功能224將請求分派給負責將內容對象發送給發出請求的終端用戶系統102的邊緣服務器230。邊緣服務器選擇功能224可以通過重定向該請求,經由域名服務(domain name service,DNS)解析來從POP處的邊緣服務器230組中選擇邊緣服務器(例如,230-2)或者通過其它已知的機制選擇邊緣服務器。可以在選擇邊緣服務器230的處理中通過邊緣服務器選擇功能224來將各種參數納入考慮。影響特定邊緣服務器的選擇的參數示例可以包括內容對象特性、分派給特定內容提供者的服務器、優質的服務(QoS)、性能量度、CDN邊緣服務器230的容量和/或邊緣服務器230和終端用戶系統102之間的路由效率。需要注意每個POP位置可以包括許多的邊緣服務器。一旦內容的請求被分派,所選擇的邊緣服務器230確定對應于所請求的內容的部分內容對象在其關聯的內容存儲區232中是否是可得到的。如果部分內容對象是可得到的,它可以快速地發送給請求者以便可以開始準備接收完整內容對象和提高終端用戶128的體驗。當部分內容對象被發送時,完整內容對象可以從POP 120內的一個或更多個緩存位置取回,或可被所選擇的邊緣服務器230存取。以這種方式,所請求的內容對象以有效的、本地化的方式分配給終端用戶128。如果部分內容對象在所分派的邊緣服務器230的內容存儲區232中是不可得到的,則所請求的內容對象可以從遠程位置取回。遠程位置可以是源服務器112或者在相同或者不同的POP 120中的另一個CDN邊緣服務器。然后,所請求的內容對象可以存儲在可被所選擇的邊緣服務器230存取的緩存器中并且分配給發出請求的終端用戶128。對于完整內容對象,邊緣服務器230可以用作緩存代理服務器并且可以將在其多層緩存器中不可得到的內容對象的請求傳遞到核心網絡。作為部分內容收回處理,所選擇的邊緣服務器230可以產生至分配服務器116的事件或信號,該分配服務器116的部分目標內容存儲區232需要被更新。當新的邊緣服務器230被增加至POP時,例如,它的內容存儲區232需要與分配服務器116的當前狀態協調。替代地,當邊緣服務器230在離線后返回到服務時,它的內容存儲區232需要增量更新(incremental update)。邊緣服務器選擇功能224保證當更新未決時無效數據不被供應。接著參考圖3,示出了分配服務器300的實施例的功能框圖。分配服務器300可用于內容分配系統100并且包括消息接發子系統310、內容對象分析器320和多播組管理器350。消息接發子系統310可以將消息發送到包括源服務器112、P0P 120和邊緣服務器230的CDN的其它元件和從CDN的其它元件接收消息。該消息可以使用私有協議或者諸如AMQP等標準化協議由中間件來產生并且可以遵循發布和訂閱、請求-響應或者其它的通信樣式。在一個實施例中,分配服務器300在源服務器112訂閱事件并且將它的事件通過代理程序發布到邊緣服務器230,但是在本發明范圍內可以進行許多變化。消息接發子系統310將所關心的⑶N事件傳送給內容對象分析器320。⑶N事件可以包括文件創建事件、文件更新事件、策略更改事件或者與內容對象的定位和/或分配有關的其它事件。例如,當內容提供者108將內容對象上載到源服務器112時,源服務器文件系統可以產生文件創建事件。文件創建事件可以傳播到分配服務器300并且由作為內容相關的文件系統事件的訂閱者的消息接發子系統310接收。作為另一個示例,分配服務器300可以根據內容提供者的分配策略周期性地請求更新并且接收更新信息的響應。當檢測到內容相關事件時,消息接發子系統310通知內容對象分析器320。內容對象分析器320可以從源服務器112請求關于內容對象的信息。例如,內容對象分析器320可以請求新的或者改變的對象的元數據。在一些情況中,元數據是由內容提供者108產生并且可以包括關于該類文件的信息和適用于CDN內的它的分配的交易規則或策略。替代地或者另外地,內容對象分析器320可通過在內容對象所處的服務器上執行處理來獲取關于內容對象的相關信息。例如,內容對象分析器320可以從在源服務器112處進行的文件分析處理來推斷輸出。內容對象分析器320利用內容對象信息來確定內容對象是否是定位在CDN內的部分對象的候選。在一個實施例中,內容對象分析器320將該信息與保存在分配服務器116的定位數據330相比較。定位數據330可以反映交易規則、客戶服務協議和與來自內容提供者的特定類別的對象是否應該分配和部分對象分配應該發生在什么CDN位置處有關的其它判定數據。圖4示出了諸如可以與分配服務器300 —起使用的示例性定位數據400。為了方便起見,定位數據400顯示為具有表格格式但是可以是任何合適的數據結構。提供者ID和內容位置欄可用于標識在特定內容站點或者CDN位置處可得到的對應特定內容提供者108的內容對象。內容類型欄可以用于將定位數據400中的項目與諸如視頻、音樂、電子書、文檔等內容的特定類型相關聯。內容定位和多播組欄可以表示指定內容是否應該定位在CDN中,如果是這樣的話,它應該定位在哪里。內容對象分析器320將關于新的/更新的內容對象的信息與定位數據400匹配并且確定是否采取進一步的動作。例如,基于該示例性定位數據,如果確定新的/更新的內容對象是由提供者Alpha上載到位置01的視頻對象,則內容對象分析器320可以確定該對象的一部分應該分配給多播組Ml、M2、M3和M4。另一方面,如果新的/更新的內容對象由提供者Beta上載到位置02,則不需要進行部分對象定位。如先前所述的,可以基于用戶協議、目標市場、需求程度、內容種類、目標計算平臺或者這些因素的任何組合來做出關于定位在CDN中的部分對象的決定。當做出放置內容的決定時,內容對象分析器320確定應該分配內容對象的哪個部分。該確定可以基于保存在分配服務器300的映射數據340來做出。映射數據340可用于通過分配服務器300來標識用于取出的內容的相關部分。然后可以將這部分或者這部分內容對象分配給由定位數據330標識的多播組。圖5示出了諸如可以與分配服務器300 —起使用的示例性映射數據500。正如定位數據400,映射數據500以表格格式示出但可以是任何合適的數據結構。內容ID欄包括對應于內容對象的類型的數據。在該示例中,內容ID表示唯一地標識內容對象的類型(例如,Doc.L、Vide0.X、Audi0.Q等)的文件形象(magic)信息并且可以選擇性地反映諸如容器類型、音頻編解碼器和/或視頻信號編解碼信息等附加信息。然而,目前描述的實施例不限于特定形式的內容標識。內容對象分析器320使用所獲取的關于新的/更新的內容對象的信息來從映射數據340取回項目。例如,使用示例性映射數據500,如果新的/更新的對象的內容標識符是0xF78B,內容對象分析器320將確定部分內容對象應該包括從文件的起始取得的6個字節(偏移量=0)。另一方面,如果新的/更新的對象的內容標識符是0x30B2,對應于內容類型音頻.Q,則內容對象分析器320將確定部分內容對象應該包括在新的/更新的內容對象的第一字節(偏移量=1)之后的3個字節。以這種方式,映射數據340可以根據內容的類型來指定內容對象中相關字節的數量和相關字節的位置。使用來自映射數據的結果,內容對象分析器320可以從源服務器112獲取部分內容對象。多播組管理器350從內容對象分析器320接收部分內容對象和多播組,并且組裝一個或更多個數據包以傳輸到邊緣服務器230。例如,使用多播組信息,多播組管理器350可以將包含部分內容對象的數據包傳輸到一個或更多個POP 120位置處的邊緣服務器230。圖6示出了諸如可以由多播組管理器350產生的示例性多播包600。正如所示,多播包600包括多播組地址、序列ID、請求名稱和部分內容對象有效載荷。多播組地址可以與定位數據330中的多播組項目對應并且可以標識邊緣服務器230以接收部分內容對象有效載荷。序列ID可以表示對于特定內容集合、特定源服務器等分配服務器300關于部分內容對象的的當前狀態。如下所述,序列ID可用于與邊緣服務器相協調或者利用邊緣服務器更新處理。內容名稱與由終端用戶系統102使用的標識符對應,以請求CDN中的內容對象,并且內容名稱可以例如基于對象的URI或者其它的標識符。圖7是示出用于分配CDN中的部分內容對象的示例性方法700的流程圖。方法700可以由工作在如圖1所示的⑶N內的分配服務器116來進行。在一些實施例中,方法700由執行程序指令的一個或更多個處理器來執行,以控制分配服務器300的操作,如結合圖3所描述的操作。程序指令和數據元素可以存儲在諸如隨機存取存儲器(random-access-memory,RAM)、只讀存儲器(read-only memory,ROM)、閃速存儲器、磁存儲器、光存儲器等計算機可讀存儲介質上。在模塊710,在分配服務器處接收表示內容對象在⑶N中的第一位置處可得到的消息。該消息可以是當內容提供者將新的內容增加給源服務器或者修改現有的內容對象時在CDN中觸發的事件或者通知。替代地,該消息可以是對由CDN啟動的針對用戶網絡內的位置的內容檢查的響應。新的或者更新的內容可以從用戶網絡轉移到CDN中的位置。在模塊720,分配服務器獲取關于新的或者更新的內容對象的信息。該信息可以包括文件元數據、標識符、指紋、雜亂信號(hash)等。在模塊730,基于該信息,分配服務器確定該內容是否是在CDN中部分對象定位的候選。確定該內容是否是用于定位的候選可以由內容對象分析器320基于諸如內容提供者、內容的類型、內容的位置、交易規則或者因素和布置邏輯的其它任何組合等來自定位數據330的準則來做出。如果確定該內容不是部分對象定位的候選,該方法結束。如果確定該對象是用于定位的候選,在模塊740,分配服務器確定用于分配的內容對象的一個或更多個部分。在各種實施例中,內容對象的部分由內容對象分析器320使用映射數據340來選擇,使得字節數量和字節位置是基于內容的類型。諸如應用軟件的行為等與終端用戶系統102有關的其它需要考慮的事項也可能影響部分內容對象的選擇。在模塊750,分配服務器選擇一個或更多個多播組以接收該部分內容對象。該多播組可以基于定位數據330來選擇并且可以反映與內容提供者有關的交易規則的應用。在模塊760,分配服務器將部分內容對象發送到所選定的多播組的邊緣服務器。以這種方式,部分內容對象被推送到邊緣位置而不是響應于內容請求而被拖拉。推送該部分內容對象不需要接收內容請求或者模擬數據拖拉并且可以與其它CDN操作異步的方式而完成。通過對處于邊緣位置的部分內容對象進行定位,即使當從其它CDN位置獲得完整內容對象時,也可以提聞整體的用戶體驗。圖8是諸如可以位于內容分配系統100的POP 120的邊緣服務器800的一個實施例的功能框圖。如圖所示,邊緣服務器800包括⑶N接口 810、數據存儲控制器820、優化部分對象內容存儲區830和內容請求接口 840。⑶N接口 810從分配服務器接收多播包(諸如圖6所示)并且可以提取序列ID、請求名稱和部分對象有效載荷或者其它數據元素。數據存儲控制器820將部分對象存儲在優化內容存儲區830中并且用來自多播包的信息對本地序列ID進行更新。基于對象的URI或者其它的標識符,該對象可以使用雜亂信號來從內容存儲區830取回。例如,如果多播包包含由來自VIDE0.FLV的兩個字節所組成的部分內容對象,則數據存儲控制器820在對應于VIDE0.FLV的項目中將兩個字節部分寫入到內容存儲區830。數據存儲控制器820還將多播包的序列ID記錄為內容存儲區830的狀態的指示。需要注意的是,部分對象被增加至內容存儲區830的方法可以與邊緣服務器800的其它操作異步并且不依賴于終端用戶請求。同樣,從CDN的觀點來看,部分內容對象從核心網絡推送(而非拖拉)到邊緣位置。內容請求接口 840接收和處理來自終端用戶系統的內容請求。當請求被接收時,內容請求接口 840將所請求的對象的標識符傳遞給數據存儲控制器820。數據存儲控制器820確定對應于所請求的內容的部分內容對象在內容存儲區830中是否是可得到的。例如,數據存儲控制器820可以嘗試將所請求的內容與內容存儲區830中的可得到的字節的索引(index)匹配。如果是匹配的,控制器820取回對應于所請求的內容的部分對象并且迅速地將它發送給請求者。如先前所指出的,部分內容對象可以被選擇以使終端用戶系統能夠通過例如啟動合適的軟件、確定與內容對象一起使用的合適的編解碼器、調整閱讀器的尺寸和位置等來開始準備接收完整內容對象。如果相應的部分內容對象在內容存儲區830中是不可得到的,則邊緣服務器800可以檢查在CDN的一個或更多個緩存層中是否找到了所請求的對象。緩存層可以相對于各個POP 120而布置以便將內容對象保持在CDN邊緣附近從而使它們的可得到性最大化。如果在緩存層中未找到所請求的對象,它可以從合適的源服務器取回并且為響應于隨后的請求而保留在一個或更多個中間緩存級中。在這個情況下,邊緣服務器800用作將內容從CDN內的位置分發到終端用戶系統的處理中的傳遞(pass-thixnigh)裝置。邊緣服務器800還可以直接或者間接地發信號給分配服務器116,所請求的內容的部分內容對象在所述分配服務器116的內容存儲區830中是不可得到的。在一些實施例中,邊緣服務器800包括消息接發系統118,邊緣服務器800通過該消息接發系統118鏈接到分配服務器116和CDN的其它元件。使用該消息接發系統時,當部分對象在內容存儲區830中是不可得到的時,數據存儲控制器820可以觸發事件,并且分配服務器116可以通過進行如這里描述的協調處理來對該事件作出響應。替代地,分配服務器116可以在⑶N緩存級監測事件,以確定什么時侯特定邊緣服務器800或者多播組的協調是合適的。圖9是示出保持部分內容存儲區的示例性方法900的流程圖。方法900可以由工作在諸如圖1所示的內容分發系統100等CDN內的邊緣服務器230來進行。在一些實施例中,方法900由執行程序指令的一個或更多個處理器進行以控制如圖8所述的邊緣服務器800的操作。程序指令和數據元素可以存儲在諸如隨機存取存儲器(random-access-memory,RAM)、只讀存儲器(read-only memory,ROM)、閃速存儲器、一個或更多個磁存儲器、光存儲器等計算機可讀存儲介質上。在模塊910,邊緣服務器接收包括部分內容對象的多播數據包。該數據包可以與多播包600相似并且可以包括具有部分內容字節的各種標識符。在模塊920-930,該邊緣服務器提取標識符和相應字節的內容對象并且將它們記錄在它的內容存儲區中。這可以包括將內容對象的名稱與相應字節關聯并且更新部分對象內容存儲區的序列標識符。當處理完成時,該部分內容對象可獲得,以從邊緣服務器分配到終端用戶系統。圖10是示出對內容請求作出響應的示例性方法1000的流程圖。方法1000可以由工作在諸如圖1所示的內容分發系統100等CDN內的邊緣服務器來進行。在一些實施例中,方法1000由執行程序指令的一個或更多個處理器進行以控制如圖8所述的邊緣服務器800的操作。程序指令和數據元素可以存儲在諸如隨機存取存儲器(random-access-memory,RAM)、只讀存儲器(read-only memory, ROM)、閃速存儲器、一個或更多個磁存儲器、光存儲器裝置等計算機可讀存儲介質上。在模塊1010,內容對象的請求在邊緣服務器被接收。該請求可以發送到作為如圖2所示的處于POP位置120處的邊緣服務器選擇功能224的一部分的邊緣服務器。在模塊1020,邊緣服務器確定所請求的內容的部分對象是否是可得到的。這可以包括搜索對應于所請求內容的項目的內容存儲區。如果發現項目,在模塊1050,邊緣服務器將特定于內容的字節從它的內容存儲區發送給終端用戶系統,內容請求從該終端用戶系統接收。如果部分內容對象是不可得到的,在模塊1030,邊緣服務器可以發送⑶N消息接發系統上的消息,以表明其不能提供部分內容對象。如模塊1040所顯示的,該消息可以在不同的緩存級和/或CDN部分搜索所請求內容時出現。一旦確定相關部分內容對象,在模塊1060檢查處于邊緣位置的完整內容對象的可得到性。如果在該邊緣處內容對象是不可得到的,則從其它的CDN存儲器請求該內容對象,并且在模塊1070,邊緣服務器將所請求的對象發送給終端用戶系統。圖11是使多播邊緣服務器組的部分對象內容存儲區協調的示例性方法1100的流程圖。方法1100可以通過諸如圖3示出的分配服務器300來執行并且可以包括執行程序指令的一個或更多個處理器。該程序指令可以與合適的數據元素一起存儲在如先前描述的計算機可讀存儲介質上。在模塊1110,檢測邊緣服務器事件。當部分內容對象在邊緣位置不可得到時可以從CDN消息接發系統接收到該事件或者當邊緣服務器從諸如更深的緩存級或者另一個POP位置等CDN位置請求內容時可以觸發該事件。在模塊1120,分配服務器從以下邊緣服務器請求內容存儲標識符:其屬于與相關于事件的邊緣服務器相同的多播組。例如,分配服務器可以在邊緣服務器地址上進行查找以獲取多播組地址然后將狀態請求發送給組地址。
基于來自邊緣服務器的信息,在模塊1130,分配服務器可以確定分配哪個部分內容對象。在一些實施例中,在模塊1140,分配服務器在對當前的序列ID的每個響應中使序列ID匹配并且根據各個內容存儲區的狀態經由邊緣服務器選擇方法將部分內容更新發送給各個邊緣服務器。例如,如果單個邊緣服務器處于離線并且在返回到服務后需要更新,則分配服務器可以將更新包發送給在邊緣服務器的存在點處的邊緣服務器選擇處理。在另一個實施例中,分配服務器確定來自邊緣服務器響應的最低序列ID并且基于該最低標準(lowest common denominator)將更新包發送給整個多播組。當邊緣服務器接收多播更新包時,它取回部分內容有效載荷并且相應地更新它的本地內容存儲區的項目。以這種方式,通過操作分配服務器,在一個或更多個邊緣位置的本地內容存儲區與分配在CDN內的部分內容的最新集合相協調。正如本領域技術人員將理解的,本發明可以其它具體的形式實施。本領域技術人員將認識到或者僅僅使用常規實驗即能夠確定這里描述的本發明的具體實施例的許多等效實施方式。這種等效實施方式將由權利要求包括。
權利要求
1.一種在內容分發網絡中分配部分內容對象的方法,所述方法包括: 在分配服務器處接收內容對象能夠在第一位置得到的指示; 從所述第一位置獲取關于所述內容對象的信息; 確定所述內容對象是否是用于分配的候選; 將關于所述內容對象的信息與映射數據比較; 基于所述映射數據來標識所述內容對象的選定部分,所述選定部分包括在所述內容對象內的多個字節和位置; 取回所述內容對象的所述選定部分; 確定接收所述內容對象的所述選定部分的多個邊緣服務器;以及 將所述內容對象的所述選定部分發送給所述多個邊緣服務器。
2.如權利要求1所述的方法,其中所述多個邊緣服務器包括多播組,并且其中發送所述內容的所述部分包括在所述內容分發網絡內發送多播消息。
3.如權利要求1所述的方法,其中關于所述內容對象的信息是從第一位置處運行的處理來獲取。
4.如權利要求1所述的方法,其中獲取關于所述內容對象的信息包括獲取所述內容對象的元數據。
5.如權利要求3所述的方法,其中所述內容對象的所述選定部分包括所述內容對象的在一個到十個之間的數據字節。
6.如權利要求1所述的方法,其中在不存在來自所述多個邊緣服務器的對所述內容對象的請求的情形下,執行所述內容的所述選定部分的發送。
7.如權利要求1所述的方法,還包括在分配服務器處從所述內容分發網絡的消息接發系統接收事件消息 ,并且其中所述指示與在所述第一位置處的新的文件事件或者文件更新事件對應。
8.如權利要求7所述的方法,其中所述事件消息包括高級消息隊列協議(AMQP)消息。
9.如權利要求1所述的方法,其中確定所述內容對象是否是用于分配的候選是基于所述內容對象的提供者。
10.如權利要求1所述的方法,還包括: 檢測到至少一個邊緣服務器缺少作為用于定位的候選的第二內容對象的部分; 在所述分配服務器處獲取所述第二內容對象的部分;以及 將所述第二內容對象的部分從所述分配服務器發送到所述至少一個邊緣服務器。
11.如權利要求10所述的方法,其中所述檢測到至少一個邊緣服務器缺少第二內容對象的部分包括: 從所述多個邊緣服務器中的每個邊緣服務器請求序列標識符;以及 在所述分配服務器處將所述序列標識符與候選內容對象的索引做比較。
12.如權利要求10所述的方法,其中所述檢測到至少一個邊緣服務器缺少第二內容對象的部分是對接收由所述至少一個邊緣服務器產生的緩存缺失事件消息的響應。
13.如權利要求1所述的方法,其中接收所述指示和發送所述內容的所述部分以異步的方式進行。
14.如權利要求1所述的方法,其中根據所述內容對象的提供者來確定所述多個邊緣服務器。
15.如權利要求1所述的方法,其中基于地理覆蓋區域來確定所述多個邊緣服務器。
16.—種內容分配服務器,包括: 消息接發子系統,所述消息接發子系統配置為在內容分發網絡上與多個邊緣服務器通信和接收事件消息; 存儲器,所述存儲器配置為存儲包括內容標識符和對應于所述內容標識符的字節值的映射數據; 一個或更多個處理器,所述一個或更多個處理器配置為處理表示內容對象能夠在第一位置得到的事件消息,其中處理所述事件消息包括: 確定能夠在所述第一位置得到的內容對象是否是定位在所述CDN的邊緣服務器處的候選, 獲取與所述內容對象有關的標識符, 響應于確定所述內容對象是用于定位的候選,基于所述標識符從所述存儲器取回映射數據, 基于所述映射數據來確定要從所述第一位置獲取的所述內容對象的部分,以及 確定要接收所述內容對象的部分的多個邊緣服務器, 其中所述內容分配服務器在沒有對所述內容對象的請求的情況下通過內容分發網絡將所述內容對象的部分發送給所述多個邊緣服務器。
17.如權利要求16所述的分配服務器,其中所述存儲器配置為存儲內容提供者信息,并且其中確定處于所述第一位置的內容對象是否是用于定位的候選是基于所述內容提供者信息。
18.如權利要求16所述的分配服務器,其中所述字節值包括與相關于所述內容對象的客戶應用對應的字節數量。
19.如權利要求17所述的分配服務器,其中所述內容提供者信息包括地理區域,并且所述多個目標邊緣服務器根據所述地理區域確定。
20.如權利要求16所述的分配服務器,其中所述多個目標邊緣服務器包括多播組,并且其中所述分配服務器在一個或更多個多播消息中發送所述內容的所述部分。
21.如權利要求16所述的分配服務器,其中所述事件消息包括高級消息隊列協議(AMQP)消息。
22.如權利要求16所述的分配服務器,其中所述分配服務器從所述CDN接收事件消息,并且以異步的方式將所述內容的所述部分發送給所述目標邊緣服務器。
23.—種內容分發系統,包括: 分配服務器,所述分配服務器包括: 消息接發接口,所述消息接發接口配置為在不依賴所述內容對象的分發請求的情形下檢測所述內容對象在第一位置處的可得到性。
對象分析器,所述對象分析器配置為確定所述內容對象是否是用于定位的候選,所述對象分析器還配置為獲取與所述內容對象有關的映射信息,并且響應于確定所述內容對象是用于定位的候選、基于映射信息從所述第一位置取回所述內容對象的部分,以及 多播組管理器,所述多播組管理器配置為基于內容提供者信息來確定接收所述內容對象的部分的多播組,并且以與所述消息接發接口的操作異步的方式將所述內容對象的部分發送給所述多播組;以及 多個邊緣服務器,所述多個邊緣服務器布置在多播組內,所述多播組中的每個邊緣服務器包括: 請求接口,所述請求接口配置為接收內容請求,并且響應于所述內容對象請求將內容對象發送給終端用戶計算機, 內容分發系統接口,所述內容分發系統接口配置為從所述分配服務器接收具有所述內容對象的部分的多播消息, 字節存儲區,所述字節存儲區配置為在所述邊緣服務器處存儲部分內容對象,所述部分內容對象包括根據相應的完整內容對象的類型而變化的字節數量,以及 存儲控制器,所述存儲控制器配置為將從所述分配服務器接收的所述內容對象的部分存儲在所述字節存儲區中,并且響應于接收所述內容請求而從所述字節存儲區取回數據,所述存儲控制器配置為如果確定所述字節存儲區不包括與所述內容請求有關的部分內容對象,則產生內容分發系 統事件。
全文摘要
公開了用于內容分發網絡(CDN)中的內容對象的分配的技術。在一個實施例中,CDN分配服務器檢測內容對象的可得到性和確定內容對象是否是用于分配的候選。該分配服務器可以響應于提供者使新的或者更新的內容在CDN內的內容地點或者位置可得到來檢測內容對象的可得到性。該分配服務器獲得候選的內容對象的標識信息并且確定要在CDN內分配的內容對象的選定部分。該選定部分可以是位于內容對象中的預定位置的預定數量的字節,這些字節的大小和位置可以根據特定于內容的映射數據來確定。該分配服務器可以在沒有終端用戶請求的情況下將內容對象的選定部分推送給一組或更多組的CDN邊緣服務器。
文檔編號H04L29/08GK103109511SQ201080067009
公開日2013年5月15日 申請日期2010年4月7日 優先權日2010年4月7日
發明者內森·F·拉奇博爾斯基, 布賴恩·D·布萊克, 懷利·斯旺森, 雅各布·S·羅厄斯馬, 艾伯特·P·托比 申請人:杰出網絡公司