一种数据处理方法、业务服务器及数据处理系统与流程

文档序号:18525131发布日期:2019-08-24 10:09阅读:156来源:国知局
一种数据处理方法、业务服务器及数据处理系统与流程

本发明涉及数据库技术领域,更具体地说,涉及一种数据处理方法、业务服务器及数据处理系统。



背景技术:

在业务白名单中的用户为合法用户,在非业务白名单中的用户为不合法用户。在进行业务处理过程中,针对存在于业务白名单的中的用户,当其发起的用户请求时,执行相应的业务处理,而非业务白名单中的用户,当其发起的用户请求时,不执行业务处理。

假如,当白名单的用户请求为1个,非白名单的用户请求为10000个,即有10000个用户不在白名单中,要判断1个用户请求是否在白名单中时,白名单中的1个用户请求和非白名单的10000个用户请求都会在缓存中进行查询,然后在数据库mysql中进行查询,由于mysql数据库的数据是存储在磁盘上的,此时额外的10000个非白名单的用户请求造成了磁盘的资源消耗。



技术实现要素:

有鉴于此,本发明实施例公开了一种数据处理方法、业务服务器及数据处理系统,

为实现上述目的,现提出方案如下:

本发明第一方面公开了一种数据处理方法,应用于设置有布隆过滤器bloomfilter的业务服务器,所述方法包括:

当接收到用户请求时,基于所述布隆过滤器bloomfilter和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中;

若否,向所述用户发送不能处理业务的提示信息;

若是,则查询分布式内存缓存redis中是否存在所述用户,若存在,则向所述用户反馈用户请求响应信息。

优选的,所述预先存储于业务服务器内存中的白名单指纹数据的存储过程,包括:

当所述业务服务器启动时,在数据库mysql中查询所述白名单数据;

将查询到的所述白名单数据存储于所述分布式内存缓存redis中,并读取白名单指纹数据配置信息;

基于所述白名单指纹数据配置信息生成所述白名单指纹数据,并将所述白名单指纹数据存储于所述业务服务器内存。

优选的,所述基于所述白名单指纹配置信息生成所述白名单指纹数据,并将所述白名单指纹数据存储于所述业务服务器内存,包括:

基于所述布隆过滤器bloomfilter和所述白名单数据指纹配置信息对所述白名单数据进行n次hash运算,得到各个所述白名单数据分别对应的n个hash值,n的取值为大于等于1的正整数;

基于所述布隆过滤器bloomfilter的存储方式和所述白名单数据的hash值,确定所述白名单数据的存储位置,将所述存储位置置1,构成所述白名单指纹数据;

将得到的各个所述白名单指纹数据存储于所述业务服务器内存。

优选的,当接收到用户请求时,基于所述布隆过滤器bloomfilter和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于所述白名单数据中,包括:

当接收到用户请求时,获取所述用户请求对应的用户数据,并基于所述布隆过滤器bloomfilter对所述用户数据进行n次hash运算,得到n个所述用户数据的hash值;

判断所述用户数据的hash值对应所述布隆过滤器bloomfilter的存储位置是否为1;

若是,则所述用户请求对应的用户存在于所述白名单数据中;

若否,则所述用户请求对应的用户不存在于所述白名单数据中。

优选的,还包括:

当所述业务服务器接收到所述白名单数据的更新请求操作时,更新所述数据库mysql中的白名单数据,其中,所述更新请求操作包括添加操作和删除操作;

将更新后的所述数据库mysql中的白名单数据存储至所述分布式内存缓存redis中;

基于所述分布式内存缓存redis中的更新后的所述数据库mysql的白名单数据更新所述业务服务器的本地指纹数据。

优选的,所述当所述业务服务器接收到所述白名单数据的更新请求操作之后,还包括:

将所述白名单数据的更新请求信息发送至消息队列,使其他业务服务器基于所述消息队列的所述白名单数据的更新请求信息,更新所述其他业务服务器的本地指纹数据。

优选的,还包括:

监听所述消息队列中有所述白名单数据的指纹数据更新时,更新所述业务服务器的本地指纹数据。

本发明第二方面公开了一种业务服务器,包括:

