一种分布式BLOOM过滤系统及其使用方法.pdf

上传人:54 文档编号:4240276 上传时间:2018-09-09 格式:PDF 页数:15 大小:595.77KB
返回 下载 相关 举报
摘要
申请专利号:

CN201210001685.2

申请日:

2012.01.05

公开号:

CN102609446A

公开日:

2012.07.25

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20120105|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

厦门市美亚柏科信息股份有限公司

发明人:

汤伟宾; 罗佳; 张永光

地址:

361008 福建省厦门市软件园二期观日路12号美亚柏科大厦

优先权:

专利代理机构:

北京恒都律师事务所 11395

代理人:

何自刚

PDF下载: PDF下载
内容摘要

本发明提供一种分布式Bloom过滤系统,包括分布式Bloom过滤系统主控模块和若干个子节点;其中,所述子节点是Bloom过滤器;所述若干个子节点形成一个闭合环,所述分布式Bloom过滤系统主控模块独立于所述子节点形成的闭合环外外,所述分布式Bloom过滤系统主控模块用于完成当前输入数据的第一重哈希的计算及所述当前输入数据到子节点的映射,所述子节点用于完成所述当前输入数据的第二重哈希计算,并根据当前输入数据的第二重哈希计算结果对所述当前输入数据进行数据查询。本发明提供的方案不仅检索速度快、精度高、扩展性好,而且特征值存储空间要求低,特别适合云计算时代的资源查询及信息检索。

权利要求书

1.一种分布式Bloom过滤系统,其特征在于,包括分布式Bloom过滤系统主控模块和若干个子节点;其中,所述子节点是Bloom过滤器;所述若干个子节点形成一个闭合环,所述分布式Bloom过滤系统主控模块独立于所述子节点形成的闭合环外外,所述分布式Bloom过滤系统主控模块用于完成当前输入数据的第一重哈希的计算及所述当前输入数据到子节点的映射,所述子节点用于完成所述当前输入数据的第二重哈希计算,并根据当前输入数据的第二重哈希计算结果对所述当前输入数据进行数据查询。2.如权利要求1所述的一种分布式Bloom过滤系统,其特征在于,所述分布式Bloom过滤系统主控模块包括:分布式Bloom过滤系统初始化模块、数据接收模块、一重哈希计算模块、子节点选择映射模块、分布式Bloom过滤系统管理模块、故障处理模块和结果反馈模块;所述分布式Bloom过滤系统初始化模块用于在所述分布式Bloom过滤系统首次启动时,将每个子节点的Bloom位向量集合表上的所有数据都初始化为0,为每个子节点指定不同的标记值,并将每个子节点的标记值提供给所述分布式Bloom过滤系统管理模块;还用于完成子节点的日志加载和数据备份;所述数据接收模块用于接收用户当前输入数据并提供给所述一重哈希计算模块;所述一重哈希计算模块用于对所述当前输入数据进行一重哈希计算,并将计算结果提供给所述子节点选择映射模块;所述子节点选择映射模块用于根据所述当前输入数据的一重哈希计算值,为当前输入数据选择子节点,并将所述当前输入数据的一重哈希计算值 通过所述分布式Bloom过滤系统管理模块发送给被选择的子节点;所述分布式Bloom过滤系统管理模块用于将所述当前输入数据的一重哈希计算值提供给所述子节点选择映射模块为当前输入数据选择的子节点,还用于对各子节点对所述当前输入数据的数据查询结果进行管理,并将所述数据查询结果通过所述结果反馈模块反馈给用户;还用于控制子节点的插入、拔除和更换;所述故障处理模块用于实时监测子节点的状态,并在子节点出现故障时通知所述分布式Bloom过滤系统管理模块将当前故障子节点更换为一个新的子节点;所述子节点包括二重哈希计算模块、数据操作模块和日志备份模块;所述二重哈希计算模块用于对收到的所述当前输入数据的一重哈希计算值进行二重哈希计算,并将所述当前输入数据的二重哈希计算值提供给所述数据操作模块;所述数据操作模块根据收到的所述当前输入数据的二重哈希计算值进行数据的Bloom位地址映射,并在所映射的地址所指内存中进行所述当前输入数据的数据查询;所述日志备份模块用于备份本子节点在运行过程中的操作日志以及数据。3.一种分布式Bloom过滤系统使用方法,其特征在于,包括:步骤1:为分布式Bloom过滤系统中的各子节点指定标记值;步骤2:配置各所述子节点的数据集合表;步骤3:接收用户的当前输入数据;步骤4:对所述当前输入数据进行数据查询。4.如权利要求3所述的一种分布式Bloom过滤系统使用方法,其特征在 于,所述步骤4包括:步骤4.1:分布式Bloom过滤系统主控模块对所述当前输入数据进行一重哈希计算;步骤4.2:分布式Bloom过滤系统主控模块根据所述当前输入数据的一重哈希计算值和各子节点的标记值,为所述当前输入数据选择子节点;步骤4.3:被选择的子节点根据收到的当前输入数据的一重哈希计算值进行二重哈希计算;步骤4.4:根据当前输入数据的二重哈希计算值进行所述当前输入数据在被选择的子节点内的Bloom位地址映射;步骤4.5:在上一步骤所映射的地址所指内存中进行所述当前输入数据的数据查询。5.如权利要求4所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤4.2包括:若所述当前输入数据的一重哈希计算值TD如果满足:Ti≤TD≤Ti+1,则认为所述当前输入数据落在该分布式Bloom过滤系统的第i个子节点的数据集合表上,分布式Bloom过滤系统主控模块选择所述第i个子节点作为所述当前输入数据的数据查询节点,将当前输入数据的一重哈希计算值提供给所述第i个子节点;其中,0≤i≤N,N为所述分布式Bloom过滤系统中的子节点数,所述Ti和Ti+1为第i个子节点以及第i+1个子节点的标记值。6.如权利要求5所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤4.4包括:取所述当前数据的二重哈希计算值的连续n位作为Bloom位向量的维度索引,并取所述当前数据的二重哈希计算值的其余连续 的m位作为Bloom位向量索引,进行所述当前输入数据在被选择的子节点内的Bloom位地址映射;其中,0<n≤log2T,0<m≤log2S,S为Bloom位向量的个数,T表示Bloom位向量的维度。7.如权利要求6所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤4.5包括:在所述地址所指的内存中查询对应的Bloom位状态,若Bloom位状态为0,则先把所述当前输入数据的一重哈希计算值写入当前查询的子节点已排序好的日志文件中,再对相应的Bloom位进行置1操作,并向分布式Bloom过滤系统管理模块返回“已将当前输入数据插入当前查询的子节点数据集合表”的数据查询结果;若Bloom位状态为1,则向分布式Bloom过滤系统管理模块返回“当前输入数据存在于当前查询的子节点的数据集合表中”的数据查询结果。8.如权利要求7所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤4.5还包括:清除查询到的数据。9.如权利要求3至7任一项所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤3之前还包括在所述分布式Bloom过滤系统中插入新子节点:根据当前分布式Bloom过滤系统的数据到子节点的映射机制,将原映射于当前插入的所述新子节点两端的子节点上的部分数据迁移至所述新子节点,并更新插入所述新子节点后的所述分布式Bloom过滤系统的各子节点的标记值。10.如权利要求3至7任一所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤3之前还包括拔除所述分布式Bloom过滤系统中的子节点:根据当前分布式Bloom过滤系统的数据到子节点的映射机制,将需要 拔除的子节点上的数据迁移至与所述需要拔除的子节点相邻的两个子节点之中的一个子节点上,并更新拔除子节点后的所述分布式Bloom过滤系统的各子节点的标记值。11.如权利要求3至7任一所述的一种分布式Bloom过滤系统使用方法,其特征在于,当检测到所述分布式Bloom过滤系统中有子节点出现故障时,将一个新子节点的标记值设为故障子节点的标记值,并将所述故障子节点的日志数据加载至所述新子节点。 

说明书

