本發(fā)明屬于通信技術(shù)領(lǐng)域,尤其涉及一種基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法。
背景技術(shù):
隨著移動互聯(lián)網(wǎng)的迅速發(fā)展及在線視頻內(nèi)容的急劇增長,在網(wǎng)絡(luò)內(nèi)緩存視頻時,提升終端用戶體驗以及降低用戶費用便顯得尤為重要。然而,由于互聯(lián)網(wǎng)中視頻數(shù)量和用戶視頻需求與有限的存儲容量和鏈路帶寬之間的矛盾,在網(wǎng)絡(luò)內(nèi)高效地緩存視頻是一件比較困難的事情。
當(dāng)前存在的關(guān)于網(wǎng)絡(luò)內(nèi)視頻緩存問題的解決方案的不足有:(1)依賴于靜態(tài)配置和時間平均請求到達(dá)率,并不能有效地解決動態(tài)請求模式中出現(xiàn)的問題;(2)同時解決視頻緩存問題和源節(jié)點選擇問題,導(dǎo)致算法復(fù)雜度過高,且耗費時間較長,效率過低。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于改進(jìn)當(dāng)前網(wǎng)絡(luò)內(nèi)視頻緩存技術(shù)的不足,提出一種基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法,讓所有網(wǎng)絡(luò)節(jié)點共同緩存用戶所需的視頻,從而使視頻在存儲容量和鏈路帶寬受限的網(wǎng)絡(luò)中傳輸?shù)目偝杀咀钚 ?/p>
本發(fā)明提出的聯(lián)合緩存架構(gòu),指的是一種網(wǎng)絡(luò)中所有節(jié)點各自開辟一定的緩存空間,并共同緩存用戶所需視頻資源的架構(gòu)。網(wǎng)絡(luò)節(jié)點包括直接與用戶基站相連的服務(wù)節(jié)點和與外界互聯(lián)網(wǎng)相連的分組數(shù)據(jù)網(wǎng)絡(luò)PDN網(wǎng)關(guān),下面簡稱節(jié)點。
為實現(xiàn)上述發(fā)明目的,本發(fā)明提出的技術(shù)方案是:
一種基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法,包括以下步驟:
步驟一:在所有節(jié)點緩存特定的視頻;
在基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)中,預(yù)留一部分比例為α的空間緩存用戶請求最多的視頻;然后利用剩下的空間保證網(wǎng)絡(luò)可以緩存所有視頻;若節(jié)點仍有剩余空間,則繼續(xù)在每個節(jié)點中緩存視頻,填滿所有節(jié)點緩存空間;尋找一個最佳α,使網(wǎng)絡(luò)的總緩存命中量達(dá)到最大;
步驟二:確定獲取視頻的最佳源節(jié)點;
視頻緩存完成后,當(dāng)一個節(jié)點i接收到對視頻k的請求時,節(jié)點i先在本地緩存中尋找視頻k,如果有則直接將視頻k發(fā)送給用戶;否則在其他網(wǎng)絡(luò)節(jié)點的緩存中尋找視頻k;當(dāng)存在多個其它網(wǎng)絡(luò)節(jié)點都緩存有視頻k時,根據(jù)視頻請求模式和鏈路狀態(tài)信息的動態(tài)變化,為視頻用戶尋找一個最佳的視頻源節(jié)點。
進(jìn)一步根據(jù)所述基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法,步驟一中在所有節(jié)點緩存特定的視頻:
M為網(wǎng)絡(luò)中所有節(jié)點i的集合,N為所有需要緩存的視頻k的集合,Sk為視頻k的大小,λik表示節(jié)點i中收到用戶請求為視頻k的概率,其中λik∈[0,1],可通過歷史統(tǒng)計計算或預(yù)測得到;yik表示節(jié)點i的緩存中是否有視頻k,yik=0表示節(jié)點i的緩存中沒有視頻k,yik=1表示節(jié)點i的緩存中有視頻k,即yik∈{0,1};表示總緩存空間的緩存命中量,緩存命中量越大表示緩存空間中請求概率高的視頻越多,資源利用率越高,系統(tǒng)更高效;
在存儲空間和鏈路帶寬受限的情況下,通過合理地在各個網(wǎng)絡(luò)節(jié)點中緩存視頻數(shù)據(jù),使本地網(wǎng)絡(luò)節(jié)點的總緩存命中量達(dá)到最大,即取得最大值;節(jié)點緩存容量受限,Di為節(jié)點i的緩存容量,則緩存視頻時必須滿足
具體步驟如下:(1-1)緩存請求概率最高的視頻;(1-2)保證緩存所有視頻;(1-3)填滿節(jié)點剩余空間;(1-4)尋找最佳分配方式。
進(jìn)一步根據(jù)所述基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法,步驟一在所有節(jié)點緩存特定的視頻中的(1-1)緩存請求概率最高的視頻:
將網(wǎng)絡(luò)中所有節(jié)點i的總緩存容量中預(yù)留比例為α的部分來緩存每個網(wǎng)絡(luò)節(jié)點中請求概率最高的視頻,假設(shè)α為一個給定的數(shù)值;用Pi表示節(jié)點i緩存的視頻集合,Di′表示節(jié)點i的剩余緩存容量;
對于集合M中的每個節(jié)點i,初始化集合Pi為空集,令為總?cè)萘恐斜壤秊棣恋牟糠秩萘?,初始化集合W={(i,k)|i∈M,k∈N}為所有可能的(i,k)配對的集合,初始化節(jié)點i的剩余緩存容量Di′=Di;
當(dāng)D大于0且集合W不為空集時,令如果即視頻k*的大小不大于節(jié)點i*的剩余緩存容量,則令即把視頻k*緩存到節(jié)點i*中,同時將用來緩存請求概率最高視頻的部分容量D和節(jié)點i*的剩余緩存容量均減去視頻k*的大小Sk*;令W=W-{(i*,k*)},即把集合W中的(i*,k*)配對去掉,同時令表示節(jié)點i*的緩存中有視頻k*;
如果D大于0且集合W不為空集,則繼續(xù)緩存視頻;如果D等于0或者集合W為空集,則表示用來緩存請求概率最高視頻的空間已經(jīng)分配完,或者網(wǎng)絡(luò)中所有的節(jié)點均分配到所有的視頻;
緩存視頻結(jié)束后,得到每個節(jié)點i中緩存視頻的集合Pi以及全部Pi的并集N0,集合N0中的元素表示網(wǎng)絡(luò)中任一節(jié)點緩存的視頻,所有視頻中請求概率最高的視頻緩存完畢。
進(jìn)一步根據(jù)所述基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法,步驟一在所有節(jié)點緩存特定的視頻中的(1-2)保證緩存所有視頻:
令Nr表示網(wǎng)絡(luò)中沒有緩存的視頻的集合,即為了利用剩余的1-α部分空間實現(xiàn)所有視頻全覆蓋,并在保證緩存全部視頻的前提下使緩存命中量最大,則每個視頻只需在所有網(wǎng)絡(luò)節(jié)點中緩存唯一復(fù)本即可;
存儲容量受限,則必須滿足
對于集合Nr中的每一個視頻k,令Yk表示所有可以用于緩存視頻k的節(jié)點集合,初始化Yk=M;
在集合Yk中尋找一個使取得最大值的節(jié)點i*,即若視頻k的大小Sk大于節(jié)點i*的剩余空間則令Yk=Y(jié)k-i*,即表示節(jié)點i*不可以用于緩存視頻k;繼續(xù)在集合Yk中尋找一個使λik取得最大值的節(jié)點i*緩存視頻,直到Y(jié)k變?yōu)榭占?;Yk為空集表示當(dāng)前網(wǎng)絡(luò)內(nèi)沒有節(jié)點具有足夠的空間來緩存視頻k,即網(wǎng)絡(luò)無法保證緩存所有視頻,則當(dāng)前給定的α值是不合理的;
若Sk不大于節(jié)點i*的剩余空間令Nr=Nr-k,將視頻k緩存到節(jié)點i*中,同時更新為減去視頻k的大小Sk;
Nr變?yōu)榭占?,緩存所有視頻結(jié)束。
進(jìn)一步根據(jù)所述基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法,步驟一在所有節(jié)點緩存特定的視頻中的(1-3)填滿節(jié)點剩余空間:
視頻緩存完成后,各個節(jié)點i可能還有部分剩余空間;
Ni表示節(jié)點i沒有緩存的視頻的集合,Pi″表示節(jié)點i將要緩存的視頻k的集合;在不超過節(jié)點i的剩余緩存容量的條件下,即將使得最大的視頻加入集合Pi″中,同時將Pi″中的視頻緩存到節(jié)點i中;
遍歷集合M中的所有節(jié)點i,初始化集合Pi″為空集;
當(dāng)Di′大于0且集合Ni不為空集時,令即Ni中最受歡迎的視頻;如果視頻k*的大小Sk*不大于此時節(jié)點i的剩余容量Di′,則令集合Pi″=Pi″∪k*,Ni=Ni-k*,把視頻k*緩存到節(jié)點i中,將節(jié)點i剩余容量Di′更新為Di′減去Sk*;如果視頻k*的大小Sk*大于此時節(jié)點i的剩余容量Di′,令集合Ni=Ni-k*,不緩存視頻k*;
如果Di′大于0且集合Ni不為空集,則繼續(xù)按照所述方法,給節(jié)點繼續(xù)緩存視頻;如果Di′等于0或者集合Ni為空集,則表示節(jié)點i的剩余緩存空間已經(jīng)分配完,或者節(jié)點i已經(jīng)緩存所有的視頻,集合Pi=Pi∪Pi″,得到節(jié)點i中緩存的全部視頻;
遍歷完集合M中的所有節(jié)點i后,此時所有節(jié)點的緩存空間都已經(jīng)被填滿,并得到全部節(jié)點i和視頻k對應(yīng)的yik值;記錄每個節(jié)點的緩存分配結(jié)果,即每個節(jié)點緩存的視頻集合Pi,并根據(jù)節(jié)點緩存空間分配結(jié)果得到緩存命中量的值。
進(jìn)一步根據(jù)所述基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法,步驟一在所有節(jié)點緩存特定的視頻中的(1-4)尋找最佳分配方式:
總緩存空間中用于緩存請求概率高的視頻的空間比例α越大,緩存命中量也越大,則將緩存命中量表示為α的一個函數(shù)H(α),即
選擇一個更大的α能夠提升系統(tǒng)的性能,避免網(wǎng)絡(luò)無法緩存全部視頻,采用二分法在[0,1]區(qū)間內(nèi)尋找最佳α,在保證緩存全部視頻的前提下,使得目標(biāo)值H(α)取得最大值,為α值設(shè)置一個下界αl=0,得到對應(yīng)H(αl)的值;
若集合Yk為空集,表示當(dāng)前α值不合理,即系統(tǒng)全部容量都無法保證覆蓋全部視頻,系統(tǒng)對容量不足的情況不作處理;
若集合Yk為空集,為α值設(shè)置一個上界αu=1,得到對應(yīng)H(αu)的值,如果沒有緩存視頻的集合Nr為空集,則表示用系統(tǒng)全部容量的α倍緩存的請求概率最高的視頻即為所有的視頻N,因此直接得到最佳α為1;
如果有緩存視頻的集合Nr為空集,在αl和αu之間使用二分查找法,若H(αl)<H(αu),則令αl=(αl+αu)/2,重新計算H(αl);若H(αl)>H(αu),則令αu=(αl+αu)/2,重新計算H(αu),直到H(αl)=H(αu),此時得到的H(α)為最大。
進(jìn)一步根據(jù)所述基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法,步驟二中確定獲取視頻的最佳源節(jié)點:
當(dāng)一個節(jié)點i接收到對視頻k的請求時,節(jié)點i先在本地緩存中尋找視頻k,如果有則直接將視頻k發(fā)送給用戶,否則在其他網(wǎng)絡(luò)節(jié)點的緩存中尋找視頻k;當(dāng)存在多個其他網(wǎng)絡(luò)節(jié)點都緩存有視頻k時,選擇其中一個網(wǎng)絡(luò)節(jié)點作為所請求視頻k的最佳源節(jié)點;
把網(wǎng)絡(luò)進(jìn)行視頻緩存的時間劃分為若干個輪,每一輪持續(xù)時間為△t,在每一輪時間內(nèi),每個網(wǎng)絡(luò)節(jié)點從用戶端接收請求;
對于網(wǎng)絡(luò)中的所有鏈路l,用fl表示鏈路l上的總的傳輸速率;用L(j,i)表示從節(jié)點j到節(jié)點i的路徑;用ζl(·)表示已知的鏈路時延函數(shù),是一個關(guān)于負(fù)載fl的單調(diào)遞增函數(shù),則表示從節(jié)點j發(fā)送一個單元的數(shù)據(jù)到節(jié)點i的時延成本;用Ri表示一輪時間內(nèi)節(jié)點i中被請求但沒有緩存的視頻的集合;用rk表示視頻k的傳輸速率;用Tk表示擁有視頻k復(fù)本的所有節(jié)點的集合;用表示所有節(jié)點獲取視頻的加權(quán)時延成本之和;
通過為每個視頻k的請求選擇最佳的視頻源節(jié)點,使所有節(jié)點獲取視頻的加權(quán)時延成本之和達(dá)到最小,即使取得最小值;
按如下步驟進(jìn)行:
(2-1)建立本地負(fù)載表,網(wǎng)絡(luò)中的路由器定期地將各條鏈路的負(fù)載信息,即傳輸速率報告給各個網(wǎng)絡(luò)節(jié)點,每個節(jié)點接收報告后建立一個具有全部鏈路負(fù)載信息的本地負(fù)載表;
(2-2)根據(jù)本地負(fù)載表尋找最佳源節(jié)點,每輪時間△t結(jié)束時,網(wǎng)絡(luò)節(jié)點i處理接收到的視頻請求,假設(shè)收到對于視頻k的請求,則合并節(jié)點i中對于視頻k的全部請求;若節(jié)點i的本地緩存中無視頻k,則節(jié)點i根據(jù)本地負(fù)載表獲取每條鏈路的負(fù)載fl,由得到傳輸視頻k到節(jié)點i時延成本最小的節(jié)點j*,其中每條鏈路l必須滿足fl≤Cl,Cl表示鏈路l的容量,即該鏈路所允許的最大的傳輸速率;確定最佳源節(jié)點j*后,節(jié)點i向節(jié)點j*請求發(fā)送視頻k;
(2-3)更新本地負(fù)載表,節(jié)點i向節(jié)點j*發(fā)送對于視頻k的請求后,節(jié)點i和節(jié)點j*更新節(jié)點i和節(jié)點j*的本地負(fù)載表,將路徑L(j*,i)經(jīng)過的所有鏈路l的負(fù)載fl變成fl+rk,并將更新消息發(fā)送給網(wǎng)絡(luò)中的路由器;路由器將更新消息廣播給網(wǎng)絡(luò)中的每一個節(jié)點,各個節(jié)點收到更新消息后更新本地負(fù)載表;
為節(jié)點i中的對視頻k的請求找到了最佳的源節(jié)點j*,用戶通過最佳源節(jié)點j*得到所請求的視頻。
本發(fā)明的有益效果:
(1)本發(fā)明提出了一個可以解決網(wǎng)絡(luò)內(nèi)視頻緩存問題的聯(lián)合緩存架構(gòu),能夠保證移動網(wǎng)絡(luò)內(nèi)視頻數(shù)據(jù)的可靠、高效存儲和調(diào)用;
(2)本發(fā)明通過決定網(wǎng)絡(luò)中各個節(jié)點應(yīng)該緩存的視頻,使網(wǎng)絡(luò)總緩存命中量達(dá)到最大值,從而節(jié)省了系統(tǒng)帶寬,提高資源利用率;
(3)本發(fā)明考慮了視頻請求模式和鏈路狀態(tài)信息的動態(tài)變化,為用戶在網(wǎng)絡(luò)中選擇一個最佳的視頻源節(jié)點,有效地降低了網(wǎng)絡(luò)時延成本。
附圖說明
圖1為本發(fā)明所述基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法的流程圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)的描述,以使本領(lǐng)域技術(shù)人員能夠更加清楚地理解本發(fā)明的方案,但并不因此限制本發(fā)明的保護(hù)范圍。
如圖1所示,本發(fā)明所述基于聯(lián)合緩存架構(gòu)的網(wǎng)絡(luò)內(nèi)視頻緩存方法,具體如下:
步驟一:在所有節(jié)點緩存特定的視頻。
為了便于描述,令M為網(wǎng)絡(luò)中所有節(jié)點i的集合;N為所有需要緩存的視頻k的集合;Sk為視頻k的大小;λik表示節(jié)點i中收到用戶請求為視頻k的概率,其中λik∈[0,1],可通過歷史統(tǒng)計計算或預(yù)測得到;yik表示節(jié)點i的緩存中是否有視頻k,yik=0表示節(jié)點i的緩存中沒有視頻k,yik=1表示節(jié)點i的緩存中有視頻k,即yik∈{0,1};表示總緩存空間的緩存命中量,緩存命中量越大表示緩存空間中請求概率高的視頻越多,資源利用率越高,系統(tǒng)更高效。
在存儲空間和鏈路帶寬受限的情況下,通過合理地在各個網(wǎng)絡(luò)節(jié)點中緩存視頻數(shù)據(jù),使本地網(wǎng)絡(luò)節(jié)點的總緩存命中量達(dá)到最大,即取得最大值。由于節(jié)點緩存容量受限,令Di為節(jié)點i的緩存容量,則緩存視頻時必須滿足
如圖1所示,在所有節(jié)點緩存特定的視頻,具體步驟如下:
(1-1)緩存請求概率最高的視頻。
將網(wǎng)絡(luò)中所有節(jié)點i的總緩存容量中預(yù)留比例為α的部分來緩存每個網(wǎng)絡(luò)節(jié)點中請求概率最高的視頻,假設(shè)α為一個給定的數(shù)值。用Pi表示節(jié)點i緩存的視頻集合,Di′表示節(jié)點i的剩余緩存容量。
對于集合M中的每個節(jié)點i,初始化集合Pi為空集,令為總?cè)萘恐斜壤秊棣恋牟糠秩萘?,初始化集合W={(i,k)|i∈M,k∈N}為所有可能的(i,k)配對的集合,初始化節(jié)點i的剩余緩存容量Di′=Di。
當(dāng)D大于0且集合W不為空集時,令如果即視頻k*的大小不大于節(jié)點i*的剩余緩存容量,則令即把視頻k*緩存到節(jié)點i*中,同時將用來緩存請求概率最高視頻的部分容量D和節(jié)點i*的剩余緩存容量均減去視頻k*的大小Sk*;令W=W-{(i*,k*)},即把集合W中的(i*,k*)配對去掉,同時令表示節(jié)點i*的緩存中有視頻k*。如果D大于0且集合W不為空集,則繼續(xù)緩存視頻;如果D等于0或者集合W為空集,則表示用來緩存請求概率最高視頻的空間已經(jīng)分配完,或者網(wǎng)絡(luò)中所有的節(jié)點均分配到所有的視頻。
緩存視頻結(jié)束后,得到每個節(jié)點i中緩存視頻的集合Pi以及全部Pi的并集N0,集合N0中的元素表示網(wǎng)絡(luò)中任一節(jié)點緩存的視頻,所有視頻中請求概率最高的視頻緩存完畢。
(1-2)保證緩存所有視頻。
令Nr表示網(wǎng)絡(luò)中沒有緩存的視頻的集合,即為了利用剩余的1-α部分空間實現(xiàn)所有視頻全覆蓋,并在保證緩存全部視頻的前提下使緩存命中量最大,則每個視頻只需在所有網(wǎng)絡(luò)節(jié)點中緩存唯一復(fù)本即可。由于存儲容量受限,則必須滿足
對于集合Nr中的每一個視頻k,令Yk表示所有可以用于緩存視頻k的節(jié)點的集合,初始化Yk=M。
在集合Yk中尋找一個使取得最大值的節(jié)點i*,即若視頻k的大小Sk大于節(jié)點i*的剩余空間則令Yk=Y(jié)k-i*,即表示節(jié)點i*不可以用于緩存視頻k;繼續(xù)在集合Yk中尋找一個使λik取得最大值的節(jié)點i*緩存視頻,直到Y(jié)k變?yōu)榭占?。Yk為空集表示當(dāng)前網(wǎng)絡(luò)內(nèi)沒有節(jié)點具有足夠的空間來緩存視頻k,即網(wǎng)絡(luò)無法保證緩存所有視頻,則當(dāng)前給定的α值是不合理的。
若Sk不大于節(jié)點i*的剩余空間令Nr=Nr-k,將視頻k緩存到節(jié)點i*中,同時更新為減去視頻k的大小Sk。Nr變?yōu)榭占?,緩存所有視頻結(jié)束。
(1-3)填滿節(jié)點剩余空間。
視頻緩存完成后,各個節(jié)點i可能還有部分剩余空間。Ni表示節(jié)點i沒有緩存的視頻集合,Pi″表示節(jié)點i將要緩存的視頻k的集合。在不超過節(jié)點i的剩余緩存容量的條件下,即將使得最大的視頻加入集合Pi″中,同時將Pi″中的視頻緩存到節(jié)點i中。
遍歷集合M中的所有節(jié)點i,初始化集合Pi″為空集。
當(dāng)Di′大于0且集合Ni不為空集時,令即Ni中最受歡迎的視頻;如果視頻k*的大小Sk*不大于此時節(jié)點i的剩余容量Di′,則令集合Pi″=Pi″∪k*,Ni=Ni-k*,把視頻k*緩存到節(jié)點i中,將節(jié)點i剩余容量Di′更新為Di′減去Sk*;如果視頻k*的大小Sk*大于此時節(jié)點i的剩余容量Di′,令集合Ni=Ni-k*,不緩存視頻k*。
如果Di′大于0且集合Ni不為空集,則繼續(xù)按照所述方法,給節(jié)點繼續(xù)緩存視頻;如果Di′等于0或者集合Ni為空集,則表示節(jié)點i的剩余緩存空間已經(jīng)分配完,或者節(jié)點i已經(jīng)緩存所有的視頻,令集合Pi=Pi∪Pi″,得到節(jié)點i中緩存的全部視頻。
遍歷完集合M中的所有節(jié)點i后,此時所有節(jié)點的緩存空間都已經(jīng)被填滿,并得到全部節(jié)點i和視頻k對應(yīng)的yik值。記錄每個節(jié)點的緩存分配結(jié)果,即每個節(jié)點緩存的視頻集合Pi,并根據(jù)節(jié)點緩存空間分配結(jié)果得到緩存命中量的值。
(1-4)尋找最佳分配方式。
總緩存空間中用于緩存請求概率高的視頻的空間比例α越大,緩存命中量也越大,則將緩存命中量表示為α的一個函數(shù)H(α),即
選擇一個更大的α能夠提升系統(tǒng)的性能,避免網(wǎng)絡(luò)無法緩存全部視頻,采用二分法在[0,1]區(qū)間內(nèi)尋找最佳α,在保證緩存全部視頻的前提下,使得目標(biāo)值H(α)取得最大值。為α值設(shè)置一個下界αl=0,得到對應(yīng)H(αl)的值。
如果集合Yk為空集,表示當(dāng)前α值不合理,即系統(tǒng)全部容量都無法保證覆蓋全部視頻,系統(tǒng)對容量不足的情況不作處理。
如果集合Yk為空集,為α值設(shè)置一個上界αu=1,得到對應(yīng)H(αu)的值,如果沒有緩存視頻的集合Nr為空集,則表示用系統(tǒng)全部容量的α倍緩存的請求概率最高的視頻即為所有的視頻N,因此直接得到最佳α為1。
如果有緩存視頻的集合Nr為空集,在αl和αu之間使用二分查找法,若H(αl)<H(αu),則令αl=(αl+αu)/2,重新計算H(αl);若H(αl)>H(αu),則令αu=(αl+αu)/2,重新計算H(αu),直到H(αl)=H(αu),此時得到的H(α)為最大。
所有網(wǎng)絡(luò)節(jié)點都緩存了特定的視頻。
步驟二:確定獲取視頻的最佳源節(jié)點。
當(dāng)一個節(jié)點i接收到對視頻k的請求時,節(jié)點i先在本地緩存中尋找視頻k,如果有則直接將視頻k發(fā)送給用戶;否則在其他網(wǎng)絡(luò)節(jié)點的緩存中尋找視頻k。當(dāng)存在多個其他網(wǎng)絡(luò)節(jié)點都緩存有視頻k時,選擇其中一個網(wǎng)絡(luò)節(jié)點作為所請求視頻k的最佳源節(jié)點。把網(wǎng)絡(luò)進(jìn)行視頻緩存的時間劃分為若干個輪,每一輪持續(xù)時間為△t。在每一輪時間內(nèi),每個網(wǎng)絡(luò)節(jié)點從用戶端接收請求。
對于網(wǎng)絡(luò)中的所有鏈路l,用fl表示鏈路l上的總的傳輸速率;用L(j,i)表示從節(jié)點j到節(jié)點i的路徑;用ζl(·)表示已知的鏈路時延函數(shù),是一個關(guān)于負(fù)載fl的單調(diào)遞增函數(shù),則表示從節(jié)點j發(fā)送一個單元的數(shù)據(jù)到節(jié)點i的時延成本;用Ri表示一輪時間內(nèi)節(jié)點i中被請求但沒有緩存的視頻的集合;用rk表示視頻k的傳輸速率;用Tk表示擁有視頻k復(fù)本的所有節(jié)點的集合;用表示所有節(jié)點獲取視頻的加權(quán)時延成本之和。
通過為每個視頻k的請求選擇最佳的視頻源節(jié)點,使所有節(jié)點獲取視頻的加權(quán)時延成本之和達(dá)到最小,即使取得最小值。
如圖1所示,確定獲取視頻的最佳源節(jié)點,按如下步驟進(jìn)行:
(2-1)建立本地負(fù)載表。網(wǎng)絡(luò)中的路由器定期地將各條鏈路的負(fù)載信息,即傳輸速率報告給各個網(wǎng)絡(luò)節(jié)點,每個節(jié)點接收報告后建立一個具有全部鏈路負(fù)載信息的本地負(fù)載表。
(2-2)根據(jù)本地負(fù)載表尋找最佳源節(jié)點。每輪時間△t結(jié)束時,網(wǎng)絡(luò)節(jié)點i處理接收到的視頻請求,假設(shè)收到對于視頻k的請求,則合并節(jié)點i中對于視頻k的全部請求。若節(jié)點i的本地緩存中無視頻k,則節(jié)點i根據(jù)本地負(fù)載表獲取每條鏈路的負(fù)載fl,由得到傳輸視頻k到節(jié)點i時延成本最小的節(jié)點j*,其中每條鏈路l必須滿足fl≤Cl,Cl表示鏈路l的容量,即該鏈路所允許的最大的傳輸速率。確定最佳源節(jié)點j*后,節(jié)點i向節(jié)點j*請求發(fā)送視頻k。
(2-3)更新本地負(fù)載表。節(jié)點i向節(jié)點j*發(fā)送對于視頻k的請求后,節(jié)點i和節(jié)點j*更新節(jié)點i和節(jié)點j*的本地負(fù)載表,將路徑L(j*,i)經(jīng)過的所有鏈路l的負(fù)載fl變成fl+rk,并將更新消息發(fā)送給網(wǎng)絡(luò)中的路由器;路由器將更新消息廣播給網(wǎng)絡(luò)中的每一個節(jié)點,各個節(jié)點收到更新消息后更新本地負(fù)載表。
為節(jié)點i中的對視頻k的請求找到了最佳的源節(jié)點j*,用戶通過最佳源節(jié)點j*得到所請求的視頻。
以上僅是對本發(fā)明的優(yōu)選實施方式進(jìn)行了描述,并不將本發(fā)明的技術(shù)方案限制于此,本領(lǐng)域技術(shù)人員在本發(fā)明的主要技術(shù)構(gòu)思的基礎(chǔ)上所做的任何公知變形都屬于本發(fā)明所要保護(hù)的技術(shù)范疇,本發(fā)明具體的保護(hù)范圍以權(quán)利要求書的記載為準(zhǔn)。