CN105653629A - 一种基于哈希环的分布式数据过滤方法 - Google Patents
一种基于哈希环的分布式数据过滤方法 Download PDFInfo
- Publication number
- CN105653629A CN105653629A CN201510995758.8A CN201510995758A CN105653629A CN 105653629 A CN105653629 A CN 105653629A CN 201510995758 A CN201510995758 A CN 201510995758A CN 105653629 A CN105653629 A CN 105653629A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- filter
- distributed
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据过滤技术领域,特别是一种基于哈希环的分布式数据过滤方法,包括以下步骤,步骤S101:客户端接收分布式去重集群的信息;步骤S102:客户端接口数据情况请求;步骤S103:节点接收请求;步骤S104:数据过滤块定位,根据RPC发送的分区请求,hash取余后,定位到数据的数据过滤块;步骤S105:数据返回,对应的数据块,根据过滤器键,执行数据存在判断,返回对应状态,返回数据。采用上述结构后,本发明实现多租户功能,客户端可以根据业务需求,任意添加制定的类型的过滤器;实现过滤器的持久备份恢复,避免数据丢失;由于整个集群基于一致哈希环构建,过滤集群实现线性扩展;对于同一个过滤器,会构建多个子过滤器,降低误判率。
Description
技术领域
本发明涉及数据过滤技术领域,特别是一种基于哈希环的分布式数据过滤方法。
背景技术
布隆过滤器应用十分广泛,比如网页URL的去重,垃圾邮件的判别,集合重复元素的判别,查询加速,而布隆过滤器的使用是嵌套在应用程序中,易受应用程序本身的变化,导致出现过滤逻辑错误、已有判断数据丢失等异常情况。
中国发明专利申请CN104601527A公开了一种数据过滤方法,包括:接收数据生成终端发送的数据包,并根据存储的订阅信息确定对应的数据接收终端;根据确定的各个数据接收终端对应的数据过滤条件对数据包进行过滤,得到与各个数据接收终端对应的数据过滤结果;将各个数据过滤结果发送至对应的数据接收终端。此发明在接收到数据包并根据订阅信息确定该数据包对应的数据接收终端后,通过各个数据接收终端对应的数据顾虑条件对该数据包进行过滤,并将得到的各个数据过滤结果发送至对应的数据接收终端,从而达到无需数据接收终端侧的用户根据自身需求对该数据包进行过滤的目的;但是,此发明没有实现分布式数据过滤。
发明内容
本发明需要解决的技术问题提供一种基于哈希环的分布式数据过滤方法。
为解决上述的技术问题,本发明的一种基于哈希环的分布式数据过滤方法,包括以下步骤,
步骤S101:客户端接收分布式去重集群的信息;包括节点的状态和节点的Token,返回数据;
步骤S102:客户端接口数据情况请求,根据一致哈希环Range分布,利用Murmur3hash数据过滤键,得到一个哈希环位置值X1,通过分布式过滤集群的range分布,计算X1所属的Range,选择对应过滤节点,利用RPC向远端节点发送请求;
步骤S103:节点接收请求,根据RPC发送的过滤器要求,定位到相应的过滤器;
步骤S104:数据过滤块定位,根据RPC发送的分区请求,hash取余后,定位到数据的数据过滤块;
步骤S105:数据返回,对应的数据块,根据过滤器键,执行数据存在判断,返回对应状态,返回数据。
进一步的,所述步骤S101中返回数据格式如下:
为TokenY的前一个节点。
更进一步的,所述步骤S102中RPC向远端节点发送请求,请求格式如下:
更进一步的,所述步骤S103中根据″filter_name″,定位到对应的过滤器。
更进一步的,步骤S104中根据″partition_key″,hash取余后,定位到数据的数据过滤块。
更进一步的,步骤S104中hash取余时的n为创建设置的块数。
进一步的,所述步骤S105中返回的数据如下:
进一步的,所述步骤101中集群节点加入或移除具体包括以下步骤,
步骤S1011:开始;
步骤S1012:判断集群是否有节点加入或移出,如果没有,则休眠等待,返回步骤S1011;如果有,则进入步骤S1013;
步骤S1013:各自节点锁定Token、Range分布全局表;
步骤S1014:新增节点随机产生新Token;
步骤S1015:判断新Token集群中是否已经存在,如果存在,则返回步骤S1014;如果不存在,则进入步骤S1016;
步骤S1016:现有节点接收新增Token,所有节点重新计算Range;
步骤S1017:新增节点加入集群,并通知客户端节点、Token、Range变化。
采用上述结构后,本发明实现多租户功能,客户端可以根据业务需求,任意添加制定的类型的过滤器;实现过滤器的持久备份恢复,避免数据丢失;由于整个集群基于一致哈希环构建,过滤集群实现线性扩展;对于同一个过滤器,会构建多个子过滤器,降低误判率。
附图说明
下面将结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明一种基于哈希环的分布式数据过滤方法的流程图。
图2为本发明节点的Token分布图。
图3为本发明节点的Token及Range变化示意图。
图4为本发明节点加入流程图。
具体实施方式
如图1所示,包括以下步骤,本发明的一种基于哈希环的分布式数据过滤方法,
步骤S101:客户端接收分布式去重集群的信息;包括节点的状态和节点的Token,返回数据;
步骤S102:客户端接口数据情况请求,根据一致哈希环Range分布,利用Murmur3hash数据过滤键,得到一个哈希环位置值X1,通过分布式过滤集群的range分布,计算X1所属的Range,选择对应过滤节点,利用RPC向远端节点发送请求;
步骤S103:节点接收请求,根据RPC发送的过滤器要求,定位到相应的过滤器;
步骤S104:数据过滤块定位,根据RPC发送的分区请求,hash取余后,定位到数据的数据过滤块;
步骤S105:数据返回,对应的数据块,根据过滤器键,执行数据存在判断,返回对应状态,返回数据。
进一步的,所述步骤S101中返回数据格式如下:
为TokenY的前一个节点。
更进一步的,所述步骤S102中RPC向远端节点发送请求,请求格式如下:
更进一步的,所述步骤S103中根据″filter_name″,定位到对应的过滤器。
更进一步的,步骤S104中根据″partition_key″,hash取余后,定位到数据的数据过滤块。
更进一步的,步骤S104中hash取余时的n为创建设置的块数。
进一步的,所述步骤S105中返回的数据如下:
以网页爬虫URL去重过滤为例:
如图2所示,分布式过滤集群的Range分布表为:A(1,25],B(26,50],C(51,75],D(75,0],其中D的range为环绕区间,代表具体负责的范围为<75的范围,加上<=0的范围。当需要过滤某个URLU1时,计算U1的Murmur3hash值,加入hash值为74时,通过计算range分布表,得知,需要去C节点进行去重过滤判断,故将请求发往节点C,节点C根据已有的BloomFilter数据块总数N,对URL进行哈希,对N取模,找到具体的BloomFilter块,进行BloomFilter判断,如果存在,则代表改URL,已经爬取,不需要再次爬取数据。
进一步的,如图3和图4所示,所述步骤101中集群节点加入或移除具体包括以下步骤,
步骤S1011:开始;
步骤S1012:判断集群是否有节点加入或移出,如果没有,则休眠等待,返回步骤S1011;如果有,则进入步骤S1013;
步骤S1013:各自节点锁定Token、Range分布全局表;
步骤S1014:新增节点随机产生新Token;
步骤S1015:判断新Token集群中是否已经存在,如果存在,则返回步骤S1014;如果不存在,则进入步骤S1016;
步骤S1016:现有节点接收新增Token,所有节点重新计算Range;
步骤S1017:新增节点加入集群,并通知客户端节点、Token、Range变化。
虽然以上描述了本发明的具体实施方式,但是本领域熟练技术人员应当理解,这些仅是举例说明,可以对本实施方式作出多种变更或修改,而不背离发明的原理和实质,本发明的保护范围仅由所附权利要求书限定。
Claims (8)
1.一种基于哈希环的分布式数据过滤方法,其特征在于,包括以下步骤,
步骤S101:客户端接收分布式去重集群的信息;包括节点的状态和节点的Token,返回数据;
步骤S102:客户端接口数据情况请求,根据一致哈希环Range分布,利用Murmur3hash数据过滤键,得到一个哈希环位置值X1,通过分布式过滤集群的range分布,计算X1所属的Range,选择对应过滤节点,利用RPC向远端节点发送请求;
步骤S103:节点接收请求,根据RPC发送的过滤器要求,定位到相应的过滤器;
步骤S104:数据过滤块定位,根据RPC发送的分区请求,hash取余后,定位到数据的数据过滤块;
步骤S105:数据返回,对应的数据块,根据过滤器键,执行数据存在判断,返回对应状态,返回数据。
2.按照权利要求1所述的一种基于哈希环的分布式数据过滤方法,其特征在于,所述步骤S101中返回数据格式如下:
};其中,range为[tokenX,tokenY],其中tokenY为当前节点的Token值,tokenX为TokenY的前一个节点。
3.按照权利要求2所述的一种基于哈希环的分布式数据过滤方法,其特征在于,所述步骤S102中RPC向远端节点发送请求,请求格式如下:
4.按照权利要求3所述的一种基于哈希环的分布式数据过滤方法,其特征在于:所述步骤S103中根据″filter_name″,定位到对应的过滤器。
5.按照权利要求3所述的一种基于哈希环的分布式数据过滤方法,其特征在于:步骤S104中根据″partition_key″,hash取余后,定位到数据的数据过滤块。
6.按照权利要求5所述的一种基于哈希环的分布式数据过滤方法,其特征在于:步骤S104中hash取余时的n为创建设置的块数。
7.按照权利要求2所述的一种基于哈希环的分布式数据过滤方法,其特征在于,所述步骤S105中返回的数据如下:
8.按照权利要求1所述的一种基于哈希环的分布式数据过滤方法,其特征在于,所述步骤101中集群节点加入或移除具体包括以下步骤,
步骤S1011:开始;
步骤S1012:判断集群是否有节点加入或移出,如果没有,则休眠等待,返回步骤S1011;如果有,则进入步骤S1013;
步骤S1013:各自节点锁定Token、Range分布全局表;
步骤S1014:新增节点随机产生新Token;
步骤S1015:判断新Token集群中是否已经存在,如果存在,则返回步骤S1014;如果不存在,则进入步骤S1016;
步骤S1016:现有节点接收新增Token,所有节点重新计算Range;
步骤S1017:新增节点加入集群,并通知客户端节点、Token、Range变化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510995758.8A CN105653629B (zh) | 2015-12-28 | 2015-12-28 | 一种基于哈希环的分布式数据过滤方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510995758.8A CN105653629B (zh) | 2015-12-28 | 2015-12-28 | 一种基于哈希环的分布式数据过滤方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105653629A true CN105653629A (zh) | 2016-06-08 |
CN105653629B CN105653629B (zh) | 2020-03-13 |
Family
ID=56477737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510995758.8A Active CN105653629B (zh) | 2015-12-28 | 2015-12-28 | 一种基于哈希环的分布式数据过滤方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105653629B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446273A (zh) * | 2016-10-21 | 2017-02-22 | 天津海量信息技术股份有限公司 | 基于rpc实现的ES全局数据消重方法 |
CN107798106A (zh) * | 2017-10-31 | 2018-03-13 | 广东思域信息科技有限公司 | 一种分布式爬虫系统中的url去重方法 |
CN108009019A (zh) * | 2016-10-29 | 2018-05-08 | 网宿科技股份有限公司 | 分布式数据定位实例的方法、客户端及分布式计算系统 |
CN110046164A (zh) * | 2019-04-16 | 2019-07-23 | 中国人民解放军国防科技大学 | 索引独立布谷过滤器、一致性布谷过滤器及操作方法 |
CN112069169A (zh) * | 2020-07-30 | 2020-12-11 | 北京奇艺世纪科技有限公司 | 区块数据存储方法、装置、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120078978A1 (en) * | 2010-09-28 | 2012-03-29 | Yiftach Shoolman | System, methods, and media for compressing non-relational database objects |
CN102843403A (zh) * | 2011-06-23 | 2012-12-26 | 盛大计算机(上海)有限公司 | 基于分布式文件系统的文件处理方法、系统及客户端 |
CN102999571A (zh) * | 2012-11-09 | 2013-03-27 | 深圳市宜搜科技发展有限公司 | 一种集群中单机多节点的实现方法 |
-
2015
- 2015-12-28 CN CN201510995758.8A patent/CN105653629B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120078978A1 (en) * | 2010-09-28 | 2012-03-29 | Yiftach Shoolman | System, methods, and media for compressing non-relational database objects |
CN102843403A (zh) * | 2011-06-23 | 2012-12-26 | 盛大计算机(上海)有限公司 | 基于分布式文件系统的文件处理方法、系统及客户端 |
CN102999571A (zh) * | 2012-11-09 | 2013-03-27 | 深圳市宜搜科技发展有限公司 | 一种集群中单机多节点的实现方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446273A (zh) * | 2016-10-21 | 2017-02-22 | 天津海量信息技术股份有限公司 | 基于rpc实现的ES全局数据消重方法 |
CN108009019A (zh) * | 2016-10-29 | 2018-05-08 | 网宿科技股份有限公司 | 分布式数据定位实例的方法、客户端及分布式计算系统 |
CN107798106A (zh) * | 2017-10-31 | 2018-03-13 | 广东思域信息科技有限公司 | 一种分布式爬虫系统中的url去重方法 |
CN107798106B (zh) * | 2017-10-31 | 2023-04-18 | 广东思域信息科技有限公司 | 一种分布式爬虫系统中的url去重方法 |
CN110046164A (zh) * | 2019-04-16 | 2019-07-23 | 中国人民解放军国防科技大学 | 索引独立布谷过滤器、一致性布谷过滤器及操作方法 |
CN112069169A (zh) * | 2020-07-30 | 2020-12-11 | 北京奇艺世纪科技有限公司 | 区块数据存储方法、装置、电子设备及可读存储介质 |
CN112069169B (zh) * | 2020-07-30 | 2023-08-15 | 北京奇艺世纪科技有限公司 | 区块数据存储方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105653629B (zh) | 2020-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105653629A (zh) | 一种基于哈希环的分布式数据过滤方法 | |
CN105338086B (zh) | 一种分布式的消息转发方法 | |
US9665428B2 (en) | Distributing erasure-coded fragments in a geo-distributed storage system | |
CN105025053A (zh) | 基于云存储技术的分布式文件的上传方法及其系统 | |
US20140122510A1 (en) | Distributed database managing method and composition node thereof supporting dynamic sharding based on the metadata and data transaction quantity | |
CN103841206B (zh) | 一种订阅和发布主题消息的方法 | |
CN104468353A (zh) | 基于sdn的数据中心网络流量管理方法 | |
CA2922665C (en) | Distributed file system using consensus nodes | |
CN101729412A (zh) | 地理信息服务的分布式层次集群方法和系统 | |
CN104135715B (zh) | 一种位置服务的实现方法、装置,及系统 | |
KR101670343B1 (ko) | 피어투피어 데이터 복제를 위한 방법, 장치, 및 시스템 및 마스터 노드 전환을 위한 방법, 장치, 및 시스템 | |
CN105956068A (zh) | 基于分布式数据库的网页url去重方法 | |
CN104539583B (zh) | 一种实时数据库订阅系统及方法 | |
CN107888666A (zh) | 一种跨地域数据存储系统以及数据同步方法和装置 | |
CN105630913A (zh) | 一种基于Redis管道通信的消息传递方法及系统 | |
CN109002484A (zh) | 一种用于顺序消费数据的方法及系统 | |
CN105302500A (zh) | 一种基于动态条带构造的分布式编码方法 | |
CN103838831A (zh) | 一种基于社区划分的在线社交网络海量数据存储方法 | |
CN103336782A (zh) | 一种关系型分布式数据库系统 | |
CN101963978B (zh) | 一种分布式数据库的管理方法、装置及系统 | |
CN104202386A (zh) | 一种高并发量分布式文件系统及其二次负载均衡方法 | |
CN106210123A (zh) | 一个多节点的软件定义网络控制器系统 | |
CN105577734A (zh) | 一种信息备份方法、装置、服务器和终端 | |
CN106713503B (zh) | 实时获取业务服务器信息的方法以及装置 | |
JP6619708B2 (ja) | データ分離評価装置、データ分離評価方法およびデータ分離評価プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 410013 room 605, floor 6, unit n, building A4, Lugu Yuyuan, No. 27, Wenxuan Road, Changsha hi tech Development Zone, Changsha City, Hunan Province Applicant after: Hunan ant software Limited by Share Ltd Address before: 410003 Hunan province Changsha Lugu high tech Zone Business Plaza building 607 room A4 Applicant before: Hunan Yi Fang softcom limited |
|
GR01 | Patent grant | ||
GR01 | Patent grant |