如何跨多个服务器使用Bloom Filter?

时间:2015-12-31 17:08:16

标签: java web-crawler bloom-filter

我有50个EC2实例都在抓取网页。现在他们在后端使用Redis来跟踪已经被抓取的URL;然而,ElastiCache变得成本过高,而且我一直遇到打开太多连接的问题。我一直在考虑将Bloom Filter作为后端实现,但我不知道如何做到这一点,以便所有50台服务器共享相同的布隆过滤器。我不希望每个人都拥有自己独立的布隆过滤器,否则他们基本上都会做同样的任务。

1 个答案:

答案 0 :(得分:0)

您仍然可以使用Redis来跟踪已经以集中方式处理/抓取的url,但是可以通过使用RedisBloom(redisbloom.io)的Bloom过滤器来减少内存占用。 RedisBloom是Redis Module,它使用几种概率数据结构扩展了Redis。

注意:

  • 如果单个bloom过滤器太大或单个碎片的吞吐量变得过高,则可以考虑针对这种情况使用多个bloom过滤器,这些过滤器可以分布在Redis群集中,并计算适当的过滤器(键)。

  • 您可能希望更改this issue,该请求会要求Bloom过滤器中的项随着时间而到期,从而允许您在给定时间后重新访问url。

相关问题