CN117793204A - 一种业务请求的处理方法和装置 - Google Patents

一种业务请求的处理方法和装置 Download PDF

Info

Publication number
CN117793204A
CN117793204A CN202311807605.7A CN202311807605A CN117793204A CN 117793204 A CN117793204 A CN 117793204A CN 202311807605 A CN202311807605 A CN 202311807605A CN 117793204 A CN117793204 A CN 117793204A
Authority
CN
China
Prior art keywords
service request
bloom
byte
timestamp
bloom filter
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
Application number
CN202311807605.7A
Other languages
English (en)
Inventor
王国涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi Safety Technology Co Ltd
Original Assignee
Tianyi Safety Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianyi Safety Technology Co Ltd filed Critical Tianyi Safety Technology Co Ltd
Priority to CN202311807605.7A priority Critical patent/CN117793204A/zh
Publication of CN117793204A publication Critical patent/CN117793204A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种业务请求的处理方法和装置,包括:获取业务请求,确定业务请求的标识以及时间戳。根据所述业务请求的标识判断业务请求是否存在于布隆时间环,若是,则拒绝业务请求。其中,布隆时间环包括N个布隆过滤器,且N个布隆过滤器按照时间顺序循环使用,N为大于2的整数。否则,根据业务请求的时间戳从布隆时间环中确定业务请求对应的第一布隆过滤器。将业务请求以及业务请求的时间戳添加至第一布隆过滤器。在确定第一布隆过滤器的误判率达到第一阈值,且业务请求的时间戳达到第二阈值时,从第一布隆过滤器中删除时间戳和业务请求,实现降低布隆过滤器的误判率,避免重复处理相同的请求,同时保证请求都得到处理。

Description

