CN109408572A - 基于sb框架及布隆过滤器的海量数据处理方法 - Google Patents
基于sb框架及布隆过滤器的海量数据处理方法 Download PDFInfo
- Publication number
- CN109408572A CN109408572A CN201811158709.9A CN201811158709A CN109408572A CN 109408572 A CN109408572 A CN 109408572A CN 201811158709 A CN201811158709 A CN 201811158709A CN 109408572 A CN109408572 A CN 109408572A
- Authority
- CN
- China
- Prior art keywords
- data
- frame
- business
- bloom filter
- processing method
- 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.)
- Pending
Links
Abstract
本发明公开了一种基于SB框架及布隆过滤器的海量数据处理方法,通过SpringBoot提供独立的具有弹性处理能力应用或将应用嵌入到原有的微服务框架体系中;通过管理API对素材数据进行采集、加工形成业务数据;通过业务API实现业务数据的比对、甄别并返回处理结果。本发明解决了海量数据处理过程中存在的效率问题、存储问题、误判率问题。
Description
技术领域
本发明涉及一种数据处理方法,特别是一种基于SB框架及布隆过滤器的海量数据处理方法。
背景技术
在基于后台的技术开发中经常出现需要基于海量(亿级当量)数据的高效、快速、准确的处理场景:
防缓存穿透攻击;
垃圾数据(邮件)过滤;
黑名单过滤;
非法URL过滤;
以上应用场景对技术提出以下几个共通的要求,第一个是要快速的响应,不能有延迟,尤其是在大量请求高并发的情况下,毫秒级的延迟就会导致整个服务系统宕机;第二是要降低内存的占用空间提高内存使用效率;第三是要提高数据处理的准确率。
现有技术手段中,关系数据库存储、查询;缓存存储、查询;内存数据库存储、查询都存在存储空间占用率高、查询效率低下不能满足大部分的业务需求。并且系统如果判断业务数据存在(合规)则有几率存在误判但是系统判断数据不存在(非法)则数据一定为非法。
因此,需要设计一种海量数据处理方法,以满足以上业务场景需求并提供通用、统一的服务,解决海量数据处理过程中存在的效率问题、存储问题、误判率问题。
发明内容
本发明所要解决的技术问题是提供一种基于SB框架及布隆过滤器的海量数据处理方法。
为解决上述技术问题,本发明所采用的技术方案是:
一种基于SB框架及布隆过滤器的海量数据处理方法,其特征在于包含以下步骤:
步骤一:通过SpringBoot提供独立的具有弹性处理能力应用或将应用嵌入到原有的微服务框架体系中;
步骤二:通过管理API对素材数据进行采集、加工形成业务数据;
步骤三:通过业务API实现业务数据的比对、甄别并返回处理结果。
进一步地,所述步骤一具体为
1.1、通过编码实现SpringBoot框架应用,并根据具体的业务场景及需求配置相对应的系统参数、应用参数形成具有运行能力的闭合应用;
1.2、通过配置使之可以无缝的集成到已有的微服务系统中。
进一步地,所述1.1具体为
A、建立SpringBoot工程,并在POM.XML中引入必须的依赖;
B、编写应用入口类,并根据具体的业务要求添加必须的注解依赖;注解依赖包含
JPA模块依赖:用于系统配置及第三方配置的设置及检索;
MVC模块依赖:用于处理HTTP的请求及响应;
SECURITY模块依赖:用于第三方鉴权处理;
C、根据具体的业务场景及需求编写请求及响应的过滤器链用于对用户的请求及系统的响应进行预加工;
D、实现素材数据采集、加工逻辑的控制层、业务层、数据访问层、领域模型层;
E、实现业务数据比对的控制层、业务层、数据访问层、领域模型层。
进一步地,所述步骤二具体为
2.1、根据具体的业务要求实现定制的Funnel<T>接口或者使用基本数据类型的Funnel对象;
2.2、根据业务需求估算出业务数据的大小当量,并根据该值创建或初始化BloomFilter对象;
2.3、根据业务数据的当量及数据判断错误率的容忍度计算出BitArray的长度及Hash Function的数量;
2.4、选择专业的MurmurHash函数。
进一步地,所述2.2中估算出业务数据的大小当量过程为
设m为BitArray的长度,
设n为素材数据的数量,
设p为误判率,
设k为哈希函数的数量,
E[q]表示q的期望值,
Pr表示概率,∑Pr表示对概率求和,
q表示为二进制向量m的一部分,并设初始值为0(假),当使用一个Hash函数进行计算时得到的位置上的bit为1的可能性为(1-q),
t表示∑的动态下界值。
进一步地,所述步骤三具体为
3.1、通过编码开发,使之能够响应合法的第三方应用合规的调用请求;
3.2、调用必须实现符合本应用要求的数据加密规范;
3.3、调用通过Http、RPC等本应用支持的通讯协议传递业务数据;
3.4、调用传递的业务数据必须符合开发文档中规定的协议类型及数据规范;
3.5、本应用通过实现的数据处理组件进行合规数据计算并同步返回计算结果;
3.6、通过Service Registry暴露服务接口并通过判断调用来源智能启动或关闭安全鉴权功能。
进一步地,所述3.1中编码开发包含
A、实现前置拦截器链:主要功能为验证调用资格、加工并解析调用数据并根据处理结果决定后续流程;
B、实现数据采集、加工控制器:验证调用数据并对数据进行加工后添加进素材池;
C、实现数据验证控制器:验证调用数据并根据验证结果决定后续流程。
进一步地,所述3.5中合规数据计算过程为
A、将需要比对的业务数据进行基本的大小、型号、格式判断;
B、将经过步骤一过滤后的数据使用前置的Hash Function进行运算;
C、将运算后的结果和BitArray中的对应位置的数值进行比对并将结果返回,如果完全匹配说明数据可能存在,如果不完全匹配说明数据肯定不存在。
本发明与现有技术相比,具有以下优点和效果:
本发明的基于SB框架及布隆过滤器的海量数据处理方法数据安全性高;使用Bit向量对象,查询耗时少并且为常量;完全基于计算机系统内存,处理效率极高;海量数据经过处理后内存占用极少,8亿16字节的数据只需要914M而常规处理需要内存多达24G;服务容量可以根据具体的业务繁忙程度进行弹性增减;基于SpringBoot开发可以无缝兼容当前主流的Microservice系统;支持多种访问协议;应用广泛,适应不同的业务场景;提供统一的规范、协议,提供开发效率。
具体实施方式
下面通过实施例对本发明作进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。本申请中将其简称为SB框架。
布隆过滤器,Bloom filter是由Howard Bloom在1970年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloomfilter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况,可见Bloom filter是牺牲了正确率和时间以节省空间。
本发明的一种基于SB框架及布隆过滤器的海量数据处理方法,其特征在于包含以下步骤:
步骤一:通过SpringBoot提供独立的具有弹性处理能力应用或将应用嵌入到原有的微服务框架体系中;
1.1、通过编码实现SpringBoot框架应用,并根据具体的业务场景及需求配置相对应的系统参数、应用参数形成具有运行能力的闭合应用;
A、建立SpringBoot工程,并在POM.XML中引入必须的依赖;
B、编写应用入口类(MAIN),并根据具体的业务要求添加必须的注解依赖;注解依赖包含
JPA模块依赖:用于系统配置及第三方配置的设置及检索;
MVC模块依赖:用于处理HTTP的请求及响应;
SECURITY模块依赖:用于第三方鉴权处理;
C、根据具体的业务场景及需求编写请求及响应的过滤器链用于对用户的请求及系统的响应进行预加工;
D、实现素材数据采集、加工逻辑的控制层、业务层、数据访问层、领域模型层;
E、实现业务数据比对的控制层、业务层、数据访问层、领域模型层。
1.2、也可以通过配置使之可以无缝的集成到已有的微服务系统中。
步骤二:通过管理API对素材数据进行采集、加工形成业务数据;
2.1、根据具体的业务要求实现定制的Funnel<T>接口或者使用基本数据类型的Funnel对象;
2.2、根据业务需求估算出业务数据的大小当量,并根据该值创建或初始化BloomFilter对象;
传统存储方式(内存、数据库)估算方法:业务数据的大小当量=业务数据的峰值数量*单元业务数据的峰值大小,其中单元业务数据的峰值大小要根据其具体的数据类型、存储方式、编码类型来具体确定。
估算出业务数据的大小当量过程为
设m为BitArray(二进制向量)的长度,
设n为素材数据的数量,
设p为误判率,
设k为哈希函数的数量,
E[q]表示q的期望值,
Pr表示概率,∑Pr表示对概率求和,
q表示为二进制向量m的一部分,并设初始值为0(假),当使用一个Hash函数进行计算时得到的位置上的bit为1的可能性为(1-q),
t表示∑的动态下界值。
2.3、根据业务数据的当量及数据判断错误率的容忍度计算出BitArray(二进制向量)的长度及Hash Function(哈希函数)的数量;
2.4、选择专业的MurmurHash函数(非加密型哈希函数,适用于哈希检索操作)。
步骤三:通过业务API实现业务数据的比对、甄别并返回处理结果。
3.1、通过编码开发,使之能够响应合法的第三方应用合规的调用请求;
编码开发包含
A、实现前置拦截器链:主要功能为验证调用资格、加工并解析调用数据并根据处理结果决定后续流程(直接返回、调用下一个拦截器、路由到控制器);
B、实现数据采集、加工控制器:验证调用数据并对数据进行加工后添加进素材池(返回错误、调用业务接口、返回处理结果);
C、实现数据验证控制器:验证调用数据并根据验证结果决定后续流程(错误返回、调用核心服务、返回验证结果)。
3.2、调用必须实现符合本应用要求的数据加密规范;
3.3、调用通过Http、RPC等本应用支持的通讯协议传递业务数据;
3.4、调用传递的业务数据必须符合开发文档中规定的协议类型及数据规范;
3.5、本应用通过实现的数据处理组件进行合规数据计算并同步返回计算结果;
合规数据计算过程为
A、将需要比对的业务数据进行基本的大小、型号、格式判断;
B、将经过步骤一过滤后的数据使用前置的Hash Function(哈希函数)进行运算;
C、将运算后的结果和BitArray中的对应位置的数值进行比对并将结果返回,如果完全匹配说明数据可能(误判率为业务数据加工时设置的误判率的阀值)存在,如果不完全匹配说明数据肯定不存在。
3.6、通过Service Registry暴露服务接口并通过判断调用来源智能启动或关闭安全鉴权功能。
下面通过具体的实施应用场景对本发明进一步说明。
用户登录场景,系统接收到用户登录请求,将传递的用户信息在缓存中查询,如果数据不存在将在数据库中进行查询,如果查询到用户数据则将用户数据放入缓存;不存在则返回用户不存在信息。
以上业务场景中通过编写代码循环快速非法调用合规登录接口并传递不存在的用户信息,由于用户信息在缓存中不存在导致系统不断的进行数据库查询操作占用系统资源(数据库链接,服务器链接),进而引起系统崩溃。
在业务系统前置部署该组件,对所有登录调用进行用户存在性判断,如果不存在系统直接快速返回,避免后续无效的调用,节约系统资源、提高响应速度。
该组件部署前需要进行业务数据估算:
估算出业务数据(用户ID)的当量:8亿;
每个用户ID的大小:16Byte;
系统对用户数据过滤误判率的容忍百分比:1%;
计算需要内存的数量:7668046701Bit约等于914M;
计算需要Hash Fun数量:7;
使用传统的内存来存放这些数据需要:800000000*16÷1024÷1024÷1024*2=24G。
估算完成后需要对该组件进行参数配置:
基础参数配置;
业务数据类型、容量、错误率配置;
配置完成后对业务数据进行初始化加载并提供服务。
本说明书中所描述的以上内容仅仅是对本发明所作的举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种修改或补充或采用类似的方式替代,只要不偏离本发明说明书的内容或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。
Claims (8)
1.一种基于SB框架及布隆过滤器的海量数据处理方法,其特征在于包含以下步骤:
步骤一:通过SpringBoot提供独立的具有弹性处理能力应用或将应用嵌入到原有的微服务框架体系中;
步骤二:通过管理API对素材数据进行采集、加工形成业务数据;
步骤三:通过业务API实现业务数据的比对、甄别并返回处理结果。
2.按照权利要求1所述的基于SB框架及布隆过滤器的海量数据处理方法,其特征在于:所述步骤一具体为
1.1、通过编码实现SpringBoot框架应用,并根据具体的业务场景及需求配置相对应的系统参数、应用参数形成具有运行能力的闭合应用;
1.2、通过配置使之可以无缝的集成到已有的微服务系统中。
3.按照权利要求2所述的基于SB框架及布隆过滤器的海量数据处理方法,其特征在于:所述1.1具体为
A、建立SpringBoot工程,并在POM.XML中引入必须的依赖;
B、编写应用入口类,并根据具体的业务要求添加必须的注解依赖;注解依赖包含
JPA模块依赖:用于系统配置及第三方配置的设置及检索;
MVC模块依赖:用于处理HTTP的请求及响应;
SECURITY模块依赖:用于第三方鉴权处理;
C、根据具体的业务场景及需求编写请求及响应的过滤器链用于对用户的请求及系统的响应进行预加工;
D、实现素材数据采集、加工逻辑的控制层、业务层、数据访问层、领域模型层;
E、实现业务数据比对的控制层、业务层、数据访问层、领域模型层。
4.按照权利要求1所述的基于SB框架及布隆过滤器的海量数据处理方法,其特征在于:所述步骤二具体为
2.1、根据具体的业务要求实现定制的Funnel<T>接口或者使用基本数据类型的Funnel对象;
2.2、根据业务需求估算出业务数据的大小当量,并根据该值创建或初始化BloomFilter对象;
2.3、根据业务数据的当量及数据判断错误率的容忍度计算出BitArray的长度及HashFunction的数量;
2.4、选择专业的MurmurHash函数。
5.按照权利要求4所述的基于SB框架及布隆过滤器的海量数据处理方法,其特征在于:所述2.2中估算出业务数据的大小当量过程为
设m为BitArray的长度,
设n为素材数据的数量,
设p为误判率,
设k为哈希函数的数量,
E[q]:表示q的期望值,
Pr:表示概率,
∑Pr:表示对概率求和,
q:表示为二进制向量m的一部分,并设初始值为0(假),当使用一个Hash函数进行计算时得到的位置上的bit为1的可能性为(1-q),
t:表示∑的动态下界值。
6.按照权利要求1所述的基于SB框架及布隆过滤器的海量数据处理方法,其特征在于:所述步骤三具体为
3.1、通过编码开发,使之能够响应合法的第三方应用合规的调用请求;
3.2、调用必须实现符合本应用要求的数据加密规范;
3.3、调用通过Http、RPC等本应用支持的通讯协议传递业务数据;
3.4、调用传递的业务数据必须符合开发文档中规定的协议类型及数据规范;
3.5、本应用通过实现的数据处理组件进行合规数据计算并同步返回计算结果;
3.6、通过Service Registry暴露服务接口并通过判断调用来源智能启动或关闭安全鉴权功能。
7.按照权利要求6所述的基于SB框架及布隆过滤器的海量数据处理方法,其特征在于:所述3.1中编码开发包含
A、实现前置拦截器链:主要功能为验证调用资格、加工并解析调用数据并根据处理结果决定后续流程;
B、实现数据采集、加工控制器:验证调用数据并对数据进行加工后添加进素材池;
C、实现数据验证控制器:验证调用数据并根据验证结果决定后续流程。
8.按照权利要求6所述的基于SB框架及布隆过滤器的海量数据处理方法,其特征在于:所述3.5中合规数据计算过程为
A、将需要比对的业务数据进行基本的大小、型号、格式判断;
B、将经过步骤一过滤后的数据使用前置的Hash Function进行运算;
C、将运算后的结果和BitArray中的对应位置的数值进行比对并将结果返回,如果完全匹配说明数据可能存在,如果不完全匹配说明数据肯定不存在。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811158709.9A CN109408572A (zh) | 2018-09-30 | 2018-09-30 | 基于sb框架及布隆过滤器的海量数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811158709.9A CN109408572A (zh) | 2018-09-30 | 2018-09-30 | 基于sb框架及布隆过滤器的海量数据处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109408572A true CN109408572A (zh) | 2019-03-01 |
Family
ID=65466688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811158709.9A Pending CN109408572A (zh) | 2018-09-30 | 2018-09-30 | 基于sb框架及布隆过滤器的海量数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408572A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930924A (zh) * | 2020-07-02 | 2020-11-13 | 上海微亿智造科技有限公司 | 基于布隆过滤器的数据查重系统及方法 |
CN116094748A (zh) * | 2022-11-23 | 2023-05-09 | 紫光云技术有限公司 | 一种基于布隆过滤器的报文验签拦截系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116599A (zh) * | 2012-11-30 | 2013-05-22 | 浙江工商大学 | 一种基于改进Bloom Filter结构的城市海量数据流快速冗余消除方法 |
CN104317947A (zh) * | 2014-11-07 | 2015-01-28 | 烽火通信科技股份有限公司 | 一种基于海量数据的实时结构化数据比对系统 |
CN108388519A (zh) * | 2018-03-19 | 2018-08-10 | 车智互联(北京)科技有限公司 | 基于SpringBoot服务的Mock测试方法 |
CN108536433A (zh) * | 2018-04-16 | 2018-09-14 | 云南软捷科技有限公司 | 一种j2ee开发框架和基于该j2ee开发框架的开发方法 |
-
2018
- 2018-09-30 CN CN201811158709.9A patent/CN109408572A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116599A (zh) * | 2012-11-30 | 2013-05-22 | 浙江工商大学 | 一种基于改进Bloom Filter结构的城市海量数据流快速冗余消除方法 |
CN104317947A (zh) * | 2014-11-07 | 2015-01-28 | 烽火通信科技股份有限公司 | 一种基于海量数据的实时结构化数据比对系统 |
CN108388519A (zh) * | 2018-03-19 | 2018-08-10 | 车智互联(北京)科技有限公司 | 基于SpringBoot服务的Mock测试方法 |
CN108536433A (zh) * | 2018-04-16 | 2018-09-14 | 云南软捷科技有限公司 | 一种j2ee开发框架和基于该j2ee开发框架的开发方法 |
Non-Patent Citations (2)
Title |
---|
WILLIAM_JM: ""大数据批处理框架Spring Batch+spring boot+quartz"", 《HTTPS://BLOG.CSDN.NET/WILLIAM_JM/ARTICLE/DETAILS/78964538》 * |
赵晓永: "《面向云计算的数字存储关键技术研究》", 31 December 2014, 河北科学技术出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930924A (zh) * | 2020-07-02 | 2020-11-13 | 上海微亿智造科技有限公司 | 基于布隆过滤器的数据查重系统及方法 |
CN116094748A (zh) * | 2022-11-23 | 2023-05-09 | 紫光云技术有限公司 | 一种基于布隆过滤器的报文验签拦截系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112153085B (zh) | 一种数据处理方法、节点及区块链系统 | |
US8078880B2 (en) | Portable personal identity information | |
US20230070833A1 (en) | Detecting fraud using machine-learning | |
AU2017329089A1 (en) | Systems and methods for interception of smart contracts | |
JP6880055B2 (ja) | メッセージ偽造防止実施方法及びデバイス | |
US11494403B2 (en) | Method and apparatus for storing off-chain data | |
US20230073638A1 (en) | Local data classification based on a remote service interface | |
CN107358079A (zh) | 实时人脸识别登录验证方法及系统 | |
CN111371772A (zh) | 基于redis的智能网关限流方法、系统和计算机设备 | |
CN109408572A (zh) | 基于sb框架及布隆过滤器的海量数据处理方法 | |
KR20210130825A (ko) | 분산 원장 시스템으로의 데이터 기록의 카피의 잘못된 전송 방지 | |
CN111369354A (zh) | 面向区块链应用的数据监控方法、装置及存储介质 | |
GB2601165A (en) | Transaction verification | |
WO2019114246A1 (zh) | 一种身份认证方法、服务器及客户端设备 | |
CN108600259B (zh) | 设备的认证和绑定方法及计算机存储介质、服务器 | |
CN110035104B (zh) | 适配处理方法及装置、服务处理系统 | |
KR102385702B1 (ko) | 데이터 분석 서비스 방법 및 이를 이용한 데이터 분석 시스템 | |
CN108108310A (zh) | 一种数据处理方法、装置及服务器 | |
CN111784352A (zh) | 认证风险识别方法、装置和电子设备 | |
CN112926956A (zh) | 一种区块链财务支付管理方法及系统 | |
Lahmar et al. | A pattern-based adaptation for abstract applications in pervasive environments | |
CN110647757A (zh) | 基于智能合约的数据处理方法及相关装置 | |
CN109284203A (zh) | 安全数据备份方法和安全数据备份系统 | |
CN109997166B (zh) | 用于截取智能合同的系统和方法 | |
CN113342275B (zh) | 区块链节点存取数据的方法、设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190301 |