一种分布式Bloom过滤系统及其使用方法

技术领域

本发明涉及信息检索及过滤、云计算、分布式计算等计算机技术领域,尤其涉及一种分布式Bloom过滤系统及其使用方法。 

背景技术

随着互联网技术的发展,时时刻刻需要实现资源的共享及数据的交互,分布式技术、云计算技术是当今互联网技术的发展潮流及其研究热点。在资源共享时,我们经常需要判断某个表项是否包含在一个数据集中,例如:在网络爬虫里,一个网址是否已被访问过;对于一个网址的访问统计,当前的连接IP是否已来访问过等等,这就需要进行资源查询或信息检索。 

在进行资源查询的信息处理过程中,采用何种查找方式依赖于信息的表示策略。在云计算时代的应用环境中,处理的对象都是海量数据,要在海量的数据里面实现资源的快速查询是有一定的技术难度的。此外,传统的哈希表检索方式,虽然可以实现快速查询,但是会造成极大的存储空间浪费,而且当数据集大到一定程度时,哈希表的空间利用率会更低。作为哈希表的一个变种,现有技术中的Bloom过滤器能够以极小的空间完成哈希判功能。在能够容忍的小范围误判的前提下,Bloom过滤器能很好地实现低存储要求和高响应速度的要求。然而,现有技术中的Bloom过滤器都是以单子节点形式存在,显然,在信息大爆炸的时代,单子节点的Bloom过滤器已经无法满足现今的海量数据检索需求,因此需要一种不仅具有很好的时间和空间检索效 率、且能够对海量数据进行检索的方案。 

发明内容

有鉴于此,本发明提供一种分布式Bloom过滤系统及其使用方法,用以解决现有技术中单子节点Bloom过滤器无法实现对海量数据的快速检索查询的缺点,本发明提供的方案能够实现数据的快速查询以及故障处理,耗费的存储空间少,同时具有高效检索、易扩展等优点,此外还能实现分布式Bloom过滤系统内子节点的随意插拔,实用性强。 

本发明提供的一种分布式Bloom过滤系统,包括分布式Bloom过滤系统主控模块和若干个子节点;其中,所述子节点是Bloom过滤器;所述若干个子节点形成一个闭合环,所述分布式Bloom过滤系统主控模块独立于所述子节点形成的闭合环外外,所述分布式Bloom过滤系统主控模块用于完成当前输入数据的第一重哈希的计算及所述当前输入数据到子节点的映射,所述子节点用于完成所述当前输入数据的第二重哈希计算,并根据当前输入数据的第二重哈希计算结果对所述当前输入数据进行数据查询。 

所述分布式Bloom过滤系统主控模块包括:分布式Bloom过滤系统初始化模块、数据接收模块、一重哈希计算模块、子节点选择映射模块、分布式Bloom过滤系统管理模块、故障处理模块和结果反馈模块;所述分布式Bloom过滤系统初始化模块用于在所述分布式Bloom过滤系统首次启动时,将每个子节点的Bloom位向量集合表上的所有数据都初始化为0,为每个子节点指定不同的标记值,并将每个子节点的标记值提供给所述分布式Bloom过滤系统管理模块;还用于完成子节点的日志加载和数据备份;所述数据接收模块 用于接收用户当前输入数据并提供给所述一重哈希计算模块;所述一重哈希计算模块用于对所述当前输入数据进行一重哈希计算,并将计算结果提供给所述子节点选择映射模块;所述子节点选择映射模块用于根据所述当前输入数据的一重哈希计算值,为当前输入数据选择子节点,并将所述当前输入数据的一重哈希计算值通过所述分布式Bloom过滤系统管理模块发送给被选择的子节点;所述分布式Bloom过滤系统管理模块用于将所述当前输入数据的一重哈希计算值提供给所述子节点选择映射模块为当前输入数据选择的子节点,还用于对各子节点对所述当前输入数据的数据查询结果进行管理,并将所述数据查询结果通过所述结果反馈模块反馈给用户;还用于控制子节点的插入、拔除和更换;所述故障处理模块用于实时监测子节点的状态,并在子节点出现故障时通知所述分布式Bloom过滤系统管理模块将当前故障子节点更换为一个新的子节点; 

所述子节点包括二重哈希计算模块、数据操作模块和日志备份模块;所述二重哈希计算模块用于对收到的所述当前输入数据的一重哈希计算值进行二重哈希计算,并将所述当前输入数据的二重哈希计算值提供给所述数据操作模块;所述数据操作模块根据收到的所述当前输入数据的二重哈希计算值进行数据的Bloom位地址映射,并在所映射的地址所指内存中进行所述当前输入数据的数据查询;所述日志备份模块用于备份本子节点在运行过程中的操作日志以及数据。 

本发明提供的一种对应于本发明提供的分布式Bloom过滤系统的分布式Bloom过滤系统使用方法,包括:步骤1:为分布式Bloom过滤系统中的各子节点指定标记值;步骤2:配置各所述子节点的数据集合表;步骤3:接收 用户的当前输入数据;步骤4:对所述当前输入数据进行数据查询。 

所述步骤4包括: 

步骤4.1:分布式Bloom过滤系统主控模块对所述当前输入数据进行一重哈希计算; 

步骤4.2:分布式Bloom过滤系统主控模块根据所述当前输入数据的一重哈希计算值和各子节点的标记值,为所述当前输入数据选择子节点; 

步骤4.3:被选择的子节点根据收到的当前输入数据的一重哈希计算值进行二重哈希计算; 

步骤4.4:根据当前输入数据的二重哈希计算值进行所述当前输入数据在被选择的子节点内的Bloom位地址映射; 

步骤4.5:在上一步骤所映射的地址所指内存中进行所述当前输入数据的数据查询。 

所述步骤4.2包括:若所述当前输入数据的一重哈希计算值TD如果满足:Ti≤TD≤Ti+1,则认为所述当前输入数据落在该分布式Bloom过滤系统的第i个子节点的数据集合表上,分布式Bloom过滤系统主控模块选择所述第i个子节点作为所述当前输入数据的数据查询节点,将当前输入数据的一重哈希计算值提供给所述第i个子节点;其中,0≤i≤N,N为所述分布式Bloom过滤系统中的子节点数,所述Ti和Ti+1为第i个子节点以及第i+1个子节点的标记值。 

所述步骤4.4包括:取所述当前数据的二重哈希计算值的连续n位作为Bloom位向量的维度索引,并取所述当前数据的二重哈希计算值的其余连续的m位作为Bloom位向量索引,进行所述当前输入数据在被选择的子节点内 的Bloom位地址映射;其中,0<n≤log2T,0<m≤log2S,S为Bloom位向量的个数,T表示Bloom位向量的维度。 

所述步骤4.5包括:在所述地址所指的内存中查询对应的Bloom位状态,若Bloom位状态为0,则先把所述当前输入数据的一重哈希计算值写入当前查询的子节点已排序好的日志文件中,再对相应的Bloom位进行置1操作,并向分布式Bloom过滤系统管理模块返回“已将当前输入数据插入当前查询的子节点数据集合表”的数据查询结果;若Bloom位状态为1,则向分布式Bloom过滤系统管理模块返回“当前输入数据存在于当前查询的子节点的数据集合表中”的数据查询结果。 

所述步骤4.5还包括:清除查询到的数据。 

所述步骤3之前还包括在所述分布式Bloom过滤系统中插入新子节点:根据当前分布式Bloom过滤系统的数据到子节点的映射机制,将原映射于当前插入的所述新子节点两端的子节点上的部分数据迁移至所述新子节点,并更新插入所述新子节点后的所述分布式Bloom过滤系统的各子节点的标记值。 

所述步骤3之前还包括拔除所述分布式Bloom过滤系统中的子节点:根据当前分布式Bloom过滤系统的数据到子节点的映射机制,将需要拔除的子节点上的数据迁移至与所述需要拔除的子节点相邻的两个子节点之中的一个子节点上,并更新拔除子节点后的所述分布式Bloom过滤系统的各子节点的标记值。 

