專利名稱:一種分布式Bloom過濾系統及其使用方法
技術領域:
本發明涉及信息檢索及過濾、云計算、分布式計算等計算機技術領域,尤其涉及一種分布式Bloom過濾系統及其使用方法。
背景技術:
隨著互聯網技術的發展,時時刻刻需要實現資源的共享及數據的交互,分布式技術、云計算技術是當今互聯網技術的發展潮流及其研究熱點。在資源共享時,我們經常需要判斷某個表項是否包含在一個數據集中,例如在網絡爬蟲里,一個網址是否已被訪問過; 對于一個網址的訪問統計,當前的連接IP是否已來訪問過等等,這就需要進行資源查詢或信息檢索。在進行資源查詢的信息處理過程中,采用何種查找方式依賴于信息的表示策略。 在云計算時代的應用環境中,處理的對象都是海量數據,要在海量的數據里面實現資源的快速查詢是有一定的技術難度的。此外,傳統的哈希表檢索方式,雖然可以實現快速查詢, 但是會造成極大的存儲空間浪費,而且當數據集大到一定程度時,哈希表的空間利用率會更低。作為哈希表的一個變種,現有技術中的Bloom過濾器能夠以極小的空間完成哈希判功能。在能夠容忍的小范圍誤判的前提下,Bloom過濾器能很好地實現低存儲要求和高響應速度的要求。然而,現有技術中的Bloom過濾器都是以單子節點形式存在,顯然,在信息大爆炸的時代,單子節點的Bloom過濾器已經無法滿足現今的海量數據檢索需求,因此需要一種不僅具有很好的時間和空間檢索效率、且能夠對海量數據進行檢索的方案。
發明內容
有鑒于此,本發明提供一種分布式Bloom過濾系統及其使用方法,用以解決現有技術中單子節點Bloom過濾器無法實現對海量數據的快速檢索查詢的缺點,本發明提供的方案能夠實現數據的快速查詢以及故障處理,耗費的存儲空間少,同時具有高效檢索、易擴展等優點,此外還能實現分布式Bloom過濾系統內子節點的隨意插拔,實用性強。本發明提供的一種分布式Bloom過濾系統,包括分布式Bloom過濾系統主控模塊和若干個子節點;其中,所述子節點是Bloom過濾器;所述若干個子節點形成一個閉合環, 所述分布式Bloom過濾系統主控模塊獨立于所述子節點形成的閉合環外外,所述分布式 Bloom過濾系統主控模塊用于完成當前輸入數據的第一重哈希的計算及所述當前輸入數據到子節點的映射,所述子節點用于完成所述當前輸入數據的第二重哈希計算,并根據當前輸入數據的第二重哈希計算結果對所述當前輸入數據進行數據查詢。所述分布式Bloom過濾系統主控模塊包括分布式Bloom過濾系統初始化模塊、數據接收模塊、一重哈希計算模塊、子節點選擇映射模塊、分布式Bloom過濾系統管理模塊、 故障處理模塊和結果反饋模塊;所述分布式Bloom過濾系統初始化模塊用于在所述分布式 Bloom過濾系統首次啟動時,將每個子節點的Bloom位向量集合表上的所有數據都初始化為0,為每個子節點指定不同的標記值,并將每個子節點的標記值提供給所述分布式Bloom
5過濾系統管理模塊;還用于完成子節點的日志加載和數據備份;所述數據接收模塊用于接收用戶當前輸入數據并提供給所述一重哈希計算模塊;所述一重哈希計算模塊用于對所述當前輸入數據進行一重哈希計算,并將計算結果提供給所述子節點選擇映射模塊;所述子節點選擇映射模塊用于根據所述當前輸入數據的一重哈希計算值,為當前輸入數據選擇子節點,并將所述當前輸入數據的一重哈希計算值通過所述分布式Bloom過濾系統管理模塊發送給被選擇的子節點;所述分布式Bloom過濾系統管理模塊用于將所述當前輸入數據的一重哈希計算值提供給所述子節點選擇映射模塊為當前輸入數據選擇的子節點,還用于對各子節點對所述當前輸入數據的數據查詢結果進行管理,并將所述數據查詢結果通過所述結果反饋模塊反饋給用戶;還用于控制子節點的插入、拔除和更換;所述故障處理模塊用于實時監測子節點的狀態,并在子節點出現故障時通知所述分布式Bloom過濾系統管理模塊將當前故障子節點更換為一個新的子節點;所述子節點包括二重哈希計算模塊、數據操作模塊和日志備份模塊;所述二重哈希計算模塊用于對收到的所述當前輸入數據的一重哈希計算值進行二重哈希計算,并將所述當前輸入數據的二重哈希計算值提供給所述數據操作模塊;所述數據操作模塊根據收到的所述當前輸入數據的二重哈希計算值進行數據的Bloom位地址映射,并在所映射的地址所指內存中進行所述當前輸入數據的數據查詢;所述日志備份模塊用于備份本子節點在運行過程中的操作日志以及數據。本發明提供的一種對應于本發明提供的分布式Bloom過濾系統的分布式Bloom過濾系統使用方法,包括步驟I :為分布式Bloom過濾系統中的各子節點指定標記值;步驟 2 :配置各所述子節點的數據集合表;步驟3 :接收用戶的當前輸入數據;步驟4 :對所述當前輸入數據進行數據查詢。所述步驟4包括步驟4. I :分布式Bloom過濾系統主控模塊對所述當前輸入數據進行一重哈希計算;步驟4. 2 :分布式Bloom過濾系統主控模塊根據所述當前輸入數據的一重哈希計算值和各子節點的標記值,為所述當前輸入數據選擇子節點;步驟4. 3 :被選擇的子節點根據收到的當前輸入數據的一重哈希計算值進行二重哈希計算;步驟4. 4 :根據當前輸入數據的二重哈希計算值進行所述當前輸入數據在被選擇的子節點內的Bloom位地址映射;步驟4. 5 :在上一步驟所映射的地址所指內存中進行所述當前輸入數據的數據查詢。所述步驟4. 2包括若所述當前輸入數據的一重哈希計算值Td如果滿足 Ti ^ Td ^ Ti+1,則認為所述當前輸入數據落在該分布式Bloom過濾系統的第i個子節點的數據集合表上,分布式Bloom過濾系統主控模塊選擇所述第i個子節點作為所述當前輸入數據的數據查詢節點,將當前輸入數據的一重哈希計算值提供給所述第i個子節點;其中, O彡i彡N,N為所述分布式Bloom過濾系統中的子節點數,所述Ti和Ti+1為第i個子節點以及第i+Ι個子節點的標記值。所述步驟4. 4包括取所述當前數據的二重哈希計算值的連續η位作為Bloom位向量的維度索引,并取所述當前數據的二重哈希計算值的其余連續的m位作為Bloom 位向量索引,進行所述當前輸入數據在被選擇的子節點內的Bloom位地址映射;其中,O < n ^ Iog2T, O < m < Iog2S, S為Bloom位向量的個數,T表示Bloom位向量的維度。所述步驟4. 5包括在所述地址所指的內存中查詢對應的Bloom位狀態,若Bloom 位狀態為0,則先把所述當前輸入數據的一重哈希計算值寫入當前查詢的子節點已排序好的日志文件中,再對相應的Bloom位進行置I操作,并向分布式Bloom過濾系統管理模塊返回“已將當前輸入數據插入當前查詢的子節點數據集合表”的數據查詢結果;若Bloom位狀態為1,則向分布式Bloom過濾系統管理模塊返回“當前輸入數據存在于當前查詢的子節點的數據集合表中”的數據查詢結果。所述步驟4. 5還包括清除查詢到的數據。所述步驟3之前還包括在所述分布式Bloom過濾系統中插入新子節點根據當前分布式Bloom過濾系統的數據到子節點的映射機制,將原映射于當前插入的所述新子節點兩端的子節點上的部分數據遷移至所述新子節點,并更新插入所述新子節點后的所述分布式Bloom過濾系統的各子節點的標記值。所述步驟3之前還包括拔除所述分布式Bloom過濾系統中的子節點根據當前分布式Bloom過濾系統的數據到子節點的映射機制,將需要拔除的子節點上的數據遷移至與所述需要拔除的子節點相鄰的兩個子節點之中的一個子節點上,并更新拔除子節點后的所述分布式Bloom過濾系統的各子節點的標記值。當檢測到所述分布式Bloom過濾系統中有子節點出現故障時,將一個新子節點的標記值設為故障子節點的標記值,并將所述故障子節點的日志數據加載至所述新子節點。本發明提供的分布式Bloom過濾系統及其使用方法將分布式Bloom過濾系統中的所有子節點組成一個環,通過分布式Bloom過濾系統中的分布式Bloom過濾系統主控模塊管理子節點,分布式Bloom過濾系統主控模塊結合子節點對輸入數據進行多重哈希轉化, 以實現子節點和數據集合的快速查詢,同時能有效處理子節點故障等問題。本發明提供的方案不僅檢索速度快、精度高、擴展性好,而且特征值存儲空間要求低,特別適合云計算時代的資源查詢及信息檢索。
圖I是本發明實施例提供的一種分布式Bloom過濾系統;圖2是本發明實施例提供的分布式Bloom過濾系統使用方法;圖3是圖2中S24的詳細流程圖;圖4是采用本發明提供的分布式Bloom過濾系統查詢過的數據在各子節點上的映射關系不意圖;圖5是對圖4所示結構插入子節點Tnrat后的分布式Bloom過濾系統子節點以及原數據和子節點映射關系變化示意圖6是對圖4所示結構拔除子節點I后的分布式Bloom過濾系統子節點以及原數據和子節點映射關系變化示意圖。
具體實施例方式為了克服現有技術之不足,本發明實施例提供一種分布式Bloom過濾系統及其使用方法,該方案將分布式Bloom過濾系統主控模塊和若干個子節點組成一個分布式Bloom 過濾系統,分布式Bloom過濾系統中的所有子節點組成一個封閉環,通過分布式Bloom過濾系統主控模塊完成數據第一重哈希的計算及子節點的映射,而子節點則完成數據的二重哈希計算及相應的數據操作,能夠對輸入數據進行多重哈希轉化,實現子節點和數據集合的快速查詢,同時還能有效處理子節點故障等問題。以下結合附圖,具體說明本發明實施例。圖I所示為本發明實施例提供的一種分布式Bloom過濾系統,包括分布式Bloom 過濾系統主控模塊I和若干個子節點2,子節點2是Bloom過濾器的真正實體,若干個子節點2形成一個閉合環,分布式Bloom過濾系統主控模塊I獨立于環外,分布式Bloom過濾系統主控模塊I用于完成當前輸入數據的第一重哈希的計算及當前輸入數據到子節點的映射,子節點2用于完成當前輸入數據的第二重哈希計算及相應的數據查詢,其中,所述相應的數據查詢是指數據的查詢、插入和清除。如圖I中所示,分布式Bloom過濾系統主控模塊I包括數據接收模塊3、一重哈希計算模塊4、子節點選擇映射模塊5、分布式Bloom過濾系統初始化模塊6、分布式Bloom過濾系統管理模塊7、故障處理模塊8和結果反饋模塊9,其中,分布式Bloom過濾系統初始化模塊6用于完成子節點2的日志加載、備份數據等子節點初始化工作,用于為各子節點2指定不同的標記(Token)值,然后再將所有子節點2 的Token值匯總提供給分布式Bloom過濾系統管理模塊7,具體地,若子節點數量為N,則按順序為分布式Bloom過濾系統中的N個子節點2分別指定一個初始化大整數型的Token值, 較佳地,若每個子節點2的配置一樣,則將第i個子節點2的Token值設定為=Ti = i* (2127/ N) ,0 ^ i < No此外,當分布式Bloom過濾系統首次啟動時,分布式Bloom過濾系統初始化模塊6將每個子節點2的Bloom位向量集合表上的所有數據都初始化為O。數據接收模塊3用于接收用戶當前輸入數據并提供給一重哈希計算模塊4 ;一重哈希計算模塊4用于對當前輸入數據進行一重哈希計算,并將計算結果提供給子節點選擇映射模塊5。子節點選擇映射模塊5用于根據當前輸入數據的一重哈希計算值,判斷該哈希值在哪個區間范圍內,為當前輸入數據選擇子節點2,并將當前輸入數據的一重哈希計算值通過分布式Bloom過濾系統管理模塊7發送給被選擇的子節點2。分布式Bloom過濾系統管理模塊7將當前輸入數據的一重哈希計算值提供給子節點選擇映射模塊5為當前輸入數據選擇的子節點2,此外,分布式Bloom過濾系統管理模塊 7還用于對各子節點2的數據操作模塊11的數據操作查詢進行管理,將各子節點2的數據操作模塊11返回的數據查詢結果通過結果反饋模塊9反饋給用戶,此外,分布式Bloom過濾系統管理模塊7還用于控制子節點的插入、拔除和更換。故障處理模塊8用于實時監測子節點2的狀態,并在子節點2出現故障時通知分布式Bloom過濾系統管理模塊7將當前故障子節點更換為一個新的子節點。每個子節點2包括二重哈希計算模塊10、數據操作模塊11和日志備份模塊12。二重哈希計算模塊10對收到的當前輸入數據的一重哈希計算值進行二重哈希計算,并將當前輸入數據的二重哈希計算值提供給數據操作模塊U。數據操作模塊11根據收到的當前輸入數據的二重哈希計算值進行數據的Bloom位地址映射,并在所映射的地址所指內存中進行當前輸入數據的查詢、插入或清除。日志備份模塊12用于備份本子節點2在運行過程中的操作日志以及數據。本發明實施例還提供一種對應于本發明提供的分布式Bloom過濾系統的分布式 Bloom過濾系統使用方法,如圖2所示,包括S21 :為系統中的每個子節點指定標記值。此處所述分布式Bloom過濾系統如圖I 所示,首次使用時,首先為各子節點分配不同的Token值,然后再在分布式Bloom過濾系統主控模塊上匯總所有子節點的Token值,以便做子節點映射。具體地,若子節點數量為N, 則按順序為分布式Bloom過濾系統中的N個子節點分別指定一個初始化大整數型的Token 值,由于在極端情況下,分布式Bloom過濾系統支持的子節點數可達2128個,因此Token值的數值范圍為O至2127。分布式Bloom過濾系統主控模塊在設定Token值時,應盡量使各個子節點平衡分布,Token值需根據具體的運行環境進行平衡設定。較佳地,若每個子節點的配置一樣,則將第i個子節點的Token值設定為Ti = i* (2127/N) ,0 ^ i < N, 這樣,分布式Bloom過濾系統中的所有子節點就組成一個Token環,環上的子節點按照Token大小值順序排序,以便子節點查詢時的二分查找,時間復雜度為O(IogN);分布式Bloom過濾系統成功啟動后,每個子節點都有一張數據表,用來維護該環上的Token值, 分布式Bloom過濾系統每次啟動都會加載該數據表。S22 :配置各子節點的數據集合表。此步驟中,如果該分布式Bloom過濾系統是首次啟動,則將每個子節點的Bloom位向量集合表上的所有數據都初始化為O。由于本發明實施例提供的數據查詢方法中,每個子節點在運行過程中都保存有自己寫的日志和數據備份,以防斷點引起的數據丟失等,因此若分布式Bloom過濾系統是非首次啟動,則向Bloom 位向量集合表中加載上次分布式Bloom過濾系統關閉時該子節點保存的日志和備份數據。S23 :接收用戶的當前輸入數據。S24 :對當前輸入數據進行數據查詢。圖3為圖2中S24的詳細流程圖,包括以下步驟S31 :分布式Bloom過濾系統主控模塊對當前輸入數據進行一重哈希計算。為方便描述,此處設用戶當前輸入的數據為D,則分布式Bloom過濾系統主控模塊通過哈希算法H 計算出一個128位的哈希值(一重哈希計算值),記為Td = H1 (D)S32 :分布式Bloom過濾系統主控模塊根據一重哈希計算值和各子節點的標記值, 為當前輸入數據選擇子節點。此步驟中,判斷一重哈希計算值Td如果滿足=Ti ^ Td ^ Ti+1, 認為當前輸入數據D落在分布式Bloom過濾系統的第i個子節點的數據集合表上,分布式 Bloom過濾系統主控模塊將當前輸入數據的一重哈希計算值提供給所選擇的第i個子節點。S33:被選擇的子節點根據收到的當前輸入數據的一重哈希計算值進行二重哈希計算。此步驟中,二重哈希計算得到當前輸入數據的二重哈希計算值,記為V = H1 (7d)這樣可以打亂原有數據的相關性,進一步減少查詢時的沖突概率。其中,T/共 128個二進制位。
S34:根據當前輸入數據的二重哈希計算值進行當前輸入數據在被選擇的子節點內的Bloom位地址映射。其中,各子節點的Bloom位向量集合表以二維位矩陣B[S,T]表示,其中,S表示 Bloom位向量的個數,T表示Bloom位向量的維度。為了進行當前輸入數據在被選擇的子節點內的Bloom位地址映射,取二重哈希計算值T/中的連續η位作為Bloom位向量的維度索引(從T/的128位中取η位出來,當成位矩陣B的列索引),比如最低的η位,并取T1/ 中其余連續的m位作為Bloom位向量索引(從T/的其余位中取m位,當成位矩陣B的行索引),比如最聞的m位,η和m需滿足如下的關系根據實際取得的η和m值可映射得到Bloom位地址。例如假設根據二重哈希計算值T/取得的m為01000000(共8個二進制位),η為0110 (共4個二進制位),則最后映射的Bloom位地址為B
。S35:在上一步驟所映射的地址所指內存中進行當前輸入數據的查詢,并向用戶返回數據查詢結果。具體包括在所述地址所指的內存中進行當前輸入數據的查詢,所述數據查詢過程是指在該內存中查詢對應的Bloom位狀態Bl00m位狀態為O表示當前輸入數據 (當前需要查詢的數據)不屬于當前查詢的子節點的數據集合表中,Bloom位狀態為I表示當前需要查詢的數據存在于當前查詢的子節點的數據集合表中,則向分布式Bloom過濾系統管理模塊返回“當前輸入數據存在于當前查詢的子節點的數據集合表中”的數據查詢結果O優選地,步驟S35中,若當前需要查詢的數據不存在于當前查詢的子節點的數據集合表中(查詢的Bloom位狀態為O),則將當前輸入數據插入當前所查詢的子節點數據集合表中,數據插入的具體過程為當前子節點先把當前輸入數據對應的一重哈希計算值Td 寫入已排序好的日志文件中,以防斷電數據丟失以及后續的數據維護,再對相應的Bloom 位進行置I操作,并向分布式Bloom過濾系統管理模塊返回“已將當前輸入數據插入當前查詢的子節點數據集合表”的數據查詢結果。優選地,步驟S35還可包括數據清除過程對于Bloom位向量的位狀態清除只需對原來的狀態進行異或操作,并賦值給新狀態即可;而日志文件的數據清除,由于數據已按大小排序好,只需進行一次二分查找,時間復雜度為O(IogN),即可快速查詢到需要刪除的數據位置,執行刪除即可。圖4所示為采用本發明提供的分布式Bloom過濾系統查詢過的數據在各子節點上的映射關系示意圖。圖4中,記錄過的數據到子節點的映射采用的是順時針分布機制,事實上,數據到子節點的映射也可以采用逆時針分布機制。圖4中僅是為了方便說明僅畫出了 4個子節點,顯然,本發明提供的分布式Bloom過濾系統中的子節點個數不僅限于此,圖2所示方法還包括子節點插入過程,具體地,假設現在需要在第i個子節點和第 i+Ι個子節點中間插入新子節點,新子節點的Token值記為Tnew,那么其必須滿足如下關系
權利要求
1.一種分布式Bloom過濾系統,其特征在于,包括分布式Bloom過濾系統主控模塊和若干個子節點;其中,所述子節點是Bloom過濾器;所述若干個子節點形成一個閉合環,所述分布式Bloom過濾系統主控模塊獨立于所述子節點形成的閉合環外外,所述分布式Bloom過濾系統主控模塊用于完成當前輸入數據的第一重哈希的計算及所述當前輸入數據到子節點的映射,所述子節點用于完成所述當前輸入數據的第二重哈希計算,并根據當前輸入數據的第二重哈希計算結果對所述當前輸入數據進行數據查詢。
2.如權利要求I所述的一種分布式Bloom過濾系統,其特征在于,所述分布式Bloom 過濾系統主控模塊包括分布式Bloom過濾系統初始化模塊、數據接收模塊、一重哈希計算模塊、子節點選擇映射模塊、分布式Bloom過濾系統管理模塊、故障處理模塊和結果反饋模塊;所述分布式Bloom過濾系統初始化模塊用于在所述分布式Bloom過濾系統首次啟動時,將每個子節點的Bloom位向量集合表上的所有數據都初始化為O,為每個子節點指定不同的標記值,并將每個子節點的標記值提供給所述分布式Bloom過濾系統管理模塊;還用于完成子節點的日志加載和數據備份;所述數據接收模塊用于接收用戶當前輸入數據并提供給所述一重哈希計算模塊;所述一重哈希計算模塊用于對所述當前輸入數據進行一重哈希計算,并將計算結果提供給所述子節點選擇映射模塊;所述子節點選擇映射模塊用于根據所述當前輸入數據的一重哈希計算值,為當前輸入數據選擇子節點,并將所述當前輸入數據的一重哈希計算值通過所述分布式Bloom過濾系統管理模塊發送給被選擇的子節點;所述分布式Bloom過濾系統管理模塊用于將所述當前輸入數據的一重哈希計算值提供給所述子節點選擇映射模塊為當前輸入數據選擇的子節點,還用于對各子節點對所述當前輸入數據的數據查詢結果進行管理,并將所述數據查詢結果通過所述結果反饋模塊反饋給用戶;還用于控制子節點的插入、拔除和更換;所述故障處理模塊用于實時監測子節點的狀態,并在子節點出現故障時通知所述分布式Bloom過濾系統管理模塊將當前故障子節點更換為一個新的子節點;所述子節點包括二重哈希計算模塊、數據操作模塊和日志備份模塊;所述二重哈希計算模塊用于對收到的所述當前輸入數據的一重哈希計算值進行二重哈希計算,并將所述當前輸入數據的二重哈希計算值提供給所述數據操作模塊;所述數據操作模塊根據收到的所述當前輸入數據的二重哈希計算值進行數據的Bloom位地址映射,并在所映射的地址所指內存中進行所述當前輸入數據的數據查詢;所述日志備份模塊用于備份本子節點在運行過程中的操作日志以及數據。
3.一種分布式Bloom過濾系統使用方法,其特征在于,包括步驟I :為分布式Bloom過濾系統中的各子節點指定標記值;步驟2 :配置各所述子節點的數據集合表;步驟3 :接收用戶的當前輸入數據;步驟4 :對所述當前輸入數據進行數據查詢。
4.如權利要求3所述的一種分布式Bloom過濾系統使用方法,其特征在于,所述步驟4包括步驟4. I :分布式Bloom過濾系統主控模塊對所述當前輸入數據進行一重哈希計算;步驟4. 2 :分布式Bloom過濾系統主控模塊根據所述當前輸入數據的一重哈希計算值和各子節點的標記值,為所述當前輸入數據選擇子節點;步驟4. 3 :被選擇的子節點根據收到的當前輸入數據的一重哈希計算值進行二重哈希計算;步驟4. 4 :根據當前輸入數據的二重哈希計算值進行所述當前輸入數據在被選擇的子節點內的Bloom位地址映射;步驟4. 5 :在上一步驟所映射的地址所指內存中進行所述當前輸入數據的數據查詢。
5.如權利要求4所述的一種分布式Bloom過濾系統使用方法,其特征在于,所述步驟 4. 2包括若所述當前輸入數據的一重哈希計算值Td如果滿足=Ti ^ Td ^ Ti+1,則認為所述當前輸入數據落在該分布式Bloom過濾系統的第i個子節點的數據集合表上,分布式Bloom 過濾系統主控模塊選擇所述第i個子節點作為所述當前輸入數據的數據查詢節點,將當前輸入數據的一重哈希計算值提供給所述第i個子節點;其中,O ^N, N為所述分布式 Bloom過濾系統中的子節點數,所述Ti和Ti+1為第i個子節點以及第i+Ι個子節點的標記值。
6.如權利要求5所述的一種分布式Bloom過濾系統使用方法,其特征在于,所述步驟 4. 4包括取所述當前數據的二重哈希計算值的連續η位作為Bloom位向量的維度索引,并取所述當前數據的二重哈希計算值的其余連續的m位作為Bloom位向量索引,進行所述當前輸入數據在被選擇的子節點內的Bloom位地址映射;其中,0 <n^ Iog2T,O <m^ Iog2S, S為Bloom位向量的個數,T表示Bloom位向量的維度。
7.如權利要求6所述的一種分布式Bloom過濾系統使用方法,其特征在于,所述步驟4.5包括在所述地址所指的內存中查詢對應的Bloom位狀態,若Bloom位狀態為0,則先把所述當前輸入數據的一重哈希計算值寫入當前查詢的子節點已排序好的日志文件中,再對相應的Bloom位進行置I操作,并向分布式Bloom過濾系統管理模塊返回“已將當前輸入數據插入當前查詢的子節點數據集合表”的數據查詢結果位狀態為1,則向分布式 Bloom過濾系統管理模塊返回“當前輸入數據存在于當前查詢的子節點的數據集合表中”的數據查詢結果。
8.如權利要求7所述的一種分布式Bloom過濾系統使用方法,其特征在于,所述步驟4.5還包括清除查詢到的數據。
9.如權利要求3至7任一項所述的一種分布式Bloom過濾系統使用方法,其特征在于,所述步驟3之前還包括在所述分布式Bloom過濾系統中插入新子節點根據當前分布式Bloom過濾系統的數據到子節點的映射機制,將原映射于當前插入的所述新子節點兩端的子節點上的部分數據遷移至所述新子節點,并更新插入所述新子節點后的所述分布式 Bloom過濾系統的各子節點的標記值。
10.如權利要求3至7任一所述的一種分布式Bloom過濾系統使用方法,其特征在于,所述步驟3之前還包括拔除所述分布式Bloom過濾系統中的子節點根據當前分布式 Bloom過濾系統的數據到子節點的映射機制,將需要拔除的子節點上的數據遷移至與所述需要拔除的子節點相鄰的兩個子節點之中的一個子節點上,并更新拔除子節點后的所述分布式Bloom過濾系統的各子節點的標記值。
11.如權利要求3至7任一所述的一種分布式Bloom過濾系統使用方法,其特征在于, 當檢測到所述分布式Bloom過濾系統中有子節點出現故障時,將一個新子節點的標記值設為故障子節點的標記值,并將所述故障子節點的日志數據加載至所述新子節點。
全文摘要
本發明提供一種分布式Bloom過濾系統,包括分布式Bloom過濾系統主控模塊和若干個子節點;其中,所述子節點是Bloom過濾器;所述若干個子節點形成一個閉合環,所述分布式Bloom過濾系統主控模塊獨立于所述子節點形成的閉合環外外,所述分布式Bloom過濾系統主控模塊用于完成當前輸入數據的第一重哈希的計算及所述當前輸入數據到子節點的映射,所述子節點用于完成所述當前輸入數據的第二重哈希計算,并根據當前輸入數據的第二重哈希計算結果對所述當前輸入數據進行數據查詢。本發明提供的方案不僅檢索速度快、精度高、擴展性好,而且特征值存儲空間要求低,特別適合云計算時代的資源查詢及信息檢索。
文檔編號G06F17/30GK102609446SQ20121000168
公開日2012年7月25日 申請日期2012年1月5日 優先權日2012年1月5日
發明者張永光, 湯偉賓, 羅佳 申請人:廈門市美亞柏科信息股份有限公司