TW201739217A - 內容遞送網路中之無效化技術 - Google Patents
內容遞送網路中之無效化技術 Download PDFInfo
- Publication number
- TW201739217A TW201739217A TW106111882A TW106111882A TW201739217A TW 201739217 A TW201739217 A TW 201739217A TW 106111882 A TW106111882 A TW 106111882A TW 106111882 A TW106111882 A TW 106111882A TW 201739217 A TW201739217 A TW 201739217A
- Authority
- TW
- Taiwan
- Prior art keywords
- invalidation
- list
- asset
- commands
- command
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/289—Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5681—Pre-fetching or pre-delivering data based on network characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Prostheses (AREA)
Abstract
在一CDN中的一種內容遞送(CD)服務維護在該CD服務上的無效化資訊,其包括用於每一個資產之一或多個群組無效化命令的一列表。藉由選擇性地合併一或多個無效化命令以形成一合併的無效化命令,新的群組無效化命令被新增並把該經合併的無效化命令插入到該列表中,其中該合併係基於在該列表中元素之共同前綴的一長度。一每一資產共同前綴列表被維護用於在每一個資產列表中的無效化命令。
Description
發明領域 本發明涉及內容遞送及內容遞送網路。更具體地說,本發明涉及內容遞送網路中之無效化技術。
發明背景 交互參考到相關的應用 本專利申請宣稱於2016年4月11日所提交標題為「Invalidation In A Content Delivery Network(CDN)」之美國非臨時申請第15/095,282號的優先權,其全部的內容透過引用被併入本文用於所有的目的。 版權聲明
本專利文獻包含受版權保護的材料。該版權所有者不反對在美國專利及商標局的該等檔案中對本專利文件或任何相關資料的重製,但保留此外的其他一切權利。 併入參考文獻
以下美國專利透過引用被併入本文用於所有的目的: 1. 2007年10月31日提交,2011年11月15日發佈,標題為「Resource invalidation in a content delivery network」的美國專利第8,060,613號。 2. 2013年3月15日提交,2014年9月2日發佈,標題為「Content Delivery Framework With Dynamic Service Network Topology」的美國專利第8,825,830號。
依據本發明之一實施例,係特地提出一種以電腦來實現的方法,其可操作在一內容遞送網路(CDN)中的一裝置上,其中該CDN代表至少一個內容供應商來遞送內容,並且其中與該至少一個內容供應商相關聯的該內容包含至少一個資產,該裝置執行一內容遞送(CD)服務,藉由在該裝置上的該服務,該方法包含:(A)在該CD服務上維護資產無效化資訊,該資產無效化資訊包含一或多個群組無效化命令之一列表用於由該CD服務所處理之每一個資產;(B)回應於由該CD服務接收到用於一特定資產之至少一個新的群組無效化命令,嘗試把該新的群組無效化命令新增到該資產無效化資訊,藉由:(B)(1)若用於該特定資產之一或多個群組無效化命令之該列表的一大小不超過一特定的臨界值,則把該新的群組無效化命令插入到該列表中;否則,(B)(2)若用於該特定資產之一或多個群組無效化命令之該列表的一大小超過一特定的臨界值,則(i)合併一或多個無效化命令以形成一合併的無效化命令,(ii)把該經合併的無效化命令插入到該列表中,以及(iii)把該等一或多個無效化命令從該列表移除,其中該合併係基於正被合併之該等無效化命令之共同前綴的一長度。
較佳實施例之詳細說明 詞彙表 如在本文中所使用的,除非另有說明,否則以下的術語或縮寫具有以下的含義:
CDN意指內容遞送網路;
HTTP意指超文字傳輸協定;
HTTPS意指安全的HTTP;
MOV意指最小原始版本;
ROV意指資源原始版本;
URI意指統一資源識別碼;以及
URL意指統一資源定位符。
一「機制」係指任何的裝置、程序、例程、服務、模組或其組合。一機制可以用硬體、軟體、韌體、使用一專用裝置、或其之任何組合來實現。一機制可被整合到一單一裝置中,或者可被散佈在多個裝置上。一機制的該等各種組件可被主機代管或散佈。該機制可以由其他的機制來形成。通常,如本文所使用的,「機制」一詞因此可被認為是裝置及/或程序及/或服務等用詞的簡寫。
一內容遞送網路(CDN)代表一或多個內容供應商把內容(例如,資源)有效地散佈給客戶端,最好是經由一公用的網際網路。內容供應商經由原始來源(原始伺服器或起源)提供它們的內容(例如,資源)。一CDN還可以提供一種超高層傳輸機制,用於以該相反的方向有效地發送內容–從一客戶端到原始伺服器。末端使用者(客戶端)及內容供應商兩者均受益於使用一CDN。使用一CDN,一內容供應商能夠為他自己的伺服器(例如,它的原始伺服器)減輕壓力(從而降低負載)。客戶受益於能夠以較少的延遲獲得內容。
圖1展示出一示例性的CDN 100,其中一或多個內容供應商102經由一或多個原始來源104及遞送服務(伺服器)106經由一個或多個網路110提供內容給客戶端108。該等遞送服務(伺服器)106可以形成一遞送網路,客戶端可從其獲取內容。該等遞送服務106可以是在邏輯上及/或實體上被層級式地組織,並且可包括邊緣快取。
示例性CDN被描述於美國專利第8,060,613號及第8,825,830號中,其全部的內容透過引用被併入本文用於所有的目的。
與一特定內容供應商相關聯或由其所提供的內容可以被稱為一資產。例如,一資產可以是一網站及相關內容,並且通常包括多個資源。一CDN可以提供與一或多個內容供應商相關聯及/或代表一或多個內容供應商的一或多個資產。一內容供應商可以有多於一個的資產,並因此一CDN可以發送/提供與一特定內容供應商相關聯及/或代表該特定內容供應商的一或多個資產。
如應被理解的是,一CDN的組件(例如,遞送伺服器或類似者)可以使用該CDN把內容遞送給其他的CDN組件。因此,一CDN組件本身可以是該CDN的一客戶端。例如,該CDN可以使用它自己的基礎設施把CDN內容(例如,CDN控制及組配資訊)提供給CDN組件。
內容(例如,與一內容供應商的一資產相關聯的資源)可以被快取儲存在該CDN內的各個位置處,例如,在由該CDN之該等各種遞送服務所形成之一遞送網路中的節點處。內容可以被快取儲存,例如,當它從該CDN被發送時。
一CDN不應該發送陳舊的或過期的或失效的(無效的)內容,而且無效或過期或陳舊的內容在被發送之前應該要被再新(若該內容的一有效版本存在的話)。內容可以被非同步地再新。
無效化係一種機制,透過該機制,儲存在一服務中的資訊(例如,可被使用來衍生出對未來請求之回應的資訊)被標記或被指定為不再可直接用於衍生出回應,從而指出必須使用某種形式的狀態更新或替代的衍生路徑來衍生出對一未來請求的一回應。使用無效化的服務會使用無效化清單,並在本地處理在這些清單中所包含的該等命令。
一快取儲存或遞送服務係利用無效化之一種服務的典型實例。一快取儲存資源的文字副本,並使用該儲存的文字副本對該資源(或基於該資源的資訊)之未來請求做出回應,只要該副本不是陳舊的即可。正如應被理解的是,一請求可能是針對一特定資源本身或者是針對基於該特定資源所決定或衍生出的資訊(例如,另一資源)。在這種情況下的陳舊性可能是基於,例如,該被儲存之原始副本之一種基於年限的過期,或該副本自被儲存以來該副本是否已被明確地無效化。當一無效化命令被接收到時,若該命令的該目標已經在快取中,則只需標記該快取的副本即可實現該命令。當該資源不在快取中,或當命令係指一群潛在的許多資源時,必須採取額外的步驟以確保一稍後檢索到的副本(例如,來自某些其他快取)會滿足該最後適用之無效化命令的該等限制條件。在本文中「無效化」一詞有時被使用來指一無效化命令。
快取儲存的內容可能與一生存時間(TTL)值相關聯,在這種情況下,在它的TTL過期後,該內容不應被提供(即不應被視為有效)。藉由把其無效化信令給該遞送服務(或給該遞送服務網路),也可以使內容無效化。例如,可藉由提供指出一或多個資源無效的指令來信令無效化。
為了本說明書的目的,一資源係或可對應至一可定址的內容項目。由一CDN所提供(例如,發送)之每一個資源,包括內部CDN資源,可由可以是一統一資源定位符(URL)之一統一資源識別碼(URI)來被識別或定址。URI被描述,例如,在Network Working Group,Request for Comments (RFC) 3986,Berners-Lee,2005年1月,「Uniform Resource Identifier (URI): Generic Syntax」;URL被描述,例如,在Network Working Group,Berners-Lee,Request for Comments 1738,1994年12月,「Uniform Resource Locators (URL)」,兩者全部的內容透過引用被併入本文用於所有的目的。
在較佳的實施例中,每一個資源可由一URL定址,並且一無效化指令可以指定一單一資源或一群(零個或多個)資源。指定一單一資源的一無效化指令可以指定用於該資源的一URL(或URI)。一資源群組可以,例如,藉由在該組可能的資源上的一組限制條件來指定。因此,一般而言,一群組無效化藉由一或多個限定該群組之成員限制條件來指定一群組。
例如,一群組無效化指令可以指定在一特定子目錄中所有的內容或具有一共同副檔名之所有的資源不再有效。指定一群資源的一無效化指令可以,例如,在那些資源的該規格中使用一或多個通配符。在一些實現方式中,群組無效化被稱為通配符無效化。
例如,一特定的內容供應商(CP)可以具有由該根「/CP」所指定的一資產,並且可以包括影像在該子目錄「/CP/Images」下。一特定的影像(例如,「/CP/Images/Image1.jpg」)可以被無效化,一組影像也可被無效化(例如,「/CP/Images/Image_September*2014.jpg」),其中該星號係對應於零或多個字元的元字符(或通配符)。應被理解的是,一群組無效化可以指定零或多個資源。例如,可能沒有任何的資源滿足該限制條件「/CP/Images/Image_September*2014.jpg」。
如在本文所使用的,「資源」係指對一特定請求之一(潛在)被快取儲存的回應,因此理論上該請求或該回應之任何的屬性可被考慮來限定一群組。一基於資源群組之無效化系統的一種實際實現方式可能是在群組如何可被有效率地定義上施加額外的限制條件,但是這種限制條件不需要被施加在該架構層級上。
在本文的一些較佳實現方式中,可藉由諸如一種所謂的「glob」模式語言的一種模式語言來指定一群組。如在本文中所使用的,一glob模式語言係任何的模式語言,其中該「*」元字符被使用來匹配任何的字元串,儘管也可以存在其他的元字符。一glob係以一glob模式語言來編寫的一模式。一*-glob(星glob)模式語言係一種只有該「*」元字符及字面字元的glob模式語言。一*-glob(星-glob)(或*-glob模式)係以一*-glob模式語言所編寫的一模式。應被理解的是,該系統不會以任何方式由本文所使用或描述之該等模式匹配演算法或語言來被限制。該系統也不會受被使用來實現本文所描述的該等模式或模式匹配(或相關操作)之該特定的語言或程式來被限制。特別地,應被理解的是,限定在一URL上的正則表達式或glob模式只是限定群組之許多可能的方式之一些。在閱讀本說明書之後,本領域的習知技藝者將體會及理解描述群組之不同及/或其他方式可以被使用並且可在本文中被考慮。最小原始版本(MOV) 無效化
無效化清單基於原始版本來實現一無效化方法。當內容經由一無效化命令被無效化時,用於該經無效化內容的一最小原始版本 (mov)
被遞增。最小原始版本無效化假定每一個原始係一單一資源命名空間,並且所有的無效化命令都相對於在一單一原始位置處的某一原始臨界事件。這種方法允許把無效化定義為一最小原始版本的設置,其中在該系統中的每一個快取都會當內容從原始處進入時估計該最小原始版本。MOV無效化通常要求當在多個位置處發佈內容時該(等)原始伺服器要為一致的,使得一給定的URL將接收一致的資源,不管那一個原始伺服器被接觸。
在一快取中的每一個資源具有與其相關聯的一資源原始版本(ROV)。當該快取直接從一原始伺服器或另一個快取獲取內容時,該資源的ROV被獲取/設置。該ROV維持為該資源副本之該實際的原始版本,無論它到何處,直到它被重新驗證或再新為止。若一快取從另一個快取請求內容,則該客戶端快取使用該伺服器提供之任何ROV作為其儲存在快取中的該ROV。
每一個無效化命令(IC)都有一相關聯的MOV值。若在一快取中一資源的該ROV值至少與該MOV值一樣大,則該資源被認為是有效的並且可以被提供。在另一方面,若該ROV值小於一快取儲存之資源的該MOV值,則在被提供之前必須獲得該資源的一新的版本。例如,若一無效化命令暗示一特定資源R
具有一 mov=100 ,
而資源R
之該快取儲存的版本具有一 rov
=99 ,
則該資源R
被視為陳舊的並且不被能提供。在另一方面,若資源R
之該快取儲存的版本具有一 rov=100
或更高,則資源R
之該快取儲存的版本並不陳舊,並且可被使用(例如,被提供)。
MOV無效化被描述在2013年3月15日所提交,在2014年9月2日所發佈,標題為「Content Delivery Framework With Dynamc Service Network Topology」的美國專利第8,825,830號中,其全部的內容透過引用被全部併入本文用於所有目的,包括特定地用於無效化及MOV無效化的該描述。
圖2根據本發明的示例性實施例描繪了一遞送服務106的一邏輯結構。如在圖2中所示,一遞送服務106包括請求/回應處理機制202,其與一規則引擎204互動,以處理並提供回應給前來的請求。一經請求的資源可能已被快取儲存在與該遞送服務106相關聯的一本地的快取206中,雖然,正如所解釋的,在提供任何已快取儲存之資源之前判定它的有效性是有必要的。在這點上,該規則引擎204可以存取一或多個無效化列表208,其係由一無效化機制210在該遞送服務106處被維護。
就本說明的目的來說,該無效化機制210的該作用係維護在該遞送服務106上的該無效化資訊(例如,無效化列表208),如在下面會被更詳細地描述。
每一個遞送服務106最好負責提供一特定的資產或一組資產,並且一遞送服務106所負責的每一個資產最好都有一無效化列表。圖3展示出用於儲存n
個無效化列表的一實例資料結構,該遞送服務106可提供之該等資產P1 、P2 、... 、Pn
的每一個都有一個列表(在此情況下,假設該遞送服務負責提供該等n
個資產的每一個)。用於一特定資產之一示例性無效化列表可以包括用於該資產之多個無效化命令(或限制條件)。例如,如在圖3中所示,用於資產Pn
的一無效化列表可包括多達m
個用於該資產的無效化命令(IC1
、IC2
、IC3
...、ICm
)。應被理解的是,這種方法的一個方面為若在一快取處所接收到的無效化命令並沒命中在該快取中的資源(或可從該快取被提供的資產),則可能需要被保留以確保一匹配資源之任何後續的填充會以一種一致的方式來被完成。
一無效化命令(ICj
)指定一mov
及可識別一單一資源或資源群組之某資源描述符或指定符,該等單一資源或資源群組目前可能在或不在快取中。一正好指定一個資源的IC(例如,藉由名稱)也可以被稱為一基底資源指定符。基底IC可在收到時被處理,當該IC被接收到時,把該經指定的資源標記為無效的。當請求被接收到時,群組無效化(指定群組的無效化命令)被評估。因此,一無效化指令I
可以是(i)形式為I(mov, R)
的一基底命令,其中R
正好指定了一個資源以及mov
係用於該資源的一MOV值;或(ii)形式為I(mov, G)
的一群組命令其中mov
係一MOV值而G
指定了一限制條件。雖然一基底資源指定符指定一個資源,但在某些情況下,一基底無效化命令可能會影響多個資源,所有的這些資源都可能被一單一URL來存取(例如,具有多個內容編碼可用,或多個變型的資源)。
圖4展示出用於一特定內容供應商之一實例資產的該層級或樹狀結構。就這個實例來說,該資產以一斜杠「/」字元做開頭,並且有兩個主要的資源子樹(「/XYZ」及「/abc」)。由「/XYZ」所指定的該資源子樹包括一資源子樹「/XYZ/PQR」,其包括四個資源子樹(「/XYZ/PQR/fa/」、「/XYZ/PQR/fan」、「/XYZ/PQR/fun/」以及「/XYZ/PQR/fx」)。該資產可以包括其他的子樹(圖中未示出)。
以下係被組配為具有最多十個無效化命令(IC)之一資產的一實例無效化列表,其中儲存了七個命令,並還有三個無效化命令的空間。請注意,基於該等無效化命令或清單所提供的該等MOV值,或者基於在壓擠期間所決定的MOV值(如以下所述),列表係以MOV來排序的。
在此實例列表中,該等無效化命令/限制條件係以glob-*模式的形式被指定。因此,例如,該第一模式將匹配任何以字串「/XYZ/PQR/f」做開頭的資源,而該第二模式將匹配任何以字串「/XYZ/PQR/fu」做開頭的資源。因此,參考如在圖4中所示之該資產層級,該第一模式/限制條件(「/XYZ/PQR/f*」)匹配該等四個子樹「/XYZ/PQR/fa/」、「/XYZ/PQR/fan」、「/XYZ/PQR/fun/」、以及「/XYZ/PQR/fx」,而該第二個限制條件(「/XYZ/PQR/fu*」)只匹配該子樹「/XYZ/PQR/fun」。
一無效化命令/限制條件可能涉及有效的資源。例如,在圖4中所示的該實例中,假設在該子樹「/XYZ/PQR/fun」中的一些資源係無效的,但在其他子樹中(「/XYZ/PQR/fa/」、「/XYZ/PQR/fan」、以及「/XYZ/PQR/fx」)的所有資源仍然是有效的。該無效化命令#1(「/XYZ/PQR/f*」)將涉及在該等子樹(「/XYZ/PQR/fa/」、「/XYZ/PQR/fan」、以及「/XYZ/PQR/fx」)中所有的資源,即使它們係有效的。在另一方面,該無效化命令#2將不會涉及那些有效的資源。
一無效化限制條件一般來說最好是盡可能地少去(若有的話)涉及(因此無效化)有效的資源。換句話說,一無效化限制條件一般來說最好在有效的資源上的有最小的影響,同時仍然使所有無效的資源為無效的。
該無效化機制210包括一新增無效化機制212,其被使用來新增無效化命令到該(等)適當的無效化列表208。當該遞送服務106接收新的無效化命令214(例如,以一無效化清單的形式),該新增無效化機制212試圖把那些命令的至少一些加入到適當的無效化列表208,如下面所描述的。
如前所述,每一個資產的無效化列表有一最大的大小(max
)(即,它可儲存限制條件的最大數量)。這個最大值最好係由一管理員來設置,並最好不能由使用者來設置(即,不能由該等CDN的訂戶設置)。每一個無效化列表還可以具有與其相關聯的一臨界值(T
)(其中T≤max
)。在當前較佳的實現方式中,用以儲存及搜索每一個資產之模式的最大全域預設數量為100。此一初始預設的該動機係要限制每一個請求(在請求/回應處理期間)之glob搜索的數量。應被理解的是,不同的訂戶可以具有不同的最大列表大小。
參照在圖5中的流程圖,當該遞送服務106接收到新的無效化命令214時,該新增無效化機制212把該等新的命令214比對該對應的無效化列表208檢查重複項。現有模式的精確重複會被刪除,並使用該新的(最新的)MOV值以及該強制MOV值(若一無效化係強制類型的,該MOV會被追踪,下面將討論)來做更新。在操作中,一無效的資源通常會保留在該快取中,直到對該資源的一請求觸發該資源的一重新驗證為止(例如,經由一原始伺服器或一對等體)。該重新驗證採用一種條件GET的形式,只有在已經被修改後才能獲取該資源。一所謂的「強制」無效化會從該原始伺服器(或一適當的位置)執行該資源的一種無條件的「GET」。
在插入時,若該模式數量超過該允許的數量(或用於該資產的該臨界值),則壓擠會被啟動直到該模式數量低於到該最大允許數量(或臨界值)為止。壓擠
對於一基於模式(非顯式)的無效化方法,無效化可能永遠不會安全地到期。為了嘗試減輕這種方法的該潛在效能影響,壓擠被最佳化。該目標係要壓擠兩個條目,使得壓擠的該結果產生最小的影響。
在一無效化列表的情況中,壓擠係由一壓擠機制216執行。壓擠係合併或以某種方式組合兩或多個無效化模式或限制條件的該效果。壓擠可以以一壓擠函數來被定義,該函數接受兩個或更多個無效化命令(包括其相關聯的MOV值)作為輸入並傳回一無效化命令(該合併的命令),該傳回的命令至少與該等輸入無效化命令一樣地嚴格。換句話說,該經合併的命令至少應使得該等輸入命令會無效化的每一個資源無效化。
該經組合/合併的限制條件被插入到無效化列表中並替換所有被組合/合併的該等限制條件,以及該產生的無效化限制條件至少應與所有被組合的限制條件一樣地嚴格。
請注意,該壓擠函數的該等輸入可能僅來自該當前的無效化列表,或可能包括一或多個該等新接收的無效化命令。
為了使壓擠具有最小的有效影響,有兩個基本的假設: 1.壓擠一目錄,尤其是「/」,影響的資源數會比在一目錄之內做壓擠影響的資源數要多。 2.在一目錄內壓擠一較大數量的字元會比壓擠一較小數量的字元影響一較大數量的資源。
在一較佳的實現方式中,在快取中沒有該等資源的索引或列表,並且通常也沒有辦法知道在一子目錄中有多少真正的資源。本領域的普通技術人員在閱讀本說明書之後將體識到並理解的是,由於無法知道在任一子目錄中有多少真正的資源,所以這些假設可能不一定可給出一最佳的結果。
該壓擠機制216為該服務106所負責之每一個資產維護一前綴列表(或共同前綴陣列)218。也就是說,該壓擠機制216對有一無效化列表208(圖2及6)之每一個資產,每一資產都維護一共同前綴陣列。當一新的無效化模式被接收到時,會依據該現有的模式列表檢查該新的模式。若找到一共同的前綴,則該共同的前綴將被添加到該前綴陣列(若它還沒有在那兒的話)。該前綴陣列從「最小影響」到「最大影響」被排序(基於上面給出的那兩個假設)。該前綴陣列可以是不大於該允許模式的最大數目。壓擠也可能發生在該前綴陣列內,但是應該不經常地發生,並若如此的話,元素係以從最大影響到最小影響的順序來被刪除。
然後,壓擠涉及到取該最小影響前綴陣列元素,並匹配及組合用於該共同前綴之無效化模式。
以下係組配成具有最多十個無效化命令之一資產的一實例經MOV排序無效化列表,具有儲存的十個命令,並且不再有更多無效化命令(IC)的空間。實例MOV值被展示在這些實例中。
此資產之該對應的前綴列表為:
在這個實例中,當接收到一新的無效化命令(例如,「/st/peter/*」)時,在判定何者要壓擠之前,一條目(「/st/p」)應被新增到該前綴列表(在它與已經在該無效化表中任何條目之間該最長的共同前綴)。由於這在該目錄內壓擠6個字元,所以應該在「/elect/201」之前被插入,如以下所示:
在該無效化清單上做出空間也是有必要的。有一些可能的合併候選者,例如: (i)「/XYZ/PQR/f*」及「/XYZ/PQR/fu*」可被合併成「/XYZ/PQR/f*」;或 (ii)「/diet/atk*」及「/diet/nocrb*」可被合併成「/diet/*」;或 (iii)「/XYZ/PQR/f*」及「/XYZ/PQR/fu*」及「/XYZ/PQR/ab*」可被合併成「/XYZ/PQR/*」;或 (iv)「/abc/def/2*」及「/abc/def/4*」可被合併成「/abc/def/*」;或 (v)「/XYZ/PQR/f*」及「/XYZ/PQR/fu*」及「/XYZ/PQR/ab*」及「/diet/atk*」及「/diet/nocrb*」可被合併成「/di*」;或 (vi)「/elect/2015*」及「/elect/2012*」可被合併為「/elect/201*」;或 (vii)「/st/peter/*」及「/st/patrick/*」可被合併成「/st/p*」;或 (vii)所有的該等模式/限制條件可被合併成「/*」
顯然,最後一個(vii)將牽涉最多的資源,因為它有效地強制該資產的每一個資源的無效化。
然而,基於該前綴陣列,把IC合併成該前綴「/XYZ/PQR/f*」應該具有最小的影響(在有效的資源上)。因此,把該等兩個模式「/XYZ/PQR/f*」及「/XYZ/PQR/fu*」合併成「/XYZ/PQR/f*」,並把該新的模式插入到該列表中。
該壓擠的結果如以下所示:
如上所述的,該無效化列表係以MOV排序的。在該壓擠期間,該MOV值被更新。特別的是,該經合併之模式的該MOV值係該等被合併模式之該最高的MOV值。因此,例如,當組合「/XYZ/PQR/f*」與「/XYZ/PQR/fu*」時,所得的條目將具有該等被組合之無效化命令的該最高MOV;在這種情況下,該MOV來自該「/XYZ/PQR/fu*」命令。「/XYZ/PQR/f*」的該MOV值為100,以及「/XYZ/PQR/fu*」的該MOV值係110,因此,該經合併之模式的該MOV值係110=max(100, 110) 。
一般而言,若k
個無效化模式(P1...Pk)
正被合併(或壓擠)成模式Pc ,
則該Pc
的MOV為max(movi ,
i=1...k)。注意,一正被合併之特定模式可能已經是一先前合併的該結果,因此在該合併期間該特定模式的該MOV可能已經被設置。還請注意,該模式Pc可能是正被合併之該等已經存在的模式(Pi)中之一,然而其MOV值可能改變。例如,在該實例中,在該壓擠之前及之後在該列表都有該模式「/XYZ/PQR/f*」,但其MOV值已更改(從100到110)。
在以上的實例中,用於「/abc/def/2*」及之外的該等值都維持為在該初始表中的原來值。
本領域的普通技術人員在閱讀本說明書後將會理解及體認到的是,一經合併資源之該MOV值的更新可能會導致一更為錯誤之積極的無效化。
在這裡給出的該實例中,若所儲存的資源有一請求路徑/XYZ/PQR/fABC
及有一大於或等於100之ROV,則對該原來的無效化限制條件列表來說會被認為係嶄新的。但是,在壓擠之後,只有具有110以上之ROV的資源才會被認為是有效的。
基於該合併及插入,該共同前綴列表被更新如下:
正如從該實例顯而易見的是,該等經壓擠的無效化命令不一定得包括該等新的命令,並且已經在該列表中的命令可以是該等被合併的那些。
判定那些無效化命令要被壓擠或合併可基於該等被組合命令的該MOV值。在某些情況下,無效化命令可基於在該等被組合命令中何者在MOV值中具有最小變化來被合併。在某些情況下,無效化命令可基於在該等被組合命令中何者具有最小的實際MOV值來被合併。該MOV值可被使用,例如,作為用於一合併/壓擠候選者的決定者。
例如,考慮四個無效化命令: IC1:限制條件1,mov1 IC2:限制條件2,mov2 IC3:限制條件3,mov3 IC4:限制條件4,mov4
假設該等合併選項為: IC5=IC1&IC2:mov5=Max(mov1, mov2) IC6=IC3&IC4:mov6=Max(mov3, mov4)
在某些情況下,該合併可被選擇為mov5及mov6的較低者。在一些情況下,該合併可被選擇來最小化在(i)mov5
與min(mov1, mov2)
之間,及(ii)mov6
與min(mov3, mov4)
之間的該差異。因此,例如,若mov1=100
及mov2=101 ,
則mov5=101
與min(mov1, mov2)
之間的該差異是1。若mov3=90
及mov4=120 ,
則mov6=120
而在mov6
與min(mov 3, mov4)
之間的該差異係30。最小化此差異的合併(即,IC5)將被選擇。請求- 回應處理
在較佳的實現方式中,一實際資源的無效化發生在對該資源做一請求的該時刻。就許多的原因來說這是有利的,其包括若該資源從未被請求則基本上沒有什麼事情要做(除了儲存該無效化資訊之外)。
當該服務獲得對一資源的請求(例如,一HTTP請求)時,它會針對該無效資源的適當列表(即,針對該資產之該無效資源列表)檢查該請求的資源。若該資源對應到在該列表上的一限制條件且該資源的該ROV值小於該限制條件的該MOV值,則在該資源可被發送出之前,該資源的一有效/新的版本必須被獲得。因此,若在該列表上的一限制條件指出一經請求的資源係無效的,則該服務複製該資源(例如,從一內容供應商的內容來源諸如一原始伺服器或從在該CDN中的另一個位置(例如,一對等)複製)。當獲得該資源的一新版本時,該資源的該ROV值被更新。
例如,假設一使用者在該上述壓擠之前請求該資源「/XYZ/PQR/fa.gif」。在這個實例中,假設該快取有一具rov=101
之「/XYZ/PQR/fa.gif」的版本。該請求的資源匹配該無效化限制條件「/XYZ/PQR/f*」,但該快取儲存資源的該ROV(rov=101)大於與該限制條件相關聯的該MOV值(mov=100
)。該快取儲存的版本可被傳送。在以上所述的該壓擠後,該限制條件「/XYZ/PQR/f*」的該MOV值是110,因該此快取儲存的資源「/XYZ/PQR/fa.gif」,具一rov=101
,會被認為是無效的。該伺服器再新該資源「/XYZ/PQR/fa.gif」,例如,從一原始伺服器或在該CDN中的另一個位置。該經再新的版本必須有一至少為110的ROV以被視為係有效的。如以上所解釋的,該版本可能已經是有效的以及可能因為該壓擠而被牽連為無效的(為一錯誤的肯定)。
在一CDN中無效化的示例性操作被描述在美國專利號第8,060,613號中,其全部的內容透過引用被併入本文用於所有的目的。
應被理解的是,該壓擠不需要發生在如提供該內容的同一台裝置上。例如,該壓擠可以在一邊緣裝置來完成或者可被集中進行。運算
以上所展示及描述的該等服務、機制、操作及動作至少部分地藉由在CDN 100之一或多台電腦上所執行的軟體來實現。
實現如此方法的程式(以及其他類型的資料)可被儲存及使用各種媒體(例如,電腦可讀取媒體)以多種方式來傳輸。固線式電路或定制的硬體可被使用來替代可實現各種實施例之該等程序之該等軟體指令的一些或全部,或與其組合。因此,實現可以使用硬體及軟體的各種組合而不是只使用軟體。
在閱讀了本說明書之後,本領域的普通技術人員將可容易的體會及理解的是,在此所描述之該等各種處理可以例如藉由經適當規劃的通用電腦、專用電腦及運算裝置來實現。一或多個這樣的電腦或運算裝置可以被稱為一電腦系統。
圖7係一電腦系統的一示意圖700,本揭示的實施例可被實現以及執行在其上。
根據本實例,該電腦系統700包括一匯流排702(即,互連)、一或多個處理器704、一主記憶體706、可移除式儲存媒體710、唯讀記憶體708、大容量儲存器712、以及一或多個通訊埠714。通訊埠714可被連接到一或多個網路,經由其該電腦系統700可接收及/或發送資料。
如在本文中所使用的,一「處理器」意指一或多個微處理器、中央處理單元(CPU)、運算裝置、微控制器、數位信號處理器、或類似的裝置或其任何組合,不管其結構為何。執行一程序的一設備可以包括,例如,一處理器以及諸如適合來執行該程序之輸入裝置及輸出裝置的那些裝置。
處理器704可以是任何公知的處理器,諸如,但不侷限於,一Intel® Itanium® 或Itanium 2® 處理器、AMD® Opteron®或AthlonMP®處理器、或Motorola®的處理器系列、及類似者。通訊埠714可以是用於與一基於撥接之調變解調器一起使用的一RS-232埠、一10/100以太網路埠、使用銅線或光纖的一個十億位元埠、或一USB埠、等等的任一。通訊埠714可以根據該電腦系統700所連接到的一網路來進行選擇,諸如一區域網路(LAN)、一廣域網路(WAN)、一CDN、或任何網路。該電腦系統700可以經由輸入/輸出(I/O)埠720與週邊裝置(例如,顯示器螢幕716、輸入裝置718)進行通訊。
主記憶體706可以是隨機存取記憶體(RAM),或在本領域中任何公知的其他動態儲存裝置。唯讀記憶體708可以是任何的靜態儲存裝置諸如可規劃唯讀記憶體(PROM)晶片用於儲存靜態資訊諸如用於處理器的指令704。大容量儲存器712可用於儲存資訊及指令。例如,諸如小型電腦串列介面(SCSI)碟之該Adaptec®系列的硬碟、一光碟、一諸如獨立磁碟冗餘陣列(RAID)的磁碟陣列諸如RAID碟的該Adaptec®系列、或者任何其他大容量儲存裝置可被使用。
匯流排702把處理器704與其他的記憶體、儲存器、以及通訊方塊通訊地耦合。匯流排702可以是一基於PCI/PCI-X、SCSI、一通用串列匯流排(USB)的系統匯流排(或其他),取決於該所使用的儲存裝置及類似者。可移除式儲存媒體710可以是任何類型的外部硬碟、軟碟、IOMEGA® Zip碟、光碟-唯讀記憶體(CD-ROM)、光碟-可重寫(CD-RW)、數位多功能光碟-唯讀記憶體(DVD-ROM)、等等。
本文的實施例可被提供為一或多個電腦程式產品,其可以包括具有儲存於其上之指令的一機器可讀取媒體,其可被使用來規劃一電腦(或其他的電子裝置)用以執行一程序。如在本文中所使用的,「機器可讀取媒體」一詞係指任何的媒體、複數個相同的媒體、或不同的媒體一種組合,其參與提供資料(例如,指令、資料結構),該等資料可由一電腦、一處理器或一類似裝置來讀取。這樣的媒體可以採取許多的形式,包括但不侷限於,非依電性媒體、依電性媒體、以及傳輸媒體。非依電性媒體包括,例如,光碟或磁碟及其他永久性記憶體。依電性媒體包括動態隨機存取記憶體,其典型地構成了該電腦的主記憶體。傳輸媒體包括同軸電纜、銅線及光纖,包括一包含耦合到該處理器之系統匯流排的該等導線。傳輸媒體可以包括或遞送聲波、光波及電磁發射,諸如在射頻(RF)及紅外線(IR)資料通訊期間所產生的那些。
該機器可讀取媒體可以包括,但不侷限於,軟碟、光碟、CD-ROM、磁光碟、ROM、RAM、可擦除式可規劃唯讀記憶體(EPROM)、電可擦除式可規劃唯讀記憶體(EEPROM)、磁卡或光卡、快閃記憶體、或適合用於儲存電子指令之其他類型的媒體/機器可取讀媒體中。此外,本文的實施例也可以被下載為一電腦程式產品,其中該程式可藉由體現在一載波或其他傳播媒體中經由一通訊鏈路(例如,調變解調器或網路連接)之資料信號的方式從一遠端電腦通傳輸到一請求的電腦。
電腦可讀取媒體的各種形式可涉及攜帶資料(例如指令序列)給一處理器。例如,資料可以是(i)從RAM遞送到一處理器;(ii)通過一無線傳輸媒體攜帶;(iii)根據各種格式、標準或協定來被格式化及/或發送;及/或(iv)用本領域中各種公知方式中的任何一種來進行加密。
一種電腦可讀取媒體可以儲存(以任何適當的格式)適用於執行該等方法的那些程式元素。
如圖所示,主記憶體706被編碼有應用程式722,該等程式支援如本文中所討論的該功能(該應用程式722可以是可提供在此所描述之該等CD服務功能之一些或全部的一應用程式)。應用程式722(及/或其他如本文所描述的資源)可被具體實現為軟體碼諸如資料及/或邏輯指令(例如,儲存在記憶體或諸如磁碟之其他電腦可讀取媒體中的程式碼)其支援根據本文所描述之不同實施例的處理功能。
在一個實施例的操作中,處理器704經由使用匯流排702來存取主記憶體706,以便啟動、運行、執行、解譯或以其他的方式執行該(等)應用程式的該等邏輯指令722。應用程式722的執行產生相關於該(等)應用程式之該服務的處理功能。換言之,該(等)程序724表示在該電腦系統700中執行在該(等)處理器704之內或之上之該(等)應用程式722的一或多個部分。
應被指出的是,除了執行(攜帶)如本文所討論操作的該(等)程序724之外,本文中其他的實施例包括該應用程式722本身(即,該等未執行的或不可執行的邏輯指令及/或資料)。該應用程式722可被儲存在一電腦可讀取媒體上(例如,一儲存庫)諸如一磁碟或在一光學媒體中。根據其他的實施例,該應用程式722還可以被儲存在一記憶體類型的系統中諸如在韌體、唯讀記憶體(ROM)中,或者如在本實例中,諸如在該主記憶體706內(例如,在隨機存取記憶體或RAM內)的可執行碼。例如,應用程式722也可被儲存在可移除式儲存媒體710、唯讀記憶體708及/或大容量儲存裝置712中。
本領域的習知技藝者將理解的是,該電腦系統700可以包括其他的程序及/或軟體及硬體組件,諸如控制硬體資源之分配及使用的一作業系統。
如在本文中所討論的,本發明的實施例包括各種步驟或操作。各式各樣的這些步驟可以藉由硬體組件來執行,或者可用機器可執行指令來被具體實現,其可被使用來致使一種以指令來做規劃之通用或專用處理器來執行該等操作。可替代地,該等步驟可以藉由硬體、軟體、及/或韌體的一種組合來執行。「模組」一詞係指一自我包含的功能組件,其可以包括硬體、軟體、韌體或其任何組合。
在閱讀了本描述之後,本領域的普通技術人員之一將容易體會及理解的是一設備的實施例可包括一電腦/運算裝置,其可操作來執行該描述之程序中的一些(但不一定是全部)。
儲存一程式或資料結構之一電腦可讀取媒體的實施例包括儲存一程式的一電腦可讀取媒體,當被執行時,可致使一處理器執行該描述之程序中的一些(但不一定是全部)。
對於本文所描述的一程序,本領域的普通技術人員將會理解的是,該程序可在沒有任何使用者干預的情況下來操作。在另一個實施例中,該程序包括一些人為干預(例如,一步驟係由或在有人協助的情況下來執行)。
正如在本文中,包括在該等請求項中所使用的,短語「至少一些」係指「一或多個」,以及包括只有一個的情況。因此,例如,短語「至少一些服務」係指「一或多個服務」,並且包括一個服務的情況。
正如在本文中,包括在該等請求項中所使用的,短語「基於」係指「部分地基於」或「基於,至少部分地基於」,並且不是唯一的。因此,例如,短語「基於因子X」係指「部分地基於因子X」或「基於,至少部分地基於因子X」。除非具體的陳述使用「唯一」一詞,短語「基於X」並不意味著「僅基於X」。
正如在本文中,包括在該等請求項中所使用的,「使用」一詞係指「至少使用」,而不是唯一性的。因此,例如,短語「使用X」係指「至少使用X」。除非具體的陳述使用「唯一」一詞,短語「使用X」並不意味著「僅使用X」。
一般來說,正如在本文中,包括在該等請求項中所使用的,除非「僅」一詞被具體地使用在一短語中,它不應該被解讀成如該短語所述。
正如在本文中,包括在該等請求項中所使用的,「不同」一詞係指「至少部分地不同」。除非特別地聲明,不同並不意味著完全不同。因此,例如,短語「X係不同於Y」係指「X係至少部分地不同於Y」,並且並不意味著「X係完全不同於Y」。因此,正如在本文中,包括在該等請求項中所使用的,短語「X係不同於Y」係指X與Y在至少一些方式中係不同的。
正如在本文中,包括在該等請求項中所使用的,一列表可以只包括一個項目,並且,除非另有說明,一個具多個項目的列表不需要以任何特定的方式來排序。一列表可以包括重複的條目。例如,如本文所使用的,短語「一CDN服務的列表」可以包括一或多個CDN服務。
應被理解的是,在本說明書中及請求項中「第一」及「第二」該等用語被使用來區分或識別,而不是用來展示出在一順序或數值上的限制。同樣地,使用字母或數字標籤(諸如「(a)」、「(b)」、和類似者)被使用來有助於區分及/或識別,而不是用來展示出任何序列或數值上的限制或順序。
在該等流程圖之任一中該等經標籤之方塊的任一並沒有暗示順序,除非有被具體地指出及說明。當不連接的方塊在一圖中被展示出時,與這些方塊相關聯的該等活動可以以任何的順序來執行,包括完全地或部分地並行處理。
雖然本發明已經結合目前被認為係最實際及較佳的實施例來進行了描述,但應被理解的是,本發明不應被侷限於該揭示的實施例,相反的是,本發明旨在涵蓋包括在該等所附請求項之精神及範圍內的各種修改及等效佈置。
100‧‧‧CDN
102‧‧‧內容供應商
104‧‧‧原始
106‧‧‧遞送伺服器
108‧‧‧客戶端
110‧‧‧網路
202‧‧‧請求處理
204‧‧‧規則引擎
206‧‧‧快取
208‧‧‧無效化列表
210‧‧‧無效化機制
212‧‧‧新增無效化
214‧‧‧無效化命令
216‧‧‧壓擠機制
218‧‧‧前綴列表
700‧‧‧電腦系統
702‧‧‧匯流排
704‧‧‧處理器
706‧‧‧主記憶體
708‧‧‧唯讀記憶體
710‧‧‧可移除式儲存媒體
712‧‧‧大容量儲存裝置
714‧‧‧通訊埠
716‧‧‧感測器
716‧‧‧顯示器
718‧‧‧輸入裝置
720‧‧‧I/O埠
722‧‧‧應用程式
724‧‧‧程序
102‧‧‧內容供應商
104‧‧‧原始
106‧‧‧遞送伺服器
108‧‧‧客戶端
110‧‧‧網路
202‧‧‧請求處理
204‧‧‧規則引擎
206‧‧‧快取
208‧‧‧無效化列表
210‧‧‧無效化機制
212‧‧‧新增無效化
214‧‧‧無效化命令
216‧‧‧壓擠機制
218‧‧‧前綴列表
700‧‧‧電腦系統
702‧‧‧匯流排
704‧‧‧處理器
706‧‧‧主記憶體
708‧‧‧唯讀記憶體
710‧‧‧可移除式儲存媒體
712‧‧‧大容量儲存裝置
714‧‧‧通訊埠
716‧‧‧感測器
716‧‧‧顯示器
718‧‧‧輸入裝置
720‧‧‧I/O埠
722‧‧‧應用程式
724‧‧‧程序
本發明的其他物件、特徵、及特性以及該等操作方法及結構之該等相關元件的功能、及部件及製造經濟的組合,將在參考附圖考慮以下描述及該等所附請求項的情況下變得更加明顯,所有這些都構成本說明書的一部分。
圖1根據本發明的示例性實施例描繪出一內容遞送網路(CDN)的方面;
圖2根據本發明的示例性實施例描繪出一遞送服務的一邏輯結構;
圖3根據本發明的示例性實施例描繪出用於儲存無效化列表的一實例資料結構;
圖4展示出用於一特定內容供應商之一實例資產的該層級或樹狀結構;
圖5係本發明方面的一操作流程圖;
圖6根據本發明的示例性實施例展示出用於儲存共同前綴列表的一實例資料結構;以及
圖7根據本發明的示例性實施例描繪了運算的方面。
100‧‧‧CDN
102‧‧‧內容供應商
104‧‧‧原始
106‧‧‧遞送伺服器
108‧‧‧客戶端
110‧‧‧網路
Claims (16)
- 一種以電腦來實現的方法,其可操作在一內容遞送網路(CDN)中的一裝置上,其中該CDN替至少一個內容供應商來遞送內容,並且其中與該至少一個內容供應商相關聯的該內容包含至少一個資產,該裝置執行一內容遞送(CD)服務,藉由在該裝置上的該服務,該方法包含: (A)在該CD服務上維護資產無效化資訊,該資產無效化資訊包含用於由該CD服務所處理每一個資產之一或多個群組無效化命令的一列表; (B)回應於由該CD服務所接收到用於一特定資產之至少一個新的群組無效化命令,嘗試把該新的群組無效化命令新增到該資產無效化資訊,藉由: (B)(1)若用於該特定資產之一或多個群組無效化命令之該列表的一大小不超過一特定的臨界值,則把該新的群組無效化命令插入到該列表中;否則, (B)(2)若用於該特定資產之一或多個群組無效化命令之該列表的一大小超過一特定的臨界值,則(i)合併一或多個無效化命令以形成一合併的無效化命令,(ii)把該經合併的無效化命令插入到該列表中,以及(iii)把該等一或多個無效化命令從該列表移除,其中該合併係基於正被合併之該等無效化命令之共同前綴的一長度。
- 如請求項1之方法,其進一步包含: (C)在該CD服務上維護用於在每一個資產列表中無效化命令的一每一資產共同前綴列表,並且其中該合併使用該共同前綴列表來判定哪些無效化命令要合併。
- 如請求項2之方法,其中該每一資產共同前綴列表基於一或多個影響假設從最小影響排序到最大影響。
- 如請求項2之方法,其中當接收到一新的無效化模式時,該新模式會比對該現有的模式列表做檢查,而且若一共同的前綴被發現,則該共同的前綴被選擇性地新增到該共同前綴列表。
- 如請求項1至4之方法,其中群組無效化命令包含限制條件模式。
- 如請求項5之方法,其中該限制條件模式包含glob模式。
- 如請求項1至6之方法,其進一步包含: (D)回應於在該CD服務處接收到針對一特定資源的一請求,若該特定資源的一副本係在該CD服務的一快取中,則: (D)(1)使用在該CD服務上的該資產無效化資訊,判定該特定資源係有效的,以及 (D)(2)基於在(D)(1)中的該判定,當判定該特定資源係無效的時,獲取該特定資源的一有效版本,並基於該特定資源之該有效版本對該請求做出一回應。
- 如請求項1至7之方法,其中一或多個群組無效化命令的該列表包括一種資料結構,該資料結構以一種經排序的順序來維護該前綴列表。
- 如請求項8之方法,其中該資料結構維護該從最小影響排序到最大影響的該前綴列表。
- 如請求項1至9之方法,其中在一或多個群組無效化命令之該列表中每一個無效化命令包含一限制條件及一最小原始版本(MOV)值,並且其中一或多個群組無效化命令的該列表係一以MOV來排序的列表。
- 如請求項10之方法,其中在(B)(2)(i)中一或多個無效化命令之該合併,包含基於該等正被合併之一或多個無效化命令的MOV值判定用於該合併之無效化命令的一MOV值。
- 如請求項11之方法,其中用於該合併之無效化命令的該MOV值被設定為該等正被合併之一或多個無效化命令之該等MOV值的一最大值。
- 如請求項10之方法,其中在該合併之前,該合併之無效化命令的該限制條件就已經在該列表中。
- 如請求項13之方法,其中該合併之無效化命令的該限制條件係在(B)(2)(i)中該等正被合併之一或多個無效化命令中之一的一限制條件。
- 一種製造物品,該製品包含其上儲存有程式指令的一種電腦可讀取媒體,該等程式指令可操作在一內容遞送網路(CDN)中的一電腦系統上,其中該CDN替至少一個內容供應商來遞送內容,並且其中與該至少一個內容供應商相關聯的該內容包含至少一個資產,該裝置執行一內容遞送(CD)服務,其中藉由該電腦系統之一或多個處理器執行該等程式指令會致使該等一或多個處理器執行該等以下的行為: (A)在該CD服務上維護資產無效化資訊,該資產無效化資訊包含用於由該CD服務所處理每一個資產之一或多個群組無效化命令的一列表; (B)回應於由該CD服務所接收到用於一特定資產之至少一個新的群組無效化命令,嘗試把該新的群組無效化命令新增到該資產無效化資訊,藉由: (B)(1)若用於該特定資產之一或多個群組無效化命令之該列表的一大小不超過一特定的臨界值,則把該新的群組無效化命令插入到該列表中;否則, (B)(2)若用於該特定資產之一或多個群組無效化命令之該列表的一大小超過一特定的臨界值,則(i)合併一或多個無效化命令以形成一合併的無效化命令,(ii)把該經合併的無效化命令插入到該列表中,以及(iii)把該等一或多個無效化命令從該列表移除,其中該合併係基於正被合併之該等無效化命令之共同前綴的一長度。
- 一種在一內容遞送網路(CDN)中的裝置,其中該CDN替至少一個內容供應商來遞送內容,並且其中與該至少一個內容供應商相關聯的該內容包含至少一個資產,該裝置執行一內容遞送(CD)服務,該裝置: (A)在該CD服務上維護資產無效化資訊,該資產無效化資訊包含用於由該CD服務所處理每一個資產之一或多個群組無效化命令的一列表; (B)回應於由該CD服務所接收到用於一特定資產之至少一個新的群組無效化命令,嘗試把該新的群組無效化命令新增到該資產無效化資訊,藉由: (B)(1)若用於該特定資產之一或多個群組無效化命令之該列表的一大小不超過一特定的臨界值,則把該新的群組無效化命令插入到該列表中;否則, (B)(2)若用於該特定資產之一或多個群組無效化命令之該列表的一大小超過一特定的臨界值,則(i)合併一或多個無效化命令以形成一合併的無效化命令,(ii)把該經合併的無效化命令插入到該列表中,以及(iii)把該等一或多個無效化命令從該列表移除,其中該合併係基於正被合併之該等無效化命令之共同前綴的一長度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/095,282 | 2016-04-11 | ||
US15/095,282 US9591047B1 (en) | 2016-04-11 | 2016-04-11 | Invalidation in a content delivery network (CDN) |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201739217A true TW201739217A (zh) | 2017-11-01 |
TWI627845B TWI627845B (zh) | 2018-06-21 |
Family
ID=58162384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106111882A TWI627845B (zh) | 2016-04-11 | 2017-04-10 | 內容遞送網路中之無效化技術 |
Country Status (9)
Country | Link |
---|---|
US (2) | US9591047B1 (zh) |
EP (1) | EP3232647B1 (zh) |
JP (1) | JP6219547B2 (zh) |
CN (1) | CN107295060B (zh) |
CA (1) | CA2963347C (zh) |
HK (1) | HK1243845B (zh) |
SG (1) | SG11201808412PA (zh) |
TW (1) | TWI627845B (zh) |
WO (1) | WO2017180218A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11086960B2 (en) * | 2019-07-17 | 2021-08-10 | Netflix, Inc. | Extension for targeted invalidation of cached assets |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10282787B1 (en) | 2014-04-25 | 2019-05-07 | State Farm Mutual Automobile Insurance Company | Systems and methods for determining cause of loss to a property |
US11171720B1 (en) * | 2019-06-28 | 2021-11-09 | Amazon Technologies, Inc. | Content and compute delivery platform using satellites |
US11201939B1 (en) * | 2019-06-28 | 2021-12-14 | Amazon Technologies, Inc. | Content and compute delivery platform using satellites |
Family Cites Families (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434994A (en) * | 1994-05-23 | 1995-07-18 | International Business Machines Corporation | System and method for maintaining replicated data coherency in a data processing system |
US8296396B2 (en) | 1998-02-10 | 2012-10-23 | Level 3 Communications, Llc | Delivering resources to clients in a distributed computing environment with rendezvous based on load balancing and network conditions |
US6584548B1 (en) * | 1999-07-22 | 2003-06-24 | International Business Machines Corporation | Method and apparatus for invalidating data in a cache |
US6785704B1 (en) | 1999-12-20 | 2004-08-31 | Fastforward Networks | Content distribution system for operation over an internetwork including content peering arrangements |
US6484143B1 (en) * | 1999-11-22 | 2002-11-19 | Speedera Networks, Inc. | User device and system for traffic management and content distribution over a world wide area network |
KR100353798B1 (ko) * | 1999-12-01 | 2002-09-26 | 주식회사 코난테크놀로지 | 영상 객체 모양 정보 추출 방법 및 그를 이용한 내용기반 이미지 검색 시스템 및 그 방법 |
US6757708B1 (en) | 2000-03-03 | 2004-06-29 | International Business Machines Corporation | Caching dynamic content |
US6571261B1 (en) | 2000-07-13 | 2003-05-27 | International Business Machines Corporation | Defragmentation utility for a shared disk parallel file system across a storage area network |
US6591266B1 (en) * | 2000-07-14 | 2003-07-08 | Nec Corporation | System and method for intelligent caching and refresh of dynamically generated and static web content |
US20020116583A1 (en) | 2000-12-18 | 2002-08-22 | Copeland George P. | Automatic invalidation dependency capture in a web cache with dynamic content |
US7177917B2 (en) | 2000-12-27 | 2007-02-13 | Softwired Ag | Scaleable message system |
US7149797B1 (en) | 2001-04-02 | 2006-12-12 | Akamai Technologies, Inc. | Content delivery network service provider (CDNSP)-managed content delivery network (CDN) for network service provider (NSP) |
US7860964B2 (en) | 2001-09-28 | 2010-12-28 | Level 3 Communications, Llc | Policy-based content delivery network selection |
US7010598B2 (en) | 2002-02-11 | 2006-03-07 | Akamai Technologies, Inc. | Method and apparatus for measuring stream availability, quality and performance |
US7254634B1 (en) | 2002-03-08 | 2007-08-07 | Akamai Technologies, Inc. | Managing web tier session state objects in a content delivery network (CDN) |
US7114160B2 (en) | 2002-04-17 | 2006-09-26 | Sbc Technology Resources, Inc. | Web content customization via adaptation Web services |
US6990559B2 (en) * | 2002-10-03 | 2006-01-24 | Hewlett-Packard Development Company, L.P. | Mechanism for resolving ambiguous invalidates in a computer system |
US20040168184A1 (en) * | 2002-12-04 | 2004-08-26 | Jan Steenkamp | Multiple content provider user interface |
US6912562B1 (en) * | 2002-12-04 | 2005-06-28 | At&T Corp. | Cache invalidation technique with spurious resource change indications |
US20040193656A1 (en) * | 2003-03-28 | 2004-09-30 | Pizzo Michael J. | Systems and methods for caching and invalidating database results and derived objects |
US7395346B2 (en) | 2003-04-22 | 2008-07-01 | Scientific-Atlanta, Inc. | Information frame modifier |
US7624126B2 (en) * | 2003-06-25 | 2009-11-24 | Microsoft Corporation | Registering for and retrieving database table change information that can be used to invalidate cache entries |
US7853699B2 (en) | 2005-03-15 | 2010-12-14 | Riverbed Technology, Inc. | Rules-based transaction prefetching using connection end-point proxies |
US20050086386A1 (en) | 2003-10-17 | 2005-04-21 | Bo Shen | Shared running-buffer-based caching system |
US7395279B2 (en) | 2003-11-17 | 2008-07-01 | International Business Machines Corporation | System and method for achieving different levels of data consistency |
US7076608B2 (en) | 2003-12-02 | 2006-07-11 | Oracle International Corp. | Invalidating cached data using secondary keys |
EP1730918B1 (en) | 2004-03-31 | 2018-05-09 | Telecom Italia S.p.A. | Method and system for controlling content distribution, related network and computer program product therefor |
US20050289388A1 (en) | 2004-06-23 | 2005-12-29 | International Business Machines Corporation | Dynamic cluster configuration in an on-demand environment |
US8495305B2 (en) | 2004-06-30 | 2013-07-23 | Citrix Systems, Inc. | Method and device for performing caching of dynamically generated objects in a data communication network |
US8255456B2 (en) * | 2005-12-30 | 2012-08-28 | Citrix Systems, Inc. | System and method for performing flash caching of dynamically generated objects in a data communication network |
US8301839B2 (en) | 2005-12-30 | 2012-10-30 | Citrix Systems, Inc. | System and method for performing granular invalidation of cached dynamically generated objects in a data communication network |
US7921200B2 (en) | 2006-02-03 | 2011-04-05 | International Business Machines Corporation | Apparatus, system, and method for interaction with multi-attribute system resources as groups |
EP1999608A4 (en) | 2006-03-29 | 2010-10-06 | Hewlett Packard Development Co | SYSTEM, METHOD AND DEVICE FOR VISUAL SCAN, DEEP-TAGGING AND SYNCHRONIZED COMMENTING |
US7461206B2 (en) | 2006-08-21 | 2008-12-02 | Amazon Technologies, Inc. | Probabilistic technique for consistency checking cache entries |
EP2418853A3 (en) * | 2006-10-24 | 2012-06-06 | Thomson Licensing | Picture identification for multi-view video coding |
US7890549B2 (en) | 2007-04-30 | 2011-02-15 | Quantum Leap Research, Inc. | Collaboration portal (COPO) a scaleable method, system, and apparatus for providing computer-accessible benefits to communities of users |
US20080313267A1 (en) | 2007-06-12 | 2008-12-18 | International Business Machines Corporation | Optimize web service interactions via a downloadable custom parser |
US7996621B2 (en) | 2007-07-12 | 2011-08-09 | International Business Machines Corporation | Data cache invalidate with data dependent expiration using a step value |
US20100042734A1 (en) | 2007-08-31 | 2010-02-18 | Atli Olafsson | Proxy server access restriction apparatus, systems, and methods |
JP5192798B2 (ja) | 2007-12-25 | 2013-05-08 | 株式会社日立製作所 | サービス提供システム、ゲートウェイ、およびサーバ |
WO2009116972A1 (en) | 2008-03-20 | 2009-09-24 | Thomson Licensing | System and method for processing priority transport stream data in real time in a multi-channel broadcast multimedia system |
WO2009123868A2 (en) | 2008-04-04 | 2009-10-08 | Level 3 Communications, Llc | Handling long-tail content in a content delivery network (cdn) |
AU2010202034B1 (en) | 2010-04-07 | 2010-12-23 | Limelight Networks, Inc. | Partial object distribution in content delivery network |
US8122098B1 (en) | 2008-11-17 | 2012-02-21 | Amazon Technologies, Inc. | Managing content delivery network service providers by a content broker |
US8078848B2 (en) | 2009-01-09 | 2011-12-13 | Micron Technology, Inc. | Memory controller having front end and back end channels for modifying commands |
US8874460B2 (en) | 2009-01-19 | 2014-10-28 | Appature, Inc. | Healthcare marketing data optimization system and method |
JP2010198258A (ja) * | 2009-02-25 | 2010-09-09 | Nippon Telegr & Teleph Corp <Ntt> | キャッシュメンテナンス装置、その方法及びそのプログラム |
US20100228962A1 (en) | 2009-03-09 | 2010-09-09 | Microsoft Corporation | Offloading cryptographic protection processing |
US8412823B1 (en) * | 2009-03-27 | 2013-04-02 | Amazon Technologies, Inc. | Managing tracking information entries in resource cache components |
WO2010127365A1 (en) | 2009-05-01 | 2010-11-04 | Citrix Systems, Inc. | Systems and methods for establishing a cloud bridge between virtual storage resources |
US8782236B1 (en) | 2009-06-16 | 2014-07-15 | Amazon Technologies, Inc. | Managing resources using resource expiration data |
US8626876B1 (en) | 2012-11-28 | 2014-01-07 | Limelight Networks, Inc. | Intermediate content processing for content delivery networks |
US10264029B2 (en) | 2009-10-30 | 2019-04-16 | Time Warner Cable Enterprises Llc | Methods and apparatus for packetized content delivery over a content delivery network |
US8275816B1 (en) | 2009-11-06 | 2012-09-25 | Adobe Systems Incorporated | Indexing messaging events for seeking through data streams |
US8452835B2 (en) | 2009-12-23 | 2013-05-28 | Citrix Systems, Inc. | Systems and methods for object rate limiting in multi-core system |
WO2011094892A1 (en) | 2010-02-04 | 2011-08-11 | Telefonaktiebolaget L M Ericsson (Publ) | Method for content folding |
EP2532137B1 (en) | 2010-02-05 | 2015-08-12 | Telefonaktiebolaget L M Ericsson (PUBL) | Method and node entity for enhancing content delivery network |
US8577827B1 (en) | 2010-03-12 | 2013-11-05 | Amazon Technologies, Inc. | Network page latency reduction using gamma distribution |
US8819283B2 (en) | 2010-09-28 | 2014-08-26 | Amazon Technologies, Inc. | Request routing in a networked environment |
US20120124372A1 (en) * | 2010-10-13 | 2012-05-17 | Akamai Technologies, Inc. | Protecting Websites and Website Users By Obscuring URLs |
US20120150993A1 (en) | 2010-10-29 | 2012-06-14 | Akamai Technologies, Inc. | Assisted delivery of content adapted for a requesting client |
US10484232B2 (en) | 2011-01-12 | 2019-11-19 | Level 3 Communications, Llc | Customized domain names in a content delivery network (CDN) |
US20120221767A1 (en) * | 2011-02-28 | 2012-08-30 | Apple Inc. | Efficient buffering for a system having non-volatile memory |
CN102724219B (zh) | 2011-03-29 | 2015-06-03 | 国际商业机器公司 | 网络数据的计算机处理方法及系统 |
WO2012175145A1 (en) | 2011-06-22 | 2012-12-27 | Telefonaktiebolaget L M Ericsson (Publ) | Methods and devices for content delivery control |
US8909736B1 (en) * | 2012-07-12 | 2014-12-09 | Juniper Networks, Inc. | Content delivery network referral |
US9563663B2 (en) | 2012-09-28 | 2017-02-07 | Oracle International Corporation | Fast path evaluation of Boolean predicates |
US9537973B2 (en) | 2012-11-01 | 2017-01-03 | Microsoft Technology Licensing, Llc | CDN load balancing in the cloud |
US10708145B2 (en) * | 2012-12-13 | 2020-07-07 | Level 3 Communications, Llc | Devices and methods supporting content delivery with adaptation services with feedback from health service |
US9634918B2 (en) | 2012-12-13 | 2017-04-25 | Level 3 Communications, Llc | Invalidation sequencing in a content delivery framework |
CN105141636B (zh) * | 2015-09-24 | 2018-04-17 | 网宿科技股份有限公司 | 适用于cdn增值业务平台的http安全通信方法及系统 |
-
2016
- 2016-04-11 US US15/095,282 patent/US9591047B1/en active Active
-
2017
- 2017-01-03 SG SG11201808412PA patent/SG11201808412PA/en unknown
- 2017-01-03 WO PCT/US2017/012048 patent/WO2017180218A1/en active Application Filing
- 2017-03-01 US US15/446,750 patent/US9749381B1/en active Active
- 2017-03-24 EP EP17162827.4A patent/EP3232647B1/en not_active Not-in-force
- 2017-03-31 JP JP2017071261A patent/JP6219547B2/ja active Active
- 2017-04-05 CA CA2963347A patent/CA2963347C/en not_active Expired - Fee Related
- 2017-04-10 TW TW106111882A patent/TWI627845B/zh active
- 2017-04-11 CN CN201710234661.4A patent/CN107295060B/zh active Active
-
2018
- 2018-03-09 HK HK18103332.1A patent/HK1243845B/zh not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11086960B2 (en) * | 2019-07-17 | 2021-08-10 | Netflix, Inc. | Extension for targeted invalidation of cached assets |
US11593448B2 (en) | 2019-07-17 | 2023-02-28 | Netflix, Inc. | Extension for targeted invalidation of cached assets |
Also Published As
Publication number | Publication date |
---|---|
EP3232647A3 (en) | 2017-11-08 |
US9591047B1 (en) | 2017-03-07 |
CN107295060A (zh) | 2017-10-24 |
JP2017191600A (ja) | 2017-10-19 |
EP3232647A2 (en) | 2017-10-18 |
CA2963347A1 (en) | 2017-10-11 |
US9749381B1 (en) | 2017-08-29 |
EP3232647B1 (en) | 2019-01-23 |
HK1243845B (zh) | 2020-02-07 |
JP6219547B2 (ja) | 2017-10-25 |
WO2017180218A1 (en) | 2017-10-19 |
CA2963347C (en) | 2018-12-11 |
TWI627845B (zh) | 2018-06-21 |
SG11201808412PA (en) | 2018-10-30 |
CN107295060B (zh) | 2020-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11388251B2 (en) | Providing access to managed content | |
US10628383B2 (en) | Systems and methods for enhancing performance of a clustered source code management system | |
US11494438B2 (en) | Population of file-catalog table for file stage | |
US7792810B1 (en) | Surrogate hashing | |
US6985936B2 (en) | Addressing the name space mismatch between content servers and content caching systems | |
TW201739217A (zh) | 內容遞送網路中之無效化技術 | |
JP2002542542A (ja) | 問合せ可能なダイナミック・キャッシュを有するウェブサーバ | |
JP2010250760A (ja) | ファイル格納システム、サーバ装置及びプログラム | |
US7797277B2 (en) | Document management system, program, and computer data signal | |
US20050055508A1 (en) | System and method for invalidating data in a hierarchy of caches | |
US20050055509A1 (en) | System and method for inline invalidation of cached data | |
US8082334B1 (en) | Providing direct access to managed content | |
JP2009116496A (ja) | ディレクトリサーバ装置、ディレクトリサーバプログラム、ディレクトリサービスシステム、およびディレクトリサービス管理方法 | |
CN116974998A (zh) | 数据文件的更新方法、装置、计算机设备和存储介质 | |
JPWO2008007735A1 (ja) | 情報検索システム |