如何在多台服务器上使用布隆过滤器?

Fra*_*fka 1 java web-crawler bloom-filter

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

小智 8

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

笔记:

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

  • 您可能想要解决这个问题,即对布隆过滤器中的项目的请求会随着时间的推移而过期,从而允许您在给定时间后重新访问 url。