当检测到所述分布式Bloom过滤系统中有子节点出现故障时,将一个新子节点的标记值设为故障子节点的标记值,并将所述故障子节点的日志数据 加载至所述新子节点。 

本发明提供的分布式Bloom过滤系统及其使用方法将分布式Bloom过滤系统中的所有子节点组成一个环,通过分布式Bloom过滤系统中的分布式Bloom过滤系统主控模块管理子节点,分布式Bloom过滤系统主控模块结合子节点对输入数据进行多重哈希转化,以实现子节点和数据集合的快速查询,同时能有效处理子节点故障等问题。本发明提供的方案不仅检索速度快、精度高、扩展性好,而且特征值存储空间要求低,特别适合云计算时代的资源查询及信息检索。 

附图说明

图1是本发明实施例提供的一种分布式Bloom过滤系统; 

图2是本发明实施例提供的分布式Bloom过滤系统使用方法; 

图3是图2中S24的详细流程图; 

图4是采用本发明提供的分布式Bloom过滤系统查询过的数据在各子节点上的映射关系示意图; 

图5是对图4所示结构插入子节点Tnew后的分布式Bloom过滤系统子节点以及原数据和子节点映射关系变化示意图; 

图6是对图4所示结构拔除子节点1后的分布式Bloom过滤系统子节点以及原数据和子节点映射关系变化示意图。 

具体实施方式

为了克服现有技术之不足,本发明实施例提供一种分布式Bloom过滤系统及其使用方法,该方案将分布式Bloom过滤系统主控模块和若干个子节点 组成一个分布式Bloom过滤系统,分布式Bloom过滤系统中的所有子节点组成一个封闭环,通过分布式Bloom过滤系统主控模块完成数据第一重哈希的计算及子节点的映射,而子节点则完成数据的二重哈希计算及相应的数据操作,能够对输入数据进行多重哈希转化,实现子节点和数据集合的快速查询,同时还能有效处理子节点故障等问题。 

以下结合附图,具体说明本发明实施例。 

图1所示为本发明实施例提供的一种分布式Bloom过滤系统,包括分布式Bloom过滤系统主控模块1和若干个子节点2,子节点2是Bloom过滤器的真正实体,若干个子节点2形成一个闭合环,分布式Bloom过滤系统主控模块1独立于环外,分布式Bloom过滤系统主控模块1用于完成当前输入数据的第一重哈希的计算及当前输入数据到子节点的映射,子节点2用于完成当前输入数据的第二重哈希计算及相应的数据查询,其中,所述相应的数据查询是指数据的查询、插入和清除。 

如图1中所示,分布式Bloom过滤系统主控模块1包括数据接收模块3、一重哈希计算模块4、子节点选择映射模块5、分布式Bloom过滤系统初始化模块6、分布式Bloom过滤系统管理模块7、故障处理模块8和结果反馈模块9,其中, 

分布式Bloom过滤系统初始化模块6用于完成子节点2的日志加载、备份数据等子节点初始化工作,用于为各子节点2指定不同的标记(Token)值,然后再将所有子节点2的Token值汇总提供给分布式Bloom过滤系统管理模块7,具体地,若子节点数量为N,则按顺序为分布式Bloom过滤系统中的N个子节点2分别指定一个初始化大整数型的Token值,较佳地,若每个子节 点2的配置一样,则将第i个子节点2的Token值设定为:Ti=i*(2127/N),0≤i<N。此外,当分布式Bloom过滤系统首次启动时,分布式Bloom过滤系统初始化模块6将每个子节点2的Bloom位向量集合表上的所有数据都初始化为0。 

数据接收模块3用于接收用户当前输入数据并提供给一重哈希计算模块4;一重哈希计算模块4用于对当前输入数据进行一重哈希计算,并将计算结果提供给子节点选择映射模块5。 

子节点选择映射模块5用于根据当前输入数据的一重哈希计算值,判断该哈希值在哪个区间范围内,为当前输入数据选择子节点2,并将当前输入数据的一重哈希计算值通过分布式Bloom过滤系统管理模块7发送给被选择的子节点2。 

分布式Bloom过滤系统管理模块7将当前输入数据的一重哈希计算值提供给子节点选择映射模块5为当前输入数据选择的子节点2,此外,分布式Bloom过滤系统管理模块7还用于对各子节点2的数据操作模块11的数据操作查询进行管理,将各子节点2的数据操作模块11返回的数据查询结果通过结果反馈模块9反馈给用户,此外,分布式Bloom过滤系统管理模块7还用于控制子节点的插入、拔除和更换。 

故障处理模块8用于实时监测子节点2的状态,并在子节点2出现故障时通知分布式Bloom过滤系统管理模块7将当前故障子节点更换为一个新的子节点。 

每个子节点2包括二重哈希计算模块10、数据操作模块11和日志备份模块12。二重哈希计算模块10对收到的当前输入数据的一重哈希计算值进行二 重哈希计算,并将当前输入数据的二重哈希计算值提供给数据操作模块11。数据操作模块11根据收到的当前输入数据的二重哈希计算值进行数据的Bloom位地址映射,并在所映射的地址所指内存中进行当前输入数据的查询、插入或清除。日志备份模块12用于备份本子节点2在运行过程中的操作日志以及数据。 

本发明实施例还提供一种对应于本发明提供的分布式Bloom过滤系统的分布式Bloom过滤系统使用方法,如图2所示,包括: 

S21:为系统中的每个子节点指定标记值。此处所述分布式Bloom过滤系统如图1所示,首次使用时,首先为各子节点分配不同的Token值,然后再在分布式Bloom过滤系统主控模块上汇总所有子节点的Token值,以便做子节点映射。具体地,若子节点数量为N,则按顺序为分布式Bloom过滤系统中的N个子节点分别指定一个初始化大整数型的Token值,由于在极端情况下,分布式Bloom过滤系统支持的子节点数可达2128个,因此Token值的数值范围为0至2127。分布式Bloom过滤系统主控模块在设定Token值时,应尽量使各个子节点平衡分布,Token值需根据具体的运行环境进行平衡设定。较佳地,若每个子节点的配置一样,则将第i个子节点的Token值设定为: 

Ti=i*(2127/N),0≤i<N, 

这样,分布式Bloom过滤系统中的所有子节点就组成一个Token环,环上的子节点按照Token大小值顺序排序,以便子节点查询时的二分查找,时间复杂度为O(logN);分布式Bloom过滤系统成功启动后,每个子节点都有一张数据表,用来维护该环上的Token值,分布式Bloom过滤系统每次启动都会加载该数据表。 

S22:配置各子节点的数据集合表。此步骤中,如果该分布式Bloom过滤系统是首次启动,则将每个子节点的Bloom位向量集合表上的所有数据都初始化为0。由于本发明实施例提供的数据查询方法中,每个子节点在运行过程中都保存有自己写的日志和数据备份,以防断点引起的数据丢失等,因此若分布式Bloom过滤系统是非首次启动,则向Bloom位向量集合表中加载上次分布式Bloom过滤系统关闭时该子节点保存的日志和备份数据。 

S23:接收用户的当前输入数据。 

S24:对当前输入数据进行数据查询。 

图3为图2中S24的详细流程图,包括以下步骤: 

S31:分布式Bloom过滤系统主控模块对当前输入数据进行一重哈希计算。为方便描述,此处设用户当前输入的数据为D,则分布式Bloom过滤系统主控模块通过哈希算法H计算出一个128位的哈希值(一重哈希计算值),记为: 

TD=H1(D) 

S32:分布式Bloom过滤系统主控模块根据一重哈希计算值和各子节点的标记值,为当前输入数据选择子节点。此步骤中,判断一重哈希计算值TD如果满足:Ti≤TD≤Ti+1,认为当前输入数据D落在分布式Bloom过滤系统的第i个子节点的数据集合表上,分布式Bloom过滤系统主控模块将当前输入数据的一重哈希计算值提供给所选择的第i个子节点。 