处理器、存储器和布隆过滤器bloomfilter;

所述处理器,用于接收用户请求;向用户发送不能处理业务的提示信息;查询分布式内存缓存redis中是否存在所述用户,若存在,则向所述用户反馈用户请求响应信息;

所述存储器,用于存储业务服务器内存中的白名单指纹数据;

所述布隆过滤器bloomfilter,用于确定所述用户请求对应的用户是否存在于白名单数据中。

优选的,所述处理器,具体用于:

当所述业务服务器启动时,在数据库mysql中查询所述白名单数据,将查询到的所述白名单数据存储于所述分布式内存缓存redis中,并读取白名单指纹数据配置信息,基于所述白名单指纹数据配置信息生成白名单指纹数据,并将所述白名单指纹数据存储于所述业务服务器内存。

本发明第三方面公开了一种数据处理系统,包括:权8或权9所述的业务服务器,数据库mysql和分布式内存缓存redis;

业务服务器,用于当接收到用户请求时,基于所述布隆过滤器bloomfilter和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中,若否,向所述用户发送不能处理业务的提示信息,若是,则查询所述分布式内存缓存redis中是否存在所述用户,若存在,则向所述用户反馈用户请求响应信息;

所述数据库mysql,用于存储所有的白名单数据;

所述分布式内存缓存redis,用于存储所述业务服务器上传的白名单数据。

经由上述技术方案可知,本发明公开了一种数据处理方法、业务服务器及数据处理系统,当接收到用户请求时,基于布隆过滤器bloomfilter和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中,若否,向用户发送不能处理业务的提示信息,若是,则查询分布式内存缓存redis中是否存在用户,若存在,则向用户反馈用户请求响应信息。通过上述方法,当用户不存在白名单数据中时,则不查询分布式内存缓存redis中是否存在用户,用户存在白名单数据中时,则查询分布式内存缓存redis中是否存在用户,从而减少向分布式内存缓存redis发送查询请求的过程,实现降低分布式内存缓存redis的资源消耗的目的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种数据处理系统的结构框架图;

图2为本发明实施例公开的一种数据处理方法的流程示意图;

图3为本发明实施例公开的预先存储于业务服务器内存中的白名单指纹数据的存储过程的流程示意图;

图4为本发明实施例公开的一种存储白名单指纹数据的流程示意图;

图5为本发明实施例公开的通过哈希函数hash取模来计算出在布隆过滤器bloomfilye中的插入白名单数据在位数组bitarray中的位置的结构示意图;

图6为本发明实施例公开的确定用户请求对应的用户是否存在于白名单数据中的流程示意图;

图7为本发明实施例公开的一种业务服务器的结构示意图;

图8为本发明实施例公开的一种数据处理系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

由背景技术可知,现有技术中,当白名单的用户请求为1个,非白名单的用户请求为10000个,即有10000个用户不在白名单中,要判断1个用户请求是否在白名单中时,白名单中的1个用户请求和非白名单的10000个用户请求都会在缓存中进行查询,然后在数据库mysql中进行查询,由于mysql数据库的数据是存储在磁盘上的,此时额外的10000个非白名单的用户请求造成了磁盘的资源消耗。

因此,本发明实施例公开了一种数据处理方法,业务服务器及数据处理系统,以实现降低分布式内存缓存redis的资源消耗的目的。

如图1所示,为本发明实施例公开的一种数据处理系统的结构框架图,该数据处理系统10,包括:

数据库11、数据库12、分布式内存缓存(redis)13、redis14、redis15、业务服务器16、业务服务器17、布隆过滤器(bloomfilter)18和bloomfilter19。其中,数据库为mysql数据库。

所述数据库11,用于存储所有的白名单数据。

需要说明的是,白名单数据包含于白名单中,该白名单数据用于指示合法用户。

需要说明的是,数据库的白名单数据是存储在磁盘上。

需要说明的是,所述数据库11和数据库12的功能是一样的。

需要说明的是,数据库的数量可以为多个,具体数据库的数量由技术人员根据实际情况进行设置。

