專利名稱:一種基于空間漫游位置的視頻網(wǎng)絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域。特別是涉及一種計(jì)算機(jī)多媒體信息緩存的方法,尤 其涉及一種基于空間漫游位置的視頻網(wǎng)絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn)方法。
背景技術(shù):
隨著多媒體技術(shù)和網(wǎng)絡(luò)地圖技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)視頻地圖技術(shù)成為了未來網(wǎng)絡(luò) 地圖發(fā)展的一個(gè)重要方向。網(wǎng)絡(luò)視頻地圖技術(shù)不僅可以提供地名搜索和路線導(dǎo)航等傳統(tǒng)電 子地圖功能,而且還能夠?yàn)槁肪€導(dǎo)航提供路線同步的實(shí)景視頻,極大地提高了用戶的現(xiàn)場(chǎng) 感和導(dǎo)航體驗(yàn)。為了針對(duì)支持分布化處理和任意的線路查詢操作,離散數(shù)學(xué)結(jié)構(gòu)“圖”是較為理想 的大型視頻電子地圖的存儲(chǔ)方式。該存儲(chǔ)方式能將視頻電子地圖抽象為一個(gè)圖。圖中的每 一個(gè)頂點(diǎn)為路口,圖中的邊為路口與路口之間那部分道路,或稱作道路邊。每一條邊都由組 成這條邊的空間點(diǎn)組成,并且關(guān)聯(lián)了一段反應(yīng)該道路邊真實(shí)場(chǎng)景的視頻,每一個(gè)視頻幀中 還存儲(chǔ)了相應(yīng)的空間點(diǎn)用以與地圖同步。然而,在新的網(wǎng)絡(luò)環(huán)境中直接應(yīng)用上述的圖式的視頻電子地圖的數(shù)據(jù)存儲(chǔ)方法卻 是不可行。上述視頻電子地圖的數(shù)據(jù)結(jié)構(gòu)一般存儲(chǔ)在空間數(shù)據(jù)庫里。而對(duì)于視頻網(wǎng)絡(luò)地圖 來說,這種數(shù)據(jù)庫則一般安裝在服務(wù)器上。在新的網(wǎng)絡(luò)環(huán)境中,該視頻地圖內(nèi)容的存儲(chǔ)方法 沒有考慮到這種網(wǎng)絡(luò)環(huán)境的特點(diǎn),從而導(dǎo)致了地圖的網(wǎng)絡(luò)用戶在漫游時(shí)候產(chǎn)生了效率和穩(wěn) 定性問題。這個(gè)問題主要體現(xiàn)在信息和媒體的直接獲取算法的不適應(yīng)性上。該算法直接通 過網(wǎng)路按需獲取所需信息和視頻,它的不適應(yīng)性的根源在于漫游時(shí)用戶坐標(biāo)、用戶所需的 圖的信息和視頻的信息的不斷變化。該算法的不適應(yīng)性體現(xiàn)在以下方面一由于網(wǎng)絡(luò)上的諸多不確定因素,道路信息和視頻的讀取不及時(shí),導(dǎo)致視頻斷流 現(xiàn)象,引起漫游體驗(yàn)的不穩(wěn)定性。二 通過網(wǎng)絡(luò)訪問數(shù)據(jù)庫的次數(shù)過多,每一次訪問的信息量小,網(wǎng)絡(luò)通訊和數(shù)據(jù)庫 操作的額外開銷過多,客戶端訪問效率低。三服務(wù)器端被訪問次數(shù)多,服務(wù)的額外開銷過大,服務(wù)繁忙。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對(duì)上述現(xiàn)有技術(shù)現(xiàn)狀,提供一種具有針對(duì)大型視 頻網(wǎng)絡(luò)地圖的空間和網(wǎng)絡(luò)環(huán)境的特點(diǎn),能滿足大型視頻網(wǎng)絡(luò)地圖在實(shí)景漫游中的效率和穩(wěn) 定性的需求的一種基于空間漫游位置的視頻網(wǎng)絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn)方法。本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案為一種基于空間漫游位置的視頻網(wǎng) 絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn)方法,包括客戶端算法和服務(wù)端算法,其中客戶端算法包括以下操 作步驟;客戶端
步驟1 設(shè)置圖緩存Cl存儲(chǔ)圖的結(jié)構(gòu)信息,其中包括圖中的點(diǎn)和邊的信息以及每 一點(diǎn)以及每一條邊的最新更新時(shí)間和版本號(hào);設(shè)置視頻緩存C2存儲(chǔ)圖中的與邊關(guān)聯(lián)的視 頻以及每一視頻的最新更新時(shí)間和版本號(hào);初始化緩存中的每一個(gè)對(duì)象的最新更新時(shí)間為 當(dāng)前時(shí)間;初始化緩存中的每一個(gè)對(duì)象的版本號(hào)為零;步驟2 在每次用戶漫游開始時(shí),設(shè)置定時(shí)器周期性地根據(jù)當(dāng)前漫游位置向服務(wù) 發(fā)出緩存內(nèi)容更新請(qǐng)求;漫游歷史標(biāo)志為上一個(gè)時(shí)間周期用戶所在的漫游位置;初始化該 標(biāo)志為零;設(shè)置時(shí)鐘周期Tl ;步驟3 設(shè)置定時(shí)器周期性遍歷所有緩存對(duì)象,如果緩存對(duì)象的上次更新時(shí)間距 離當(dāng)下時(shí)間早了一個(gè)月以上,清除該對(duì)象,釋放被不必要占用的緩存空間;設(shè)置時(shí)鐘周期 T2 >> Tl ;步驟4 收到服務(wù)器發(fā)來的緩存內(nèi)容更新消息后,解包更新緩存;步驟5 如果收到的包為圖信息包,解包,將消息中包含的圖的點(diǎn)和邊更新到緩存 Cl中去;在更新時(shí)比對(duì)點(diǎn)與邊的上次更新時(shí)間與包的請(qǐng)求初始時(shí)間戳;如果包的請(qǐng)求初始 時(shí)間戳小于上次更新時(shí)間,則放棄對(duì)該點(diǎn)或者邊的信息更新;否則,比較版本號(hào),如果緩存 版本號(hào) >=更新內(nèi)容的版本號(hào),則放棄對(duì)該點(diǎn)或者邊的信息更新;否則執(zhí)行更新操作;步驟6 如果收到的包為視頻信息包,解包,將消息中包含的圖的視頻更新到視頻 緩存C2中去;在更新時(shí)比對(duì)視頻的上次更新時(shí)間與包的請(qǐng)求初始時(shí)間戳;如果包的請(qǐng)求初 始時(shí)間戳小于上次更新時(shí)間,則放棄對(duì)該視頻的信息更新;否則,比較版本號(hào),如果緩存版 本號(hào)> =更新內(nèi)容的版本號(hào),則放棄對(duì)該點(diǎn)或者邊的信息更新;否則執(zhí)行更新操作;服務(wù)端步驟1 在服務(wù)器端也設(shè)置兩個(gè)緩存,圖緩存SCl和視頻緩存SC2 ;視頻緩存中設(shè) 置一個(gè)隊(duì)列結(jié)構(gòu),隊(duì)列前端保持最先進(jìn)入緩存的視頻內(nèi)容的內(nèi)存地址,其后保持所有視頻 內(nèi)容的內(nèi)存地址;設(shè)置SC2的緩存容量限度;步驟2 如果接收到圖更新請(qǐng)求消息M1,解包,將請(qǐng)求消息中的每一個(gè)點(diǎn)和每一條 邊的版本號(hào)與服務(wù)器上的每個(gè)點(diǎn)和邊版本號(hào)進(jìn)行比較,如果該對(duì)象的版本號(hào)大于請(qǐng)求版本 號(hào),則從緩存SCl中檢測(cè)該對(duì)象,如果該對(duì)象在緩存中存在,將該對(duì)象緩存中取出,打入服 務(wù)器回復(fù)消息,即圖信息包;如果該對(duì)象不在緩存中,則從服務(wù)器上的數(shù)據(jù)庫中取出,存入 緩存,打入服務(wù)器回復(fù)消息,即圖信息包;根據(jù)Ml中的矩形參數(shù),將覆蓋矩形范圍以內(nèi)的點(diǎn) 和邊也從SCl緩存或者數(shù)據(jù)庫中取出,打入圖信息包;打包完畢,將圖信息包發(fā)送回客戶 端;步驟3 如果接收到視頻更新請(qǐng)求消息M2,解包,將請(qǐng)求消息中的每條邊所對(duì)應(yīng)視 頻的版本號(hào)與服務(wù)器上的相應(yīng)視頻的版本號(hào)進(jìn)行比較,如果該對(duì)象的版本號(hào)大于請(qǐng)求版本 號(hào),則從緩存SC2中檢測(cè)該對(duì)象,如果該對(duì)象在緩存中存在,將該對(duì)象緩存中取出,打入服 務(wù)器回復(fù)消息,即視頻包;如果該對(duì)象不在緩存中,則從服務(wù)器上的數(shù)據(jù)庫中取出,存入緩 存,打入服務(wù)器回復(fù)消息,即視頻包;其中,如果視頻緩存達(dá)到了容量限度,則從SC2隊(duì)列頂 部取出視頻指針,從緩存中清楚該指針?biāo)傅囊曨l以及該指針;根據(jù)M2中的矩形參數(shù),將 覆蓋矩形范圍以內(nèi)的視頻也從SC2緩存或者數(shù)據(jù)庫中取出,打入視頻包;打包完畢,將視頻 包發(fā)送回客戶端。所采取的措施還包括
5
上述的客戶端的步驟2至少包括如下的步驟步驟21 在每次用戶漫游開始時(shí),設(shè)置定時(shí)器周期性地根據(jù)當(dāng)前漫游位置向服務(wù) 發(fā)出緩存內(nèi)容更新請(qǐng)求;漫游歷史標(biāo)志為上一個(gè)時(shí)間周期用戶所在的漫游位置;初始化該 標(biāo)志為零;啟動(dòng)定時(shí)器;步驟22 在每個(gè)時(shí)鐘周期,以當(dāng)前漫游者在地圖中的坐標(biāo)為中心,畫出兩個(gè)邊長(zhǎng) 分別為L(zhǎng)l和L2的正方形Sl和S2,Ll < L2 ;步驟23 根據(jù)漫游歷史標(biāo)志判斷是否是當(dāng)前漫游的首個(gè)時(shí)鐘周期;步驟24 如果是漫游的首個(gè)時(shí)鐘周期,遍歷Sl覆蓋區(qū)域內(nèi)的圖中所有的點(diǎn)和邊, 將所有這些點(diǎn)和邊的信息、版本號(hào)以及覆蓋正方形Sl的參數(shù)即中心位置和邊打包,并且在 包上打上發(fā)送時(shí)間戳,將消息包Ml發(fā)向服務(wù)器,要求獲得Sl覆蓋區(qū)域內(nèi)的圖的所有更新信 息,包括覆蓋的點(diǎn)和邊;同時(shí),遍歷S2覆蓋區(qū)域內(nèi)的圖中與所有的邊相關(guān)聯(lián)的視頻,將它們 的版本號(hào)以及覆蓋正方形S2的參數(shù)即中心位置和邊打包,并且在包上打上發(fā)送時(shí)間戳,將 消息包M2發(fā)向服務(wù)器,要求獲得S2覆蓋區(qū)域內(nèi)與圖的邊關(guān)聯(lián)的更新視頻;步驟25 如果不是漫游的首個(gè)時(shí)鐘周期,圖緩存更新區(qū)域被分解為Rll和R12 ;遍 歷Rll和R12覆蓋區(qū)域內(nèi)的圖中所有的點(diǎn)和邊,將所有這些點(diǎn)和邊的信息、版本號(hào)以及覆蓋 長(zhǎng)方形Rll和R12的參數(shù)即中心位置和邊打包,并且在包上打上發(fā)送時(shí)間戳,將消息包Ml 發(fā)向服務(wù)器,要求獲得Rll和R12覆蓋區(qū)域內(nèi)的圖的所有更新信息、包括覆蓋的點(diǎn)和邊;同 時(shí),視頻緩存更新區(qū)域被分解為R21和R22 ;遍歷R21和R22覆蓋區(qū)域內(nèi)的圖中與所有的邊 相關(guān)聯(lián)的視頻,將它們的版本號(hào)以及覆蓋長(zhǎng)方形R21和R22的參數(shù)即中心位置和邊打包,并 且在包上打上發(fā)送時(shí)間戳,將消息包M2發(fā)向服務(wù)器,要求獲得R21和R22覆蓋區(qū)域內(nèi)與圖 的邊關(guān)聯(lián)的更新視頻;步驟26 用戶漫游結(jié)束是終止定時(shí)器。本發(fā)明在客戶端和服務(wù)端均設(shè)立了圖緩存和視頻緩兩個(gè)緩存C1/C2、SC1/SC2,從 而形成了基于網(wǎng)絡(luò)的多級(jí)緩存結(jié)構(gòu)。在設(shè)計(jì)上,客戶端的緩存為了加速用戶漫游操作對(duì)信 息的提取效率;而在服務(wù)器端的緩存是為了降低對(duì)數(shù)據(jù)庫的訪問以提高服務(wù)效率。本發(fā)明 將圖和視頻分開設(shè)置了兩個(gè)不同的緩存,充分考慮到了這兩個(gè)緩存信息限制量的不同。本發(fā)明的一種基于空間漫游位置的視頻網(wǎng)絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn)方法,具有如下 優(yōu)點(diǎn)1 消息顆粒度適中,通訊和數(shù)據(jù)庫額外開銷低。2:地圖和視頻的信息預(yù)存提高了實(shí)景漫游的穩(wěn)定性,減少斷流現(xiàn)象。3 多級(jí)緩存,從整體上提高系統(tǒng)的查詢效率,消除潛在瓶頸。4 提升實(shí)景漫游的用戶體驗(yàn)質(zhì)量。
圖1是本發(fā)明實(shí)施例中圖客戶端和服務(wù)器的設(shè)計(jì)架構(gòu)示意圖;圖2是本發(fā)明實(shí)施例中步驟22中的覆蓋正方形Sl和S2的示意圖;圖3是本發(fā)明實(shí)施例中步驟25中的覆蓋正方形Rll和R12的示意圖;圖4是本發(fā)明實(shí)施例中步驟2. 5中的覆蓋正方形R21和R22的示意圖;圖5是本發(fā)明實(shí)施例中步驟2中的基于漫游空間位置的緩存更新邏輯流程圖。
具體實(shí)施例方式以下結(jié)合附圖實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。如圖1至圖5所示。一種基于空間漫游位置的視頻網(wǎng)絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn)方法, 包括客戶端算法和服務(wù)端算法,其中客戶端算法包括以下操作步驟步驟1 設(shè)置圖緩存Cl存儲(chǔ)圖的結(jié)構(gòu)信息,其中包括圖中的點(diǎn)和邊的信息以及每 一點(diǎn)以及每一條邊的最新更新時(shí)間和版本號(hào);設(shè)置視頻緩存C2存儲(chǔ)圖中的與邊關(guān)聯(lián)的視 頻以及每一視頻的最新更新時(shí)間和版本號(hào);初始化緩存中的每一個(gè)對(duì)象的最新更新時(shí)間為 當(dāng)前時(shí)間;初始化緩存中的每一個(gè)對(duì)象的版本號(hào)為零;步驟2 在每次用戶漫游開始時(shí),設(shè)置定時(shí)器周期性地根據(jù)當(dāng)前漫游位置向服務(wù) 發(fā)出緩存內(nèi)容更新請(qǐng)求;漫游歷史標(biāo)志為上一個(gè)時(shí)間周期用戶所在的漫游位置;初始化該 標(biāo)志為零;設(shè)置時(shí)鐘周期Tl ;步驟3 設(shè)置定時(shí)器周期性遍歷所有緩存對(duì)象,如果緩存對(duì)象的上次更新時(shí)間距 離當(dāng)下時(shí)間早了一個(gè)月以上,清除該對(duì)象,釋放被不必要占用的緩存空間;設(shè)置時(shí)鐘周期 T2 >> Tl ;步驟4 收到服務(wù)器發(fā)來的緩存內(nèi)容更新消息后,解包更新緩存;步驟5 如果收到的包為圖信息包,解包,將消息中包含的圖的點(diǎn)和邊更新到緩存 Cl中去;在更新時(shí)比對(duì)點(diǎn)與邊的上次更新時(shí)間與包的請(qǐng)求初始時(shí)間戳;如果包的請(qǐng)求初始 時(shí)間戳小于上次更新時(shí)間,則放棄對(duì)該點(diǎn)或者邊的信息更新;否則,比較版本號(hào),如果緩存 版本號(hào)> =更新內(nèi)容的版本號(hào),則放棄對(duì)該點(diǎn)或者邊的信息更新;否則執(zhí)行更新操作;步驟6 如果收到的包為視頻信息包,解包,將消息中包含的圖的視頻更新到視頻 緩存C2中去;在更新時(shí)比對(duì)視頻的上次更新時(shí)間與包的請(qǐng)求初始時(shí)間戳;如果包的請(qǐng)求初 始時(shí)間戳小于上次更新時(shí)間,則放棄對(duì)該視頻的信息更新;否則,比較版本號(hào),如果緩存版 本號(hào)> =更新內(nèi)容的版本號(hào),則放棄對(duì)該點(diǎn)或者邊的信息更新;否則執(zhí)行更新操作;為優(yōu)化上述技術(shù)方案服務(wù)端算法包括以下操作步驟步驟1 在服務(wù)器端也設(shè)置兩個(gè)緩存,圖緩存SCl和視頻緩存SC2 ;視頻緩存中設(shè) 置一個(gè)隊(duì)列結(jié)構(gòu),隊(duì)列前端保持最先進(jìn)入緩存的視頻內(nèi)容的內(nèi)存地址,其后保持所有視頻 內(nèi)容的內(nèi)存地址;設(shè)置SC2的緩存容量限度;步驟2 如果接收到圖更新請(qǐng)求消息M1,解包,將請(qǐng)求消息中的每一個(gè)點(diǎn)和每一條 邊的版本號(hào)與服務(wù)器上的每個(gè)點(diǎn)和邊版本號(hào)進(jìn)行比較,如果該對(duì)象的版本號(hào)大于請(qǐng)求版本 號(hào),則從緩存SCl中檢測(cè)該對(duì)象,如果該對(duì)象在緩存中存在,將該對(duì)象緩存中取出,打入服 務(wù)器回復(fù)消息,即圖信息包;如果該對(duì)象不在緩存中,則從服務(wù)器上的數(shù)據(jù)庫中取出,存入 緩存,打入服務(wù)器回復(fù)消息,即圖信息包;根據(jù)Ml中的矩形參數(shù),將覆蓋矩形范圍以內(nèi)的點(diǎn) 和邊也從SCl緩存或者數(shù)據(jù)庫中取出,打入圖信息包;打包完畢,將圖信息包發(fā)送回客戶 端;步驟3 如果接收到視頻更新請(qǐng)求消息M2,解包,將請(qǐng)求消息中的每條邊所對(duì)應(yīng)視 頻的版本號(hào)與服務(wù)器上的相應(yīng)視頻的版本號(hào)進(jìn)行比較,如果該對(duì)象的版本號(hào)大于請(qǐng)求版本 號(hào),則從緩存SC2中檢測(cè)該對(duì)象,如果該對(duì)象在緩存中存在,將該對(duì)象緩存中取出,打入服 務(wù)器回復(fù)消息,即視頻包;如果該對(duì)象不在緩存中,則從服務(wù)器上的數(shù)據(jù)庫中取出,存入緩
7存,打入服務(wù)器回復(fù)消息,即視頻包;其中,如果視頻緩存達(dá)到了容量限度,則從SC2隊(duì)列頂 部取出視頻指針,從緩存中清楚該指針?biāo)傅囊曨l以及該指針;根據(jù)M2中的矩形參數(shù),將 覆蓋矩形范圍以內(nèi)的視頻也從SC2緩存或者數(shù)據(jù)庫中取出,打入視頻包;打包完畢,將視頻 包發(fā)送回客戶端。上述客戶端的步驟2至少包括如下步驟;步驟21 在每次用戶漫游開始時(shí),設(shè)置定時(shí)器周期性地根據(jù)當(dāng)前漫游位置向服務(wù) 發(fā)出緩存內(nèi)容更新請(qǐng)求;漫游歷史標(biāo)志為上一個(gè)時(shí)間周期用戶所在的漫游位置;初始化該 標(biāo)志為零;啟動(dòng)定時(shí)器;步驟22 在每個(gè)時(shí)鐘周期,以當(dāng)前漫游者在地圖中的坐標(biāo)為中心,畫出兩個(gè)邊長(zhǎng) 分別為L(zhǎng)l和L2的正方形Sl和S2,Ll < L2 ;步驟23 根據(jù)漫游歷史標(biāo)志判斷是否是當(dāng)前漫游的首個(gè)時(shí)鐘周期;步驟24 如果是漫游的首個(gè)時(shí)鐘周期,遍歷Sl覆蓋區(qū)域內(nèi)的圖中所有的點(diǎn)和邊, 將所有這些點(diǎn)和邊的信息、版本號(hào)以及覆蓋正方形Sl的參數(shù)即中心位置和邊打包,并且在 包上打上發(fā)送時(shí)間戳,將消息包Ml發(fā)向服務(wù)器,要求獲得Sl覆蓋區(qū)域內(nèi)的圖的所有更新信 息,包括覆蓋的點(diǎn)和邊;同時(shí),遍歷S2覆蓋區(qū)域內(nèi)的圖中與所有的邊相關(guān)聯(lián)的視頻,將它們 的版本號(hào)以及覆蓋正方形S2的參數(shù)即中心位置和邊打包,并且在包上打上發(fā)送時(shí)間戳,將 消息包M2發(fā)向服務(wù)器,要求獲得S2覆蓋區(qū)域內(nèi)與圖的邊關(guān)聯(lián)的更新視頻;步驟25 如果不是漫游的首個(gè)時(shí)鐘周期,圖緩存更新區(qū)域被分解為Rll和R12 ;遍 歷Rll和R12覆蓋區(qū)域內(nèi)的圖中所有的點(diǎn)和邊,將所有這些點(diǎn)和邊的信息、版本號(hào)以及覆蓋 長(zhǎng)方形Rll和R12的參數(shù)即中心位置和邊打包,并且在包上打上發(fā)送時(shí)間戳,將消息包Ml 發(fā)向服務(wù)器,要求獲得Rll和R12覆蓋區(qū)域內(nèi)的圖的所有更新信息、包括覆蓋的點(diǎn)和邊;同 時(shí),視頻緩存更新區(qū)域被分解為R21和R22 ;遍歷R21和R22覆蓋區(qū)域內(nèi)的圖中與所有的邊 相關(guān)聯(lián)的視頻,將它們的版本號(hào)以及覆蓋長(zhǎng)方形R21和R22的參數(shù)即中心位置和邊打包,并 且在包上打上發(fā)送時(shí)間戳,將消息包M2發(fā)向服務(wù)器,要求獲得R21和R22覆蓋區(qū)域內(nèi)與圖 的邊關(guān)聯(lián)的更新視頻;步驟26 用戶漫游結(jié)束是終止定時(shí)器。本發(fā)明在客戶端和服務(wù)端均設(shè)立了圖緩存和視頻緩兩個(gè)緩存C1/C2,SC1/SC2,從 而形成了基于網(wǎng)絡(luò)的多級(jí)緩存結(jié)構(gòu)。在設(shè)計(jì)上,客戶端的緩存為了加速用戶漫游操作對(duì)信 息的提取效率;而在服務(wù)器端的緩存是為了降低對(duì)數(shù)據(jù)庫的訪問以提高服務(wù)效率。本發(fā) 明將圖和視頻分開設(shè)置了兩個(gè)不同的緩存,主要是由于考慮到這兩個(gè)緩存信息限制量的不 同。本發(fā)明分為客戶端算法和服務(wù)器端算法。在客戶端算法中,在每次用戶漫游開始時(shí),設(shè)置定時(shí)器周期性地根據(jù)當(dāng)前漫游位 置向服務(wù)發(fā)出緩存內(nèi)容更新請(qǐng)求。但是,請(qǐng)求更新的覆蓋范圍對(duì)于Cl和C2來說是不一樣 的。他們分別為Sl和S2。由于考慮到視頻的信息量較大,其中視頻信息的更新范圍S2較 小。與此同時(shí),本發(fā)明對(duì)于從第二個(gè)周期開始對(duì)每一周期的更新操作采取基于漫游空間位 置的增量更新法。如圖3和圖4所示,客戶端不會(huì)對(duì)上一個(gè)周期剛剛更新過的緩存內(nèi)容進(jìn) 行重復(fù)請(qǐng)求。在服務(wù)器端算法中,也設(shè)置兩個(gè)緩存,圖緩存SCl和視頻緩存SC2。服務(wù)器端的緩存主要是為了提高數(shù)據(jù)庫的相應(yīng)能力。由于服務(wù)器的服務(wù)對(duì)象為多個(gè)客戶端,這種設(shè)計(jì)主 要是為了消除系統(tǒng)整體上可能存在的瓶頸。對(duì)于來自客戶端的請(qǐng)求,服務(wù)端算法根據(jù)請(qǐng)求 更新范圍遍歷所有更新范圍內(nèi)的所有對(duì)象。從相應(yīng)緩存中檢測(cè)該對(duì)象,如果該對(duì)象在緩存 中存在,將該對(duì)象緩存中取出;如果該對(duì)象不在緩存中,則從服務(wù)器上的數(shù)據(jù)庫中取出,存 入緩存。如果該對(duì)象客戶端沒有,則加載在回復(fù)消息中;如果該對(duì)象在客戶端存在,而且客 戶端版本低于服務(wù)器端版本,則加載在回復(fù)消息中。打包服務(wù)器回復(fù)消息,將視頻信息包發(fā) 送回客戶端。 雖然本發(fā)明已通過參考優(yōu)選的實(shí)施例進(jìn)行了圖示和描述,但是,本專業(yè)普通技術(shù) 人員應(yīng)當(dāng)了解,在權(quán)利要求書的范圍內(nèi),所作形式和細(xì)節(jié)上的各種各樣變化,均落在本發(fā)明 的保護(hù)范圍內(nèi)。
權(quán)利要求
一種基于空間漫游位置的視頻網(wǎng)絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn)方法,包括客戶端算法和服務(wù)端算法,其特征是所述的客戶端算法包括以下操作步驟;步驟1設(shè)置圖緩存C1存儲(chǔ)圖的結(jié)構(gòu)信息,其中包括圖中的點(diǎn)和邊的信息以及每一點(diǎn)以及每一條邊的最新更新時(shí)間和版本號(hào);設(shè)置視頻緩存C2存儲(chǔ)圖中的與邊關(guān)聯(lián)的視頻以及每一視頻的最新更新時(shí)間和版本號(hào);初始化緩存中的每一個(gè)對(duì)象的最新更新時(shí)間為當(dāng)前時(shí)間;初始化緩存中的每一個(gè)對(duì)象的版本號(hào)為零;步驟2在每次用戶漫游開始時(shí),設(shè)置定時(shí)器周期性地根據(jù)當(dāng)前漫游位置向服務(wù)發(fā)出緩存內(nèi)容更新請(qǐng)求;漫游歷史標(biāo)志為上一個(gè)時(shí)間周期用戶所在的漫游位置;初始化該標(biāo)志為零;設(shè)置時(shí)鐘周期T1;步驟3設(shè)置定時(shí)器周期性遍歷所有緩存對(duì)象,如果緩存對(duì)象的上次更新時(shí)間距離當(dāng)下時(shí)間早了一個(gè)月以上,清除該對(duì)象,釋放被不必要占用的緩存空間;設(shè)置時(shí)鐘周期T2>>T1;步驟4收到服務(wù)器發(fā)來的緩存內(nèi)容更新消息后,解包更新緩存;步驟5如果收到的包為圖信息包,解包,將消息中包含的圖的點(diǎn)和邊更新到緩存C1中去;在更新時(shí)比對(duì)點(diǎn)與邊的上次更新時(shí)間與包的請(qǐng)求初始時(shí)間戳;如果包的請(qǐng)求初始時(shí)間戳小于上次更新時(shí)間,則放棄對(duì)該點(diǎn)或者邊的信息更新;否則,比較版本號(hào),如果緩存版本號(hào)>=更新內(nèi)容的版本號(hào),則放棄對(duì)該點(diǎn)或者邊的信息更新;否則執(zhí)行更新操作;步驟6如果收到的包為視頻信息包,解包,將消息中包含的圖的視頻更新到視頻緩存C2中去;在更新時(shí)比對(duì)視頻的上次更新時(shí)間與包的請(qǐng)求初始時(shí)間戳;如果包的請(qǐng)求初始時(shí)間戳小于上次更新時(shí)間,則放棄對(duì)該視頻的信息更新;否則,比較版本號(hào),如果緩存版本號(hào)>=更新內(nèi)容的版本號(hào),則放棄對(duì)該點(diǎn)或者邊的信息更新;否則執(zhí)行更新操作。
2.根據(jù)權(quán)利要求1所述的一種基于空間漫游位置的視頻網(wǎng)絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn)方 法,其特征是所述的服務(wù)端算法包括以下操作步驟步驟1 在服務(wù)器端也設(shè)置兩個(gè)緩存,圖緩存SCl和視頻緩存SC2 ;視頻緩存中設(shè)置一 個(gè)隊(duì)列結(jié)構(gòu),隊(duì)列前端保持最先進(jìn)入緩存的視頻內(nèi)容的內(nèi)存地址,其后保持所有視頻內(nèi)容 的內(nèi)存地址;設(shè)置SC2的緩存容量限度;步驟2 如果接收到圖更新請(qǐng)求消息M1,解包,將請(qǐng)求消息中的每一個(gè)點(diǎn)和每一條邊的 版本號(hào)與服務(wù)器上的每個(gè)點(diǎn)和邊版本號(hào)進(jìn)行比較,如果該對(duì)象的版本號(hào)大于請(qǐng)求版本號(hào), 則從緩存SCl中檢測(cè)該對(duì)象,如果該對(duì)象在緩存中存在,將該對(duì)象緩存中取出,打入服務(wù)器 回復(fù)消息,即圖信息包;如果該對(duì)象不在緩存中,則從服務(wù)器上的數(shù)據(jù)庫中取出,存入緩存, 打入服務(wù)器回復(fù)消息,即圖信息包;根據(jù)Ml中的矩形參數(shù),將覆蓋矩形范圍以內(nèi)的點(diǎn)和邊 也從SCl緩存或者數(shù)據(jù)庫中取出,打入圖信息包;打包完畢,將圖信息包發(fā)送回客戶端;步驟3 如果接收到視頻更新請(qǐng)求消息M2,解包,將請(qǐng)求消息中的每條邊所對(duì)應(yīng)視頻的 版本號(hào)與服務(wù)器上的相應(yīng)視頻的版本號(hào)進(jìn)行比較,如果該對(duì)象的版本號(hào)大于請(qǐng)求版本號(hào), 則從緩存SC2中檢測(cè)該對(duì)象,如果該對(duì)象在緩存中存在,將該對(duì)象緩存中取出,打入服務(wù)器 回復(fù)消息,即視頻包;如果該對(duì)象不在緩存中,則從服務(wù)器上的數(shù)據(jù)庫中取出,存入緩存,打 入服務(wù)器回復(fù)消息,即視頻包;其中,如果視頻緩存達(dá)到了容量限度,則從SC2隊(duì)列頂部取 出視頻指針,從緩存中清楚該指針?biāo)傅囊曨l以及該指針;根據(jù)M2中的矩形參數(shù),將覆蓋 矩形范圍以內(nèi)的視頻也從SC2緩存或者數(shù)據(jù)庫中取出,打入視頻包;打包完畢,將視頻包發(fā)送回客戶端。
3.根據(jù)權(quán)利要求1或2所述的一種基于空間漫游位置的視頻網(wǎng)絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn) 方法,其特征是所述的客戶端的步驟2至少包括如下步驟;步驟21 在每次用戶漫游開始時(shí),設(shè)置定時(shí)器周期性地根據(jù)當(dāng)前漫游位置向服務(wù)發(fā)出 緩存內(nèi)容更新請(qǐng)求;漫游歷史標(biāo)志為上一個(gè)時(shí)間周期用戶所在的漫游位置;初始化該標(biāo)志 為零;啟動(dòng)定時(shí)器;步驟22 在每個(gè)時(shí)鐘周期,以當(dāng)前漫游者在地圖中的坐標(biāo)為中心,畫出兩個(gè)邊長(zhǎng)分別 為L(zhǎng)l和L2的正方形Sl和S2,Ll < L2 ;步驟23 根據(jù)漫游歷史標(biāo)志判斷是否是當(dāng)前漫游的首個(gè)時(shí)鐘周期; 步驟24 如果是漫游的首個(gè)時(shí)鐘周期,遍歷Sl覆蓋區(qū)域內(nèi)的圖中所有的點(diǎn)和邊,將所 有這些點(diǎn)和邊的信息、版本號(hào)以及覆蓋正方形Sl的參數(shù)即中心位置和邊打包,并且在包上 打上發(fā)送時(shí)間戳,將消息包Ml發(fā)向服務(wù)器,要求獲得Sl覆蓋區(qū)域內(nèi)的圖的所有更新信息, 包括覆蓋的點(diǎn)和邊;同時(shí),遍歷S2覆蓋區(qū)域內(nèi)的圖中與所有的邊相關(guān)聯(lián)的視頻,將它們的 版本號(hào)以及覆蓋正方形S2的參數(shù)即中心位置和邊打包,并且在包上打上發(fā)送時(shí)間戳,將消 息包M2發(fā)向服務(wù)器,要求獲得S2覆蓋區(qū)域內(nèi)與圖的邊關(guān)聯(lián)的更新視頻;步驟25 如果不是漫游的首個(gè)時(shí)鐘周期,圖緩存更新區(qū)域被分解為Rll和R12 ;遍歷 Rll和R12覆蓋區(qū)域內(nèi)的圖中所有的點(diǎn)和邊,將所有這些點(diǎn)和邊的信息、版本號(hào)以及覆蓋長(zhǎng) 方形Rll和R12的參數(shù)即中心位置和邊打包,并且在包上打上發(fā)送時(shí)間戳,將消息包Ml發(fā) 向服務(wù)器,要求獲得Rll和R12覆蓋區(qū)域內(nèi)的圖的所有更新信息、包括覆蓋的點(diǎn)和邊;同時(shí), 視頻緩存更新區(qū)域被分解為R21和R22 ;遍歷R21和R22覆蓋區(qū)域內(nèi)的圖中與所有的邊相 關(guān)聯(lián)的視頻,將它們的版本號(hào)以及覆蓋長(zhǎng)方形R21和R22的參數(shù)即中心位置和邊打包,并且 在包上打上發(fā)送時(shí)間戳,將消息包M2發(fā)向服務(wù)器,要求獲得R21和R22覆蓋區(qū)域內(nèi)與圖的 邊關(guān)聯(lián)的更新視頻;步驟26 用戶漫游結(jié)束是終止定時(shí)器。
全文摘要
本發(fā)明涉及一種基于空間漫游位置的視頻網(wǎng)絡(luò)地圖多級(jí)緩存的實(shí)現(xiàn)方法,包括客戶端算法和服務(wù)端算法,在客戶端和服務(wù)端均設(shè)立了圖緩存和視頻緩兩個(gè)緩存C1/C2、SC1/SC2,從而形成了基于網(wǎng)絡(luò)的多級(jí)緩存結(jié)構(gòu);客戶端的緩存為了加速用戶漫游操作對(duì)信息的提取效率;而在服務(wù)器端的緩存是為了降低對(duì)數(shù)據(jù)庫的訪問以提高服務(wù)效率;本發(fā)明將圖和視頻分開設(shè)置了兩個(gè)不同的緩存,能消除這兩個(gè)緩存信息限制量的不同的影響。并具有實(shí)景漫游穩(wěn)定性強(qiáng),無斷流現(xiàn)象,消息顆粒度適中,通訊和數(shù)據(jù)庫額外開銷低的特點(diǎn),能從整體上提高系統(tǒng)的查詢效率,提升實(shí)景漫游的用戶體驗(yàn)質(zhì)量。
文檔編號(hào)H04L29/08GK101917481SQ201010260489
公開日2010年12月15日 申請(qǐng)日期2010年8月19日 優(yōu)先權(quán)日2010年8月19日
發(fā)明者周寅 申請(qǐng)人:周寅