Bloomfilter 的应用场景
??????? Bloomfilter 一般用于檢測(cè)某元素是否在集合中存在,它的目標(biāo)是解決在大數(shù)據(jù)量情況的元素判定。它的優(yōu)點(diǎn)是它提供的數(shù)據(jù)結(jié)構(gòu)具有非常高的時(shí)間查詢和空間存儲(chǔ)效率,缺點(diǎn)是可能造成誤判,就是說,它判定某元素在集合中,但是其實(shí)有可能他不在集合里面,當(dāng)然,反過來說,如果他判定元素不在集合里面,那么元素肯定是不在集合里面的。因此它的應(yīng)用場(chǎng)景實(shí)用于能夠容忍小概率事件的誤判產(chǎn)生的情況,簡而言之,以正確率換空間和時(shí)間。
?????? 目前的應(yīng)用場(chǎng)景比較多,整理如下:
-
黑名單
最典型的一個(gè)應(yīng)用就是黑名單功能,對(duì)用戶名稱或者IP或者Email進(jìn)行過濾,每次檢查時(shí)用key進(jìn)行hash后,如果不在黑名單內(nèi)的,肯定可以通行,如果在的則不允許通過,誤判情況增加一個(gè)排除名單來進(jìn)行排除。
??? 誤判情況:將正常用戶判定為黑名單用戶
-
爬蟲重復(fù)URL檢測(cè)
??? 在爬取網(wǎng)站URL時(shí),要檢測(cè)這條URL是否已經(jīng)訪問過。
? 誤判情況:沒有訪問過的誤判為訪問過
-
字典糾錯(cuò)
???? 檢查單詞拼寫是否正確
? 誤判情況:錯(cuò)誤的單詞誤判為正確。
-
磁盤文件檢測(cè)
????? 將磁盤中或者數(shù)據(jù)庫中數(shù)據(jù)key存入該結(jié)構(gòu)中,檢測(cè)要訪問的數(shù)據(jù)是否在磁盤或數(shù)據(jù)庫中,然后再發(fā)起訪問,避免空查詢?cè)斐纱疟P或數(shù)據(jù)庫壓力。
? 誤判情況:不存在該數(shù)據(jù)卻誤判為有該數(shù)據(jù)。
-
?? CDN(squid)代理緩存技術(shù)
? 先查找本地有無cache,如果沒有則到其他兄弟 cache服務(wù)器上去查找。為了避免無謂的查詢,在每個(gè)cache服務(wù)器上保存其兄弟服務(wù)器的緩存關(guān)鍵字,以bloomfilter方式存儲(chǔ),再去其他cache服務(wù)器查找之前,先檢查該結(jié)構(gòu)是否有url,如果有存在url,再去對(duì)應(yīng)服務(wù)器查找。
? 誤判情況: 對(duì)應(yīng)服務(wù)器不存在該URL的緩存。
總結(jié)
以上是生活随笔為你收集整理的Bloomfilter 的应用场景的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到墓地怎么回事
- 下一篇: ImageView倒影效果