內(nèi)容推送方法、系統(tǒng)、以及緩存服務(wù)器的制造方法
【專利摘要】本發(fā)明提供一種內(nèi)容推送方法、系統(tǒng)、以及緩存服務(wù)器,在緩存服務(wù)器接收到一內(nèi)容推送請(qǐng)求后,令主進(jìn)程對(duì)推送請(qǐng)求進(jìn)行解析以構(gòu)造一推送主任務(wù),且將推送主任務(wù)存放于一共享內(nèi)存中;并分別向各從進(jìn)程發(fā)送通知信息;令各從進(jìn)程分別根據(jù)接收的通知信息,從共享內(nèi)存中讀取相應(yīng)推送子任務(wù),并構(gòu)造推送子請(qǐng)求,以執(zhí)行推送子任務(wù),且將執(zhí)行結(jié)果發(fā)送至主進(jìn)程;令主進(jìn)程接收所有執(zhí)行結(jié)果并進(jìn)行綜合分析得到主任務(wù)的執(zhí)行結(jié)果,并響應(yīng)內(nèi)容推送請(qǐng)求。本發(fā)明令客戶端不需要重復(fù)推送每個(gè)進(jìn)程,只需往緩存服務(wù)器中某個(gè)進(jìn)程發(fā)送推送請(qǐng)求,就能推送掉所有進(jìn)程的相同緩存,既能提高推送效率,又能減少推送量,提高系統(tǒng)的運(yùn)行性能。
【專利說(shuō)明】
內(nèi)容推送方法、系統(tǒng)、以及緩存服務(wù)器
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)絡(luò)架構(gòu)技術(shù),特別是涉及一種內(nèi)容推送方法、系統(tǒng)、以及緩存服務(wù)器。
【背景技術(shù)】
[0002]對(duì)于已經(jīng)在緩存服務(wù)器上緩存的內(nèi)容,當(dāng)源站更新資源后,如果緩存服務(wù)器上的內(nèi)容沒(méi)有過(guò)期,我們會(huì)繼續(xù)使用緩存的內(nèi)容。如果要及時(shí)更新緩存服務(wù)器上的緩存內(nèi)容,我們需要使用內(nèi)容推送的功能,使得緩存服務(wù)器及時(shí)更新緩存內(nèi)容。
[0003]傳統(tǒng)推送通過(guò)HTTP請(qǐng)求與緩存服務(wù)器交互進(jìn)行推送來(lái)清除緩存,存在以下幾個(gè)弊端:
[0004]I)推送采用的是網(wǎng)絡(luò)通信,需要通過(guò)TCP協(xié)議來(lái)進(jìn)行數(shù)據(jù)的交互與傳輸,在這個(gè)過(guò)程中,在正式收發(fā)數(shù)據(jù)前,必須和對(duì)方建立可靠的連接,而一個(gè)TCP連接必須要經(jīng)過(guò)三次“握手”才能建立起來(lái),且完成數(shù)據(jù)傳輸之前,需要通過(guò)TCP的四次“揮手”來(lái)關(guān)閉連接,由于內(nèi)容推送可能會(huì)有多個(gè)URL或目錄要進(jìn)行推送,因此這種通信方式用于內(nèi)容推送場(chǎng)景效率比較低。
[0005]2)由于事先并不知道每個(gè)緩存服務(wù)器進(jìn)程的緩存情況,所以推送客戶端需要向每個(gè)進(jìn)程都重復(fù)推送,即向進(jìn)程發(fā)送推送請(qǐng)求,才能達(dá)到刪除或更新所有進(jìn)程緩存的目的。但是,由于推送客戶端的推送請(qǐng)求量已經(jīng)達(dá)到飽和,且重復(fù)的推送請(qǐng)求刪除或更新的是所有進(jìn)程相同的緩存,這樣會(huì)降低有效推送量。
[0006]所以需要一種更有效的內(nèi)容推送方法來(lái)提高系統(tǒng)的運(yùn)行性能。
【發(fā)明內(nèi)容】
[0007]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種內(nèi)容推送方法、系統(tǒng)、以及緩存服務(wù)器,用于解決現(xiàn)有技術(shù)中不能高效準(zhǔn)確的對(duì)緩存服務(wù)器進(jìn)行內(nèi)容推送的問(wèn)題。
[0008]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種內(nèi)容推送方法,應(yīng)用于CDN系統(tǒng)的緩存服務(wù)器,所述緩存服務(wù)器運(yùn)行有多個(gè)進(jìn)程,所述方法包括:接收一內(nèi)容推送請(qǐng)求,且令處理所述內(nèi)容推送請(qǐng)求的進(jìn)程作為主進(jìn)程,主進(jìn)程以外的至少部分其它進(jìn)程作為從進(jìn)程;令所述主進(jìn)程對(duì)所述推送請(qǐng)求進(jìn)行解析以構(gòu)造一推送主任務(wù),所述推送主任務(wù)包含多個(gè)推送子任務(wù);令所述主進(jìn)程將所述推送主任務(wù)存放于一共享內(nèi)存中;令所述主進(jìn)程分別向各所述從進(jìn)程發(fā)送通知信息,每個(gè)所述通知信息包括與所述從進(jìn)程對(duì)應(yīng)的所述推送子任務(wù)的索引信息,其中所述索引信息與相應(yīng)推送子任務(wù)在所述共享內(nèi)存中的位置對(duì)應(yīng);令各所述從進(jìn)程分別根據(jù)接收的通知信息,從所述共享內(nèi)存中讀取相應(yīng)的所述推送子任務(wù),并根據(jù)讀取結(jié)果構(gòu)造推送子請(qǐng)求,且根據(jù)所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),以對(duì)相應(yīng)的緩存進(jìn)行更新,且將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程;令所述主進(jìn)程接收所有所述執(zhí)行結(jié)果并進(jìn)行匯總并綜合判斷得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果響應(yīng)所述內(nèi)容推送請(qǐng)求。
[0009]于本發(fā)明一具體實(shí)施例中,令首次接收到所述內(nèi)容推送請(qǐng)求的進(jìn)程作為所述主進(jìn)程,且對(duì)所述內(nèi)容推送請(qǐng)求進(jìn)行處理。
[0010]于本發(fā)明一具體實(shí)施例中,在接收所述內(nèi)容推送請(qǐng)求之前,令至少部分所述進(jìn)程通過(guò)本地套接字監(jiān)聽(tīng)同一地址,以接收向所述地址發(fā)送的內(nèi)容推送請(qǐng)求。
[0011]于本發(fā)明一具體實(shí)施例中,令所述從進(jìn)程根據(jù)接收的通知信息,從所述共享內(nèi)存中讀取相應(yīng)的多個(gè)所述推送子任務(wù),并根據(jù)讀取結(jié)果依次構(gòu)造推送子請(qǐng)求,以依次根據(jù)所構(gòu)造的所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),且在與所述從進(jìn)程對(duì)應(yīng)的所有推送子任務(wù)執(zhí)行結(jié)束后,將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程。
[0012]于本發(fā)明一具體實(shí)施例中,所述推送主任務(wù)包括URL或推送目錄,每個(gè)所述推送子任務(wù)對(duì)應(yīng)一條URL或一條推送目錄。
[0013]于本發(fā)明一具體實(shí)施例中,令所述主進(jìn)程接收各子任務(wù)的執(zhí)行結(jié)果并綜合分析得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果以狀態(tài)碼形式響應(yīng)所述內(nèi)容推送請(qǐng)求。
[0014]于本發(fā)明一具體實(shí)施例中,所述主進(jìn)程基于HTTP協(xié)議對(duì)所述推送請(qǐng)求進(jìn)行解析。
[0015]于本發(fā)明一具體實(shí)施例中,所述主進(jìn)程分別通過(guò)相應(yīng)的通信路徑管道與各所述從進(jìn)程進(jìn)行通?目。
[0016]于本發(fā)明一具體實(shí)施例中,所述主進(jìn)程分別通過(guò)相應(yīng)的通信路徑與各所述從進(jìn)程進(jìn)行通?目。
[0017]于本發(fā)明一具體實(shí)施例中,對(duì)各所述通信路徑進(jìn)行加密處理。
[0018]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明還提供一種內(nèi)容推送系統(tǒng),應(yīng)用于⑶N系統(tǒng)的緩存服務(wù)器,所述緩存服務(wù)器運(yùn)行有多個(gè)進(jìn)程,所述系統(tǒng)包括:請(qǐng)求接收模塊,用以接收一內(nèi)容推送請(qǐng)求,且令處理所述內(nèi)容推送請(qǐng)求的進(jìn)程作為主進(jìn)程,主進(jìn)程以外的至少部分其它進(jìn)程作為從進(jìn)程;解析構(gòu)造模塊,用以令所述主進(jìn)程對(duì)所述推送請(qǐng)求進(jìn)行解析以構(gòu)造一推送主任務(wù),所述推送主任務(wù)包含多個(gè)推送子任務(wù);保存模塊,用以令所述主進(jìn)程將所述推送主任務(wù)存放于一共享內(nèi)存中;通知信息發(fā)送模塊,用以令所述主進(jìn)程分別向各所述從進(jìn)程發(fā)送通知信息,每個(gè)所述通知信息包括與所述從進(jìn)程對(duì)應(yīng)的所述推送子任務(wù)的索引信息,其中所述索引信息與相應(yīng)推送子任務(wù)在所述共享內(nèi)存中的位置對(duì)應(yīng);執(zhí)行模塊,用以令各所述從進(jìn)程分別根據(jù)接收的通知信息,從所述共享內(nèi)存中讀取相應(yīng)的所述推送子任務(wù),并根據(jù)讀取結(jié)果構(gòu)造推送子請(qǐng)求,且根據(jù)所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),以對(duì)相應(yīng)的緩存進(jìn)行更新,且將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程;反饋模塊,用以令所述主進(jìn)程接收所有所述執(zhí)行結(jié)果并進(jìn)行匯總并綜合判斷得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果響應(yīng)所述內(nèi)容推送請(qǐng)求。
[0019]于本發(fā)明一具體實(shí)施例中,所述請(qǐng)求接收模塊用以令首次接收到所述內(nèi)容推送請(qǐng)求的進(jìn)程作為所述主進(jìn)程,且對(duì)所述內(nèi)容推送請(qǐng)求進(jìn)行處理。
[0020]于本發(fā)明一具體實(shí)施例中,所述請(qǐng)求接收模塊還用以在接收所述內(nèi)容推送請(qǐng)求之前,令至少部分所述進(jìn)程通過(guò)本地套接字監(jiān)聽(tīng)同一地址,以接收向所述地址發(fā)送的內(nèi)容推送請(qǐng)求。
[0021]于本發(fā)明一具體實(shí)施例中,所述執(zhí)行模塊用以令所述從進(jìn)程根據(jù)接收的通知信息,從所述共享內(nèi)存中讀取相應(yīng)的多個(gè)所述推送子任務(wù),并根據(jù)讀取結(jié)果依次構(gòu)造推送子請(qǐng)求,以依次根據(jù)所構(gòu)造的所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),且在與所述從進(jìn)程對(duì)應(yīng)的所有推送子任務(wù)執(zhí)行結(jié)束后,將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程。
[0022]于本發(fā)明一具體實(shí)施例中,所述推送主任務(wù)包括URL或推送目錄,每個(gè)所述推送子任務(wù)對(duì)應(yīng)一條URL或一條推送目錄。
[0023]于本發(fā)明一具體實(shí)施例中,所述反饋模塊用以令所述主進(jìn)程接收各子任務(wù)的執(zhí)行結(jié)果并綜合分析得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果以狀態(tài)碼形式響應(yīng)所述內(nèi)容推送請(qǐng)求。
[0024]于本發(fā)明一具體實(shí)施例中,所述主進(jìn)程基于HTTP協(xié)議對(duì)所述推送請(qǐng)求進(jìn)行解析。
[0025]于本發(fā)明一具體實(shí)施例中,所述主進(jìn)程分別通過(guò)相應(yīng)的通信路徑管道與各所述從進(jìn)程進(jìn)行通?目。
[0026]于本發(fā)明一具體實(shí)施例中,所述主進(jìn)程分別通過(guò)相應(yīng)的通信路徑與各從進(jìn)程進(jìn)行通信。
[0027]于本發(fā)明一具體實(shí)施例中,還包括加密模塊,用以對(duì)各所述通信路徑進(jìn)行加密處理。
[0028]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明還提供一種緩存服務(wù)器,運(yùn)行如上任一項(xiàng)所述的內(nèi)容推送系統(tǒng),以更新其緩存內(nèi)容。
[0029]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明還提供一種通信系統(tǒng),包括客戶端以及如上任一項(xiàng)所述的緩存服務(wù)器,所述客戶端用以向所述緩存服務(wù)器發(fā)送內(nèi)容推送請(qǐng)求,且接收所述緩存服務(wù)器對(duì)所述內(nèi)容推送請(qǐng)求的響應(yīng)。
[0030]如上所述,本發(fā)明的內(nèi)容推送方法、系統(tǒng)、以及緩存服務(wù)器,在接收到一內(nèi)容推送請(qǐng)求后,且令處理內(nèi)容推送請(qǐng)求的進(jìn)程作為主進(jìn)程,主進(jìn)程以外的至少部分其它進(jìn)程作為從進(jìn)程;令主進(jìn)程對(duì)推送請(qǐng)求進(jìn)行解析以構(gòu)造一推送主任務(wù),推送主任務(wù)包含多個(gè)推送子任務(wù);令主進(jìn)程將推送主任務(wù)存放于一共享內(nèi)存中;令主進(jìn)程分別向各從進(jìn)程發(fā)送通知信息;令各從進(jìn)程分別根據(jù)接收的通知信息,從共享內(nèi)存中讀取相應(yīng)的推送子任務(wù),并根據(jù)讀取結(jié)果構(gòu)造推送子請(qǐng)求,且根據(jù)推送子請(qǐng)求執(zhí)行推送子任務(wù),以對(duì)相應(yīng)的緩存進(jìn)行更新,且將執(zhí)行結(jié)果發(fā)送至主進(jìn)程;令主進(jìn)程接收所有執(zhí)行結(jié)果并進(jìn)行匯總并綜合判斷得到主任務(wù)的執(zhí)行結(jié)果,并將主任務(wù)的執(zhí)行結(jié)果響應(yīng)內(nèi)容推送請(qǐng)求。本發(fā)明令客戶端不需要重復(fù)推送每個(gè)進(jìn)程,只需往緩存服務(wù)器中某個(gè)進(jìn)程發(fā)送推送請(qǐng)求,就能推送掉所有進(jìn)程的相同緩存,既能提高推送效率,又能減少推送量,提高系統(tǒng)的運(yùn)行性能。此外,由于進(jìn)程之間不再是通過(guò)請(qǐng)求來(lái)進(jìn)行交互,而是以任務(wù)的方式進(jìn)行推送處理,這樣可以避免頻繁地對(duì)請(qǐng)求進(jìn)行讀取和解析,節(jié)省處理時(shí)間,提高效率。
【附圖說(shuō)明】
[0031]圖1顯示為本發(fā)明的內(nèi)容推送方法在一具體實(shí)施例中的流程示意圖。
[0032]圖2顯示為本發(fā)明的內(nèi)容推送系統(tǒng)在一具體實(shí)施例中的模塊示意圖。
[0033]圖3顯示為本發(fā)明的通信系統(tǒng)在一具體實(shí)施例中的模塊示意圖。
[0034]元件標(biāo)號(hào)說(shuō)明
[0035]I內(nèi)容推送系統(tǒng)
[0036]11請(qǐng)求接收模塊
[0037]12解析構(gòu)造模塊
[0038]13保存模塊
[0039]14通知信息發(fā)送模塊
[0040]15執(zhí)行模塊
[0041]16反饋模塊
[0042]2通信系統(tǒng)
[0043]21客戶端
[0044]22緩存服務(wù)器
[0045]S11?S16 步驟
【具體實(shí)施方式】
[0046]以下通過(guò)特定的具體實(shí)例說(shuō)明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說(shuō)明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過(guò)另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說(shuō)明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒(méi)有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。需說(shuō)明的是,在不沖突的情況下,以下實(shí)施例及實(shí)施例中的特征可以相互組合。
[0047]需要說(shuō)明的是,以下實(shí)施例中所提供的圖示僅以示意方式說(shuō)明本發(fā)明的基本構(gòu)想,遂圖示中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目、形狀及尺寸繪制,其實(shí)際實(shí)施時(shí)各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
[0048]為了解決內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network,Q)N)中傳統(tǒng)內(nèi)容推送方法的低效和重復(fù)執(zhí)行的弊端。通過(guò)對(duì)內(nèi)容推送過(guò)程中的推送客戶端與緩存服務(wù)器之間通信方式以及推送模式的改進(jìn)來(lái)實(shí)現(xiàn),具體改進(jìn)的地方如下:
[0049]I)不再使用TCP協(xié)議進(jìn)行傳輸,采用本地套接字進(jìn)行推送客戶端與進(jìn)程之間的通信。它的優(yōu)點(diǎn)在于不需要經(jīng)過(guò)網(wǎng)絡(luò)協(xié)議棧,不需要打包拆包、計(jì)算校驗(yàn)和、維護(hù)序號(hào)和應(yīng)答等,只是將應(yīng)用層數(shù)據(jù)從一個(gè)進(jìn)程拷貝到另一個(gè)進(jìn)程,相比普通的網(wǎng)絡(luò)套接字更高效,消息既不會(huì)丟失也不會(huì)順序錯(cuò)亂。
[0050]2)對(duì)推送模式的改進(jìn),不再重復(fù)地向每個(gè)緩存服務(wù)器進(jìn)程發(fā)送推送請(qǐng)求,只需要向其中的某一個(gè)進(jìn)程發(fā)送請(qǐng)求就能推送掉所有進(jìn)程的相同緩存,這樣既能提高推送效率,又能減少推送量。
[0051]3)對(duì)推送交互方式的改進(jìn),緩存服務(wù)器各進(jìn)程間的交互方式不再是推送請(qǐng)求了,而是一個(gè)包含多個(gè)子任務(wù)的推送任務(wù)信息,這樣可以去掉一些不必要的例如HTTP請(qǐng)求處理的過(guò)程,節(jié)省各進(jìn)程推送處理的時(shí)間,使推送更快速。
[0052]具體的,請(qǐng)參閱圖1,顯示為本發(fā)明的內(nèi)容推送方法在一具體實(shí)施例中的流程示意圖。
[0053]所述內(nèi)容推送方法,應(yīng)用于CDN系統(tǒng)的緩存服務(wù)器,所述緩存服務(wù)器運(yùn)行有多個(gè)進(jìn)程,所述方法包括以下步驟:
[0054]S11:接收一內(nèi)容推送請(qǐng)求,且令處理所述內(nèi)容推送請(qǐng)求的進(jìn)程作為主進(jìn)程,主進(jìn)程以外的至少部分其它進(jìn)程作為從進(jìn)程;即可以有部分或者全部的進(jìn)程參與到內(nèi)容推送過(guò)程中,于本發(fā)明一具體實(shí)施例中,令首次接收到所述內(nèi)容推送請(qǐng)求的進(jìn)程作為所述主進(jìn)程,且對(duì)所述內(nèi)容推送請(qǐng)求進(jìn)行處理?;蛘咴谄渌麑?shí)施例中,可以指定某一進(jìn)程為主進(jìn)程,即使是由其他從進(jìn)程接收到所述內(nèi)容推送請(qǐng)求,也會(huì)將其轉(zhuǎn)發(fā)至所述指定的主進(jìn)程以進(jìn)行處理。
[0055]優(yōu)選的,在接收所述內(nèi)容推送請(qǐng)求之前,令至少部分所述進(jìn)程通過(guò)本地套接字監(jiān)聽(tīng)同一地址,以接收向所述地址發(fā)送的內(nèi)容推送請(qǐng)求。即不再使用TCP協(xié)議進(jìn)行傳輸,采用本地套接字進(jìn)行推送客戶端與進(jìn)程之間的通信。它的優(yōu)點(diǎn)在于不需要經(jīng)過(guò)網(wǎng)絡(luò)協(xié)議棧,不需要打包拆包、計(jì)算校驗(yàn)和、維護(hù)序號(hào)和應(yīng)答等,只是將應(yīng)用層數(shù)據(jù)從一個(gè)進(jìn)程拷貝到另一個(gè)進(jìn)程,相比普通的網(wǎng)絡(luò)套接字更高效,消息既不會(huì)丟失也不會(huì)順序錯(cuò)亂。
[0056]S12:令所述主進(jìn)程對(duì)所述推送請(qǐng)求進(jìn)行解析以構(gòu)造一推送主任務(wù),所述推送主任務(wù)包含多個(gè)推送子任務(wù);于具體應(yīng)用中,所述主進(jìn)程可以基于HTTP協(xié)議對(duì)所述推送請(qǐng)求進(jìn)行解析。且,優(yōu)選的,所述推送主任務(wù)包括URL或推送目錄,每個(gè)所述推送子任務(wù)對(duì)應(yīng)一條URL或一條推送目錄。更優(yōu)選的,所述推送主任務(wù)包括多條URL或多條推送目錄,每個(gè)所述推送子任務(wù)對(duì)應(yīng)一條URL或一條推送目錄。
[0057]SI3:令所述主進(jìn)程將所述推送主任務(wù)存放于一共享內(nèi)存中;在具體實(shí)施中,所述共享內(nèi)存例如可為預(yù)先開(kāi)辟的虛擬存儲(chǔ)空間或真實(shí)存儲(chǔ)空間,亦可為云端的存儲(chǔ)空間。
[0058]S14:令所述主進(jìn)程分別向各所述從進(jìn)程發(fā)送通知信息,每個(gè)所述通知信息包括與相應(yīng)所述從進(jìn)程對(duì)應(yīng)的所述推送子任務(wù)的索引信息,其中所述索引信息與相應(yīng)推送子任務(wù)在所述共享內(nèi)存中的位置對(duì)應(yīng);即,可根據(jù)所述索引信息直接鏈接到所述共享內(nèi)存中相應(yīng)的推送子任務(wù)。且當(dāng)與所述從進(jìn)程對(duì)應(yīng)的推送子任務(wù)有多個(gè)時(shí),從所述共享內(nèi)存中讀取相應(yīng)的多個(gè)所述推送子任務(wù),并根據(jù)讀取結(jié)果依次構(gòu)造推送子請(qǐng)求,以依次根據(jù)所構(gòu)造的所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),且在與所述從進(jìn)程對(duì)應(yīng)的所有推送子任務(wù)執(zhí)行結(jié)束后,將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程。
[0059]S15:令各所述從進(jìn)程分別根據(jù)接收的通知信息,從所述共享內(nèi)存中讀取相應(yīng)的所述推送子任務(wù),并根據(jù)讀取結(jié)果構(gòu)造推送子請(qǐng)求,且根據(jù)所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),以對(duì)相應(yīng)的緩存進(jìn)行更新,且將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程;例如根據(jù)URL構(gòu)造推送子請(qǐng)求,這樣既可以按照原流程進(jìn)行推送操作,又可以去掉一些不必要的HTTP或HTTPS請(qǐng)求處理過(guò)程。
[0060]S16:令所述主進(jìn)程接收所有所述執(zhí)行結(jié)果并進(jìn)行匯總并綜合判斷得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果響應(yīng)所述內(nèi)容推送請(qǐng)求。
[0061]于本發(fā)明一具體實(shí)施例中,令所述主進(jìn)程接收各子任務(wù)的執(zhí)行結(jié)果并進(jìn)行匯總并綜合判斷得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果以狀態(tài)碼形式響應(yīng)所述內(nèi)容推送請(qǐng)求。
[0062]于一具體實(shí)施例中,所述對(duì)所有所述子任務(wù)的執(zhí)行結(jié)果進(jìn)行匯總并綜合判斷例如為,所述主進(jìn)程匯總所有所述子任務(wù)的執(zhí)行結(jié)果,并綜合判斷是否所有子任務(wù)均有反饋,且更優(yōu)選的,根據(jù)所述匯總和綜合判斷的結(jié)果,生成相應(yīng)的狀態(tài)碼,并將所述主任務(wù)的執(zhí)行結(jié)果以狀態(tài)碼形式響應(yīng)所述內(nèi)容推送請(qǐng)求。
[0063]優(yōu)選的,所述狀態(tài)碼的定義包括以下3種:
[0064]200:表示所有進(jìn)程都有反饋結(jié)果,并且至少有一個(gè)進(jìn)程成功推送掉緩存;
[0065]404:表示所有進(jìn)程都有反饋結(jié)果,并且所有進(jìn)程都是緩存不存在的;
[0066]504:表示在超時(shí)時(shí)間到達(dá)后還有進(jìn)程未反饋結(jié)果。
[0067]狀態(tài)碼及其對(duì)應(yīng)的含義,為提前預(yù)設(shè)好的,例如在http協(xié)議的標(biāo)準(zhǔn)中,已經(jīng)設(shè)定好了狀態(tài)碼及其對(duì)應(yīng)的含義。
[0068]于本發(fā)明一具體實(shí)施例中,所述主進(jìn)程分別通過(guò)相應(yīng)的通信路徑與各所述從進(jìn)程進(jìn)行通信。即,所述主進(jìn)程和每個(gè)所述從進(jìn)程之間都有一個(gè)與之對(duì)應(yīng)的管道,所述管道優(yōu)選為匿名管道。更優(yōu)選的,對(duì)各所述通信路徑進(jìn)行加密處理,以保證信息傳輸?shù)陌踩浴?br>[0069]請(qǐng)參閱圖2,顯示為本發(fā)明的內(nèi)容推送系統(tǒng)在一具體實(shí)施例中的模塊示意圖。所述內(nèi)容推送系統(tǒng)I應(yīng)用于一緩存服務(wù)器,所述緩存服務(wù)器運(yùn)行有多個(gè)進(jìn)程,所述系統(tǒng)I包括:
[0070]請(qǐng)求接收模塊11,用以接收一內(nèi)容推送請(qǐng)求,且令處理所述內(nèi)容推送請(qǐng)求的進(jìn)程作為主進(jìn)程,主進(jìn)程以外的至少部分其它進(jìn)程作為從進(jìn)程;
[0071]解析構(gòu)造模塊12,用以令所述主進(jìn)程對(duì)所述推送請(qǐng)求進(jìn)行解析以構(gòu)造一推送主任務(wù),所述推送主任務(wù)包含多個(gè)推送子任務(wù);
[0072]保存模塊13,用以令所述主進(jìn)程將所述推送主任務(wù)存放于一共享內(nèi)存中;
[0073]通知信息發(fā)送模塊14,用以令所述主進(jìn)程分別向各所述從進(jìn)程發(fā)送通知信息,每個(gè)所述通知信息包括與相應(yīng)所述從進(jìn)程對(duì)應(yīng)的所述推送子任務(wù)的索引信息,其中所述索引信息與相應(yīng)推送子任務(wù)在所述共享內(nèi)存中的位置對(duì)應(yīng);
[0074]執(zhí)行模塊15,用以令各所述從進(jìn)程分別根據(jù)接收的通知信息,從所述共享內(nèi)存中讀取相應(yīng)的所述推送子任務(wù),并根據(jù)讀取結(jié)果構(gòu)造推送子請(qǐng)求,且根據(jù)所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),以對(duì)相應(yīng)的緩存進(jìn)行更新,且將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程;
[0075]反饋模塊16,用以令所述主進(jìn)程接收所有所述執(zhí)行結(jié)果并進(jìn)行匯總并綜合判斷得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果響應(yīng)所述內(nèi)容推送請(qǐng)求。
[0076]于本發(fā)明一具體實(shí)施例中,所述請(qǐng)求接收模塊11用以令首次接收到所述內(nèi)容推送請(qǐng)求的進(jìn)程作為所述主進(jìn)程,且對(duì)所述內(nèi)容推送請(qǐng)求進(jìn)行處理。
[0077]于本發(fā)明一具體實(shí)施例中,所述請(qǐng)求接收模塊11還用以在接收所述內(nèi)容推送請(qǐng)求之前,令至少部分所述進(jìn)程通過(guò)本地套接字監(jiān)聽(tīng)同一地址,以接收向所述地址發(fā)送的內(nèi)容推送請(qǐng)求。
[0078]于本發(fā)明一具體實(shí)施例中,所述執(zhí)行模塊15用以令所述從進(jìn)程根據(jù)接收的通知信息,從所述共享內(nèi)存中讀取相應(yīng)的多個(gè)所述推送子任務(wù),并根據(jù)讀取結(jié)果依次構(gòu)造推送子請(qǐng)求,以依次根據(jù)所構(gòu)造的所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),且在與所述從進(jìn)程對(duì)應(yīng)的所有推送子任務(wù)執(zhí)行結(jié)束后,將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程。
[0079]于本發(fā)明一具體實(shí)施例中,所述推送主任務(wù)包括URL或推送目錄,每個(gè)所述推送子任務(wù)對(duì)應(yīng)一條URL或一條推送目錄。更優(yōu)選的,所述推送主任務(wù)包括多條URL或多條推送目錄,每個(gè)所述推送子任務(wù)對(duì)應(yīng)一條URL或一條推送目錄。
[0080]于本發(fā)明一具體實(shí)施例中,所述反饋模塊16用以令所述主進(jìn)程接收各子任務(wù)的執(zhí)行結(jié)果并綜合分析得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果以狀態(tài)碼形式響應(yīng)所述內(nèi)容推送請(qǐng)求。
[0081 ]于本發(fā)明一具體實(shí)施例中,所述主進(jìn)程基于HTTP協(xié)議對(duì)所述推送請(qǐng)求進(jìn)行解析。
[0082]于本發(fā)明一具體實(shí)施例中,所述主進(jìn)程分別通過(guò)相應(yīng)的通信路徑與各所述從進(jìn)程進(jìn)行通信。即,所述主進(jìn)程和每個(gè)所述從進(jìn)程之間都有一個(gè)與之對(duì)應(yīng)的管道,所述管道優(yōu)選為匿名管道。更優(yōu)選的,還包括加密模塊,用以對(duì)各所述通信路徑進(jìn)行加密處理。對(duì)各所述通信路徑進(jìn)行加密處理,以保證信息傳輸?shù)陌踩浴?br>[0083]圖2所示的內(nèi)容推送系統(tǒng)I與圖1所示的內(nèi)容推送方法的技術(shù)方案相對(duì)應(yīng),所有關(guān)于圖1所示實(shí)施例的描述均可應(yīng)用于圖2所示的內(nèi)容推送系統(tǒng)I中。在此不加贅述。
[0084]請(qǐng)參閱圖3,顯示為本發(fā)明的一種通信系統(tǒng)在一具體實(shí)施例中的模塊示意圖。所述通信系統(tǒng)2包括客戶端21以及緩存服務(wù)器22。所述緩存服務(wù)器22運(yùn)行如圖2所對(duì)應(yīng)實(shí)施例中的內(nèi)容推送系統(tǒng)I,以更新其緩存內(nèi)容。
[0085]所述客戶端21用以向所述緩存服務(wù)器22發(fā)送內(nèi)容推送請(qǐng)求,且接收所述緩存服務(wù)器22對(duì)所述內(nèi)容推送請(qǐng)求的響應(yīng)。下面以一具體實(shí)例描述所述通信系統(tǒng)2的運(yùn)行過(guò)程(其中本描述中的步驟序號(hào)與圖3中的流程序號(hào)相對(duì)應(yīng)):
[0086]I)推送客戶端21向緩存服務(wù)器22發(fā)送推送請(qǐng)求,由于其所有進(jìn)程通過(guò)本地套接字共同監(jiān)聽(tīng)在相同的地址,因此客戶端21往指定地址發(fā)送請(qǐng)求后,會(huì)由其中某個(gè)進(jìn)程接收,這里為了方便闡述,將收到推送請(qǐng)求的緩存服務(wù)器22進(jìn)程稱為主進(jìn)程,其他進(jìn)程則稱作從進(jìn)程。
[0087]2)主進(jìn)程收到客戶端21的推送請(qǐng)求后,進(jìn)行基于HTTP協(xié)議的推送請(qǐng)求解析,這里只利用部分正常的HTTP請(qǐng)求解析過(guò)程,省略了其他多余的操作。
[0088]3)推送請(qǐng)求解析完成后,主進(jìn)程會(huì)根據(jù)該請(qǐng)求構(gòu)造一個(gè)推送任務(wù),它可以包含多條URL,相當(dāng)于一個(gè)推送任務(wù)可以包含多個(gè)子任務(wù),然后把推送任務(wù)放到共享內(nèi)存中,該共享內(nèi)存是由緩存服務(wù)器22啟動(dòng)時(shí)開(kāi)辟的一塊內(nèi)存空間。
[0089]4)主進(jìn)程通過(guò)管道通知各從進(jìn)程去處理,主進(jìn)程和每個(gè)從進(jìn)程都有一個(gè)與之對(duì)應(yīng)的匿名管道,每個(gè)進(jìn)程都能訪問(wèn)到其他進(jìn)程的管道,這樣主進(jìn)程就能通過(guò)管道來(lái)通知各從進(jìn)程去讀取推送任務(wù)進(jìn)行處理,并在通知從進(jìn)程處理任務(wù)的同時(shí)帶上任務(wù)的索引,以便被通知的進(jìn)程能準(zhǔn)確獲取到任務(wù)。
[0090]5)從進(jìn)程收到推送任務(wù)處理通知時(shí),會(huì)從共享內(nèi)存中讀取相應(yīng)的推送任務(wù)進(jìn)行處理,逐個(gè)執(zhí)行各個(gè)子任務(wù),根據(jù)要推送的URL構(gòu)造出一個(gè)請(qǐng)求,這樣既可以按照原流程進(jìn)行推送操作,又可以去掉一些不必要的HTTP請(qǐng)求處理過(guò)程。
[0091]6)從進(jìn)程在執(zhí)行完推送任務(wù)后,通過(guò)管道將各自的推送結(jié)果傳遞給主進(jìn)程。
[0092]7)主進(jìn)程對(duì)所有推送處理結(jié)果進(jìn)行匯總并綜合判斷,然后以響應(yīng)狀態(tài)碼的方式發(fā)送給客戶端21。對(duì)于響應(yīng)狀態(tài)碼的定義,這里分為3種:
[0093]200:表示所有進(jìn)程都有反饋結(jié)果,并且至少有一個(gè)進(jìn)程成功推送掉緩存;
[0094]404:表示所有進(jìn)程都有反饋結(jié)果,并且所有進(jìn)程都是緩存不存在的;
[0095]504:表示在超時(shí)時(shí)間到達(dá)后還有進(jìn)程未反饋結(jié)果。
[0096]綜上所述,本發(fā)明的內(nèi)容推送方法、系統(tǒng)、以及緩存服務(wù)器,在接收到一內(nèi)容推送請(qǐng)求后,且令處理內(nèi)容推送請(qǐng)求的進(jìn)程作為主進(jìn)程,主進(jìn)程以外的至少部分其它進(jìn)程作為從進(jìn)程;令主進(jìn)程對(duì)推送請(qǐng)求進(jìn)行解析以構(gòu)造一推送主任務(wù),推送主任務(wù)包含多個(gè)推送子任務(wù);令主進(jìn)程將推送主任務(wù)存放于一共享內(nèi)存中;令主進(jìn)程分別向各從進(jìn)程發(fā)送通知信息;令各從進(jìn)程分別根據(jù)接收的通知信息,從共享內(nèi)存中讀取相應(yīng)的推送子任務(wù),并根據(jù)讀取結(jié)果構(gòu)造推送子請(qǐng)求,且根據(jù)推送子請(qǐng)求執(zhí)行推送子任務(wù),以對(duì)相應(yīng)的緩存進(jìn)行更新,且將執(zhí)行結(jié)果發(fā)送至主進(jìn)程;令主進(jìn)程接收所有執(zhí)行結(jié)果并進(jìn)行綜合分析得到主任務(wù)的執(zhí)行結(jié)果,并將主任務(wù)的執(zhí)行結(jié)果響應(yīng)內(nèi)容推送請(qǐng)求。本發(fā)明令客戶端不需要重復(fù)推送每個(gè)進(jìn)程,只需往緩存服務(wù)器中某個(gè)進(jìn)程發(fā)送推送請(qǐng)求,就能推送掉所有進(jìn)程的相同緩存,既能提高推送效率,又能減少推送量,提高系統(tǒng)的運(yùn)行性能。所以,本發(fā)明有效克服了現(xiàn)有技術(shù)中的種種缺點(diǎn)而具高度產(chǎn)業(yè)利用價(jià)值。
[0097]上述實(shí)施例僅例示性說(shuō)明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟悉此技術(shù)的人士皆可在不違背本發(fā)明的精神及范疇下,對(duì)上述實(shí)施例進(jìn)行修飾或改變。因此,舉凡所屬技術(shù)領(lǐng)域中具有通常知識(shí)者在未脫離本發(fā)明所揭示的精神與技術(shù)思想下所完成的一切等效修飾或改變,仍應(yīng)由本發(fā)明的權(quán)利要求所涵蓋。
【主權(quán)項(xiàng)】
1.一種內(nèi)容推送方法,其特征在于,應(yīng)用于CDN系統(tǒng)的緩存服務(wù)器,所述緩存服務(wù)器運(yùn)行有多個(gè)進(jìn)程,所述方法包括: 接收一內(nèi)容推送請(qǐng)求,且令處理所述內(nèi)容推送請(qǐng)求的進(jìn)程作為主進(jìn)程,主進(jìn)程以外的至少部分其它進(jìn)程作為從進(jìn)程; 令所述主進(jìn)程對(duì)所述推送請(qǐng)求進(jìn)行解析以構(gòu)造推送主任務(wù),所述推送主任務(wù)包含多個(gè)推送子任務(wù); 令所述主進(jìn)程將所述推送主任務(wù)存放于一共享內(nèi)存中; 令所述主進(jìn)程分別向各所述從進(jìn)程發(fā)送通知信息,每個(gè)所述通知信息包括與所述從進(jìn)程對(duì)應(yīng)的所述推送子任務(wù)的索引信息,其中所述索引信息與相應(yīng)推送子任務(wù)在所述共享內(nèi)存中的位置對(duì)應(yīng); 令各所述從進(jìn)程分別根據(jù)接收的通知信息,從所述共享內(nèi)存中讀取相應(yīng)的所述推送子任務(wù),并根據(jù)讀取結(jié)果構(gòu)造推送子請(qǐng)求,且根據(jù)所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),以對(duì)相應(yīng)的緩存進(jìn)行更新,且將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程; 令所述主進(jìn)程接收所有所述執(zhí)行結(jié)果并進(jìn)行匯總并綜合判斷得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果響應(yīng)所述內(nèi)容推送請(qǐng)求。2.根據(jù)權(quán)利要求1所述的內(nèi)容推送方法,其特征在于:令首次接收到所述內(nèi)容推送請(qǐng)求的進(jìn)程作為所述主進(jìn)程,且對(duì)所述內(nèi)容推送請(qǐng)求進(jìn)行處理。3.根據(jù)權(quán)利要求1所述的內(nèi)容推送方法,其特征在于:在接收所述內(nèi)容推送請(qǐng)求之前,令至少部分所述進(jìn)程通過(guò)本地套接字監(jiān)聽(tīng)同一地址,以接收向所述地址發(fā)送的內(nèi)容推送請(qǐng)求。4.根據(jù)權(quán)利要求1所述的內(nèi)容推送方法,其特征在于:所述推送主任務(wù)包括URL或推送目錄,每個(gè)所述推送子任務(wù)對(duì)應(yīng)一條URL或一條推送目錄。5.根據(jù)權(quán)利要求1所述的內(nèi)容推送方法,其特征在于:令所述主進(jìn)程接收各子任務(wù)的執(zhí)行結(jié)果并綜合分析得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果以狀態(tài)碼形式響應(yīng)所述內(nèi)容推送請(qǐng)求。6.根據(jù)權(quán)利要求1所述的內(nèi)容推送方法,其特征在于:所述主進(jìn)程分別通過(guò)管道與各所述從進(jìn)程進(jìn)行通信。7.—種內(nèi)容推送系統(tǒng),其特征在于,應(yīng)用于CDN系統(tǒng)的緩存服務(wù)器,所述緩存服務(wù)器運(yùn)行有多個(gè)進(jìn)程,所述系統(tǒng)包括: 請(qǐng)求接收模塊,用以接收一內(nèi)容推送請(qǐng)求,且令處理所述內(nèi)容推送請(qǐng)求的進(jìn)程作為主進(jìn)程,主進(jìn)程以外的至少部分其它進(jìn)程作為從進(jìn)程; 解析構(gòu)造模塊,用以令所述主進(jìn)程對(duì)所述推送請(qǐng)求進(jìn)行解析以構(gòu)造一推送主任務(wù),所述推送主任務(wù)包含多個(gè)推送子任務(wù); 保存模塊,用以令所述主進(jìn)程將所述推送主任務(wù)存放于一共享內(nèi)存中; 通知信息發(fā)送模塊,用以令所述主進(jìn)程分別向各所述從進(jìn)程發(fā)送通知信息,每個(gè)所述通知信息包括與所述從進(jìn)程對(duì)應(yīng)的所述推送子任務(wù)的索引信息,其中所述索引信息與相應(yīng)推送子任務(wù)在所述共享內(nèi)存中的位置對(duì)應(yīng); 執(zhí)行模塊,用以令各所述從進(jìn)程分別根據(jù)接收的通知信息,從所述共享內(nèi)存中讀取相應(yīng)的所述推送子任務(wù),并根據(jù)讀取結(jié)果構(gòu)造推送子請(qǐng)求,且根據(jù)所述推送子請(qǐng)求執(zhí)行所述推送子任務(wù),以對(duì)相應(yīng)的緩存進(jìn)行更新,且將所述執(zhí)行結(jié)果發(fā)送至所述主進(jìn)程; 反饋模塊,用以令所述主進(jìn)程接收所有所述執(zhí)行結(jié)果并進(jìn)行匯總并綜合判斷得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果響應(yīng)所述內(nèi)容推送請(qǐng)求。8.根據(jù)權(quán)利要求7所述的內(nèi)容推送系統(tǒng),其特征在于,所述請(qǐng)求接收模塊用以令首次接收到所述內(nèi)容推送請(qǐng)求的進(jìn)程作為所述主進(jìn)程,且對(duì)所述內(nèi)容推送請(qǐng)求進(jìn)行處理。9.根據(jù)權(quán)利要求7所述的內(nèi)容推送系統(tǒng),其特征在于:所述請(qǐng)求接收模塊在接收所述內(nèi)容推送請(qǐng)求之前,還用以令至少部分所述進(jìn)程通過(guò)本地套接字監(jiān)聽(tīng)同一地址,以接收向所述地址發(fā)送的內(nèi)容推送請(qǐng)求。10.根據(jù)權(quán)利要求7所述的內(nèi)容推送系統(tǒng),其特征在于:所述推送主任務(wù)包括URL或推送目錄,每個(gè)所述推送子任務(wù)對(duì)應(yīng)一條URL或一條推送目錄。11.根據(jù)權(quán)利要求7所述的內(nèi)容推送系統(tǒng),其特征在于:所述反饋模塊用以令所述主進(jìn)程接收各子任務(wù)的執(zhí)行結(jié)果并綜合分析得到主任務(wù)的執(zhí)行結(jié)果,并將所述主任務(wù)的執(zhí)行結(jié)果以狀態(tài)碼形式響應(yīng)所述內(nèi)容推送請(qǐng)求。12.根據(jù)權(quán)利要求7所述的內(nèi)容推送系統(tǒng),其特征在于:所述主進(jìn)程分別通過(guò)管道與各從進(jìn)程進(jìn)行通信。13.—種緩存服務(wù)器,其特征在于,運(yùn)行有如權(quán)利要求7?12中任一項(xiàng)所述的內(nèi)容推送系統(tǒng),以更新其緩存內(nèi)容。
【文檔編號(hào)】G06F17/30GK105915587SQ201610208278
【公開(kāi)日】2016年8月31日
【申請(qǐng)日】2016年4月5日
【發(fā)明人】洪珂, 蔣輝, 郭延明, 董曙佳
【申請(qǐng)人】網(wǎng)宿科技股份有限公司