需要说明的是,所述白名单数据为在白名单中的用户所发起的数据。在业务白名单中的用户为合法用户,在非业务白名单中的用户为不合法用户。在进行业务处理过程中,针对存在于业务白名单的中的用户,当其发起的用户请求时,执行相应的业务处理,而非业务白名单中的用户,当其发起的用户请求时,不执行相应的业务处理。

所述数据库12,用于加载所述白名单数据到所述分布式内存缓存redis中。

所述redis13,用于存储所述业务服务器16上传的白名单数据。

需要说明的是,所述redis13、所述redis14和所述redis15的功能是一样的。

需要说明的是,redis的数量可以为多个,具体redis的数量由技术人员根据实际情况进行设置。

所述业务服务器16,用于当接收到用户请求时,基于所述布隆过滤器bloomfilter和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中,若否,向所述用户发送不能处理业务的提示信息,若是,则查询所述redis中是否存在所述用户,若存在,则向所述用户反馈用户请求响应信息。

所述业务服务器17,用于加载所述白名单数据到所述redis13缓存中。

需要说明的是,指定加载所述白名单数据到所述redis13缓存中的业务服务器由技术人员进行指定。

所述bloomfilter18,用于确定所述用户请求对应的用户是否存在于所述白名单数据中。

需要说明的是,通过boomfilter对非白名单用户的数据进行过滤,从而确定白名单数据中的用户。

在图1中还公开的基于该数据处理系统10的结构框架实现数据处理的执行过程,如下所示:

step-1,当业务服务器启动时,在数据库mysql中查询白名单数据。

step-2,将查询到的所述白名单数据存储于所述分布式内存缓存redis中。

step-3,所述业务服务器读取白名单指纹数据配置信息,基于所述白名单指纹数据配置信息生成白名单指纹数据,并将所述白名单指纹数据存储于业务服务器内存。

step-4,当有用户请求时,首先通过布隆过滤器bloomfilter确定当前用户是否在所述白名单数据中,如果不在,则向所述用户发送不能处理业务的提示信息。

step-5,如果所述当前用户在所述白名单数据中,则查询所述分布式内存缓存redis中是否存在所述用户。

step-6,当所述业务服务器接收到所述白名单数据的更新请求操作时,更新所述数据库mysql中的白名单数据,其中,所述更新请求操作包括添加操作和删除操作。

step-7,将更新后的所述数据库mysql中的白名单数据存储至所述分布式内存缓存redis中。

step-8,基于所述分布式内存缓存redis中的更新后的所述数据库mysql的白名单数据更新所述业务服务器的本地指纹数据。

step-9,将所述白名单数据的更新请求信息发送至消息队列,使其他业务服务器基于所述消息队列的所述白名单数据的更新请求信息,更新所述其他业务服务器的本地指纹数据。

本发明实施例公开了一种数据处理系统,当接收到用户请求时,基于布隆过滤器bloomfilter和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中,若否,向用户发送不能处理业务的提示信息,若是,则查询分布式内存缓存redis中是否存在用户,若存在,则向用户反馈用户请求响应信息。通过上述系统,当用户不存在白名单数据中时,则不查询分布式内存缓存redis中是否存在用户,用户存在白名单数据中时,则查询分布式内存缓存redis中是否存在用户,从而减少向分布式内存缓存redis发送查询请求的过程,实现降低分布式内存缓存redis的资源消耗的目的。

如图2所示,为本发明实施例公开的一种数据处理方法的流程示意图,具体包括如下步骤:

步骤s201:当接收到用户请求时,基于所述布隆过滤器bloomfilter和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中,若否,则执行步骤s202,若是,则执行步骤s203。

在步骤s201中,所述布隆过滤器bloomfilter在内存空间和cpu计算时间上做了均衡,原始数据缩小10倍,比一般的哈希函数hash算法在空间上有着较大的优势,一般所述hash算法只使得所述原始数据缩小2倍至4倍,基于所述布隆过滤器bloomfilter采用所述hash算法的方式,在cpu计算时间上达到高效。

在具体实现步骤s201的过程中,基于所述布隆过滤器bloomfilter生成的所述白名单指纹数据,是原始数据的1/10大小。

需要说明的是,通过预先存储于业务服务器内存中的白名单数据无法确定所述用户请求对应的用户时,所述用户请求对应的用户不在白名单数据中。

