面试官:如何设计亿级数据下的URL去重机制,考虑使用布隆过滤器?

2026-06-10 07:220阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1307个文字,预计阅读时间需要6分钟。

面试官:如何设计亿级数据下的URL去重机制,考虑使用布隆过滤器?

介绍+我们以循序渐进的方式逐渐认识布隆过滤器。首先提出一个问题:爬虫系统中URL是如何判重的?你可能首先想到的是将URL放入一个set中,但当数据量很大时,将URL放在set中是不现实的。

面试官:如何设计亿级数据下的URL去重机制,考虑使用布隆过滤器?


介绍

我们以演进的方式来逐渐认识布隆过滤器。先抛出一个问题爬虫系统中URL是怎么判重的?你可能最先想到的是将URL放到一个set中,但是当数据很多的时候,放在set中是不现实的。

这时你就可能想到用数组+hash函数来实现了。

index = hash(URL) % table.length

即求出URL的hash值对数组长度取模,得到数组的下标,然后设置table[index] = 1,当然数组刚开始的元素都为0

这样每次有新的URL来的时候,先求出index,然后看table[index]的值,当为0的时候,URL肯定不存在,当为1的时候URL可能存在,因为有可能发生hash冲突。即第一次
hash(www.baidu.com) % table.length = 1,table[1]=1,第二次hash(www.javashitang.com) % table.length = 1,此时table[1]=1,系统会认为www.javashitang.com已经爬取过了,其实并没有爬取。

阅读全文

本文共计1307个文字,预计阅读时间需要6分钟。

面试官:如何设计亿级数据下的URL去重机制,考虑使用布隆过滤器?

介绍+我们以循序渐进的方式逐渐认识布隆过滤器。首先提出一个问题:爬虫系统中URL是如何判重的?你可能首先想到的是将URL放入一个set中,但当数据量很大时,将URL放在set中是不现实的。

面试官:如何设计亿级数据下的URL去重机制,考虑使用布隆过滤器?


介绍

我们以演进的方式来逐渐认识布隆过滤器。先抛出一个问题爬虫系统中URL是怎么判重的?你可能最先想到的是将URL放到一个set中,但是当数据很多的时候,放在set中是不现实的。

这时你就可能想到用数组+hash函数来实现了。

index = hash(URL) % table.length

即求出URL的hash值对数组长度取模,得到数组的下标,然后设置table[index] = 1,当然数组刚开始的元素都为0

这样每次有新的URL来的时候,先求出index,然后看table[index]的值,当为0的时候,URL肯定不存在,当为1的时候URL可能存在,因为有可能发生hash冲突。即第一次
hash(www.baidu.com) % table.length = 1,table[1]=1,第二次hash(www.javashitang.com) % table.length = 1,此时table[1]=1,系统会认为www.javashitang.com已经爬取过了,其实并没有爬取。

阅读全文