这边的爬虫系统又出现了一些个瓶颈。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成“环”。为了避免形成“环”,就需要知道蜘蛛已经访问过那些URL。一开始我们首先排除掉了set集合,虽然set集合比数组类型的list。但是内存占用的大小,和几十亿条数据对比的时候,还是很出现性能的瓶颈 。 


这个时候大家可以用bitmap和bloomfilter来做高效的处理。 bitmap 其实和bloomfilter很像,但是他的冲突率要比bloomfilter要高 。 


Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。


bloomfilter和bitmap都不能做删除的, 你要是有删除的需求,可以用bloomfilter的加强版,cbf    ~

我们现在已经把bloomfilter用上了,性能上和内存消耗上有长足的进步。 




对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品

4则回应给“使用bloomfilter实现亿级别爬虫url链接去重对比”

  1. go说道:

    写的不错

  2. SA说道:

    take me , big god!

发表评论