需要说明的是,所述用户请求的数量可以为多条。

需要说明的是,当设置有所述布隆过滤器bloomfilter的业务服务器接收到用户请求时,通过所述布隆过滤器bloomfilter进行过滤,确定用户是否在白名单数据中,如果在,则通过所述redis缓存中进行进一步确认,如果所述用户在所述redis缓存中,则确定所述用户在所述白名单数据中。

步骤s202:向所述用户发送不能处理业务的提示信息。

需要说明的是,所述提示信息用于提醒所述用户不能处理业务,可选的,所述提示信息为“抱歉,您不是合法用户,无法为您进行业务处理”。

需要说明的是,所述提示信息的形式可以是语音播报的形式,也可以是文字提醒的形式,也可以是其他形式,具体不能处理业务的提示信息的形式的设置,由技术人员根据实际情况进行设置。

步骤s203:则查询所述分布式内存缓存redis中是否存在所述用户,若存在,则执行步骤s204,若不存在,则执行步骤s205。

在执行步骤s203的过程中,所述分布式内存缓存redis存储所述白名单数据。

需要说明的是,查询分布式内存缓存redis的时间公式如下:

qtime=bizservermemorytime+(n/n*10001)(netiotime*2+redismemorytime)

其中,bizservermemorytime为业务服务器内存处理时间,n/n*10001中n的取值为大于等于1的正整数,netiotime为服务进程到数据库mysql的网络io耗时,由于是请求加响应,所以所述netiotime要乘以2,redismemorytime为分布式内存缓存reids记忆时间。

需要说明的是,所述分布式内存缓存redis的数量可以为多个,具体所述分布式内存缓存redis数量的确定由技术人员根据实际情况进行设置。

步骤s204:向所述用户反馈用户请求响应信息。

需要说明的是,向所述用户反馈用户请求响应信息的反馈形式,可以是语音提示方式反馈,也可以是文字信息方式反馈,也可以是其他方式反馈,具体向用户反馈请求响应信息的方式由技术人员根据实际情况进行设置。

步骤s205:不向所述用户反馈用户请求响应信息。

本发明实施例公开了一种数据处理方法,当接收到用户请求时,基于布隆过滤器bloomfilter和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中,若否,向用户发送不能处理业务的提示信息,若是,则查询分布式内存缓存redis中是否存在用户,若存在,则向用户反馈用户请求响应信息。通过上述方法,当用户不存在白名单数据中时,则不查询分布式内存缓存redis中是否存在用户,用户存在白名单数据中时,则查询分布式内存缓存redis中是否存在用户,从而减少向分布式内存缓存redis发送查询请求的过程,实现降低分布式内存缓存redis的资源消耗的目的。

基于上述本发明实施例公开的数据处理方法,在上述步骤s201中涉及到预先存储于业务服务器内存中的白名单指纹数据的存储过程,如图3,示出了预先存储于业务服务器内存中的白名单指纹数据的存储过程的流程示意图,具体包括如下步骤:

步骤s301:当所述业务服务器启动时,在数据库mysql中查询所述白名单数据。

需要说明的是,在所述数据库mysql中查询白名单数据的查询方式可以是查询用户id的方式,也可以是其他的查询方式。

步骤s302:将查询到的所述白名单数据存储于所述分布式内存缓存redis中,并读取白名单指纹数据配置信息。

在执行步骤s302的过程中,所述白名单指纹数据配置信息决定了所述布隆过滤器bloomfilter对原始白名单数据的压缩率。

需要说明的是,所述白名单指纹数据配置信息为所述布隆过滤器bloomfilter对所述用户数据进行哈希函数hash运算的运算次数值n,其中,所述n的取值为大于等于1的正整数。

需要说明的是,由指定的业务服务器加载所述白名单数据到所述分布式内存缓存redis中,具体所述业务服务器的指定由技术人员根据实际情况进行指定。

基于上述业务服务器的指定的过程,这里举例进行说明:

比如,当第一业务服务器启动时,所述第一业务服务器从数据库mysql中查询白名单数据,指定第二业务服务器加载所述白名单数据到分布式内存缓存redis中。

