亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種分布式Bloom過濾系統(tǒng)及其使用方法

文檔序號(hào):6362556閱讀:375來源:國知局
專利名稱:一種分布式Bloom過濾系統(tǒng)及其使用方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息檢索及過濾、云計(jì)算、分布式計(jì)算等計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種分布式Bloom過濾系統(tǒng)及其使用方法。
背景技術(shù)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,時(shí)時(shí)刻刻需要實(shí)現(xiàn)資源的共享及數(shù)據(jù)的交互,分布式技術(shù)、云計(jì)算技術(shù)是當(dāng)今互聯(lián)網(wǎng)技術(shù)的發(fā)展潮流及其研究熱點(diǎn)。在資源共享時(shí),我們經(jīng)常需要判斷某個(gè)表項(xiàng)是否包含在一個(gè)數(shù)據(jù)集中,例如在網(wǎng)絡(luò)爬蟲里,一個(gè)網(wǎng)址是否已被訪問過; 對(duì)于一個(gè)網(wǎng)址的訪問統(tǒng)計(jì),當(dāng)前的連接IP是否已來訪問過等等,這就需要進(jìn)行資源查詢或信息檢索。在進(jìn)行資源查詢的信息處理過程中,采用何種查找方式依賴于信息的表示策略。 在云計(jì)算時(shí)代的應(yīng)用環(huán)境中,處理的對(duì)象都是海量數(shù)據(jù),要在海量的數(shù)據(jù)里面實(shí)現(xiàn)資源的快速查詢是有一定的技術(shù)難度的。此外,傳統(tǒng)的哈希表檢索方式,雖然可以實(shí)現(xiàn)快速查詢, 但是會(huì)造成極大的存儲(chǔ)空間浪費(fèi),而且當(dāng)數(shù)據(jù)集大到一定程度時(shí),哈希表的空間利用率會(huì)更低。作為哈希表的一個(gè)變種,現(xiàn)有技術(shù)中的Bloom過濾器能夠以極小的空間完成哈希判功能。在能夠容忍的小范圍誤判的前提下,Bloom過濾器能很好地實(shí)現(xiàn)低存儲(chǔ)要求和高響應(yīng)速度的要求。然而,現(xiàn)有技術(shù)中的Bloom過濾器都是以單子節(jié)點(diǎn)形式存在,顯然,在信息大爆炸的時(shí)代,單子節(jié)點(diǎn)的Bloom過濾器已經(jīng)無法滿足現(xiàn)今的海量數(shù)據(jù)檢索需求,因此需要一種不僅具有很好的時(shí)間和空間檢索效率、且能夠?qū)A繑?shù)據(jù)進(jìn)行檢索的方案。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種分布式Bloom過濾系統(tǒng)及其使用方法,用以解決現(xiàn)有技術(shù)中單子節(jié)點(diǎn)Bloom過濾器無法實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的快速檢索查詢的缺點(diǎn),本發(fā)明提供的方案能夠?qū)崿F(xiàn)數(shù)據(jù)的快速查詢以及故障處理,耗費(fèi)的存儲(chǔ)空間少,同時(shí)具有高效檢索、易擴(kuò)展等優(yōu)點(diǎn),此外還能實(shí)現(xiàn)分布式Bloom過濾系統(tǒng)內(nèi)子節(jié)點(diǎn)的隨意插拔,實(shí)用性強(qiáng)。本發(fā)明提供的一種分布式Bloom過濾系統(tǒng),包括分布式Bloom過濾系統(tǒng)主控模塊和若干個(gè)子節(jié)點(diǎn);其中,所述子節(jié)點(diǎn)是Bloom過濾器;所述若干個(gè)子節(jié)點(diǎn)形成一個(gè)閉合環(huán), 所述分布式Bloom過濾系統(tǒng)主控模塊獨(dú)立于所述子節(jié)點(diǎn)形成的閉合環(huán)外外,所述分布式 Bloom過濾系統(tǒng)主控模塊用于完成當(dāng)前輸入數(shù)據(jù)的第一重哈希的計(jì)算及所述當(dāng)前輸入數(shù)據(jù)到子節(jié)點(diǎn)的映射,所述子節(jié)點(diǎn)用于完成所述當(dāng)前輸入數(shù)據(jù)的第二重哈希計(jì)算,并根據(jù)當(dāng)前輸入數(shù)據(jù)的第二重哈希計(jì)算結(jié)果對(duì)所述當(dāng)前輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)查詢。所述分布式Bloom過濾系統(tǒng)主控模塊包括分布式Bloom過濾系統(tǒng)初始化模塊、數(shù)據(jù)接收模塊、一重哈希計(jì)算模塊、子節(jié)點(diǎn)選擇映射模塊、分布式Bloom過濾系統(tǒng)管理模塊、 故障處理模塊和結(jié)果反饋模塊;所述分布式Bloom過濾系統(tǒng)初始化模塊用于在所述分布式 Bloom過濾系統(tǒng)首次啟動(dòng)時(shí),將每個(gè)子節(jié)點(diǎn)的Bloom位向量集合表上的所有數(shù)據(jù)都初始化為0,為每個(gè)子節(jié)點(diǎn)指定不同的標(biāo)記值,并將每個(gè)子節(jié)點(diǎn)的標(biāo)記值提供給所述分布式Bloom
5過濾系統(tǒng)管理模塊;還用于完成子節(jié)點(diǎn)的日志加載和數(shù)據(jù)備份;所述數(shù)據(jù)接收模塊用于接收用戶當(dāng)前輸入數(shù)據(jù)并提供給所述一重哈希計(jì)算模塊;所述一重哈希計(jì)算模塊用于對(duì)所述當(dāng)前輸入數(shù)據(jù)進(jìn)行一重哈希計(jì)算,并將計(jì)算結(jié)果提供給所述子節(jié)點(diǎn)選擇映射模塊;所述子節(jié)點(diǎn)選擇映射模塊用于根據(jù)所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值,為當(dāng)前輸入數(shù)據(jù)選擇子節(jié)點(diǎn),并將所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值通過所述分布式Bloom過濾系統(tǒng)管理模塊發(fā)送給被選擇的子節(jié)點(diǎn);所述分布式Bloom過濾系統(tǒng)管理模塊用于將所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值提供給所述子節(jié)點(diǎn)選擇映射模塊為當(dāng)前輸入數(shù)據(jù)選擇的子節(jié)點(diǎn),還用于對(duì)各子節(jié)點(diǎn)對(duì)所述當(dāng)前輸入數(shù)據(jù)的數(shù)據(jù)查詢結(jié)果進(jìn)行管理,并將所述數(shù)據(jù)查詢結(jié)果通過所述結(jié)果反饋模塊反饋給用戶;還用于控制子節(jié)點(diǎn)的插入、拔除和更換;所述故障處理模塊用于實(shí)時(shí)監(jiān)測子節(jié)點(diǎn)的狀態(tài),并在子節(jié)點(diǎn)出現(xiàn)故障時(shí)通知所述分布式Bloom過濾系統(tǒng)管理模塊將當(dāng)前故障子節(jié)點(diǎn)更換為一個(gè)新的子節(jié)點(diǎn);所述子節(jié)點(diǎn)包括二重哈希計(jì)算模塊、數(shù)據(jù)操作模塊和日志備份模塊;所述二重哈希計(jì)算模塊用于對(duì)收到的所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值進(jìn)行二重哈希計(jì)算,并將所述當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值提供給所述數(shù)據(jù)操作模塊;所述數(shù)據(jù)操作模塊根據(jù)收到的所述當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值進(jìn)行數(shù)據(jù)的Bloom位地址映射,并在所映射的地址所指內(nèi)存中進(jìn)行所述當(dāng)前輸入數(shù)據(jù)的數(shù)據(jù)查詢;所述日志備份模塊用于備份本子節(jié)點(diǎn)在運(yùn)行過程中的操作日志以及數(shù)據(jù)。本發(fā)明提供的一種對(duì)應(yīng)于本發(fā)明提供的分布式Bloom過濾系統(tǒng)的分布式Bloom過濾系統(tǒng)使用方法,包括步驟I :為分布式Bloom過濾系統(tǒng)中的各子節(jié)點(diǎn)指定標(biāo)記值;步驟 2 :配置各所述子節(jié)點(diǎn)的數(shù)據(jù)集合表;步驟3 :接收用戶的當(dāng)前輸入數(shù)據(jù);步驟4 :對(duì)所述當(dāng)前輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)查詢。所述步驟4包括步驟4. I :分布式Bloom過濾系統(tǒng)主控模塊對(duì)所述當(dāng)前輸入數(shù)據(jù)進(jìn)行一重哈希計(jì)算;步驟4. 2 :分布式Bloom過濾系統(tǒng)主控模塊根據(jù)所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值和各子節(jié)點(diǎn)的標(biāo)記值,為所述當(dāng)前輸入數(shù)據(jù)選擇子節(jié)點(diǎn);步驟4. 3 :被選擇的子節(jié)點(diǎn)根據(jù)收到的當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值進(jìn)行二重哈希計(jì)算;步驟4. 4 :根據(jù)當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值進(jìn)行所述當(dāng)前輸入數(shù)據(jù)在被選擇的子節(jié)點(diǎn)內(nèi)的Bloom位地址映射;步驟4. 5 :在上一步驟所映射的地址所指內(nèi)存中進(jìn)行所述當(dāng)前輸入數(shù)據(jù)的數(shù)據(jù)查詢。所述步驟4. 2包括若所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值Td如果滿足 Ti ^ Td ^ Ti+1,則認(rèn)為所述當(dāng)前輸入數(shù)據(jù)落在該分布式Bloom過濾系統(tǒng)的第i個(gè)子節(jié)點(diǎn)的數(shù)據(jù)集合表上,分布式Bloom過濾系統(tǒng)主控模塊選擇所述第i個(gè)子節(jié)點(diǎn)作為所述當(dāng)前輸入數(shù)據(jù)的數(shù)據(jù)查詢節(jié)點(diǎn),將當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值提供給所述第i個(gè)子節(jié)點(diǎn);其中, O彡i彡N,N為所述分布式Bloom過濾系統(tǒng)中的子節(jié)點(diǎn)數(shù),所述Ti和Ti+1為第i個(gè)子節(jié)點(diǎn)以及第i+Ι個(gè)子節(jié)點(diǎn)的標(biāo)記值。所述步驟4. 4包括取所述當(dāng)前數(shù)據(jù)的二重哈希計(jì)算值的連續(xù)η位作為Bloom位向量的維度索引,并取所述當(dāng)前數(shù)據(jù)的二重哈希計(jì)算值的其余連續(xù)的m位作為Bloom 位向量索引,進(jìn)行所述當(dāng)前輸入數(shù)據(jù)在被選擇的子節(jié)點(diǎn)內(nèi)的Bloom位地址映射;其中,O < n ^ Iog2T, O < m < Iog2S, S為Bloom位向量的個(gè)數(shù),T表示Bloom位向量的維度。所述步驟4. 5包括在所述地址所指的內(nèi)存中查詢對(duì)應(yīng)的Bloom位狀態(tài),若Bloom 位狀態(tài)為0,則先把所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值寫入當(dāng)前查詢的子節(jié)點(diǎn)已排序好的日志文件中,再對(duì)相應(yīng)的Bloom位進(jìn)行置I操作,并向分布式Bloom過濾系統(tǒng)管理模塊返回“已將當(dāng)前輸入數(shù)據(jù)插入當(dāng)前查詢的子節(jié)點(diǎn)數(shù)據(jù)集合表”的數(shù)據(jù)查詢結(jié)果;若Bloom位狀態(tài)為1,則向分布式Bloom過濾系統(tǒng)管理模塊返回“當(dāng)前輸入數(shù)據(jù)存在于當(dāng)前查詢的子節(jié)點(diǎn)的數(shù)據(jù)集合表中”的數(shù)據(jù)查詢結(jié)果。所述步驟4. 5還包括清除查詢到的數(shù)據(jù)。所述步驟3之前還包括在所述分布式Bloom過濾系統(tǒng)中插入新子節(jié)點(diǎn)根據(jù)當(dāng)前分布式Bloom過濾系統(tǒng)的數(shù)據(jù)到子節(jié)點(diǎn)的映射機(jī)制,將原映射于當(dāng)前插入的所述新子節(jié)點(diǎn)兩端的子節(jié)點(diǎn)上的部分?jǐn)?shù)據(jù)遷移至所述新子節(jié)點(diǎn),并更新插入所述新子節(jié)點(diǎn)后的所述分布式Bloom過濾系統(tǒng)的各子節(jié)點(diǎn)的標(biāo)記值。所述步驟3之前還包括拔除所述分布式Bloom過濾系統(tǒng)中的子節(jié)點(diǎn)根據(jù)當(dāng)前分布式Bloom過濾系統(tǒng)的數(shù)據(jù)到子節(jié)點(diǎn)的映射機(jī)制,將需要拔除的子節(jié)點(diǎn)上的數(shù)據(jù)遷移至與所述需要拔除的子節(jié)點(diǎn)相鄰的兩個(gè)子節(jié)點(diǎn)之中的一個(gè)子節(jié)點(diǎn)上,并更新拔除子節(jié)點(diǎn)后的所述分布式Bloom過濾系統(tǒng)的各子節(jié)點(diǎn)的標(biāo)記值。當(dāng)檢測到所述分布式Bloom過濾系統(tǒng)中有子節(jié)點(diǎn)出現(xiàn)故障時(shí),將一個(gè)新子節(jié)點(diǎn)的標(biāo)記值設(shè)為故障子節(jié)點(diǎn)的標(biāo)記值,并將所述故障子節(jié)點(diǎn)的日志數(shù)據(jù)加載至所述新子節(jié)點(diǎn)。本發(fā)明提供的分布式Bloom過濾系統(tǒng)及其使用方法將分布式Bloom過濾系統(tǒng)中的所有子節(jié)點(diǎn)組成一個(gè)環(huán),通過分布式Bloom過濾系統(tǒng)中的分布式Bloom過濾系統(tǒng)主控模塊管理子節(jié)點(diǎn),分布式Bloom過濾系統(tǒng)主控模塊結(jié)合子節(jié)點(diǎn)對(duì)輸入數(shù)據(jù)進(jìn)行多重哈希轉(zhuǎn)化, 以實(shí)現(xiàn)子節(jié)點(diǎn)和數(shù)據(jù)集合的快速查詢,同時(shí)能有效處理子節(jié)點(diǎn)故障等問題。本發(fā)明提供的方案不僅檢索速度快、精度高、擴(kuò)展性好,而且特征值存儲(chǔ)空間要求低,特別適合云計(jì)算時(shí)代的資源查詢及信息檢索。