一种业务请求的处理方法和装置
技术领域
本发明涉及数据处理领域,尤其涉及一种业务请求的处理方法和装置。
背景技术
随着互联网的发展,系统中的业务请求量也随之增加,产生了请求高并发的情况。由于网络的不可靠性和消息传输的不确定性,可能存在接收到重复业务请求的问题。
相关技术中,常使用布隆过滤器来解决上述问题。将请求的唯一标识保存至布隆过滤器中,然后处理该请求。在处理新请求时,首先判断该请求的唯一标识是否存在,进而避免重复处理相同的请求。但在判断请求是否存在时,存在误判的情况,即布隆过滤器判断请求存在,但实际该请求上不存在。随着布隆过滤器中保存的请求的数量增加,误判率也随之增加。
因此,如何降低布隆过滤器的误判率,避免重复处理相同的请求,同时保证请求都得到处理,是目前亟需解决的问题。
发明内容
本发明实施例提供一种业务请求的处理方法和装置,用于实现降低布隆过滤器的误判率,避免重复处理相同的请求,同时保证请求都得到处理。
第一方面,本发明实施例提供一种业务请求的处理方法,包括:
获取业务请求,确定所述业务请求的标识以及时间戳;
根据所述业务请求的标识判断所述业务请求是否存在于布隆时间环,若是,则拒绝所述业务请求;所述布隆时间环包括N个布隆过滤器,且所述N个布隆过滤器按照时间顺序循环使用;N为大于2的整数;
否则,根据所述业务请求的时间戳从所述布隆时间环中确定所述业务请求对应的第一布隆过滤器,将所述业务请求以及所述业务请求的时间戳添加至所述第一布隆过滤器;
在确定所述第一布隆过滤器的误判率达到第一阈值,且所述业务请求的时间戳达到第二阈值时,从所述第一布隆过滤器中删除所述时间戳和所述业务请求。
上述技术方案中,在获取到业务请求后,通过判断业务请求的标识是否存在于布隆时间环中,来确定该业务请求是否已经处理过。布隆时间环中包括N个布隆过滤器,其中N的大小可以根据实际情况设定,N个布隆过滤器按照时间顺序首尾相连排列,呈环状。针对布隆时间环中的N个布隆过滤器中的任意一个布隆过滤器,该布隆过滤器中的各字节都具有置位计数和对应的时间戳列表。若业务请求存在于布隆时间环中,表征该业务请求已经处理过,则直接拒绝该业务请求。若业务请求不存在于布隆时间环中,表征该业务请求没有处理过,则根据该业务请求的时间戳从布隆时间环中确定出用于保存该业务请求的第一布隆过滤器,将该业务请求和时间戳添加至该第一布隆过滤器中。在第一布隆过滤器的误判率达到第一阈值,且上述业务请求的时间戳达到第二阈值时,将该业务请求和时间戳从第一布隆过滤器中删除,以降低该第一布隆过滤器中的数据量,从而实现对第一布隆过滤器的误判率的控制,降低布隆过滤器的误判率。
可选的,根据所述业务请求的标识判断所述业务请求是否存在于布隆时间环,包括:
将所述N个布隆过滤器中对应字节的计数值相加,得到第一集合;
确定所述业务请求的标识中计数值非0的第一字节,若所述第一集合中所述第一字节对应的字节的计数值非0,则确定所述业务请求存在于布隆时间环;
若所述第一集合中所述第一字节对应的字节的计数值为0,则确定所述业务请求不存在于布隆时间环。
上述技术方案中,N个布隆过滤器中的数组长度相同,因此N个布隆过滤器的数组可以合并,即将数组中对应的字节的计数值相加,得到第一集合。判断第一集合中业务请求的标识对应的第一字节的计数值是否为零0,来确定业务请求是否存在于布隆时间环,进而判断业务请求是否已经处理过,实现避免重复处理相同的业务请求。
可选的,根据所述业务请求的时间戳从所述布隆时间环中确定所述业务请求对应的第一布隆过滤器,包括:
计算所述时间戳和预设起始时间的差值与预设时间步长的比值;所述预设时间步长表征布隆过滤器的工作时长;任意两个布隆过滤器的工作时间不同;
确定所述比值与N的取余结果;
根据所述取余结果确定所述业务请求在所述布隆时间环中的第一布隆过滤器。
可选的,将所述业务请求以及所述业务请求的时间戳添加至所述第一布隆过滤器,包括:
根据所述业务请求的标识在所述第一布隆过滤器中确定第一字节对应的第二字节;所述第一字节为所述业务请求的标识中计数值非0的字节;
将所述第二字节的计数值加1,并将所述业务请求的时间戳保存至第二字节对应的时间戳列表中。
上述技术方案中,根据业务请求的标识确定出标识中计数值非0的第一字节,再根据第一字节确定出需要计数的第二字节,其中的第二字节对应至少一个字节。将确定出的第二字节的计数值加1,表征将业务请求添加至第一布隆过滤器中,同时将该业务请求的时间戳保存至第二字节对应的时间戳列表中,表征将业务请求的时间戳添加至第一布隆过滤器中,基于此能够实现对已经处理过的业务请求的判断,避免重复处理相同的业务请求,同时保证业务请求都得到处理。
可选的,从所述第一布隆过滤器中删除所述时间戳和所述业务请求,包括:
从第二字节对应的时间戳列表中删除业务请求的时间戳;所述第二字节为添加所述业务请求时需要计数的字节;
将所述第二字节的计数值减一。
上述技术方案中,在第一布隆过滤器的误判率达到第一阈值,且业务请求的时间戳达到第二阈值时,需要将业务请求和该业务请求的时间戳删除。其中的第一阈值和第二阈值可以为根据经验预设的阈值。从第二字节对应的时间戳列表中删除上述时间戳,并将该第二字节的计数值减1,表征删除该业务请求,实现通过减少第一布隆过滤器中的数据量,来控制第一布隆过滤器的误判率,避免重复处理相同的业务请求,同时保证业务请求都得到处理。
可选的,业务请求的标识是根据哈希运算得到的二进制数字串;
所述业务请求的时间戳表征所述业务请求的获取时刻。
上述技术方案中,业务请求的标识是根据哈希运算得到的二进制数字串,由此可以在第一布隆过滤器中确定出对应的第二字节。
可选的,所述方法还包括:
针对布隆时间环中的任一布隆过滤器,当满足预设循环周期时,将所述布隆过滤器中的所有字节的计数值归0,以及所述所有字节对应时间戳列表清空。
上述技术方案中,布隆时间环呈现为环状,其中的任一布隆过滤器都会循环使用,所以都具有预设循环周期。在任一布隆过滤器满足预设循环周期后,会将该布隆过滤器中全部字节的计数值归0,并将字节对应的时间戳列表全部清空,实现布隆过滤器的循环使用。
第二方面,本发明实施例提供一种业务请求的处理装置,包括:
获取模块,用于获取业务请求,确定所述业务请求的标识以及时间戳;
处理模块,用于根据所述业务请求的标识判断所述业务请求是否存在于布隆时间环,若是,则拒绝所述业务请求;所述布隆时间环包括N个布隆过滤器,且所述N个布隆过滤器按照时间顺序循环使用;N为大于2的整数;
否则,根据所述业务请求的时间戳从所述布隆时间环中确定所述业务请求对应的第一布隆过滤器,将所述业务请求以及所述业务请求的时间戳添加至所述第一布隆过滤器;
在确定所述第一布隆过滤器的误判率达到第一阈值,且所述业务请求的时间戳达到第二阈值时,从所述第一布隆过滤器中删除所述时间戳和所述业务请求。
可选的,所述处理模块具体用于:
将所述N个布隆过滤器中对应字节的计数值相加,得到第一集合;
确定所述业务请求的标识中计数值非0的第一字节,若所述第一集合中所述第一字节对应的字节的计数值非0,则确定所述业务请求存在于布隆时间环;
若所述第一集合中所述第一字节对应的字节的计数值为0,则确定所述业务请求不存在于布隆时间环。
可选的,所述处理模块具体用于:
计算所述时间戳和预设起始时间的差值与预设时间步长的比值;所述预设时间步长表征布隆过滤器的工作时长;任意两个布隆过滤器的工作时间不同;
确定所述比值与N的取余结果;
根据所述取余结果确定所述业务请求在所述布隆时间环中的第一布隆过滤器。
可选的,所述处理模块具体用于:
根据所述业务请求的标识在所述第一布隆过滤器中确定第一字节对应的第二字节;所述第一字节为所述业务请求的标识中计数值非0的字节;
将所述第二字节的计数值加1,并将所述业务请求的时间戳保存至第二字节对应的时间戳列表中。
可选的,所述处理模块具体用于:
从第二字节对应的时间戳列表中删除业务请求的时间戳;所述第二字节为添加所述业务请求时需要计数的字节;
将所述第二字节的计数值减一。
可选的,业务请求的标识是根据哈希运算得到的二进制数字串;
所述业务请求的时间戳表征所述业务请求的获取时刻。
可选的,所述处理模块还用于:
针对布隆时间环中的任一布隆过滤器,当满足预设循环周期时,将所述布隆过滤器中的所有字节的计数值归0,以及所述所有字节对应时间戳列表清空。
第三方面,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述的业务请求的处理方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述的业务请求的处理方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构示意图;
图2为本发明实施例提供的一种布隆时间环的示意图;
图3为本发明实施例提供的一种布隆过滤器的示意图;
图4为本发明实施例提供的一种业务请求的处理方法的流程示意图;
图5为本发明实施例提供的一种业务请求的标识的示意图;
图6为本发明实施例提供的一种业务请求的处理方法的流程示意图;
图7为本发明实施例提供的一种业务请求的处理装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
在介绍本申请实施例所提供的一种业务请求的处理方法之前,为了便于理解,首先对下面对本申请实施例涉及到的名词以及技术背景进行介绍。
幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
布隆时间环(TBC,Time Bloom cyclic):是一种环状数据结构,通过数据处理的时间来确定数据落入环中的节点位置,当所有环都填满,则进行数据的循环清空填入。
动态时间衰退布隆过滤器(DTDBF,Dynamic Time Decay Bloom Filter):布隆时间环中的真实节点,在原生布隆过滤器的基础上增加了置位计数以及置位时间戳列表,实现了元素的删除操作,同时保障了布隆过滤器在流量毛刺情况下的误判率的稳定性。本发明中使用的布隆过滤器都为动态时间衰退布隆过滤器。
在互联网时代,海量的用户数量同时带来了系统的业务请求高并发。在处理业务请求高并发时,系统需要保证在高负载的情况下仍能保持稳定和高效的运行。由此产生了如负载均衡、集群和分布式部署、异步非阻塞的网络IO模型、缓存技术等方案来保证系统的稳定和高效运行。
其中,集群分布式的系统架构由于网络的不可靠性和消息传输的不确定性,具有幂等性问题。幂等性的保证对于保证系统正确运行至关重要,当分布式系统中的操作执行失败或中断时,幂等性可以确保对同一操作的多次重试不会引发额外的错误或副作用,从而保证系统的一致性和可靠性。
与此同时,随着互联网技术的发展,网络攻击的方法也越来越多。日常的网络攻击流量告警系统中,因为大量的重复攻击报文对业务系统冲击,导致数据存储层的性能瓶颈越发凸显。
其中为了解决上述幂等性问题和重复攻击报文的问题,会使用布隆过滤器。但布隆过滤器不支持对其中保存的数据进行删除,同时布隆过滤器的容量有限,导致随着布隆过滤器中保存的数据量增加,布隆过滤器的误判率也随之增加。
因此本发明提出一种业务请求的处理方法,通过布隆时间环和布隆时间环中的动态时间衰退布隆过滤器,在支持元素删除的同时,通过其字节对应的时间戳列表的设计,动态中完成对大量懒惰数据的置位删除操作,对单个BF的误判率的阈值进行了相关的控制,使得系统处理的稳定性维持一个很高的标准。
图1示例性的示出了本发明实施例所适用的一种系统架构,该系统架构包括业务处理层100、布隆时间环110、数据存储层120。
业务处理层100用于接收客户端发起的业务请求,将接收到的业务请求进行处理。以及如果接收到布隆时间环的业务请求拒绝信号,则将该业务请求拒绝处理。
布隆时间环110用于拦截业务处理层100接收到的业务请求,判断该业务请求是否存在于布隆时间环110中,若存在,则拒绝该业务请求;若不存在,则将该业务请求和该业务请求的时间戳添加至布隆时间环110中的布隆过滤器中。
数据存储层120用于将布隆时间环110中不存在的业务请求的数据存储下来。
其中,布隆时间环110如图2所示,图2示例性的示出本发明实施例提供的一种布隆时间环的示意图。图中圆形表征动态时间衰退布隆过滤器,将其简称为布隆过滤器。布隆时间环中的N个布隆过滤器按照时间顺序首尾相连,呈环状。其中N表征布隆过滤器的数量;U表征时间单位,如天、月、小时等;S表征时间步长,如1、1.5、2等;SU表示布隆过滤器的工作时长,如1天、1.5小时等;M表征布隆时间环的起始布隆过滤器,如0号布隆过滤器;T表征布隆时间环的起始时间,如2023年10月1日0:00。T+N×SU表征布隆过滤器的工作时间,如SU为1天,T为2023年10月1日0:00,起始布隆过滤器为0号布隆过滤器,则3号布隆过滤器的工作时间为2023年10月1日0:00+3×1天,得到2023年10月4日0:00。并且由于布隆时间环可以在多种应用场景中使用,故布隆时间环必须做到与原业务代码的完全解耦,因此布隆时间环采用了基于动态代理的切面拦截,使用者只需要在所需的业务处理模块中加入相对应的注解,就可以使用布隆时间环。布隆时间环的实现采用基于redis+控制工具类的方式。
布隆时间环110中的动态时间衰退布隆过滤器与原生布隆过滤器的对比图如图3所示,图3示例性的示出本发明实施例提供的一种布隆过滤器的示意图。图中A、B表征不同的业务请求,在原生布隆过滤器中,由于业务请求的标识是根据哈希运算得到的二进制数字串,不同的业务请求的标识之间可能对应相同的字节,在字节中都存为1,如图中A、B业务请求对应的部分字节相同,但在原生布隆过滤器中相同的字节也存为1。由此导致在原生布隆过滤器中无法对业务请求的标识进行删除。为解决上述问题,本发明提出了动态时间衰退布隆过滤器,在原生布隆过滤器的基础上为各字节增加了对应的时间戳,并修改了各字节的计数值。在添加业务请求的标识时,将标识对应的字节的计数值加1,同时将业务请求的时间戳添加到上述字节对应的时间戳列表中,如图中所示,在动态时间衰退布隆过滤器中,将A业务请求对应的字节的计数值加1,并将A业务请求的时间戳加入到上述字节对应的时间戳列表中;B业务请求的添加过程同A业务请求,可以看到A、B业务请求对应的相同字节的计数值为2,且该字节对应的时间戳列表中存有两个不同的时间戳。以此,通过设置时间戳的过期时间,在该动态时间衰退布隆过滤器的误判率达到阈值,且时间戳列表中的时间戳过期时,将时间戳列表中的时间戳删除,并将时间戳列表对应的字节的计数值减1,实现减少动态时间衰退布隆过滤器中的数据量,控制动态时间衰退布隆过滤器的误判率。
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图4示例性的示出了本发明实施例提供的一种业务请求的处理方法的流程示意图,该流程可由业务请求的处理装置执行。本发明中提到的布隆时间环中的布隆过滤器皆为动态时间衰退布隆过滤器,简称为布隆过滤器。
如图4所示,该流程具体包括:
步骤410,获取业务请求,确定所述业务请求的标识以及时间戳。
本发明实施例中,在获取到业务请求后,确定该业务请求的标识和时间戳。其中,业务请求的标识为根据哈希运算得到的二进制数字串。具体的,将业务请求进行预设数量的哈希运算,得到二进制数字串,如预设10个哈希函数,将业务请求输入到10个哈希函数中进行运算,得到该业务请求的二进制数字串。业务请求的标识如图5所示,图5示例性的示出了本发明实施例提供的一种业务请求的标识的示意图。图中L为二进制数字串的长度。
时间戳表征该业务请求的获取时刻,即时间戳是根据该业务请求的获取时刻确定的,如该业务请求的获取时刻为2023年12月01日10:00,则时间戳可以是202312011000,具体的时间戳格式可以根据经验预设,在此不做具体限定。
步骤420,根据所述业务请求的标识判断所述业务请求是否存在于布隆时间环,若是,则拒绝所述业务请求。
本发明实施例中,需要根据确定的业务请求的标识判断业务请求是否存在于布隆时间环中,即为判断该业务请求是否已经处理过。具体的,首先要将布隆时间环中的N个布隆过滤器中对应的字节的计数值相加,得到第一集合,如布隆时间环中有7个布隆过滤器,将7个布隆过滤器中第一个字节的计数值相加得到第一集合中的第一个字节的计数值,7个布隆过滤器中第二个字节的计数值相加得到第一集合中的第二个字节的计数值,以此类推,将7个布隆过滤器中所有的字节的计数值对应相加,最后得到第一集合。第一集合中包含N个布隆过滤器中保存的所有业务请求的标识。然后,确定获取的业务请求的标识中计数值非0的第一字节,如业务请求的标识对应第3个字节、第7个字节、第10个字节。判断第一集合中第一字节对应的计数值是否为0,如判断第一集合中对应第3个字节、第7个字节、第10个字节的计数值是否为0。若第一集合中第一字节对应的计数值非0,则确定该业务请求的标识存在于布隆时间环,即该业务请求已经处理过,拒绝该业务请求。若第一集合中第一字节对应的计数值为0,则确定业务请求的标识不存在于布隆时间环,即该业务请求没有处理过,进行接下来的步骤。
步骤430,否则,根据所述业务请求的时间戳从所述布隆时间环中确定所述业务请求对应的第一布隆过滤器。
本发明实施例中,在确定业务请求的标识不存在于布隆时间环后,根据该业务请求的时间戳从布隆时间环中确定出业务请求对应的第一布隆过滤器。具体的,计算时间戳和预设起始时间的差值与预设时间步长的比值。其中,预设时间步长表征布隆过滤器的工作时长,任意两个布隆过滤器的工作时间不同。然后确定该比值与N的取余结果。根据取余结果确定业务请求在所述布隆时间环中的第一布隆过滤器。示例性的,根据下述公式表示第一布隆过滤器;
{t-T|U}/S%N
其中,t为时间戳表征的获取时刻;T为预设起始时间,表征布隆时间环的起始时间;U为时间单位;S为时间步长;%为整除求余运算符;N为布隆时间环中的布隆过滤器数量。示例性的,时间单位U为天,时间步长S为1,布隆过滤器数量N为7,布隆时间环中起始布隆过滤器为0号布隆过滤器;即为在布隆时间环中从0号布隆过滤器开始保存最新一周内的业务请求循环,每天的业务请求保存在一个布隆过滤器中。预设起始时间为2022年12月01日00:00,时间戳为2023年12月09日10:00,时间戳和预设起始时间的差值为373天10个小时,与预设时间步长的比值为367天10个小时,由于时间单位为天所以10小时忽略不计,该比值与7的取余结果为2,起始布隆过滤器为0号布隆过滤器,则第一布隆过滤器为2号布隆过滤器。
步骤440,将所述业务请求以及所述业务请求的时间戳添加至所述第一布隆过滤器;
本发明实施例中,在确定出第一布隆过滤器后,将业务请求以及业务请求的时间戳添加至第一布隆过滤器。具体的,根据业务请求的标识在第一布隆过滤器中确定第一字节对应的第二字节,其中,第一字节为业务请求的标识中计数值非0的字节。可以理解,第二字节为第一布隆过滤器中确定需要针对该业务请求进行计数的字节,如业务请求的标识对应的字节为第5个字节、第9个字节、第16个字节、第20个字节。然后,将第二字节的计数值加1,并将业务请求的时间戳保存至第二字节对应的时间戳列表中,如分别将2号布隆过滤器中的第5个字节、第9个字节、第16个字节、第20个字节的计数值加1,然后将业务请求的时间戳202312011000,保存至第5个字节、第9个字节、第16个字节、第20个字节对应的时间戳列表中。实现了将业务请求以及业务请求的时间戳添加至第一布隆过滤器中。
步骤450,在确定所述第一布隆过滤器的误判率达到第一阈值,且所述业务请求的时间戳达到第二阈值时,从所述第一布隆过滤器中删除所述时间戳和所述业务请求。
本发明实施例中,当第一布隆过滤器的误判率达到第一阈值,且所述业务请求的时间戳达到第二阈值时,从第一布隆过滤器中删除时间戳和业务请求。其中,第一阈值表征最大误判率,可以是根据经验预设的值,在此不做具体限定;第二阈值表征业务请求的过期时间,如5小时,可以是根据经验预设的值,在此不做具体限定;确定布隆过滤器的误判率为现有技术,在此不做具体介绍。具体的,从上述第二字节对应的时间戳列表中删除业务请求的时间戳,并将第二字节的计数值减一,基于上述示例,第二字节为第5个字节、第9个字节、第16个字节、第20个字节,将第5个字节、第9个字节、第16个字节、第20个字节对应的时间戳列表中该业务请求的时间戳删除,并分别将计数值减1。
在一些实施例中,当第一布隆过滤器的误判率达到第一阈值时,有多个时间戳达到第二阈值,则将多个时间戳在第一布隆过滤器的全部字节对应的时间戳列表中删除,并根据各时间戳列表中删除的时间戳的数量,将该时间戳列表对应的字节的计数值减去确定的数量,如某一字节对应的时间戳列表中删除了两个时间戳,则将该字节的计数值减2。
一种可能的实施方式中,针对布隆时间环中的任一布隆过滤器,当满足预设循环周期时,将该布隆过滤器中的所有字节的计数值归0,以及所有字节对应时间戳列表清空。示例性的,布隆时间环中的布隆过滤器的数量为7,时间单位为天,时间步长为1,布隆时间环中起始布隆过滤器为0号布隆过滤器,表征在布隆时间环中从0号布隆过滤器开始保存最新一周内的业务请求循环,即第一天的业务请求保存在0号布隆过滤器中,第二天的业务请求保存在1号布隆过滤器中,直到第七天的业务请求保存在6号布隆过滤器中,所有的布隆过滤器填满,则从第八天起,将清空0号的布隆过滤器,并将第八天的业务请求保存在0号布隆过滤器中,依次循环。
为了更好的解释上述技术方案,图6示例性的示出了本发明实施例提供的一种业务请求的处理方法的流程示意图,如图6所示,具体流程包括:
步骤601,获取业务请求。
步骤602,确定业务请求的标识和时间戳。
将业务请求输入到10个哈希函数进行运算,得到该业务请求的为二进制数字串的标识。根据业务请求的获取时刻2023年12月01日10:00确定时间戳为202312011000。
步骤603,判断业务请求是否存在于布隆时间环。若是,则执行步骤604,若否则执行步骤605。
将布隆时间环中有7个布隆过滤器,将7个布隆过滤器中第一个字节的计数值相加得到第一集合中的第一个字节的计数值,第二个字节的计数值相加得到第一集合中的第二个字节的计数值,以此类推,将所有的字节的计数值分别相加,最后得到第一集合。
确定业务请求的标识对应的第一字节为第3个字节、第7个字节、第10个字节。判断第一集合中对应第3个字节、第7个字节、第10个字节的计数值是否为0。
若第一集合中第一字节对应的计数值非0,则确定该业务请求的标识存在于布隆时间环。
若第一集合中第一字节对应的计数值为0,则确定该业务请求的标识不存在于布隆时间环。
步骤604,拒绝业务请求。
步骤605,根据业务请求的时间戳从布隆时间环中确定业务请求对应的第一布隆过滤器。
根据时间戳202312011000得到获取时刻2023年12月01日10:00与预设起始时间2023年11月30日00:00的差值为1天10小时,与预设时间步长1的比值为1天10小时,由于时间单位为天所以10小时忽略不计,该比值与布隆过滤器的数量7的取余结果为1,则根据起始布隆过滤器(0号布隆过滤器)确定第一布隆过滤器为1号布隆过滤器。
步骤606,将业务请求以及业务请求的时间戳添加至第一布隆过滤器。
业务请求的标识对应的字节为第3个字节、第7个字节、第10个字节。
将1号布隆过滤器中的第3个字节、第7个字节、第10个字节的计数值分别加1,并将业务请求的时间戳202312011000保存至第3个字节、第7个字节、第10个字节对应的时间戳列表中。
步骤607,当第一布隆过滤器的误判率达到第一阈值,且业务请求的时间戳达到第二阈值时,从第一布隆过滤器中删除时间戳和业务请求。
确定1号布隆过滤器的误判率,当该误判率达到第一阈值,且业务请求的时间戳达到过期时间时,从1号布隆过滤器的第3个字节、第7个字节、第10个字节对应的时间戳列表中删除该时间戳,并分别将计数值减1。
本发明实施例中,设计出包含按时间顺序排列的多个动态时间衰退布隆过滤器的布隆时间环。判断业务请求是否存在于布隆时间环中,将不存在于布隆时间环中的业务请求和业务请求的时间戳保存至时间戳对应的布隆过滤器中。通过在布隆过滤器的误判率超过阈值,且时间戳列表中的时间戳达到过期时间时,将该时间戳删除,并将该时间戳列表对应的字节的计数值减1,实现对布隆过滤器的误判率进行控制,使系统处理业务请求的稳定性维持一个很高的标准。使用动态时间衰退布隆过滤器的系统,相对于使用原生布隆过滤器的系统,因为单个原生布隆过滤器在大量数据积累的情况下,因为置位逐渐被填满,导致的误判率越来越高,在1w+的请求量下,原生布隆过滤器的二进制位数组长度m=10,3h后动态时间衰退布隆过滤器的性能比原生布隆过滤器高30%,5h后则高出60%,并且随着时间的逐渐增加,性能差距越来越大,在10w+的请求下,则在更短的时间内就将性能差距拉开,因而在应对流量毛刺频繁的阶段,因为动态时间衰退布隆过滤器对于误判率方面控制的保障,使得系统的性能始终维持一个比较高的标准,不会因为毛刺的问题,导致系统性能出现陡降的情况,大大增加了系统的稳定性。
基于相同的技术构思,图7示例性的示出了本发明实施例提供的一种业务请求的处理装置的结构示意图。如图7所示,该装置具体包括:
获取模块710,用于获取业务请求,确定所述业务请求的标识以及时间戳;
处理模块720,用于判断所述业务请求的标识是否存在于布隆时间环,若是,则拒绝所述业务请求;所述布隆时间环包括N个布隆过滤器,且所述N个布隆过滤器按照时间顺序首尾相连排列;N为大于2的整数;
否则,根据所述业务请求的时间戳从所述布隆时间环中确定所述业务请求对应的第一布隆过滤器;
将所述业务请求以及所述业务请求的时间戳添加至所述第一布隆过滤器;
在确定所述第一布隆过滤器的误判率达到第一阈值,且所述业务请求的时间戳达到第二阈值时,从所述第一布隆过滤器中删除所述时间戳和所述业务请求。
可选的,所述处理模块720具体用于:
将所述N个布隆过滤器中对应的字节相加,得到第一集合;
确定所述业务请求的标识对应的第一字节,若所述第一集合中所述第一字节对应的计数值非0,则确定所述业务请求的标识存在于布隆时间环;
若所述第一集合中所述第一字节对应的计数值为0,则确定所述业务请求的标识不存在于布隆时间环。
可选的,所述处理模块720具体用于:
计算所述时间戳和预设起始时间的差值与预设时间步长的比值;所述预设时间步长表征布隆过滤器的工作时长;任意两个布隆过滤器的工作时间不同;
确定所述比值与N的取余结果;
根据所述取余结果确定所述业务请求在所述布隆时间环中的第一布隆过滤器。
可选的,所述处理模块720具体用于:
根据所述业务请求的标识在所述第一布隆过滤器中确定需要计数的第二字节;
将所述第二字节的计数值加1,并将所述业务请求的时间戳保存至第二字节对应的时间戳列表中。
可选的,所述处理模块720具体用于:
从第二字节对应的时间戳列表中删除业务请求的时间戳;所述第二字节为添加所述业务请求时需要计数的节点;
将所述第二字节的计数值减一。
可选的,业务请求的标识是根据哈希运算得到的二进制数字串;
所述业务请求的时间戳表征所述业务请求的获取时刻。
可选的,所述处理模块720还用于:
针对布隆时间环中的任一布隆过滤器,当满足预设循环周期时,将所述布隆过滤器中的所有字节的计数值归0,以及所述所有字节对应时间戳列表清空。
基于相同的技术构思,本发明实施例还提供一种计算机设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述业务请求的处理方法。
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述业务请求的处理方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种业务请求的处理方法,其特征在于,包括:
获取业务请求,确定所述业务请求的标识以及时间戳;
根据所述业务请求的标识判断所述业务请求是否存在于布隆时间环,若是,则拒绝所述业务请求;所述布隆时间环包括N个布隆过滤器,且所述N个布隆过滤器按照时间顺序循环使用;N为大于2的整数;
否则,根据所述业务请求的时间戳从所述布隆时间环中确定所述业务请求对应的第一布隆过滤器,将所述业务请求以及所述业务请求的时间戳添加至所述第一布隆过滤器;
在确定所述第一布隆过滤器的误判率达到第一阈值,且所述业务请求的时间戳达到第二阈值时,从所述第一布隆过滤器中删除所述时间戳和所述业务请求。
2.如权利要求1所述的方法,其特征在于,根据所述业务请求的标识判断所述业务请求是否存在于布隆时间环,包括:
将所述N个布隆过滤器中对应字节的计数值相加,得到第一集合;
确定所述业务请求的标识中计数值非0的第一字节,若所述第一集合中所述第一字节对应的字节的计数值非0,则确定所述业务请求存在于布隆时间环;
若所述第一集合中所述第一字节对应的字节的计数值为0,则确定所述业务请求不存在于布隆时间环。
3.如权利要求1所述的方法,其特征在于,根据所述业务请求的时间戳从所述布隆时间环中确定所述业务请求对应的第一布隆过滤器,包括:
计算所述时间戳和预设起始时间的差值与预设时间步长的比值;所述预设时间步长表征布隆过滤器的工作时长;任意两个布隆过滤器的工作时间不同;
确定所述比值与N的取余结果;
根据所述取余结果确定所述业务请求在所述布隆时间环中的第一布隆过滤器。
4.如权利要求1所述的方法,其特征在于,将所述业务请求以及所述业务请求的时间戳添加至所述第一布隆过滤器,包括:
根据所述业务请求的标识在所述第一布隆过滤器中确定第一字节对应的第二字节;所述第一字节为所述业务请求的标识中计数值非0的字节;
将所述第二字节的计数值加1,并将所述业务请求的时间戳保存至第二字节对应的时间戳列表中。
5.如权利要求1所述的方法,其特征在于,从所述第一布隆过滤器中删除所述时间戳和所述业务请求,包括:
从第二字节对应的时间戳列表中删除业务请求的时间戳;所述第二字节为添加所述业务请求时需要计数的字节;
将所述第二字节的计数值减一。
6.如权利要求1至5任一项所述的方法,其特征在于,业务请求的标识是根据哈希运算得到的二进制数字串;
所述业务请求的时间戳表征所述业务请求的获取时刻。
7.如权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
针对布隆时间环中的任一布隆过滤器,当满足预设循环周期时,将所述布隆过滤器中的所有字节的计数值归0,以及所述所有字节对应时间戳列表清空。
8.一种业务请求的处理装置,其特征在于,包括:
获取模块,用于获取业务请求,确定所述业务请求的标识以及时间戳;
处理模块,用于根据所述业务请求的标识判断所述业务请求是否存在于布隆时间环,若是,则拒绝所述业务请求;所述布隆时间环包括N个布隆过滤器,且所述N个布隆过滤器按照时间顺序循环使用;N为大于2的整数;
否则,根据所述业务请求的时间戳从所述布隆时间环中确定所述业务请求对应的第一布隆过滤器,将所述业务请求以及所述业务请求的时间戳添加至所述第一布隆过滤器;
在确定所述第一布隆过滤器的误判率达到第一阈值,且所述业务请求的时间戳达到第二阈值时,从所述第一布隆过滤器中删除所述时间戳和所述业务请求。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1至7任一项所述的方法。
CN202311807605.7A 2023-12-26 2023-12-26 一种业务请求的处理方法和装置 Pending CN117793204A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311807605.7A CN117793204A (zh) 2023-12-26 2023-12-26 一种业务请求的处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311807605.7A CN117793204A (zh) 2023-12-26 2023-12-26 一种业务请求的处理方法和装置