需要说明的是,所述业务服务器的数量可以为多个,具体所述业务服务器数量的设置,由技术人员根据实际情况进行设置。如图1示出的架构中,包含了2个业务服务器,但是本申请实施例并不仅限于此。

步骤s303:基于所述白名单指纹数据配置信息生成所述白名单指纹数据,并将所述白名单指纹数据存储于所述业务服务器内存。

需要说明的是,所述白名单指纹数据的大小是所述原始白名单数据的1/2到1/10,因此可以直接存放在所述业务服务器内存中。

需要说明的是,用户请求对应的用户不在白名单数据时,需要到所述分布式内存缓存redis的全部白名单数据中进行核实。

通过步骤s301-步骤s303当所述业务服务器启动时,在数据库mysql中查询所述白名单数据,将查询到的所述白名单数据存储于所述分布式内存缓存redis中,并读取白名单指纹数据配置信息,基于所述白名单指纹数据配置信息生成所述白名单指纹数据,并将所述白名单指纹数据存储于所述业务服务器内存。

在上述步骤s303中涉及到基于白名单指纹配置信息生成白名单指纹数据,并将白名单指纹数据存储于业务服务器内存的过程,如图4,示出了一种存储白名单指纹数据的流程示意图,具体包括如下步骤:

步骤s401:基于所述布隆过滤器bloomfilter和所述白名单数据指纹配置信息对所述白名单数据进行n次hash运算,得到各个所述白名单数据分别对应的n个hash值,n的取值为大于等于1的正整数。

步骤s402:基于所述布隆过滤器bloomfilter的存储方式和所述白名单数据的hash值,确定所述白名单数据的存储位置,将所述存储位置置1,构成所述白名单指纹数据。

在执行步骤s402的过程中,所述布隆过滤器bloomfilter的存储方式通常采用位数组bitarray的方式实现。

需要说明的是,确定所述白名单数据的存储位置,将所述存储位置的比特位bit置为1。

需要说明的是,在所述布隆过滤器bloomfilter中插入一个白名单数据,会使用k个哈希函数hash来计算出k个在所述bitarray中的位置,从而确定所述白名单数据的存储位置,然后将所述bitarray中的位置的比特位bit都置为1,其中,所述k的取值为大于等于1的正整数。

在本发明实施例中,具体是在所述布隆过滤器bloomfilter中插入一个白名单数据,该白名单数据对应可执行相关操作的用户。

需要说明的是,在所述布隆过滤器bloomfilter中查找一个白名单数据,会使用和插入过程中相同的哈希函数hash,通过hash取模后,取出每个bit位所对应的值,当所有bit位中有一个值不为1,则所述白名单数据不存在,即用户数据不在白名单数据中,从而无法生成白名单指纹数据。

基于上述布隆过滤器bloomfilter中插入白名单数据,使用哈希函数hash取模来计算出其在为位数组bitarray中的位置的过程,为了方便理解上述在布隆过滤器bloomfilter中插入白名单数据,通过哈希函数hash来计算出其在为位数组bitarray中的位置的过程,参考图5,对上述具体过程进行举例说明:

假设bit总数为19,初始化时m个bit都被置成0,在布隆过滤器bloomfilter中添加两个白名单数据,x和y,x的两次hash取模后的值分别为4和9,根据哈希函数hsah算法,4位和9位被置成1,y的两次hash取模后的值分别为14和19,根据哈希函数hash算法,14位和19位被置成1。

步骤s403:将得到的各个所述白名单指纹数据存储于所述业务服务器内存。

上述步骤s403的执行过程与图3示出的步骤s303的执行过程相同,且执行原理也相同,可参见,这里不再进行赘述。

通过步骤s401-步骤s403基于所述布隆过滤器bloomfilter和所述白名单数据指纹配置信息对白名单数据进行n次hash运算,得到各个所述白名单数据分别对应的n个hash值,n的取值为大于等于1的正整数,基于所述布隆过滤器bloomfilter的存储方式和所述白名单数据的hash值,确定所述白名单数据的存储位置,将所述存储位置置1,构成白名单指纹数据,将得到的各个所述白名单指纹数据存储于业务服务器内存。