S33:被选择的子节点根据收到的当前输入数据的一重哈希计算值进行二重哈希计算。此步骤中,二重哈希计算得到当前输入数据的二重哈希计算值,记为: 

TD′=H1(7D) 

这样可以打乱原有数据的相关性,进一步减少查询时的冲突概率。其中,TD′共128个二进制位。 

S34:根据当前输入数据的二重哈希计算值进行当前输入数据在被选择的子节点内的Bloom位地址映射。 

其中,各子节点的Bloom位向量集合表以二维位矩阵B[S,T]表示,其中,S表示Bloom位向量的个数,T表示Bloom位向量的维度。为了进行当前输入数据在被选择的子节点内的Bloom位地址映射,取二重哈希计算值TD′中的连续n位作为Bloom位向量的维度索引(从TD′的128位中取n位出来,当成位矩阵B的列索引),比如最低的n位,并取TD′中其余连续的m位作为Bloom位向量索引(从TD′的其余位中取m位,当成位矩阵B的行索引),比如最高的m位,n和m需满足如下的关系: 

0 < n log 2 T 0 < m log 2 S ]]>

根据实际取得的n和m值可映射得到Bloom位地址。例如:假设根据二重哈希计算值TD′取得的m为01000000(共8个二进制位),n为0110(共4个二进制位),则最后映射的Bloom位地址为B[0x40,0x06]。 

S35:在上一步骤所映射的地址所指内存中进行当前输入数据的查询,并向用户返回数据查询结果。具体包括:在所述地址所指的内存中进行当前输入数据的查询,所述数据查询过程是指在该内存中查询对应的Bloom位状态:Bloom位状态为0表示当前输入数据(当前需要查询的数据)不属于当前查询的子节点的数据集合表中,Bloom位状态为1表示当前需要查询的数据存在于当前查询的子节点的数据集合表中,则向分布式Bloom过滤系统管理模 块返回“当前输入数据存在于当前查询的子节点的数据集合表中”的数据查询结果。 

优选地,步骤S35中,若当前需要查询的数据不存在于当前查询的子节点的数据集合表中(查询的Bloom位状态为0),则将当前输入数据插入当前所查询的子节点数据集合表中,数据插入的具体过程为:当前子节点先把当前输入数据对应的一重哈希计算值TD写入已排序好的日志文件中,以防断电数据丢失以及后续的数据维护,再对相应的Bloom位进行置1操作,并向分布式Bloom过滤系统管理模块返回“已将当前输入数据插入当前查询的子节点数据集合表”的数据查询结果。 

优选地,步骤S35还可包括数据清除过程:对于Bloom位向量的位状态清除只需对原来的状态进行异或操作,并赋值给新状态即可;而日志文件的数据清除,由于数据已按大小排序好,只需进行一次二分查找,时间复杂度为O(logN),即可快速查询到需要删除的数据位置,执行删除即可。 

图4所示为采用本发明提供的分布式Bloom过滤系统查询过的数据在各子节点上的映射关系示意图。图4中,记录过的数据到子节点的映射采用的是顺时针分布机制,事实上,数据到子节点的映射也可以采用逆时针分布机制。图4中仅是为了方便说明仅画出了4个子节点,显然,本发明提供的分布式Bloom过滤系统中的子节点个数不仅限于此, 

图2所示方法还包括子节点插入过程,具体地,假设现在需要在第i个子节点和第i+1个子节点中间插入新子节点,新子节点的Token值记为Tnew,那么其必须满足如下关系: 

Ti<Tnew<Ti+1

插入新子节点时,如果当前系统的数据到子节点的映射采用的是顺时针分布机制,则只需将原来分布在原子节点Ti+1上且当前位于新子节点Tnew和原子节点Ti之间的数据搬移到Tnew上即可,无需改变其他N-1个子节点的数据状态,最后同步插入新子节点后分布式Bloom过滤系统中各个子节点上新的Token数据表,如图5所示为对图4所示结构插入子节点Tnew后的分布式Bloom过滤系统子节点以及原数据和子节点映射关系变化示意图。类似地,如果当前系统的数据到子节点的映射采用的是逆时针分布机制,则只需将原来分布在原子节点Ti上且当前位于新子节点Tnew和原子节点Ti+1之间的数据搬移到Tnew上即可,无需改变其他N-1个子节点的数据状态,最后同步插入新子节点后分布式Bloom过滤系统中各个子节点上新的Token数据表。 

图2所示方法还包括子节点拔除过程,子节点拔除过程是子节点插入的逆过程,具体地,如果当前系统的数据到子节点的映射采用的是顺时针分布机制,则先把需要拔除的第i个子节点上的数据搬移到原第i+1个子节点上,如果当前系统的数据到子节点的映射采用的是逆时针分布机制,则先把需要拔除的第i个子节点上的数据搬移到原第i-1个子节点上,无需改变其余子节点的数据状态,随后移除第i个子节点的Token值,并同步到其他子节点上。更新分布式Bloom过滤系统中各个子节点上新的Token数据表。图6所示为对图4所示结构拔除子节点1后的分布式Bloom过滤系统子节点以及原数据和子节点映射关系变化示意图。 

当某个子节点出现故障,此时需要把它替换为一个新的子节点,因此图2所示方法还包括子节点故障处理过程,包括:把新子节点的Token值设置为故障子节点的Token值,并做数据的日志还原,这样可以保持整个分布式 Bloom过滤系统原有的状态,使分布式Bloom过滤系统受子节点的影响大大减小。 

由于子节点的频繁插入或拔除,会造成分布式Bloom过滤系统负载的不均衡,因此图2所示方法还包括分布式Bloom过滤系统的数据平衡过程,用于实现负载的平衡,数据平衡过程包括:在进行子节点插入或拔除后更新各个子节点的Token值,将负载大的子节点上的数据平衡至负载小的子节点上,数据迁移机制可以采用类似子节点插拔过程中的数据迁移机制。 

本发明中的分布式Bloom过滤器系统扩展性好,具有多数据中心节点,每个节点都是中心节点,所有节点组成一个圆环,节点间通过P2P协议进行数据交换;数据寻址查询快,能够在复杂度为O(1)的时间内完成数据查询;通过多重哈希机制减少冲突概率;通过日志机制和备份机制,防止因断电引起的数据丢失;通过给每个节点设置一个初始化Token值,使整个分布式Bloom过滤系统不受单点故障的影响,同时方便节点的查询;采用Bloom过滤器,每个位代表一种状态,极大地提高了空间利用率。本发明特别适合云计算时代的资源查询及信息检索。 

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。 