圖I是本發(fā)明實(shí)施例提供的一種分布式Bloom過濾系統(tǒng);圖2是本發(fā)明實(shí)施例提供的分布式Bloom過濾系統(tǒng)使用方法;圖3是圖2中S24的詳細(xì)流程圖;圖4是采用本發(fā)明提供的分布式Bloom過濾系統(tǒng)查詢過的數(shù)據(jù)在各子節(jié)點(diǎn)上的映射關(guān)系不意圖;圖5是對(duì)圖4所示結(jié)構(gòu)插入子節(jié)點(diǎn)Tnrat后的分布式Bloom過濾系統(tǒng)子節(jié)點(diǎn)以及原數(shù)據(jù)和子節(jié)點(diǎn)映射關(guān)系變化示意圖6是對(duì)圖4所示結(jié)構(gòu)拔除子節(jié)點(diǎn)I后的分布式Bloom過濾系統(tǒng)子節(jié)點(diǎn)以及原數(shù)據(jù)和子節(jié)點(diǎn)映射關(guān)系變化示意圖。
具體實(shí)施例方式為了克服現(xiàn)有技術(shù)之不足,本發(fā)明實(shí)施例提供一種分布式Bloom過濾系統(tǒng)及其使用方法,該方案將分布式Bloom過濾系統(tǒng)主控模塊和若干個(gè)子節(jié)點(diǎn)組成一個(gè)分布式Bloom 過濾系統(tǒng),分布式Bloom過濾系統(tǒng)中的所有子節(jié)點(diǎn)組成一個(gè)封閉環(huán),通過分布式Bloom過濾系統(tǒng)主控模塊完成數(shù)據(jù)第一重哈希的計(jì)算及子節(jié)點(diǎn)的映射,而子節(jié)點(diǎn)則完成數(shù)據(jù)的二重哈希計(jì)算及相應(yīng)的數(shù)據(jù)操作,能夠?qū)斎霐?shù)據(jù)進(jìn)行多重哈希轉(zhuǎn)化,實(shí)現(xiàn)子節(jié)點(diǎn)和數(shù)據(jù)集合的快速查詢,同時(shí)還能有效處理子節(jié)點(diǎn)故障等問題。以下結(jié)合附圖,具體說明本發(fā)明實(shí)施例。圖I所示為本發(fā)明實(shí)施例提供的一種分布式Bloom過濾系統(tǒng),包括分布式Bloom 過濾系統(tǒng)主控模塊I和若干個(gè)子節(jié)點(diǎn)2,子節(jié)點(diǎn)2是Bloom過濾器的真正實(shí)體,若干個(gè)子節(jié)點(diǎn)2形成一個(gè)閉合環(huán),分布式Bloom過濾系統(tǒng)主控模塊I獨(dú)立于環(huán)外,分布式Bloom過濾系統(tǒng)主控模塊I用于完成當(dāng)前輸入數(shù)據(jù)的第一重哈希的計(jì)算及當(dāng)前輸入數(shù)據(jù)到子節(jié)點(diǎn)的映射,子節(jié)點(diǎn)2用于完成當(dāng)前輸入數(shù)據(jù)的第二重哈希計(jì)算及相應(yīng)的數(shù)據(jù)查詢,其中,所述相應(yīng)的數(shù)據(jù)查詢是指數(shù)據(jù)的查詢、插入和清除。如圖I中所示,分布式Bloom過濾系統(tǒng)主控模塊I包括數(shù)據(jù)接收模塊3、一重哈希計(jì)算模塊4、子節(jié)點(diǎn)選擇映射模塊5、分布式Bloom過濾系統(tǒng)初始化模塊6、分布式Bloom過濾系統(tǒng)管理模塊7、故障處理模塊8和結(jié)果反饋模塊9,其中,分布式Bloom過濾系統(tǒng)初始化模塊6用于完成子節(jié)點(diǎn)2的日志加載、備份數(shù)據(jù)等子節(jié)點(diǎn)初始化工作,用于為各子節(jié)點(diǎn)2指定不同的標(biāo)記(Token)值,然后再將所有子節(jié)點(diǎn)2 的Token值匯總提供給分布式Bloom過濾系統(tǒng)管理模塊7,具體地,若子節(jié)點(diǎn)數(shù)量為N,則按順序?yàn)榉植际紹loom過濾系統(tǒng)中的N個(gè)子節(jié)點(diǎn)2分別指定一個(gè)初始化大整數(shù)型的Token值, 較佳地,若每個(gè)子節(jié)點(diǎn)2的配置一樣,則將第i個(gè)子節(jié)點(diǎn)2的Token值設(shè)定為=Ti = i* (2127/ N) ,0 ^ i < No此外,當(dāng)分布式Bloom過濾系統(tǒng)首次啟動(dòng)時(shí),分布式Bloom過濾系統(tǒng)初始化模塊6將每個(gè)子節(jié)點(diǎn)2的Bloom位向量集合表上的所有數(shù)據(jù)都初始化為O。數(shù)據(jù)接收模塊3用于接收用戶當(dāng)前輸入數(shù)據(jù)并提供給一重哈希計(jì)算模塊4 ;一重哈希計(jì)算模塊4用于對(duì)當(dāng)前輸入數(shù)據(jù)進(jìn)行一重哈希計(jì)算,并將計(jì)算結(jié)果提供給子節(jié)點(diǎn)選擇映射模塊5。子節(jié)點(diǎn)選擇映射模塊5用于根據(jù)當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值,判斷該哈希值在哪個(gè)區(qū)間范圍內(nèi),為當(dāng)前輸入數(shù)據(jù)選擇子節(jié)點(diǎn)2,并將當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值通過分布式Bloom過濾系統(tǒng)管理模塊7發(fā)送給被選擇的子節(jié)點(diǎn)2。分布式Bloom過濾系統(tǒng)管理模塊7將當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值提供給子節(jié)點(diǎn)選擇映射模塊5為當(dāng)前輸入數(shù)據(jù)選擇的子節(jié)點(diǎn)2,此外,分布式Bloom過濾系統(tǒng)管理模塊 7還用于對(duì)各子節(jié)點(diǎn)2的數(shù)據(jù)操作模塊11的數(shù)據(jù)操作查詢進(jìn)行管理,將各子節(jié)點(diǎn)2的數(shù)據(jù)操作模塊11返回的數(shù)據(jù)查詢結(jié)果通過結(jié)果反饋模塊9反饋給用戶,此外,分布式Bloom過濾系統(tǒng)管理模塊7還用于控制子節(jié)點(diǎn)的插入、拔除和更換。故障處理模塊8用于實(shí)時(shí)監(jiān)測子節(jié)點(diǎn)2的狀態(tài),并在子節(jié)點(diǎn)2出現(xiàn)故障時(shí)通知分布式Bloom過濾系統(tǒng)管理模塊7將當(dāng)前故障子節(jié)點(diǎn)更換為一個(gè)新的子節(jié)點(diǎn)。每個(gè)子節(jié)點(diǎn)2包括二重哈希計(jì)算模塊10、數(shù)據(jù)操作模塊11和日志備份模塊12。二重哈希計(jì)算模塊10對(duì)收到的當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值進(jìn)行二重哈希計(jì)算,并將當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值提供給數(shù)據(jù)操作模塊U。數(shù)據(jù)操作模塊11根據(jù)收到的當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值進(jìn)行數(shù)據(jù)的Bloom位地址映射,并在所映射的地址所指內(nèi)存中進(jìn)行當(dāng)前輸入數(shù)據(jù)的查詢、插入或清除。日志備份模塊12用于備份本子節(jié)點(diǎn)2在運(yùn)行過程中的操作日志以及數(shù)據(jù)。本發(fā)明實(shí)施例還提供一種對(duì)應(yīng)于本發(fā)明提供的分布式Bloom過濾系統(tǒng)的分布式 Bloom過濾系統(tǒng)使用方法,如圖2所示,包括S21 :為系統(tǒng)中的每個(gè)子節(jié)點(diǎn)指定標(biāo)記值。此處所述分布式Bloom過濾系統(tǒng)如圖I 所示,首次使用時(shí),首先為各子節(jié)點(diǎn)分配不同的Token值,然后再在分布式Bloom過濾系統(tǒng)主控模塊上匯總所有子節(jié)點(diǎn)的Token值,以便做子節(jié)點(diǎn)映射。具體地,若子節(jié)點(diǎn)數(shù)量為N, 則按順序?yàn)榉植际紹loom過濾系統(tǒng)中的N個(gè)子節(jié)點(diǎn)分別指定一個(gè)初始化大整數(shù)型的Token 值,由于在極端情況下,分布式Bloom過濾系統(tǒng)支持的子節(jié)點(diǎn)數(shù)可達(dá)2128個(gè),因此Token值的數(shù)值范圍為O至2127。分布式Bloom過濾系統(tǒng)主控模塊在設(shè)定Token值時(shí),應(yīng)盡量使各個(gè)子節(jié)點(diǎn)平衡分布,Token值需根據(jù)具體的運(yùn)行環(huán)境進(jìn)行平衡設(shè)定。較佳地,若每個(gè)子節(jié)點(diǎn)的配置一樣,則將第i個(gè)子節(jié)點(diǎn)的Token值設(shè)定為Ti = i* (2127/N) ,0 ^ i < N, 這樣,分布式Bloom過濾系統(tǒng)中的所有子節(jié)點(diǎn)就組成一個(gè)Token環(huán),環(huán)上的子節(jié)點(diǎn)按照Token大小值順序排序,以便子節(jié)點(diǎn)查詢時(shí)的二分查找,時(shí)間復(fù)雜度為O(IogN);分布式Bloom過濾系統(tǒng)成功啟動(dòng)后,每個(gè)子節(jié)點(diǎn)都有一張數(shù)據(jù)表,用來維護(hù)該環(huán)上的Token值, 分布式Bloom過濾系統(tǒng)每次啟動(dòng)都會(huì)加載該數(shù)據(jù)表。S22 :配置各子節(jié)點(diǎn)的數(shù)據(jù)集合表。此步驟中,如果該分布式Bloom過濾系統(tǒng)是首次啟動(dòng),則將每個(gè)子節(jié)點(diǎn)的Bloom位向量集合表上的所有數(shù)據(jù)都初始化為O。由于本發(fā)明實(shí)施例提供的數(shù)據(jù)查詢方法中,每個(gè)子節(jié)點(diǎn)在運(yùn)行過程中都保存有自己寫的日志和數(shù)據(jù)備份,以防斷點(diǎn)引起的數(shù)據(jù)丟失等,因此若分布式Bloom過濾系統(tǒng)是非首次啟動(dòng),則向Bloom 位向量集合表中加載上次分布式Bloom過濾系統(tǒng)關(guān)閉時(shí)該子節(jié)點(diǎn)保存的日志和備份數(shù)據(jù)。S23 :接收用戶的當(dāng)前輸入數(shù)據(jù)。S24 :對(duì)當(dāng)前輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)查詢。圖3為圖2中S24的詳細(xì)流程圖,包括以下步驟S31 :分布式Bloom過濾系統(tǒng)主控模塊對(duì)當(dāng)前輸入數(shù)據(jù)進(jìn)行一重哈希計(jì)算。為方便描述,此處設(shè)用戶當(dāng)前輸入的數(shù)據(jù)為D,則分布式Bloom過濾系統(tǒng)主控模塊通過哈希算法H 計(jì)算出一個(gè)128位的哈希值(一重哈希計(jì)算值),記為Td = H1 (D)S32 :分布式Bloom過濾系統(tǒng)主控模塊根據(jù)一重哈希計(jì)算值和各子節(jié)點(diǎn)的標(biāo)記值, 為當(dāng)前輸入數(shù)據(jù)選擇子節(jié)點(diǎn)。此步驟中,判斷一重哈希計(jì)算值Td如果滿足=Ti ^ Td ^ Ti+1, 認(rèn)為當(dāng)前輸入數(shù)據(jù)D落在分布式Bloom過濾系統(tǒng)的第i個(gè)子節(jié)點(diǎn)的數(shù)據(jù)集合表上,分布式 Bloom過濾系統(tǒng)主控模塊將當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值提供給所選擇的第i個(gè)子節(jié)點(diǎn)。S33:被選擇的子節(jié)點(diǎn)根據(jù)收到的當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值進(jìn)行二重哈希計(jì)算。此步驟中,二重哈希計(jì)算得到當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值,記為V = H1 (7d)這樣可以打亂原有數(shù)據(jù)的相關(guān)性,進(jìn)一步減少查詢時(shí)的沖突概率。其中,T/共 128個(gè)二進(jìn)制位。
S34:根據(jù)當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值進(jìn)行當(dāng)前輸入數(shù)據(jù)在被選擇的子節(jié)點(diǎn)內(nèi)的Bloom位地址映射。其中,各子節(jié)點(diǎn)的Bloom位向量集合表以二維位矩陣B[S,T]表示,其中,S表示 Bloom位向量的個(gè)數(shù),T表示Bloom位向量的維度。為了進(jìn)行當(dāng)前輸入數(shù)據(jù)在被選擇的子節(jié)點(diǎn)內(nèi)的Bloom位地址映射,取二重哈希計(jì)算值T/中的連續(xù)η位作為Bloom位向量的維度索引(從T/的128位中取η位出來,當(dāng)成位矩陣B的列索引),比如最低的η位,并取T1/ 中其余連續(xù)的m位作為Bloom位向量索引(從T/的其余位中取m位,當(dāng)成位矩陣B的行索引),比如最聞的m位,η和m需滿足如下的關(guān)系根據(jù)實(shí)際取得的η和m值可映射得到Bloom位地址。例如假設(shè)根據(jù)二重哈希計(jì)算值T/取得的m為01000000(共8個(gè)二進(jìn)制位),η為0110 (共4個(gè)二進(jìn)制位),則最后映射的Bloom位地址為B
。S35:在上一步驟所映射的地址所指內(nèi)存中進(jìn)行當(dāng)前輸入數(shù)據(jù)的查詢,并向用戶返回?cái)?shù)據(jù)查詢結(jié)果。具體包括在所述地址所指的內(nèi)存中進(jìn)行當(dāng)前輸入數(shù)據(jù)的查詢,所述數(shù)據(jù)查詢過程是指在該內(nèi)存中查詢對(duì)應(yīng)的Bloom位狀態(tài)Bl00m位狀態(tài)為O表示當(dāng)前輸入數(shù)據(jù) (當(dāng)前需要查詢的數(shù)據(jù))不屬于當(dāng)前查詢的子節(jié)點(diǎn)的數(shù)據(jù)集合表中,Bloom位狀態(tài)為I表示當(dāng)前需要查詢的數(shù)據(jù)存在于當(dāng)前查詢的子節(jié)點(diǎn)的數(shù)據(jù)集合表中,則向分布式Bloom過濾系統(tǒng)管理模塊返回“當(dāng)前輸入數(shù)據(jù)存在于當(dāng)前查詢的子節(jié)點(diǎn)的數(shù)據(jù)集合表中”的數(shù)據(jù)查詢結(jié)果O優(yōu)選地,步驟S35中,若當(dāng)前需要查詢的數(shù)據(jù)不存在于當(dāng)前查詢的子節(jié)點(diǎn)的數(shù)據(jù)集合表中(查詢的Bloom位狀態(tài)為O),則將當(dāng)前輸入數(shù)據(jù)插入當(dāng)前所查詢的子節(jié)點(diǎn)數(shù)據(jù)集合表中,數(shù)據(jù)插入的具體過程為當(dāng)前子節(jié)點(diǎn)先把當(dāng)前輸入數(shù)據(jù)對(duì)應(yīng)的一重哈希計(jì)算值Td 寫入已排序好的日志文件中,以防斷電數(shù)據(jù)丟失以及后續(xù)的數(shù)據(jù)維護(hù),再對(duì)相應(yīng)的Bloom 位進(jìn)行置I操作,并向分布式Bloom過濾系統(tǒng)管理模塊返回“已將當(dāng)前輸入數(shù)據(jù)插入當(dāng)前查詢的子節(jié)點(diǎn)數(shù)據(jù)集合表”的數(shù)據(jù)查詢結(jié)果。優(yōu)選地,步驟S35還可包括數(shù)據(jù)清除過程對(duì)于Bloom位向量的位狀態(tài)清除只需對(duì)原來的狀態(tài)進(jìn)行異或操作,并賦值給新狀態(tài)即可;而日志文件的數(shù)據(jù)清除,由于數(shù)據(jù)已按大小排序好,只需進(jìn)行一次二分查找,時(shí)間復(fù)雜度為O(IogN),即可快速查詢到需要?jiǎng)h除的數(shù)據(jù)位置,執(zhí)行刪除即可。圖4所示為采用本發(fā)明提供的分布式Bloom過濾系統(tǒng)查詢過的數(shù)據(jù)在各子節(jié)點(diǎn)上的映射關(guān)系示意圖。圖4中,記錄過的數(shù)據(jù)到子節(jié)點(diǎn)的映射采用的是順時(shí)針分布機(jī)制,事實(shí)上,數(shù)據(jù)到子節(jié)點(diǎn)的映射也可以采用逆時(shí)針分布機(jī)制。圖4中僅是為了方便說明僅畫出了 4個(gè)子節(jié)點(diǎn),顯然,本發(fā)明提供的分布式Bloom過濾系統(tǒng)中的子節(jié)點(diǎn)個(gè)數(shù)不僅限于此,圖2所示方法還包括子節(jié)點(diǎn)插入過程,具體地,假設(shè)現(xiàn)在需要在第i個(gè)子節(jié)點(diǎn)和第 i+Ι個(gè)子節(jié)點(diǎn)中間插入新子節(jié)點(diǎn),新子節(jié)點(diǎn)的Token值記為Tnew,那么其必須滿足如下關(guān)系
權(quán)利要求
1.一種分布式Bloom過濾系統(tǒng),其特征在于,包括分布式Bloom過濾系統(tǒng)主控模塊和若干個(gè)子節(jié)點(diǎn);其中,所述子節(jié)點(diǎn)是Bloom過濾器;所述若干個(gè)子節(jié)點(diǎn)形成一個(gè)閉合環(huán),所述分布式Bloom過濾系統(tǒng)主控模塊獨(dú)立于所述子節(jié)點(diǎn)形成的閉合環(huán)外外,所述分布式Bloom過濾系統(tǒng)主控模塊用于完成當(dāng)前輸入數(shù)據(jù)的第一重哈希的計(jì)算及所述當(dāng)前輸入數(shù)據(jù)到子節(jié)點(diǎn)的映射,所述子節(jié)點(diǎn)用于完成所述當(dāng)前輸入數(shù)據(jù)的第二重哈希計(jì)算,并根據(jù)當(dāng)前輸入數(shù)據(jù)的第二重哈希計(jì)算結(jié)果對(duì)所述當(dāng)前輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)查詢。
2.如權(quán)利要求I所述的一種分布式Bloom過濾系統(tǒng),其特征在于,所述分布式Bloom 過濾系統(tǒng)主控模塊包括分布式Bloom過濾系統(tǒng)初始化模塊、數(shù)據(jù)接收模塊、一重哈希計(jì)算模塊、子節(jié)點(diǎn)選擇映射模塊、分布式Bloom過濾系統(tǒng)管理模塊、故障處理模塊和結(jié)果反饋模塊;所述分布式Bloom過濾系統(tǒng)初始化模塊用于在所述分布式Bloom過濾系統(tǒng)首次啟動(dòng)時(shí),將每個(gè)子節(jié)點(diǎn)的Bloom位向量集合表上的所有數(shù)據(jù)都初始化為O,為每個(gè)子節(jié)點(diǎn)指定不同的標(biāo)記值,并將每個(gè)子節(jié)點(diǎn)的標(biāo)記值提供給所述分布式Bloom過濾系統(tǒng)管理模塊;還用于完成子節(jié)點(diǎn)的日志加載和數(shù)據(jù)備份;所述數(shù)據(jù)接收模塊用于接收用戶當(dāng)前輸入數(shù)據(jù)并提供給所述一重哈希計(jì)算模塊;所述一重哈希計(jì)算模塊用于對(duì)所述當(dāng)前輸入數(shù)據(jù)進(jìn)行一重哈希計(jì)算,并將計(jì)算結(jié)果提供給所述子節(jié)點(diǎn)選擇映射模塊;所述子節(jié)點(diǎn)選擇映射模塊用于根據(jù)所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值,為當(dāng)前輸入數(shù)據(jù)選擇子節(jié)點(diǎn),并將所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值通過所述分布式Bloom過濾系統(tǒng)管理模塊發(fā)送給被選擇的子節(jié)點(diǎn);所述分布式Bloom過濾系統(tǒng)管理模塊用于將所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值提供給所述子節(jié)點(diǎn)選擇映射模塊為當(dāng)前輸入數(shù)據(jù)選擇的子節(jié)點(diǎn),還用于對(duì)各子節(jié)點(diǎn)對(duì)所述當(dāng)前輸入數(shù)據(jù)的數(shù)據(jù)查詢結(jié)果進(jìn)行管理,并將所述數(shù)據(jù)查詢結(jié)果通過所述結(jié)果反饋模塊反饋給用戶;還用于控制子節(jié)點(diǎn)的插入、拔除和更換;所述故障處理模塊用于實(shí)時(shí)監(jiān)測子節(jié)點(diǎn)的狀態(tài),并在子節(jié)點(diǎn)出現(xiàn)故障時(shí)通知所述分布式Bloom過濾系統(tǒng)管理模塊將當(dāng)前故障子節(jié)點(diǎn)更換為一個(gè)新的子節(jié)點(diǎn);所述子節(jié)點(diǎn)包括二重哈希計(jì)算模塊、數(shù)據(jù)操作模塊和日志備份模塊;所述二重哈希計(jì)算模塊用于對(duì)收到的所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值進(jìn)行二重哈希計(jì)算,并將所述當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值提供給所述數(shù)據(jù)操作模塊;所述數(shù)據(jù)操作模塊根據(jù)收到的所述當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值進(jìn)行數(shù)據(jù)的Bloom位地址映射,并在所映射的地址所指內(nèi)存中進(jìn)行所述當(dāng)前輸入數(shù)據(jù)的數(shù)據(jù)查詢;所述日志備份模塊用于備份本子節(jié)點(diǎn)在運(yùn)行過程中的操作日志以及數(shù)據(jù)。
3.一種分布式Bloom過濾系統(tǒng)使用方法,其特征在于,包括步驟I :為分布式Bloom過濾系統(tǒng)中的各子節(jié)點(diǎn)指定標(biāo)記值;步驟2 :配置各所述子節(jié)點(diǎn)的數(shù)據(jù)集合表;步驟3 :接收用戶的當(dāng)前輸入數(shù)據(jù);步驟4 :對(duì)所述當(dāng)前輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)查詢。
4.如權(quán)利要求3所述的一種分布式Bloom過濾系統(tǒng)使用方法,其特征在于,所述步驟4包括步驟4. I :分布式Bloom過濾系統(tǒng)主控模塊對(duì)所述當(dāng)前輸入數(shù)據(jù)進(jìn)行一重哈希計(jì)算;步驟4. 2 :分布式Bloom過濾系統(tǒng)主控模塊根據(jù)所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值和各子節(jié)點(diǎn)的標(biāo)記值,為所述當(dāng)前輸入數(shù)據(jù)選擇子節(jié)點(diǎn);步驟4. 3 :被選擇的子節(jié)點(diǎn)根據(jù)收到的當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值進(jìn)行二重哈希計(jì)算;步驟4. 4 :根據(jù)當(dāng)前輸入數(shù)據(jù)的二重哈希計(jì)算值進(jìn)行所述當(dāng)前輸入數(shù)據(jù)在被選擇的子節(jié)點(diǎn)內(nèi)的Bloom位地址映射;步驟4. 5 :在上一步驟所映射的地址所指內(nèi)存中進(jìn)行所述當(dāng)前輸入數(shù)據(jù)的數(shù)據(jù)查詢。
5.如權(quán)利要求4所述的一種分布式Bloom過濾系統(tǒng)使用方法,其特征在于,所述步驟 4. 2包括若所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值Td如果滿足=Ti ^ Td ^ Ti+1,則認(rèn)為所述當(dāng)前輸入數(shù)據(jù)落在該分布式Bloom過濾系統(tǒng)的第i個(gè)子節(jié)點(diǎn)的數(shù)據(jù)集合表上,分布式Bloom 過濾系統(tǒng)主控模塊選擇所述第i個(gè)子節(jié)點(diǎn)作為所述當(dāng)前輸入數(shù)據(jù)的數(shù)據(jù)查詢節(jié)點(diǎn),將當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值提供給所述第i個(gè)子節(jié)點(diǎn);其中,O ^N, N為所述分布式 Bloom過濾系統(tǒng)中的子節(jié)點(diǎn)數(shù),所述Ti和Ti+1為第i個(gè)子節(jié)點(diǎn)以及第i+Ι個(gè)子節(jié)點(diǎn)的標(biāo)記值。
6.如權(quán)利要求5所述的一種分布式Bloom過濾系統(tǒng)使用方法,其特征在于,所述步驟 4. 4包括取所述當(dāng)前數(shù)據(jù)的二重哈希計(jì)算值的連續(xù)η位作為Bloom位向量的維度索引,并取所述當(dāng)前數(shù)據(jù)的二重哈希計(jì)算值的其余連續(xù)的m位作為Bloom位向量索引,進(jìn)行所述當(dāng)前輸入數(shù)據(jù)在被選擇的子節(jié)點(diǎn)內(nèi)的Bloom位地址映射;其中,0 <n^ Iog2T,O <m^ Iog2S, S為Bloom位向量的個(gè)數(shù),T表示Bloom位向量的維度。
7.如權(quán)利要求6所述的一種分布式Bloom過濾系統(tǒng)使用方法,其特征在于,所述步驟4.5包括在所述地址所指的內(nèi)存中查詢對(duì)應(yīng)的Bloom位狀態(tài),若Bloom位狀態(tài)為0,則先把所述當(dāng)前輸入數(shù)據(jù)的一重哈希計(jì)算值寫入當(dāng)前查詢的子節(jié)點(diǎn)已排序好的日志文件中,再對(duì)相應(yīng)的Bloom位進(jìn)行置I操作,并向分布式Bloom過濾系統(tǒng)管理模塊返回“已將當(dāng)前輸入數(shù)據(jù)插入當(dāng)前查詢的子節(jié)點(diǎn)數(shù)據(jù)集合表”的數(shù)據(jù)查詢結(jié)果位狀態(tài)為1,則向分布式 Bloom過濾系統(tǒng)管理模塊返回“當(dāng)前輸入數(shù)據(jù)存在于當(dāng)前查詢的子節(jié)點(diǎn)的數(shù)據(jù)集合表中”的數(shù)據(jù)查詢結(jié)果。
8.如權(quán)利要求7所述的一種分布式Bloom過濾系統(tǒng)使用方法,其特征在于,所述步驟4.5還包括清除查詢到的數(shù)據(jù)。
9.如權(quán)利要求3至7任一項(xiàng)所述的一種分布式Bloom過濾系統(tǒng)使用方法,其特征在于,所述步驟3之前還包括在所述分布式Bloom過濾系統(tǒng)中插入新子節(jié)點(diǎn)根據(jù)當(dāng)前分布式Bloom過濾系統(tǒng)的數(shù)據(jù)到子節(jié)點(diǎn)的映射機(jī)制,將原映射于當(dāng)前插入的所述新子節(jié)點(diǎn)兩端的子節(jié)點(diǎn)上的部分?jǐn)?shù)據(jù)遷移至所述新子節(jié)點(diǎn),并更新插入所述新子節(jié)點(diǎn)后的所述分布式 Bloom過濾系統(tǒng)的各子節(jié)點(diǎn)的標(biāo)記值。
10.如權(quán)利要求3至7任一所述的一種分布式Bloom過濾系統(tǒng)使用方法,其特征在于,所述步驟3之前還包括拔除所述分布式Bloom過濾系統(tǒng)中的子節(jié)點(diǎn)根據(jù)當(dāng)前分布式 Bloom過濾系統(tǒng)的數(shù)據(jù)到子節(jié)點(diǎn)的映射機(jī)制,將需要拔除的子節(jié)點(diǎn)上的數(shù)據(jù)遷移至與所述需要拔除的子節(jié)點(diǎn)相鄰的兩個(gè)子節(jié)點(diǎn)之中的一個(gè)子節(jié)點(diǎn)上,并更新拔除子節(jié)點(diǎn)后的所述分布式Bloom過濾系統(tǒng)的各子節(jié)點(diǎn)的標(biāo)記值。
11.如權(quán)利要求3至7任一所述的一種分布式Bloom過濾系統(tǒng)使用方法,其特征在于, 當(dāng)檢測到所述分布式Bloom過濾系統(tǒng)中有子節(jié)點(diǎn)出現(xiàn)故障時(shí),將一個(gè)新子節(jié)點(diǎn)的標(biāo)記值設(shè)為故障子節(jié)點(diǎn)的標(biāo)記值,并將所述故障子節(jié)點(diǎn)的日志數(shù)據(jù)加載至所述新子節(jié)點(diǎn)。
全文摘要
本發(fā)明提供一種分布式Bloom過濾系統(tǒng),包括分布式Bloom過濾系統(tǒng)主控模塊和若干個(gè)子節(jié)點(diǎn);其中,所述子節(jié)點(diǎn)是Bloom過濾器;所述若干個(gè)子節(jié)點(diǎn)形成一個(gè)閉合環(huán),所述分布式Bloom過濾系統(tǒng)主控模塊獨(dú)立于所述子節(jié)點(diǎn)形成的閉合環(huán)外外,所述分布式Bloom過濾系統(tǒng)主控模塊用于完成當(dāng)前輸入數(shù)據(jù)的第一重哈希的計(jì)算及所述當(dāng)前輸入數(shù)據(jù)到子節(jié)點(diǎn)的映射,所述子節(jié)點(diǎn)用于完成所述當(dāng)前輸入數(shù)據(jù)的第二重哈希計(jì)算,并根據(jù)當(dāng)前輸入數(shù)據(jù)的第二重哈希計(jì)算結(jié)果對(duì)所述當(dāng)前輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)查詢。本發(fā)明提供的方案不僅檢索速度快、精度高、擴(kuò)展性好,而且特征值存儲(chǔ)空間要求低,特別適合云計(jì)算時(shí)代的資源查詢及信息檢索。
文檔編號(hào)G06F17/30GK102609446SQ20121000168
公開日2012年7月25日 申請(qǐng)日期2012年1月5日 優(yōu)先權(quán)日2012年1月5日
發(fā)明者張永光, 湯偉賓, 羅佳 申請(qǐng)人:廈門市美亞柏科信息股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1