本发明实施例中,基于所述布隆过滤器bloomfilter的存储方式和所述白名单数据的hash值,确定白名单数据的存储位置,并将所述存储位置置1,构成白名单指纹数据,并将得到的各个所述白名单指纹数据存储于所述业务服务器内存。

在上述步骤s201中涉及到当接收到用户请求时,基于所述布隆过滤器bloomfilter和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中的过程,如图6,示出了确定用户请求对应的用户是否存在于白名单数据中的流程示意图,具体包括如下步骤:

步骤s601:当接收到用户请求时,获取所述用户请求对应的用户数据,并基于所述布隆过滤器bloomfilter对所述用户数据进行n次hash运算,得到n个所述用户数据的hash值。

需要说明的是,n的取值为大于等于1的正整数。

步骤s602:判断所述用户数据的hash值对应所述布隆过滤器bloomfilter的存储位置是否为1,若是,则执行步骤s603,若否,则执行步骤s604。

步骤s603:则所述用户请求对应的用户存在于所述白名单数据中。

步骤s604:则所述用户请求对应的用户不存在于所述白名单数据中。

通过步骤s601-步骤s604当接收到用户请求时,获取所述用户请求对应的用户数据,并基于所述布隆过滤器bloomfilter对所述用户数据进行n次hash运算,得到n个所述用户数据的hash值,判断所述用户数据的hash值对应所述布隆过滤器bloomfilter的存储位置是否为1,若是,则所述用户请求对应的用户存在于所述白名单数据中,若否,则所述用户请求对应的用户不存在于所述白名单数据中。

在本发明实施例中,当接收到用户请求时,获取所述用户请求对应的用户数据,并基于所述布隆过滤器bloomfilter对所述用户数据进行n次hash运算,得到n个所述用户数据的hash值,判断所述用户数据的hash值对应所述布隆过滤器bloomfilter的存储位置是否为1,若是,则所述用户请求对应的用户存在于所述白名单数据中,若否,则所述用户请求对应的用户不存在于所述白名单数据中。通过上述方法,基于所述布隆过滤器bloomfilter对所述用户数据进行计算得到所述用户数据的hash值进行判断,从而确定所述用户请求对应的用户是否存在于所述白名单数据中。

可选的,在执行上述本发明实施例公开的数据处理方法的过程中,当设置有所述布隆过滤器bloomfilter的所述业务服务器接收到所述白名单数据的更新请求操作时,更新所述数据库mysql中的白名单数据,其中,所述更新请求操作包括添加操作和删除操作,将更新后的所述数据库mysql中的白名单数据存储至所述分布式内存缓存redis中,基于所述分布式内存缓存redis中的更新后的所述数据库mysql的白名单数据更新所述业务服务器的本地指纹数据。

可选的,当所述业务服务器接收到所述白名单数据的更新请求操作之后,将所述白名单数据的更新请求信息发送至消息队列,使其他业务服务器基于所述消息队列的所述白名单数据的更新请求信息,更新所述其他业务服务器的本地指纹数据。

需要说明的是,由于各业务服务器不能直接进行通信,因此收到更新请求操作的业务服务器将更新请求信息发送至所述消息队列,其他业务服务器根据所述消息队列的所述更新请求信息,更新本地的指纹数据。

可选的,监听所述消息队列中有所述白名单数据的指纹数据更新时,更新所述业务服务器的本地指纹数据。

需要说明的是,业务服务器在启动时,同时启动了所述消息队列的监听线程。

基于上述本发明实施例公开了一种数据处理方法,应用于设置有布隆过滤器bloomfilter的业务服务器,如图7,示出了一种业务服务器的结构示意图,该业务服务器700具体包括:

处理器701、存储器702和布隆过滤器bloomfilter703。

所述处理器701,用于接收用户请求;向用户发送不能处理业务的提示信息;查询分布式内存缓存redis中是否存在所述用户,若存在,则向所述用户反馈用户请求响应信息。

所述存储器702,用于存储业务服务器内存中的白名单指纹数据。

所述布隆过滤器bloomfilter703,用于确定所述用户请求对应的用户是否存在于白名单数据中。