一种分布式BLOOM过滤系统及其使用方法.pdf_第1页
第1页 / 共15页
一种分布式BLOOM过滤系统及其使用方法.pdf_第2页
第2页 / 共15页
一种分布式BLOOM过滤系统及其使用方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种分布式BLOOM过滤系统及其使用方法.pdf》由会员分享,可在线阅读,更多相关《一种分布式BLOOM过滤系统及其使用方法.pdf(15页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102609446 A (43)申请公布日 2012.07.25 C N 1 0 2 6 0 9 4 4 6 A *CN102609446A* (21)申请号 201210001685.2 (22)申请日 2012.01.05 G06F 17/30(2006.01) (71)申请人厦门市美亚柏科信息股份有限公司 地址 361008 福建省厦门市软件园二期观日 路12号美亚柏科大厦 (72)发明人汤伟宾 罗佳 张永光 (74)专利代理机构北京恒都律师事务所 11395 代理人何自刚 (54) 发明名称 一种分布式Bloom过滤系统及其使用方法 (57) 摘要 本发明提供。

2、一种分布式Bloom过滤系统,包 括分布式Bloom过滤系统主控模块和若干个子节 点;其中,所述子节点是Bloom过滤器;所述若干 个子节点形成一个闭合环,所述分布式Bloom过 滤系统主控模块独立于所述子节点形成的闭合环 外外,所述分布式Bloom过滤系统主控模块用于 完成当前输入数据的第一重哈希的计算及所述当 前输入数据到子节点的映射,所述子节点用于完 成所述当前输入数据的第二重哈希计算,并根据 当前输入数据的第二重哈希计算结果对所述当前 输入数据进行数据查询。本发明提供的方案不仅 检索速度快、精度高、扩展性好,而且特征值存储 空间要求低,特别适合云计算时代的资源查询及 信息检索。 (51。

3、)Int.Cl. 权利要求书3页 说明书7页 附图4页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 7 页 附图 4 页 1/3页 2 1.一种分布式Bloom过滤系统,其特征在于,包括分布式Bloom过滤系统主控模块和若 干个子节点;其中,所述子节点是Bloom过滤器; 所述若干个子节点形成一个闭合环,所述分布式Bloom过滤系统主控模块独立于所述 子节点形成的闭合环外外,所述分布式Bloom过滤系统主控模块用于完成当前输入数据的 第一重哈希的计算及所述当前输入数据到子节点的映射,所述子节点用于完成所述当前输 入数据的第二重哈希计算,并根据当前输入。

4、数据的第二重哈希计算结果对所述当前输入数 据进行数据查询。 2.如权利要求1所述的一种分布式Bloom过滤系统,其特征在于,所述分布式Bloom 过滤系统主控模块包括:分布式Bloom过滤系统初始化模块、数据接收模块、一重哈希计算 模块、子节点选择映射模块、分布式Bloom过滤系统管理模块、故障处理模块和结果反馈模 块; 所述分布式Bloom过滤系统初始化模块用于在所述分布式Bloom过滤系统首次启动 时,将每个子节点的Bloom位向量集合表上的所有数据都初始化为0,为每个子节点指定不 同的标记值,并将每个子节点的标记值提供给所述分布式Bloom过滤系统管理模块;还用 于完成子节点的日志加载和。

5、数据备份; 所述数据接收模块用于接收用户当前输入数据并提供给所述一重哈希计算模块; 所述一重哈希计算模块用于对所述当前输入数据进行一重哈希计算,并将计算结果提 供给所述子节点选择映射模块; 所述子节点选择映射模块用于根据所述当前输入数据的一重哈希计算值,为当前输入 数据选择子节点,并将所述当前输入数据的一重哈希计算值 通过所述分布式Bloom过滤 系统管理模块发送给被选择的子节点; 所述分布式Bloom过滤系统管理模块用于将所述当前输入数据的一重哈希计算值提 供给所述子节点选择映射模块为当前输入数据选择的子节点,还用于对各子节点对所述当 前输入数据的数据查询结果进行管理,并将所述数据查询结果通。

6、过所述结果反馈模块反馈 给用户;还用于控制子节点的插入、拔除和更换; 所述故障处理模块用于实时监测子节点的状态,并在子节点出现故障时通知所述分布 式Bloom过滤系统管理模块将当前故障子节点更换为一个新的子节点; 所述子节点包括二重哈希计算模块、数据操作模块和日志备份模块;所述二重哈希计 算模块用于对收到的所述当前输入数据的一重哈希计算值进行二重哈希计算,并将所述当 前输入数据的二重哈希计算值提供给所述数据操作模块;所述数据操作模块根据收到的所 述当前输入数据的二重哈希计算值进行数据的Bloom位地址映射,并在所映射的地址所指 内存中进行所述当前输入数据的数据查询;所述日志备份模块用于备份本子。

7、节点在运行过 程中的操作日志以及数据。 3.一种分布式Bloom过滤系统使用方法,其特征在于,包括: 步骤1:为分布式Bloom过滤系统中的各子节点指定标记值; 步骤2:配置各所述子节点的数据集合表; 步骤3:接收用户的当前输入数据; 步骤4:对所述当前输入数据进行数据查询。 4.如权利要求3所述的一种分布式Bloom过滤系统使用方法,其特征在 于,所述步骤 权 利 要 求 书CN 102609446 A 2/3页 3 4包括: 步骤4.1:分布式Bloom过滤系统主控模块对所述当前输入数据进行一重哈希计算; 步骤4.2:分布式Bloom过滤系统主控模块根据所述当前输入数据的一重哈希计算值 和。

8、各子节点的标记值,为所述当前输入数据选择子节点; 步骤4.3:被选择的子节点根据收到的当前输入数据的一重哈希计算值进行二重哈希 计算; 步骤4.4:根据当前输入数据的二重哈希计算值进行所述当前输入数据在被选择的子 节点内的Bloom位地址映射; 步骤4.5:在上一步骤所映射的地址所指内存中进行所述当前输入数据的数据查询。 5.如权利要求4所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤 4.2包括:若所述当前输入数据的一重哈希计算值T D 如果满足:T i T D T i+1 ,则认为所述 当前输入数据落在该分布式Bloom过滤系统的第i个子节点的数据集合表上,分布式Bloom。

9、 过滤系统主控模块选择所述第i个子节点作为所述当前输入数据的数据查询节点,将当前 输入数据的一重哈希计算值提供给所述第i个子节点;其中,0iN,N为所述分布式 Bloom过滤系统中的子节点数,所述T i 和T i+1 为第i个子节点以及第i+1个子节点的标记 值。 6.如权利要求5所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤 4.4包括:取所述当前数据的二重哈希计算值的连续n位作为Bloom位向量的维度索引,并 取所述当前数据的二重哈希计算值的其余连续 的m位作为Bloom位向量索引,进行所述当 前输入数据在被选择的子节点内的Bloom位地址映射;其中,0nlog 2 T,。

10、0mlog 2 S, S为Bloom位向量的个数,T表示Bloom位向量的维度。 7.如权利要求6所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤 4.5包括:在所述地址所指的内存中查询对应的Bloom位状态,若Bloom位状态为0,则先把 所述当前输入数据的一重哈希计算值写入当前查询的子节点已排序好的日志文件中,再对 相应的Bloom位进行置1操作,并向分布式Bloom过滤系统管理模块返回“已将当前输入数 据插入当前查询的子节点数据集合表”的数据查询结果;若Bloom位状态为1,则向分布式 Bloom过滤系统管理模块返回“当前输入数据存在于当前查询的子节点的数据集合表中”的 。

11、数据查询结果。 8.如权利要求7所述的一种分布式Bloom过滤系统使用方法,其特征在于,所述步骤 4.5还包括:清除查询到的数据。 9.如权利要求3至7任一项所述的一种分布式Bloom过滤系统使用方法,其特征在 于,所述步骤3之前还包括在所述分布式Bloom过滤系统中插入新子节点:根据当前分布 式Bloom过滤系统的数据到子节点的映射机制,将原映射于当前插入的所述新子节点两端 的子节点上的部分数据迁移至所述新子节点,并更新插入所述新子节点后的所述分布式 Bloom过滤系统的各子节点的标记值。 10.如权利要求3至7任一所述的一种分布式Bloom过滤系统使用方法,其特征在 于,所述步骤3之前还包。

12、括拔除所述分布式Bloom过滤系统中的子节点:根据当前分布式 Bloom过滤系统的数据到子节点的映射机制,将需要 拔除的子节点上的数据迁移至与所述 需要拔除的子节点相邻的两个子节点之中的一个子节点上,并更新拔除子节点后的所述分 权 利 要 求 书CN 102609446 A 3/3页 4 布式Bloom过滤系统的各子节点的标记值。 11.如权利要求3至7任一所述的一种分布式Bloom过滤系统使用方法,其特征在于, 当检测到所述分布式Bloom过滤系统中有子节点出现故障时,将一个新子节点的标记值设 为故障子节点的标记值,并将所述故障子节点的日志数据加载至所述新子节点。 权 利 要 求 书CN 1。

13、02609446 A 1/7页 5 一种分布式 Bloom 过滤系统及其使用方法 技术领域 0001 本发明涉及信息检索及过滤、云计算、分布式计算等计算机技术领域,尤其涉及一 种分布式Bloom过滤系统及其使用方法。 背景技术 0002 随着互联网技术的发展,时时刻刻需要实现资源的共享及数据的交互,分布式技 术、云计算技术是当今互联网技术的发展潮流及其研究热点。在资源共享时,我们经常需要 判断某个表项是否包含在一个数据集中,例如:在网络爬虫里,一个网址是否已被访问过; 对于一个网址的访问统计,当前的连接IP是否已来访问过等等,这就需要进行资源查询或 信息检索。 0003 在进行资源查询的信息处。

14、理过程中,采用何种查找方式依赖于信息的表示策略。 在云计算时代的应用环境中,处理的对象都是海量数据,要在海量的数据里面实现资源的 快速查询是有一定的技术难度的。此外,传统的哈希表检索方式,虽然可以实现快速查询, 但是会造成极大的存储空间浪费,而且当数据集大到一定程度时,哈希表的空间利用率会 更低。作为哈希表的一个变种,现有技术中的Bloom过滤器能够以极小的空间完成哈希判 功能。在能够容忍的小范围误判的前提下,Bloom过滤器能很好地实现低存储要求和高响 应速度的要求。然而,现有技术中的Bloom过滤器都是以单子节点形式存在,显然,在信息 大爆炸的时代,单子节点的Bloom过滤器已经无法满足现。

15、今的海量数据检索需求,因此需 要一种不仅具有很好的时间和空间检索效 率、且能够对海量数据进行检索的方案。 发明内容 0004 有鉴于此,本发明提供一种分布式Bloom过滤系统及其使用方法,用以解决现有 技术中单子节点Bloom过滤器无法实现对海量数据的快速检索查询的缺点,本发明提供的 方案能够实现数据的快速查询以及故障处理,耗费的存储空间少,同时具有高效检索、易扩 展等优点,此外还能实现分布式Bloom过滤系统内子节点的随意插拔,实用性强。 0005 本发明提供的一种分布式Bloom过滤系统,包括分布式Bloom过滤系统主控模块 和若干个子节点;其中,所述子节点是Bloom过滤器;所述若干个子。

16、节点形成一个闭合环, 所述分布式Bloom过滤系统主控模块独立于所述子节点形成的闭合环外外,所述分布式 Bloom过滤系统主控模块用于完成当前输入数据的第一重哈希的计算及所述当前输入数据 到子节点的映射,所述子节点用于完成所述当前输入数据的第二重哈希计算,并根据当前 输入数据的第二重哈希计算结果对所述当前输入数据进行数据查询。 0006 所述分布式Bloom过滤系统主控模块包括:分布式Bloom过滤系统初始化模块、数 据接收模块、一重哈希计算模块、子节点选择映射模块、分布式Bloom过滤系统管理模块、 故障处理模块和结果反馈模块;所述分布式Bloom过滤系统初始化模块用于在所述分布式 Bloo。

17、m过滤系统首次启动时,将每个子节点的Bloom位向量集合表上的所有数据都初始化 为0,为每个子节点指定不同的标记值,并将每个子节点的标记值提供给所述分布式Bloom 说 明 书CN 102609446 A 2/7页 6 过滤系统管理模块;还用于完成子节点的日志加载和数据备份;所述数据接收模块 用于 接收用户当前输入数据并提供给所述一重哈希计算模块;所述一重哈希计算模块用于对所 述当前输入数据进行一重哈希计算,并将计算结果提供给所述子节点选择映射模块;所述 子节点选择映射模块用于根据所述当前输入数据的一重哈希计算值,为当前输入数据选择 子节点,并将所述当前输入数据的一重哈希计算值通过所述分布式B。

18、loom过滤系统管理模 块发送给被选择的子节点;所述分布式Bloom过滤系统管理模块用于将所述当前输入数据 的一重哈希计算值提供给所述子节点选择映射模块为当前输入数据选择的子节点,还用于 对各子节点对所述当前输入数据的数据查询结果进行管理,并将所述数据查询结果通过所 述结果反馈模块反馈给用户;还用于控制子节点的插入、拔除和更换;所述故障处理模块 用于实时监测子节点的状态,并在子节点出现故障时通知所述分布式Bloom过滤系统管理 模块将当前故障子节点更换为一个新的子节点; 0007 所述子节点包括二重哈希计算模块、数据操作模块和日志备份模块;所述二重哈 希计算模块用于对收到的所述当前输入数据的一。

19、重哈希计算值进行二重哈希计算,并将所 述当前输入数据的二重哈希计算值提供给所述数据操作模块;所述数据操作模块根据收到 的所述当前输入数据的二重哈希计算值进行数据的Bloom位地址映射,并在所映射的地址 所指内存中进行所述当前输入数据的数据查询;所述日志备份模块用于备份本子节点在运 行过程中的操作日志以及数据。 0008 本发明提供的一种对应于本发明提供的分布式Bloom过滤系统的分布式Bloom过 滤系统使用方法,包括:步骤1:为分布式Bloom过滤系统中的各子节点指定标记值;步骤 2:配置各所述子节点的数据集合表;步骤3:接收 用户的当前输入数据;步骤4:对所述当 前输入数据进行数据查询。 。

20、0009 所述步骤4包括: 0010 步骤4.1:分布式Bloom过滤系统主控模块对所述当前输入数据进行一重哈希计 算; 0011 步骤4.2:分布式Bloom过滤系统主控模块根据所述当前输入数据的一重哈希计 算值和各子节点的标记值,为所述当前输入数据选择子节点; 0012 步骤4.3:被选择的子节点根据收到的当前输入数据的一重哈希计算值进行二重 哈希计算; 0013 步骤4.4:根据当前输入数据的二重哈希计算值进行所述当前输入数据在被选择 的子节点内的Bloom位地址映射; 0014 步骤4.5:在上一步骤所映射的地址所指内存中进行所述当前输入数据的数据查 询。 0015 所述步骤4.2包括。

21、:若所述当前输入数据的一重哈希计算值T D 如果满足: T i T D T i+1 ,则认为所述当前输入数据落在该分布式Bloom过滤系统的第i个子节点的 数据集合表上,分布式Bloom过滤系统主控模块选择所述第i个子节点作为所述当前输入 数据的数据查询节点,将当前输入数据的一重哈希计算值提供给所述第i个子节点;其中, 0iN,N为所述分布式Bloom过滤系统中的子节点数,所述T i 和T i+1 为第i个子节点 以及第i+1个子节点的标记值。 0016 所述步骤4.4包括:取所述当前数据的二重哈希计算值的连续n位作为Bloom 说 明 书CN 102609446 A 3/7页 7 位向量的维。

22、度索引,并取所述当前数据的二重哈希计算值的其余连续的m位作为Bloom 位向量索引,进行所述当前输入数据在被选择的子节点内 的Bloom位地址映射;其中,0 nlog 2 T,0mlog 2 S,S为Bloom位向量的个数,T表示Bloom位向量的维度。 0017 所述步骤4.5包括:在所述地址所指的内存中查询对应的Bloom位状态,若Bloom 位状态为0,则先把所述当前输入数据的一重哈希计算值写入当前查询的子节点已排序好 的日志文件中,再对相应的Bloom位进行置1操作,并向分布式Bloom过滤系统管理模块返 回“已将当前输入数据插入当前查询的子节点数据集合表”的数据查询结果;若Bloom。

23、位状 态为1,则向分布式Bloom过滤系统管理模块返回“当前输入数据存在于当前查询的子节点 的数据集合表中”的数据查询结果。 0018 所述步骤4.5还包括:清除查询到的数据。 0019 所述步骤3之前还包括在所述分布式Bloom过滤系统中插入新子节点:根据当前 分布式Bloom过滤系统的数据到子节点的映射机制,将原映射于当前插入的所述新子节点 两端的子节点上的部分数据迁移至所述新子节点,并更新插入所述新子节点后的所述分布 式Bloom过滤系统的各子节点的标记值。 0020 所述步骤3之前还包括拔除所述分布式Bloom过滤系统中的子节点:根据当前分 布式Bloom过滤系统的数据到子节点的映射机。

24、制,将需要拔除的子节点上的数据迁移至与 所述需要拔除的子节点相邻的两个子节点之中的一个子节点上,并更新拔除子节点后的所 述分布式Bloom过滤系统的各子节点的标记值。 0021 当检测到所述分布式Bloom过滤系统中有子节点出现故障时,将一个新子节点的 标记值设为故障子节点的标记值,并将所述故障子节点的日志数据 加载至所述新子节点。 0022 本发明提供的分布式Bloom过滤系统及其使用方法将分布式Bloom过滤系统中的 所有子节点组成一个环,通过分布式Bloom过滤系统中的分布式Bloom过滤系统主控模块 管理子节点,分布式Bloom过滤系统主控模块结合子节点对输入数据进行多重哈希转化, 以。

25、实现子节点和数据集合的快速查询,同时能有效处理子节点故障等问题。本发明提供的 方案不仅检索速度快、精度高、扩展性好,而且特征值存储空间要求低,特别适合云计算时 代的资源查询及信息检索。 附图说明 0023 图1是本发明实施例提供的一种分布式Bloom过滤系统; 0024 图2是本发明实施例提供的分布式Bloom过滤系统使用方法; 0025 图3是图2中S24的详细流程图; 0026 图4是采用本发明提供的分布式Bloom过滤系统查询过的数据在各子节点上的映 射关系示意图; 0027 图5是对图4所示结构插入子节点T new 后的分布式Bloom过滤系统子节点以及原 数据和子节点映射关系变化示意。

26、图; 图6是对图4所示结构拔除子节点1后的分布式Bloom过滤系统子节点以及原数据和 子节点映射关系变化示意图。 具体实施方式 0028 为了克服现有技术之不足,本发明实施例提供一种分布式Bloom过滤系统及其使 说 明 书CN 102609446 A 4/7页 8 用方法,该方案将分布式Bloom过滤系统主控模块和若干个子节点 组成一个分布式Bloom 过滤系统,分布式Bloom过滤系统中的所有子节点组成一个封闭环,通过分布式Bloom过滤 系统主控模块完成数据第一重哈希的计算及子节点的映射,而子节点则完成数据的二重哈 希计算及相应的数据操作,能够对输入数据进行多重哈希转化,实现子节点和数据。

27、集合的 快速查询,同时还能有效处理子节点故障等问题。 0029 以下结合附图,具体说明本发明实施例。 0030 图1所示为本发明实施例提供的一种分布式Bloom过滤系统,包括分布式Bloom 过滤系统主控模块1和若干个子节点2,子节点2是Bloom过滤器的真正实体,若干个子节 点2形成一个闭合环,分布式Bloom过滤系统主控模块1独立于环外,分布式Bloom过滤系 统主控模块1用于完成当前输入数据的第一重哈希的计算及当前输入数据到子节点的映 射,子节点2用于完成当前输入数据的第二重哈希计算及相应的数据查询,其中,所述相应 的数据查询是指数据的查询、插入和清除。 0031 如图1中所示,分布式B。

28、loom过滤系统主控模块1包括数据接收模块3、一重哈希 计算模块4、子节点选择映射模块5、分布式Bloom过滤系统初始化模块6、分布式Bloom过 滤系统管理模块7、故障处理模块8和结果反馈模块9,其中, 0032 分布式Bloom过滤系统初始化模块6用于完成子节点2的日志加载、备份数据等 子节点初始化工作,用于为各子节点2指定不同的标记(Token)值,然后再将所有子节点2 的Token值汇总提供给分布式Bloom过滤系统管理模块7,具体地,若子节点数量为N,则按 顺序为分布式Bloom过滤系统中的N个子节点2分别指定一个初始化大整数型的Token值, 较佳地,若每个子节 点2的配置一样,则。

29、将第i个子节点2的Token值设定为:T i i*(2 127 / N),0iN。此外,当分布式Bloom过滤系统首次启动时,分布式Bloom过滤系统初始化 模块6将每个子节点2的Bloom位向量集合表上的所有数据都初始化为0。 0033 数据接收模块3用于接收用户当前输入数据并提供给一重哈希计算模块4;一重 哈希计算模块4用于对当前输入数据进行一重哈希计算,并将计算结果提供给子节点选择 映射模块5。 0034 子节点选择映射模块5用于根据当前输入数据的一重哈希计算值,判断该哈希值 在哪个区间范围内,为当前输入数据选择子节点2,并将当前输入数据的一重哈希计算值通 过分布式Bloom过滤系统管理。

30、模块7发送给被选择的子节点2。 0035 分布式Bloom过滤系统管理模块7将当前输入数据的一重哈希计算值提供给子节 点选择映射模块5为当前输入数据选择的子节点2,此外,分布式Bloom过滤系统管理模块 7还用于对各子节点2的数据操作模块11的数据操作查询进行管理,将各子节点2的数据 操作模块11返回的数据查询结果通过结果反馈模块9反馈给用户,此外,分布式Bloom过 滤系统管理模块7还用于控制子节点的插入、拔除和更换。 0036 故障处理模块8用于实时监测子节点2的状态,并在子节点2出现故障时通知分 布式Bloom过滤系统管理模块7将当前故障子节点更换为一个新的子节点。 0037 每个子节点。

31、2包括二重哈希计算模块10、数据操作模块11和日志备份模块12。二 重哈希计算模块10对收到的当前输入数据的一重哈希计算值进行二 重哈希计算,并将当 前输入数据的二重哈希计算值提供给数据操作模块11。数据操作模块11根据收到的当前 输入数据的二重哈希计算值进行数据的Bloom位地址映射,并在所映射的地址所指内存中 说 明 书CN 102609446 A 5/7页 9 进行当前输入数据的查询、插入或清除。日志备份模块12用于备份本子节点2在运行过程 中的操作日志以及数据。 0038 本发明实施例还提供一种对应于本发明提供的分布式Bloom过滤系统的分布式 Bloom过滤系统使用方法,如图2所示,。

32、包括: 0039 S21:为系统中的每个子节点指定标记值。此处所述分布式Bloom过滤系统如图1 所示,首次使用时,首先为各子节点分配不同的Token值,然后再在分布式Bloom过滤系统 主控模块上汇总所有子节点的Token值,以便做子节点映射。具体地,若子节点数量为N, 则按顺序为分布式Bloom过滤系统中的N个子节点分别指定一个初始化大整数型的Token 值,由于在极端情况下,分布式Bloom过滤系统支持的子节点数可达2 128 个,因此Token值 的数值范围为0至2 127 。分布式Bloom过滤系统主控模块在设定Token值时,应尽量使各个 子节点平衡分布,Token值需根据具体的运。

33、行环境进行平衡设定。较佳地,若每个子节点的 配置一样,则将第i个子节点的Token值设定为: 0040 T i i*(2 127 /N),0iN, 0041 这样,分布式Bloom过滤系统中的所有子节点就组成一个Token环,环上的子节点 按照Token大小值顺序排序,以便子节点查询时的二分查找,时间复杂度为O(logN);分布 式Bloom过滤系统成功启动后,每个子节点都有一张数据表,用来维护该环上的Token值, 分布式Bloom过滤系统每次启动都会加载该数据表。 0042 S22:配置各子节点的数据集合表。此步骤中,如果该分布式Bloom过滤系统是首 次启动,则将每个子节点的Bloom位。

34、向量集合表上的所有数据都初始化为0。由于本发明 实施例提供的数据查询方法中,每个子节点在运行过程中都保存有自己写的日志和数据备 份,以防断点引起的数据丢失等,因此若分布式Bloom过滤系统是非首次启动,则向Bloom 位向量集合表中加载上次分布式Bloom过滤系统关闭时该子节点保存的日志和备份数据。 0043 S23:接收用户的当前输入数据。 0044 S24:对当前输入数据进行数据查询。 0045 图3为图2中S24的详细流程图,包括以下步骤: 0046 S31:分布式Bloom过滤系统主控模块对当前输入数据进行一重哈希计算。为方便 描述,此处设用户当前输入的数据为D,则分布式Bloom过滤。

35、系统主控模块通过哈希算法H 计算出一个128位的哈希值(一重哈希计算值),记为: 0047 T D H 1 (D) 0048 S32:分布式Bloom过滤系统主控模块根据一重哈希计算值和各子节点的标记值, 为当前输入数据选择子节点。此步骤中,判断一重哈希计算值T D 如果满足:T i T D T i+1 , 认为当前输入数据D落在分布式Bloom过滤系统的第i个子节点的数据集合表上,分布式 Bloom过滤系统主控模块将当前输入数据的一重哈希计算值提供给所选择的第i个子节 点。 0049 S33:被选择的子节点根据收到的当前输入数据的一重哈希计算值进行二重哈希 计算。此步骤中,二重哈希计算得到当。

36、前输入数据的二重哈希计算值,记为: 0050 T D H 1 (7 D ) 0051 这样可以打乱原有数据的相关性,进一步减少查询时的冲突概率。其中,T D 共 128个二进制位。 说 明 书CN 102609446 A 6/7页 10 0052 S34:根据当前输入数据的二重哈希计算值进行当前输入数据在被选择的子节点 内的Bloom位地址映射。 0053 其中,各子节点的Bloom位向量集合表以二维位矩阵BS,T表示,其中,S表示 Bloom位向量的个数,T表示Bloom位向量的维度。为了进行当前输入数据在被选择的子节 点内的Bloom位地址映射,取二重哈希计算值T D 中的连续n位作为Bl。

37、oom位向量的维度 索引(从T D 的128位中取n位出来,当成位矩阵B的列索引),比如最低的n位,并取T D 中其余连续的m位作为Bloom位向量索引(从T D 的其余位中取m位,当成位矩阵B的行 索引),比如最高的m位,n和m需满足如下的关系: 0054 0055 根据实际取得的n和m值可映射得到Bloom位地址。例如:假设根据二重哈希计 算值T D 取得的m为01000000(共8个二进制位),n为0110(共4个二进制位),则最后 映射的Bloom位地址为B0x40,0x06。 0056 S35:在上一步骤所映射的地址所指内存中进行当前输入数据的查询,并向用户返 回数据查询结果。具体包。

38、括:在所述地址所指的内存中进行当前输入数据的查询,所述数据 查询过程是指在该内存中查询对应的Bloom位状态:Bloom位状态为0表示当前输入数据 (当前需要查询的数据)不属于当前查询的子节点的数据集合表中,Bloom位状态为1表示 当前需要查询的数据存在于当前查询的子节点的数据集合表中,则向分布式Bloom过滤系 统管理模 块返回“当前输入数据存在于当前查询的子节点的数据集合表中”的数据查询结 果。 0057 优选地,步骤S35中,若当前需要查询的数据不存在于当前查询的子节点的数据 集合表中(查询的Bloom位状态为0),则将当前输入数据插入当前所查询的子节点数据集 合表中,数据插入的具体过。

39、程为:当前子节点先把当前输入数据对应的一重哈希计算值T D 写入已排序好的日志文件中,以防断电数据丢失以及后续的数据维护,再对相应的Bloom 位进行置1操作,并向分布式Bloom过滤系统管理模块返回“已将当前输入数据插入当前查 询的子节点数据集合表”的数据查询结果。 0058 优选地,步骤S35还可包括数据清除过程:对于Bloom位向量的位状态清除只需对 原来的状态进行异或操作,并赋值给新状态即可;而日志文件的数据清除,由于数据已按大 小排序好,只需进行一次二分查找,时间复杂度为O(logN),即可快速查询到需要删除的数 据位置,执行删除即可。 0059 图4所示为采用本发明提供的分布式Bl。

40、oom过滤系统查询过的数据在各子节点上 的映射关系示意图。图4中,记录过的数据到子节点的映射采用的是顺时针分布机制,事实 上,数据到子节点的映射也可以采用逆时针分布机制。图4中仅是为了方便说明仅画出了 4个子节点,显然,本发明提供的分布式Bloom过滤系统中的子节点个数不仅限于此, 0060 图2所示方法还包括子节点插入过程,具体地,假设现在需要在第i个子节点和第 i+1个子节点中间插入新子节点,新子节点的Token值记为T new ,那么其必须满足如下关系: 0061 T i T new T i+1 0062 插入新子节点时,如果当前系统的数据到子节点的映射采用的是顺时针分布机 制,则只需将。

41、原来分布在原子节点T i+1 上且当前位于新子节点T new 和原子节点T i 之间的数 说 明 书CN 102609446 A 10 7/7页 11 据搬移到T new 上即可,无需改变其他N-1个子节点的数据状态,最后同步插入新子节点后分 布式Bloom过滤系统中各个子节点上新的Token数据表,如图5所示为对图4所示结构插 入子节点T new 后的分布式Bloom过滤系统子节点以及原数据和子节点映射关系变化示意 图。类似地,如果当前系统的数据到子节点的映射采用的是逆时针分布机制,则只需将原来 分布在原子节点T i 上且当前位于新子节点T new 和原子节点T i+1 之间的数据搬移到T 。

42、new 上即 可,无需改变其他N-1个子节点的数据状态,最后同步插入新子节点后分布式Bloom过滤系 统中各个子节点上新的Token数据表。 0063 图2所示方法还包括子节点拔除过程,子节点拔除过程是子节点插入的逆过程, 具体地,如果当前系统的数据到子节点的映射采用的是顺时针分布机制,则先把需要拔除 的第i个子节点上的数据搬移到原第i+1个子节点上,如果当前系统的数据到子节点的映 射采用的是逆时针分布机制,则先把需要拔除的第i个子节点上的数据搬移到原第i-1个 子节点上,无需改变其余子节点的数据状态,随后移除第i个子节点的Token值,并同步到 其他子节点上。更新分布式Bloom过滤系统中各。

43、个子节点上新的Token数据表。图6所示 为对图4所示结构拔除子节点1后的分布式Bloom过滤系统子节点以及原数据和子节点映 射关系变化示意图。 0064 当某个子节点出现故障,此时需要把它替换为一个新的子节点,因此图2所示方 法还包括子节点故障处理过程,包括:把新子节点的Token值设置为故障子节点的Token 值,并做数据的日志还原,这样可以保持整个分布式 Bloom过滤系统原有的状态,使分布式 Bloom过滤系统受子节点的影响大大减小。 0065 由于子节点的频繁插入或拔除,会造成分布式Bloom过滤系统负载的不均衡,因 此图2所示方法还包括分布式Bloom过滤系统的数据平衡过程,用于实。

44、现负载的平衡,数据 平衡过程包括:在进行子节点插入或拔除后更新各个子节点的Token值,将负载大的子节 点上的数据平衡至负载小的子节点上,数据迁移机制可以采用类似子节点插拔过程中的数 据迁移机制。 0066 本发明中的分布式Bloom过滤器系统扩展性好,具有多数据中心节点,每个节点 都是中心节点,所有节点组成一个圆环,节点间通过P2P协议进行数据交换;数据寻址查 询快,能够在复杂度为O(1)的时间内完成数据查询;通过多重哈希机制减少冲突概率;通 过日志机制和备份机制,防止因断电引起的数据丢失;通过给每个节点设置一个初始化 Token值,使整个分布式Bloom过滤系统不受单点故障的影响,同时方便。

45、节点的查询;采用 Bloom过滤器,每个位代表一种状态,极大地提高了空间利用率。本发明特别适合云计算时 代的资源查询及信息检索。 0067 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。 说 明 书CN 102609446 A 11 1/4页 12 图1 说 明 书 附 图CN 102609446 A 12 2/4页 13 图2 图3 说 明 书 附 图CN 102609446 A 13 3/4页 14 图4 图5 说 明 书 附 图CN 102609446 A 14 4/4页 15 图6 说 明 书 附 图CN 102609446 A 15 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1