基于分層云對(duì)等網(wǎng)絡(luò)的多維屬性云資源區(qū)間查找方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),特別涉及一種基于分層云對(duì)等網(wǎng)絡(luò)的多維屬性 云資源區(qū)間查找方法。
【背景技術(shù)】
[0002] 在對(duì)等(P2P)系統(tǒng)中,數(shù)據(jù)可存儲(chǔ)在網(wǎng)絡(luò)中的任意結(jié)點(diǎn)上。因此,如何能夠高效地 定位存儲(chǔ)特定數(shù)據(jù)的結(jié)點(diǎn)成為一個(gè)最基本的問(wèn)題。而目前云平臺(tái)網(wǎng)絡(luò)數(shù)據(jù)種類多樣,并依 據(jù)多級(jí)索引結(jié)構(gòu)化存儲(chǔ),因此單關(guān)鍵字查詢已不能滿足云系統(tǒng),而能夠快速支持復(fù)雜查詢 已是目前云對(duì)等網(wǎng)絡(luò)查詢算法的關(guān)鍵。
[0003]目前結(jié)構(gòu)化P2P上多屬性查詢的研究主要有三種方案: 1)復(fù)用單維屬性查詢來(lái)實(shí)現(xiàn)多屬性查找機(jī)制,如BATON、Mercury都是采用這種方式 進(jìn)行多屬性查詢處理。其最終查詢結(jié)果是由每一單屬性查找結(jié)果做交集操作得來(lái)的。即 便算法有所優(yōu)化,但查詢性能也會(huì)隨著屬性維度的增加而迅速降低。
[0004] 2)將多維屬性資源利用降維曲線映射到單維索引空間。如HilbertChord,其基本 原理是用Hilbert曲線穿過(guò)多維空間而形成一維索引。而Znet是基于SkipGraphs的覆 蓋網(wǎng)絡(luò),用Z曲線將多屬性資源空間映射成一維,以形成支持多關(guān)鍵字查詢、多區(qū)間查詢的 索引平臺(tái)。
[0005] 3)是直接建立多維索引。如Dak提出一種基于kd-tree索引劃分,并將數(shù)據(jù)索引 樹內(nèi)嵌到DHT網(wǎng)絡(luò)底層,以支持多屬性區(qū)間查詢的索引框架。GChord改造傳統(tǒng)的多維索引 結(jié)構(gòu)以適應(yīng)P2P網(wǎng)絡(luò)環(huán)境,并構(gòu)造一個(gè)多播樹來(lái)實(shí)現(xiàn)多維屬性的查找。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明是針對(duì)進(jìn)一步改進(jìn)結(jié)構(gòu)化P2P上多屬性查詢的問(wèn)題,提出了一種基于分層 云對(duì)等網(wǎng)絡(luò)的多維屬性云資源區(qū)間查找方法,在現(xiàn)有技術(shù)的優(yōu)點(diǎn)基礎(chǔ)上,進(jìn)一步改進(jìn),本發(fā) 明能夠布局在P2P網(wǎng)絡(luò)上的多維屬性區(qū)間查找算法,滿足更復(fù)雜的查詢,算法不會(huì)隨著網(wǎng) 絡(luò)節(jié)點(diǎn)數(shù)及資源屬性數(shù)增加而產(chǎn)生較大查詢延遲。
[0007] 本發(fā)明的技術(shù)方案為:一種基于分層云對(duì)等網(wǎng)絡(luò)的多維屬性云資源區(qū)間查找方 法,節(jié)點(diǎn)N收到包含類型和屬性值信息的查詢請(qǐng)求QA,如果節(jié)點(diǎn)N不是資源簇代理節(jié)點(diǎn)D, 則將查詢請(qǐng)求QA的類型信息發(fā)送給D,用節(jié)點(diǎn)D解析QA:首先與本節(jié)點(diǎn)D提供的資源類型 比較,如果匹配,執(zhí)行資源簇代理節(jié)點(diǎn)D內(nèi)資源簇查找;不匹配則采用資源簇定位算法,然 后將查詢請(qǐng)求QA同時(shí)發(fā)送給所有滿足該類型的資源簇代理節(jié)點(diǎn),執(zhí)行資源簇內(nèi)查找,當(dāng)資 源簇定位算法也找不到代理節(jié)點(diǎn)時(shí),向用戶反饋查找失?。?其中資源簇內(nèi)查找:首先依據(jù)QA的類型及屬性值信息查詢區(qū)間劃分表,確定查詢資源 的笛卡爾坐標(biāo),并轉(zhuǎn)化為HSFC編碼;然后依據(jù)Chord規(guī)則定位到提供資源的節(jié)點(diǎn);最后將 資源及節(jié)點(diǎn)的IP發(fā)送給用戶,用戶可以直接與該節(jié)點(diǎn)通信; 如果資源節(jié)點(diǎn)提供的資源不足或者無(wú)此資源,資源節(jié)點(diǎn)將區(qū)間鄰居節(jié)點(diǎn)反饋給用戶并 附上鄰居節(jié)點(diǎn)標(biāo)記,如果區(qū)間鄰居節(jié)點(diǎn)也沒(méi)有資源,那么再提供鄰居的區(qū)間鄰居節(jié)點(diǎn)的資 源,再無(wú)資源后向用戶反饋查找失敗; 用戶集合資源節(jié)點(diǎn)提供的資源信息,當(dāng)資源來(lái)自多個(gè)資源簇時(shí),按匹配權(quán)重排序,提供 給用戶。
[0008] 所述資源簇定位算法: 算法默認(rèn)所有的網(wǎng)絡(luò)資源包含資源類型和資源屬性值兩種屬性,并采用雙層Chord模 型,第一層為實(shí)現(xiàn)資源類型信息的索引,第二層為將相關(guān)類型的資源聚集在一起而形成的 資源簇;節(jié)點(diǎn)的加入與離開遵循Chord的規(guī)則, 其中索引建立方法:使用資源類型作為索引,根據(jù)資源類型的索引向量,利用SHA-1散 列函數(shù)求哈希值,然后利用Chord規(guī)則根據(jù)1中的哈希值確定相應(yīng)節(jié)點(diǎn),確定的節(jié)點(diǎn)內(nèi)包含 了存儲(chǔ)資源簇的索引項(xiàng),就是資源簇的入口節(jié)點(diǎn),在資源簇內(nèi)再建立資源屬性值索引,便定 位資源節(jié)點(diǎn)。
[0009] 所述資源簇資源簇內(nèi)每一類型就是資源空間的一個(gè)維度,k維類型就形成一個(gè)k 維笛卡爾坐標(biāo)系,每個(gè)類型的屬性值以其值域被劃分為d個(gè)區(qū)間,這樣便形成了dk個(gè)多維 區(qū)間,每個(gè)多維區(qū)間的屬性值向量都可以用這個(gè)多維區(qū)間的笛卡爾坐標(biāo)值D(Xl,x2,…,xk) 來(lái)表示,由于類型個(gè)數(shù)和區(qū)間劃分情況都是變動(dòng)的,因此每個(gè)資源簇保存一張區(qū)間劃分表, 依據(jù)區(qū)間劃分表,屬性值向量能轉(zhuǎn)化為相應(yīng)的笛卡爾坐標(biāo)。
[0010] 所述匹配權(quán)重具體的公式如下: 假設(shè)某資源簇的類型維度為C,查詢語(yǔ)句的類型維度為?,則類型的匹配權(quán)重為:
假設(shè)資源簇內(nèi)的某資源節(jié)點(diǎn)的鄰居跳數(shù)為X(當(dāng)資源來(lái)自節(jié)點(diǎn)本身,X為〇;來(lái)自直接 鄰居,X為1,以此類推),則屬性值的匹配權(quán)重為:
最終的匹配權(quán)重為:
其中,與為類型匹配因子,Ρ為屬性值匹配因子,可由人工配置,當(dāng)靶越大,匹配程度 越高,而當(dāng)資源簇的類型維度與查詢的類型維度相差越大,或者查詢結(jié)果來(lái)源于原資源節(jié) 點(diǎn)的鄰居節(jié)點(diǎn),則_越小,匹配程度也就越低。
[0011] 本發(fā)明的有益效果在于:本發(fā)明基于分層云對(duì)等網(wǎng)絡(luò)的多維屬性云資源區(qū)間查找 方法,具有很好的時(shí)間復(fù)雜度、空間復(fù)雜度和通信復(fù)雜度,查詢?cè)趯?duì)數(shù)級(jí)跳數(shù)內(nèi)完成,且算 法路由跳數(shù)不隨網(wǎng)絡(luò)規(guī)模的增大而迅速增加;本發(fā)明充分結(jié)合了現(xiàn)存結(jié)構(gòu)化P2P網(wǎng)絡(luò)優(yōu) 點(diǎn),利用分層P2P網(wǎng)絡(luò)結(jié)構(gòu),將云資源分簇存儲(chǔ),利用資源簇定位技術(shù),利用較小的代價(jià)快 速定位資源簇,同時(shí)在資源簇內(nèi)建立Hilbert-chord環(huán),保持?jǐn)?shù)據(jù)相關(guān)性;本發(fā)明結(jié)構(gòu)簡(jiǎn) 單,易于實(shí)現(xiàn)。
【附圖說(shuō)明】
[0012] 圖1為本發(fā)明實(shí)施例HChord網(wǎng)絡(luò)的基本模型圖; 圖2為本發(fā)明實(shí)施例HChord網(wǎng)絡(luò)的資源簇索引示意圖; 圖3為本發(fā)明實(shí)施例HChord網(wǎng)絡(luò)資源簇內(nèi)的資源分布空間及Hilbert環(huán)示意圖。
【具體實(shí)施方式】
[0013] 本發(fā)明基于分層云對(duì)等網(wǎng)絡(luò)的多維屬性云資源區(qū)間查找算法(HChord)主要思想 是:以分層云對(duì)等網(wǎng)絡(luò)為基礎(chǔ),分別利用云資源的資源類型和資源屬性值建立多維索引,將 相關(guān)性的數(shù)據(jù)聚集存儲(chǔ)在一個(gè)資源簇內(nèi);并將屬性值的值域劃分為多個(gè)區(qū)段,以滿足更復(fù) 雜的查詢。同時(shí)建立資源簇融合、區(qū)間鄰居維持等機(jī)制使該算法能在計(jì)算復(fù)雜度為對(duì)數(shù)級(jí) 的基礎(chǔ)上完成檢索。
[0014] 具體的查詢算法步驟如下: 1)節(jié)點(diǎn)N收到查詢請(qǐng)求QA(QA包含類型和屬性值信息),如果節(jié)點(diǎn)N不是資源簇代理 節(jié)點(diǎn)D,則將查詢請(qǐng)求QA的類型信息發(fā)送給D。用節(jié)點(diǎn)D解析QA:首先與本節(jié)點(diǎn)D提供的資 源類型比較,如果匹配,執(zhí)行資源簇代理節(jié)點(diǎn)D內(nèi)資源簇查找;不匹配則采用資源簇定位算 法,然后將查詢請(qǐng)求QA發(fā)送給滿足該類型的資源簇代理節(jié)點(diǎn)(可能不止一個(gè),當(dāng)有多個(gè)時(shí), 查找是并行的),以執(zhí)行資源簇內(nèi)查找。而當(dāng)資源簇定位算法也找不到代理節(jié)點(diǎn)時(shí),向用戶 反饋查找失敗。
[0015] 2)資源簇內(nèi)查找:首先依據(jù)QA的類型及屬性值信息查詢區(qū)間劃分表,確定查詢資 源的笛卡爾坐標(biāo),并轉(zhuǎn)化為HSFC編碼;然后依據(jù)Chord規(guī)則定位到提供資源的節(jié)點(diǎn);最后 將資源及節(jié)點(diǎn)的IP發(fā)送給用戶,用戶可以直接與該節(jié)點(diǎn)通信。
[0016] 3)如果資源節(jié)點(diǎn)提供的資源不足或者無(wú)此資源,資源節(jié)點(diǎn)將區(qū)間鄰居節(jié)點(diǎn)的資源 反饋給用戶并附上鄰居節(jié)點(diǎn)標(biāo)記(表示資源來(lái)源于鄰居)。如果區(qū)間鄰居節(jié)點(diǎn)也沒(méi)有資源, 那么可以再提供鄰居的區(qū)間鄰居節(jié)點(diǎn)的資源(這個(gè)間接度可以自由設(shè)定)。如果還是沒(méi)有資 源則向用戶報(bào)告查找失敗。
[0017] 4)用戶集合資源節(jié)點(diǎn)提供的資源信息。當(dāng)資源來(lái)自多個(gè)資源簇時(shí),按匹配權(quán)重排 序,提供給用戶。
[0018] 雖然保持區(qū)間鄰居節(jié)點(diǎn)信息會(huì)增加節(jié)點(diǎn)的存儲(chǔ)開銷,但該系統(tǒng)建立在云服務(wù)器 上,存儲(chǔ)容量已不再是主要限制因素。卻能帶來(lái)簡(jiǎn)化查詢、提高查找效率等便利??紤]到存 在節(jié)點(diǎn)加入退出等情況,資源首次登記時(shí),節(jié)點(diǎn)的區(qū)間鄰居信息只存儲(chǔ)HSFC碼,而在第一 次查找和固定維護(hù)期間,節(jié)點(diǎn)才會(huì)維護(hù)自己的鄰居,存儲(chǔ)每個(gè)HSFC碼對(duì)應(yīng)的節(jié)點(diǎn)IP;而當(dāng) 節(jié)點(diǎn)需要將數(shù)據(jù)轉(zhuǎn)移時(shí),會(huì)主動(dòng)通知鄰居節(jié)點(diǎn)更新鄰居節(jié)點(diǎn)IP。
[0019] 本發(fā)明能夠在計(jì)算復(fù)雜度為對(duì)數(shù)級(jí)的查詢路由跳數(shù)定位云資源數(shù)據(jù)。在分層云對(duì) 等網(wǎng)絡(luò)的基礎(chǔ)上,結(jié)合資源簇定位方法、資源簇內(nèi)的HSFC編碼方案及匹配權(quán)重計(jì)算方法快 速而準(zhǔn)確地獲取云系統(tǒng)中的目標(biāo)資源,并利用資源簇內(nèi)資源空間分布的鄰居節(jié)點(diǎn)進(jìn)一步優(yōu) 化資源查詢。使反映查詢路由跳數(shù)的時(shí)間復(fù)雜度、索引層節(jié)點(diǎn)的索引信息的空間復(fù)雜度及 資源簇內(nèi)節(jié)點(diǎn)鄰居信息存儲(chǔ)的空間復(fù)雜度的分別為
,其 中為網(wǎng)絡(luò)節(jié)點(diǎn)數(shù),?為資源簇?cái)?shù),々為資源簇內(nèi)的類型數(shù)。
[0020] HChord算法默認(rèn)所有的網(wǎng)絡(luò)資源包含資源類型和資源屬性值兩種屬性。并采用雙 層Chord模型,節(jié)點(diǎn)的加入與離開遵循Chord的規(guī)則。該算法適用于一般的P2P網(wǎng)絡(luò)和云 網(wǎng)絡(luò)。對(duì)于一般的P2P網(wǎng)絡(luò),節(jié)點(diǎn)變動(dòng)較大,在線穩(wěn)定、性能優(yōu)秀的節(jié)點(diǎn)作為資源簇的代理 節(jié)點(diǎn)(即其所代表的資源簇入口)。如圖1所示實(shí)施例HChord網(wǎng)絡(luò)的基本模型圖。第一層 實(shí)現(xiàn)資源類型信息的索引,將相關(guān)類型的資源聚集在一起,形成資源簇,也就是第二層。通 過(guò)對(duì)資源類型的匹配,直接鎖定可以存儲(chǔ)和提供資源的資源簇,然后在規(guī)模較小資源簇內(nèi) 依據(jù)資源屬性值查找特定資源。
[0021] 1、資源簇定位 資源簇負(fù)責(zé)存儲(chǔ)最終資源或資源信息,而其存儲(chǔ)的資源類型組合便標(biāo)識(shí)了該資源簇。 資源簇是動(dòng)態(tài)生成的,其包含的屬性個(gè)數(shù)以及查詢語(yǔ)句的關(guān)鍵字都是隨機(jī)的,因此,能夠有 效定位資源簇是一個(gè)關(guān)鍵。當(dāng)查詢關(guān)鍵字不等于資源簇的類型組合時(shí),直接哈希查詢關(guān)鍵 字并不能定位資源簇,而使用洪泛法能定位資源簇,但是效率低、網(wǎng)絡(luò)通信量大。由于目前 存儲(chǔ)器容量已不再是主要限制因素,因此可以適當(dāng)增加資源簇的索引而提高資源查找速 度。
[0022] 索引層上的節(jié)點(diǎn)代表著資源簇的入口,同時(shí)也存儲(chǔ)著一些指向其他資源簇代理節(jié) 點(diǎn)的索引項(xiàng)。索引項(xiàng)的簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)包括索引向量和相應(yīng)資源簇代理節(jié)點(diǎn)的IP地址,如圖 2中資源簇索引示意圖,(a,b,c)表示索引向量,IP(NodeabJ表示資源簇代理節(jié)點(diǎn)的IP地 址。索引向量代表資源簇所提供資源的類型組合,是由類型關(guān)鍵字組成,并且關(guān)鍵字按字 典序排序。例如某資源簇提供關(guān)鍵字為a,b,c三種類型的資源,則該資源簇的索引向量 為(a,b,c)〇
[0023] 正如上文所說(shuō),所有的網(wǎng)絡(luò)資源都需要包含資源類型和資源屬性值兩種屬性。在 定位資源簇時(shí),就需要使用資源類