进一步的,所述处理器701,具体用于当所述业务服务器启动时,在数据库mysql中查询所述白名单数据,将查询到的所述白名单数据存储于所述分布式内存缓存redis中,并读取白名单指纹数据配置信息,基于所述白名单指纹数据配置信息生成所述白名单指纹数据,并将所述白名单指纹数据存储于所述业务服务器700内存。

进一步的,所述基于所述白名单指纹配置信息生成所述白名单指纹数据,并将所述白名单指纹数据存储于所述业务服务器内存的所述处理器701,具体用于基于所述布隆过滤器bloomfilter703和所述白名单数据指纹配置信息对所述白名单数据进行n次hash运算,得到各个所述白名单数据分别对应的n个hash值,n的取值为大于等于1的正整数,基于所述布隆过滤器bloomfilter703的存储方式和所述白名单数据的hash值,确定所述白名单数据的存储位置,将所述存储位置置1,构成所述白名单指纹数据,将得到的各个所述白名单指纹数据存储于所述业务服务器700内存。

进一步的,所述当接收到用户请求时,基于所述布隆过滤器bloomfilter703和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于所述白名单数据中的所述处理器701,具体用于当接收到用户请求时,获取所述用户请求对应的用户数据,并基于所述布隆过滤器bloomfilter703对所述用户数据进行n次hash运算,得到n个所述用户数据的hash值,判断所述用户数据的hash值对应所述布隆过滤器bloomfilter703的存储位置是否为1,若是,则所述用户请求对应的用户存在于所述白名单数据中,若否,则所述用户请求对应的用户不存在于所述白名单数据中。

本发明实施例公开了一种业务服务器700,确定所述用户请求对应的用户是否存在于白名单数据中,基于布隆过滤器bloomfilter703过滤了非白名单数据中的用户到分布式内存缓存redis的请求,从而节省了网络io耗时和缓存时间,从而降低分布式内存缓存redis的资源消耗。

可选的,所述业务服务器700,还包括:

第一更新模块,用于当所述业务服务器700接收到所述白名单数据的更新请求操作时,更新所述数据库mysql中的白名单数据,其中,所述更新请求操作包括添加操作和删除操作。

存储模块,用于将更新后的所述数据库mysql中的白名单数据存储至所述分布式内存缓存redis中。

第二更新模块,用于基于所述分布式内存缓存redis中的更新后的所述数据库mysql的白名单数据更新所述业务服务器的本地指纹数据。

第三更新模块,用于将所述白名单数据的更新请求信息发送至消息队列,使其他业务服务器基于所述消息队列的所述白名单数据的更新请求信息,更新所述其他业务服务器的本地指纹数据。

第四更新模块,用于监听所述消息队列中有所述白名单数据的指纹数据更新时,更新所述业务服务器的本地指纹数据。

基于图2公开了一种数据处理方法,本发明实施例对应公开了一种数据处理系统,如图8所示,该数据处理系统800具体包括:

所述业务服务器700,数据库mysql801和分布式内存缓存redis802。

所述业务服务器700,用于当接收到用户请求时,基于所述布隆过滤器bloomfilter703和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中,若否,向所述用户发送不能处理业务的提示信息,若是,则查询所述分布式内存缓存redis802中是否存在所述用户,若存在,则向所述用户反馈用户请求响应信息。

所述数据库mysql801,用于存储所有的白名单数据。

所述分布式内存缓存redis802,用于存储所述业务服务器700上传的白名单数据。

本发明实施例公开了一种数据处理系统800,当接收到用户请求时,基于所述布隆过滤器bloomfilter703和预先存储于业务服务器内存中的白名单指纹数据确定所述用户请求对应的用户是否存在于白名单数据中,若否,向所述用户发送不能处理业务的提示信息,若是,则查询所述分布式内存缓存redis802中是否存在所述用户,若存在,则向所述用户反馈用户请求响应信息,存储所有的白名单数据。通过上述系统,当用户不存在白名单数据中时,则不查询分布式内存缓存redis802中是否存在用户,当用户存在白名单数据中时,则查询分布式内存缓存redis802中是否存在用户,从而减少向分布式内存缓存redis802的查询请求的过程,实现降低分布式内存缓存redis802的资源消耗的目的。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1