Publications (1)

Publication Number Publication Date
CN117793204A true CN117793204A (zh) 2024-03-29

Family

ID=90379431

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311807605.7A Pending CN117793204A (zh) 2023-12-26 2023-12-26 一种业务请求的处理方法和装置

Country Status (1)

Country Link
CN (1) CN117793204A (zh)

Similar Documents

Publication Publication Date Title
US10747780B2 (en) Blockchain-based data processing method and device
WO2018072708A1 (zh) 一种云平台业务的缩容方法、装置及云平台
CN110611623B (zh) 限流方法和装置
CN107241281B (zh) 一种数据处理方法及其装置
CN108563502B (zh) 一种任务调度方法和装置
CN108132837B (zh) 一种分布式集群调度系统及方法
CN113037794B (zh) 计算资源配置调度方法、装置及系统
CN111061769A (zh) 一种区块链系统的共识方法及相关设备
CN112866136B (zh) 业务数据处理方法和装置
CN110008206B (zh) 一种基于区块链系统的数据处理方法及装置
CN111522683B (zh) 蜜獾拜占庭容错共识机制的共识节点变更方法及相关装置
CN112231108A (zh) 任务处理方法、装置、计算机可读存储介质及服务器
CN110009347B (zh) 一种区块链交易信息审计的方法及装置
CN111858067B (zh) 一种数据处理方法及装置
CN106685894B (zh) 一种风险识别方法、装置及系统
CN108228393A (zh) 一种可扩展的大数据高可用的实现方法
CN104866339A (zh) Fota数据的分布式持久化管理方法、系统和装置
CN114048201A (zh) 一种基于分布式流计算引擎Flink的关键字段实时去重方法
CN113302593A (zh) 任务处理方法、装置、系统、电子设备及存储介质
CN112214268A (zh) 一种基于Redis的限流方法
CN117793204A (zh) 一种业务请求的处理方法和装置
CN113535219B (zh) 一种app信息发布方法、装置、介质及计算机设备
CN108830724B (zh) 一种资源数据包处理方法及终端设备
CN114157717B (zh) 一种微服务动态限流的系统及方法
CN115934292A (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