我有一个运行多个perl工作进程的系统,所有这些进程都需要查找bloom过滤器。如果我使用标准布隆过滤器perl模块(Bloom :: Filter或其他),则每个子进程都需要添加到bloomfilter中 有没有办法可以使用在多个进程之间共享的bloomfilter
我甚至需要将数据保存到磁盘,因为每次重新启动系统时我都可以重用bloomfilter数据
答案 0 :(得分:2)
解决此问题的常用方法是将Bloom过滤器存储在共享数据存储中。支持此类工作量的良好系统是Redis。有Ruby和Java的开源实现。
如果您只需要一个简单的Bloom过滤器,您可以自己使用Redis驱动程序实现一个(从one of my presentations获取):
简而言之:在Perl中编写上面的两个方法,你就拥有了一个功能齐全的Bloom过滤器。要提高性能,请避免使用pipelining为每个SETBIT和GETBIT进行往返,并计算optimal number of hash functions。
基于Java的实现实现了大约250K插入的吞吐量并且包含每秒调用。