CN109756528B - 频率控制方法及装置、设备、存储介质、服务器 - Google Patents
频率控制方法及装置、设备、存储介质、服务器 Download PDFInfo
- Publication number
- CN109756528B CN109756528B CN201711060215.2A CN201711060215A CN109756528B CN 109756528 B CN109756528 B CN 109756528B CN 201711060215 A CN201711060215 A CN 201711060215A CN 109756528 B CN109756528 B CN 109756528B
- Authority
- CN
- China
- Prior art keywords
- frequency
- service
- time
- identifier
- server
- 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.)
- Active
Links
Images
Abstract
本发明实施例公开了一种频率控制方法,其中所述方法包括:服务器获取频率控制对象的对象标识、业务的业务标识、待累加次数N;根据所述对象标识和所述业务标识组成对象关键值;在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值;根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值;确定所述每一时间区间的频率累加值与对应的预设的频率阈值之间的大小关系,如果所述至少两个时间区间对应的大小关系满足预设的条件,拦截所述业务。本发明同时还公开了一种频率控制装置、设备、存储介质、服务器。
Description
技术领域
本发明涉及网络技术,尤其涉及一种频率控制方法及装置、设备、存储介质、服务器。
背景技术
服务器处于网络系统信息交换和存储的核心地位,为网络上的用户提供全面的数据资源共享服务和其它各种网络服务。为使服务器应用水平更好和有效的发挥,确保其在网络系统中的高效部署、管理和运行安全,满足网络用户的使用需求,对服务器定期进行安全维,以防止服务器的崩溃。服务器崩溃的故障的产生的原因主要包括系统资源太低或耗尽,以及服务器负载过高,那么如何防止服务器的系统资源太低或耗尽或服务器负载过高成为亟需解决的技术问题。
对于业务服务器来说,业务集中爆发导致服务器的系统资源太低或耗尽或服务器负载过高的主要原因,因此一般采用频率控制来防止业务例如业务消息集中爆发,频率控制包括以下两种实现方式,第一种是基于开源的面向对象编程语言Java库Guava中的速率限制器(RateLimiter)类实现:速率限制器采用令牌桶(Token Bucket)的流控算法,速率限制器会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如希望自己的应用程序每秒查询率(QPS,Query Per Second)不要超过1000,那么速率限制器设置1000的速率后,就会每秒往桶里扔1000个令牌。第二种是基于高性能的超文本传输协议(HTTP,Hyper TextTransfer Protocol)和反向代理服务器nginx的流量限制模块(ngx_http_limit_req_module)来实现的,它使用漏桶算法(Leaky Bucket)来实现,也支持白名单操作。漏桶算法思路很简单,水(可以看作是请求)先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出,可以看出漏桶算法能强行限制数据的传输速率。
目前这两种实现频率控制的方式具有诸多限制,例如,不支持自定义维度的频率控制,如用户维度或设备维度;再如,不支持自定义统计时间区间,多数只支持1秒和1分钟的粒度。
发明内容
有鉴于此,本发明实施例为解决现有技术中存在的至少一个问题而提供一种频率控制方法及装置、设备、存储介质、服务器,能够支持自定义维度的频率控制和支持自定义统计时间区间。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种频率控制方法,所述方法包括:
服务器获取频率控制对象的对象标识、业务的业务标识、待累加次数N;
根据所述对象标识和所述业务标识组成对象关键值;
在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值;
根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值;
确定所述每一时间区间的频率累加值与对应的预设频率阈值之间的大小关系,如果所述至少两个时间区间对应的大小关系满足预设的条件,拦截所述业务。
本发明实施例提供一种频率控制装置,所述装置包括:
第一获取单元,用于获取频率控制对象的对象标识、业务的业务标识、待累加次数N;
组成单元,用于根据所述对象标识和所述业务标识组成对象关键值;
查找单元,用于在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值;
第一确定单元,用于根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值;
第二确定单元,用于确定所述每一时间区间的频率累加值与对应的预设的频率阈值之间的大小关系;
拦截单元,用于如果所述至少两个时间区间对应的大小关系满足预设的条件,拦截所述业务。
本发明实施例提供一种频率控制设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的频率控制方法的步骤。
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的频率控制方法的步骤。
本发明实施例提供一种频率控制系统,所述系统包括第一服务器和第二服务器,其中:
所述第一服务器,用于根据所述业务消息的消息内容确定业务标识,将同类业务标识的业务消息的数量确定为所述待累加次数N;将所述业务标识、所述待累加次数N和对象标识携带于频率控制请求中,将所述频率控制请求发送给所述第二服务器;
所述第二服务器,用于解析所述频率控制请求,得到所述业务标识、所述待累加次数N和对象标识;根据所述对象标识和所述业务标识组成对象关键值;在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值;根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值;确定所述每一时间区间的频率累加值与对应的预设的频率阈值之间的大小关系,如果所述至少两个时间区间对应的大小关系满足预设的条件,拦截所述业务。
本发明实施例中,基于共享内存的哈希存储中能够对至少两个不同时间区间的频率值进行设置,从而使得用户能够自定义统计时间区间,而不是目前的支持1秒和1分钟的粒度;本实施例中对象标识可以为用户标识、设备标识和IP地址,从而能能够支持自定义维度的频率控制,无论是用户维度或设备维度还是IP地址维度的频率控制。
附图说明
图1为本发明实施例网络架构的组成结构示意图;
图2为本发明实施例频率控制方法的实现流程示意图;
图3A为本发明实施例网络架构中各设备的交互示意图;
图3B为本发明实施例网络架构中各设备的交互示意图;
图4为本发明实施例配置文件的实现流程示意图;
图5为本发明实施例频率累积节点的实现流程示意图;
图6为本发明实施例频率控制装置的组成结构示意图;
图7为本发明实施例计算设备的一种硬件实体示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案进一步详细阐述。
本实施例先提供一种频率控制方法的网络架构,图1为本发明实施例网络架构的组成结构示意图,如图1所示,该网络架构包括两个或多个终端11至1N和服务器30,其中终端11至1N与服务器30之间通过网络21进行交互,即终端11至1N通过网络21将业务例如业务消息发送给服务器30。一般来说,终端在实施的过程中可以为各种类型的具有信息处理能力的设备,例如所述终端可以包括手机、平板电脑、台式机、个人数字助理、导航仪、数字电话、视频电话、电视机等。
本实施例提出一种频率控制方法,该方法应用于服务器,该方法所实现的功能可以通过服务器中的处理器调用程序代码来实现,当然程序代码可以保存在存储器中,可见,该服务器至少包括处理器和存储器。
图2为本发明实施例频率控制方法的实现流程示意图,如图2所示,该方法包括:
步骤S201,服务器获取频率控制对象的对象标识、业务的业务标识、待累加次数N;
所述对象标识包括以下至少之一:网际协议IP地址、设备标识、用户标识;其中,用户标识可以为用户的名称、身份证号码、用户的手机号、用户邮箱、用户的随机编码等,设备标识可以采用国际移动设备身份码(IMEI,International Mobile Equipment Identity)。
业务标识可以与业务类型或服务类型相对应,例如,业务标识可以是表征业务类型的字符串,其中业务类型包括用于表征文本消息、语音消息、视频消息、图片消息、分享名片、分享链接、发送红包、转账、收藏链接等。
以业务消息作为业务为例进行说明,待累加次数用于表征发消息次数,例如N次,一般情况下,发消息次数为1,因为每当用户发送一条业务消息,则服务器就进行一次频率控制。在其他的实施例中,发消息次数还可以为N,N为大于1的自然数,如果N为2,即服务器并不是针对每一条消息都进行频率控制,当收到该用户的两条消息后,服务器才进行一次频率控制。N设置为大于1的自然数,这样可以降低服务器的负载。
步骤S202,服务器根据所述对象标识和所述业务标识组成对象关键值;
对象关键值包括两部分:对象标识和业务标识,当对象标识采用用户ID来表示时,对象关键值即为用户关键值,用户关键值包括用户ID和业务标识,例如用户ID为123456、业务标识为文本消息,那么用户关键值包括两部分:用户ID为123456、业务标识为文本消息。当对象标识采用IP地址来表示时,对象关键值即为IP关键值,IP关键值包括IP地址和业务标识;当对象标识采用设备ID来表示时,对象关键值即为设备关键值,设备关键值包括设备ID和业务标识。
所述对象标识包括以下至少之一:议IP地址、设备标识、用户标识,所述根据所述对象标识和所述业务标识组成对象关键值,包括至少以下之一:根据所述IP地址和所述业务标识组成对象关键值;根据所述设备标识和所述业务标识组成对象关键值;根据所述用户标识和所述业务标识组成对象关键值。
步骤S203,服务器在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值;
哈希(hash)存储的是对象关键值与频率累积节点之间的对应关系,其中频率累积节点即为次数,即服务器先根据对象标识查找到该对象的hash存储列表,该hash存储列表表明该对象标识的对象发送该业务类型的业务消息的次数。hash存储采用周期性(时间区间)更新,如果时间区间可以包括多个,例如一秒、一分、一刻钟、一小时、一天、一周、一个月等,如果频率控制的对象为用户,那么时间区间可以设置为一分、一小时和一天,即一分钟内设置的频率阈值是N1、一小时内设置的频率阈值是N2、一天内设置的频率阈值是N3,N1、N2和N3均为大于等于1的自然数。频率控制对象为设备或业务与用户类似。
步骤S204,服务器根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值;
以1秒为例,即将频率累积节点中频率值与待累加次数N进行累加,得到1秒的频率累加值,假设频率累积节点中频率值为10次,待累加次数为2,那么1秒内的频率累加值为12次。以1分钟为例,即将频率累积节点中频率值与待累加次数N进行累加,得到1分钟的频率累加值,假设频率累积节点中频率值为97次,待累加次数为2,那么1分钟内的频率累加值为99次。
步骤S205,服务器确定所述每一时间区间的频率累加值与对应的预设的频率阈值之间的大小关系,如果所述至少两个时间区间对应的大小关系满足预设的条件,拦截所述业务。
这里,预设的条件可以为至少任一时间区间大于预设的频率阈值,例如预设的条件可以为任一时间区间大于预设的频率阈值,或者,任意两个时间区间都大于对应的预设的频率阈值,或者,全部大于预设的频率阈值。以预设的条件为任一时间区间大于预设的频率阈值进行举例说明,如果一分钟内的频率累加值(例如8次)超过对应的频率阈值(例如5次),则返回拦截消息的频率检查结果;如果一分钟内的频率累加值(例如3次)没有超过对应的频率阈值(例如5次),则判断一小时内的频率累加值(例如30次)是否超过对应的频率阈值(例如20次),如果超过,则返回拦截消息的频率检查结果;如果一分钟内的频率累加值(例如3次)没有超过对应的频率阈值(例如5次),且一小时内的频率累加值(例如18次)也没有超过对应的频率阈值(例如20次),则判断一天内的频率累加值(例如160次)是否超过对应的频率阈值(例如100次),如果超过,则返回拦截消息的频率检查结果。在更新频率累加值时,可以从最小的时间区间进行更新。
本实施例中,还包括一个配置文件,所述至少两个时间区间的预设的频率阈值在配置文件中,继续以秒为例,假设1秒对应的频率阈值为10次,那么频率累加值12大于1秒对应的频率阈值10次;以1分钟为例,假设1分钟对应的频率阈值为100次,那么频率累加值99次小于1分钟对应的频率阈值100次。
在其他的实施例中,如果所述至少两个时间区间对应的大小关系不满足预设的条件,不拦截所述业务消息。
本发明实施例中,基于共享内存的哈希存储中能够对至少两个不同时间区间的频率值进行设置,从而使得用户能够自定义统计时间区间,而不是目前的支持1秒和1分钟的粒度;本实施例中对象标识可以为用户标识、设备标识和IP地址,从而能能够支持自定义维度的频率控制,无论是用户维度或设备维度还是IP地址维度的频率控制。
在其他的实施例中,所述频率累积节点还包括重置时间或更新时间等时间参数,所述方法还包括:
服务器获取当前时间和所述频率累积节点中每一时间区间对应的重置时间,所述重新时间为重置对应时间区间的频率值的时间;
如果所述当前时间在所述重置时间之前,则根据与所述重置时间对应的频率值和所述待累加次数N确定与所述重置时间对应的频率累加值;如果所述当前时间在所述重置时间之后,将所述待累加次数作为与所述重置时间对应的频率累加值。
与所述重置时间对应的频率累加值,即与所述重置时间在同一时间区间的频率累加值。根据更新时间和对应的时间区间进行加法运算,可以得到重置时间,以时间区间包括三个为例进行说明,假设三个时间区间分别为一分钟、一个小时和一天,那么不同的时间区间对应不同的次数阈值,以及不同的时间区间对应不同的更新时间T,例如分钟对应的次数阈值为10,小时对应的次数阈值为100,一天对应的次数阈值为1000;分钟对应的更新时间为X分钟01秒,那么下一分钟的重置时间为(X+1)分钟01秒,小时对应的更新时间为X小时X分钟05秒,那么下一小时的重置时间为(X+1)小时(X+1)分钟05秒,一天对应的更新时间为X小时X分钟08秒,那么下一天的重置时间为第二天的X小时X分钟08秒。判断当前时间t是否在当前统计区间内,当前统计区间为更新时间T到下一个重置时间之间的时段,如果当前时间t在当前统计区间内,则将频率累积节点和当前次数1进行累加,得到频率累加值(更新后的频率值);如果当前时间t不在当前统计区间内,则对当前统计区间进行重置,将当前次数1作为频率累积节点,当然该频率累积节点也作为频率累加值。
在其他的实施例中,所述频率累积节点还包括黑白名单标记,参见图5所示,在其他的实施例中与黑白名单标记对应的过期时间,如果当前时间在过期时间之前,则说明黑白名单标记有效,所述方法还包括:
如果当前时间在过期时间之后,根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值。
如果当前时间在过期时间之前,根据所述对象标识查看所述频率控制对象在所述频率累积节点中是否有白名单标记或者黑名单标记;如果所述频率累积节点中有白名单标记,不拦截所述业务,如果所述频率累积节点中有黑名单标记,拦截所述业务;如果所述频率累积节点中既没有白名单标记也没有黑名单标记,根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值。
在其他的实施例中,黑白名单标记可以同时存在与频率累积节点中。
在其他的实施例中,所述业务可以包括业务访问请求、业务处理请求和业务消息,其中,业务访问请求是指一个设备向另一个设备发送访问请求,以便请求另一设备上的资源,例如,用户通过电脑或手机访问牛津大学的博士论文网站,造成牛津大学的博士论文网站的服务器瘫痪,那么就需要对该项业务访问请求进行频率控制;业务处理请求可以是一个设备向另一个设备发送处理请求,以对某些任务进行处理,例如,修改用户名、加好友等处理请求,参见图3B所示,消息系统向频率控制系统发送频率控制请求,以检查该用户是否超过频率阈值,对于频率控制系统来说,消息系统发送的频率控制请求就是一种业务处理请求。业务消息一般是客户端与服务器架构中,客户端向服务器发送的转发消息。通常来说,只要两个以上的设备之间,可以是终端之间、服务器之间或者客户端与服务器之间,只要存在信息交互,都会涉及频率控制的问题,因此,本领域的技术人员应当理解,本实施例中的业务不只包括上述的业务访问请求、业务处理请求和业务消息,还可以包括其他的信息交互请求或消息。
所述业务消息中至少包括对象标识、业务标识;或者,所述业务消息中至少包括对象标识,对应地,所述方法还包括:根据所述业务消息的消息内容确定业务标识。业务消息的消息内容即为业务内容,业务内容中往往含有与业务标识对应的内容,例如业务标识为图片消息与业务标识为文本消息的消息内容是不一样,从而可以根据业务内容确定业务标识。
本实施例再提供一种频率控制方法的网络架构,图3A为本发明实施例网络架构的组成结构示意图,如图3A所示,该网络架构包括两个或多个终端11至1N和服务器31,其中终端11至1N与第一服务器31之间通过网络21进行交互,即终端11至1N通过网络21将业务例如业务消息发送给第一服务器31,第一服务器31收到业务消息后,向第二服务器32发送频率控制请求,第二服务器32收到频率控制请求后,对该频率控制请求进行处理,得到频率控制结果,并将频率控制结果返回第一服务器31。
参见图3A本实施例提供一种频率控制系统,所述系统包括第一服务器31和第二服务器32,其中:
所述第一服务器31,用于根据所述业务消息的消息内容确定业务标识,将同类业务标识的业务消息的数量确定为所述待累加次数N;将所述业务标识、所述待累加次数N和对象标识携带于频率控制请求中,将所述频率控制请求发送给所述第二服务器;
所述第二服务器32,用于解析所述频率控制请求,得到所述业务标识、所述待累加次数N和对象标识;根据所述对象标识和所述业务标识组成对象关键值;在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值;根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值;确定所述每一时间区间的频率累加值与对应的预设的频率阈值之间的大小关系,如果所述至少两个时间区间对应的大小关系满足预设的条件,拦截所述业务。
在其他的实施例中,所述系统在实现时候可以为后台服务器(简称为服务器),即该服务器包括第一服务器和第二服务器,所述服务器获取所述业务消息对应的频率控制对象的对象标识、所述业务消息的业务标识、待累加次数N,包括:所述第一服务器根据所述业务消息的消息内容确定业务标识,将同类业务标识的业务消息的数量确定为所述待累加次数N;所述第一服务器将所述业务标识、所述待累加次数N和对象标识携带于频率控制请求中,将所述频率控制请求发送给所述第二服务器;所述第二服务器解析所述频率控制请求,得到所述业务标识、所述待累加次数N和对象标识。对应地,所述如果所述至少两个时间区间对应的大小关系满足预设的条件,拦截所述业务消息,包括:
如果所述至少两个时间区间对应的判断关系满足预设的条件,所述第二服务器生成用于表明拦截所述业务消息的第一频率控制结果;如果所述至少两个时间区间对应的大小关系不满足预设的条件,所述第二服务器生成用于表明不拦截所述业务消息的第二频率控制结果;
所述第二服务器将所述第一频率控制结果或第二频率控制结果发送给所述第一服务器;所述第一服务器根据所述第一频率控制结果拦截所述业务消息,根据所述第二频率控制结果不拦截所述业务消息。
本实施例中,服务器是业务提供商的服务器;第一服务器在实现的过程中可以为消息系统,即接收对象发送的业务消息的服务器,第二服务器即为用于实现频率控制的频率控制系统,消息系统和频率控制系统是逻辑上的划分,在实现的过程中,频率控制系统和消息系统可以采用同一个物理实体来实现,也可以采用不同的物理实体来实现,例如频率控制系统和消息系统为同一个计算机或服务器集群上不同的软件模块,又如,频率控制系统和消息系统分别为一个计算机。
有关技术中存在诸多问题,例如:1)相关技术中不支持自定义维度的频率控制,如用户维度或设备维度;2)现有技术不支持自定义统计时间区间,多数只支持1秒和1分钟的粒度,其中把1秒或1分钟或1小时等周期看作是一(时间维度。3)现有方法在加白/加拦截/去白/去拦截上的流程不完整;4)现有方法是单机版本的接口频率控制,无法应用到分布式的环境中。针对以上问题,本实施例提出一种通用的高度可配置的频率控制方法,该方法通过配置文件可以配置统计时长、频率阈值、匹配的业务场景、拦截等级。此外,该方法还增加了加白/加拦截/去白/去拦截的机制,以便在实际运用过程运营。
当收到一个频率控制请求时,系统根据频率控制请求的业务找出对应的一系列频率配置规则,然后从内存中找出并更新该业务对应的频率,最后检查频率是否达到配置文件中的阈值。若达到阈值则返回拦截对应拦截等级。该配置规则可以通过配置文件来实现,因此,可以执行自定义维度的频率控制,也能支持自定义统计时间区间。
先来介绍一下频率控制的含义:预先定义一个对象在给定时间周期内最多被访问的次数,如果访问次数到达预设的阈值,则拦截本次请求,如果访问次数没有到达预设的阈值,则放行本次请求,即对本次访问请求进行后续处理而不是拦截。例如定义1分钟内最多能发10条业务消息,如果在1分钟内用户还没有发够10条,如果在该1分钟内,再收到用户的业务消息,则需要对该业务消息进行发送;如果在1分钟内用户已经发了10条,如果在该1分钟内,再收到用户的业务消息,则需要对该业务消息进行拦截;一直到下一分钟才继续对用户发送的业务消息进行恢复(继续处理而不是拦截)。在实现的过程中,访问请求可以看作是某种业务处理请求(简称业务请求或业务消息);该对象可以为用户或业务或设备,其中如果对象为用户时,那么区别对象采用用户标识,用户标识可以为用户的名称、身份证号码、用户的手机号、用户邮箱、用户的随机编码等;如果对象为业务时,那么区别对象采用业务标识,如果一个服务器提供三种业务,那么对每一种业务进行频率控制,业务标识可以人为设置,例如设置成某种编码。如果对象为设备时,那么区别对象采用设备标识,以终端为例,设备标识可以采用IMEI,那么对每一设备进行频率控制。
下面现在以张三发业务消息为例介绍频率控制系统的工作流程。张三向服务器发送业务消息,该业务消息中携带用户标识(ID,Identity)、用户网际协议(IP)地址、业务内容;在其他的实施例中业务消息中还携带有业务标识;在其他的实施例中业务标识可以通过业务消息的格式或内容来识别。需要说明的是,业务标识与服务器所提供的业务类型有关,服务器提供什么样的业务(服务),那么就对应什么样的业务类型或服务类型。例如业务标识可以与业务类型或服务类型相对应,业务类型包括文本消息、语音消息、视频消息、图片消息、分享名片、分享链接、发送红包、转账、收藏链接等。
图3B为本发明实施例网络架构中各设备的交互示意图,如图3B所示,终端11向消息系统311发送业务消息,消息系统311向频率控制系统312发送频率控制请求,频率控制系统312查询配置文件和共享内存的hash存储,得到频率控制结果,然后频率控制系统312将频率控制结果发送给消息系统311,消息系统311根据频率控制结果对业务消息进行处理(拦截或不拦截),消息系统311将业务处理结果返回给终端11。
结合图3B,本发明实施例一种频率控制方法该方法,包括:
步骤S301,手机向消息系统发送业务消息;
用户用手机发送业务消息,然后手机向消息系统发送业务消息;
业务消息中携带用户ID、用户IP地址、业务内容;在其他的实施例中业务消息中还携带有业务标识;在其他的实施例中业务标识可以通过业务消息的格式或内容来识别。假设业务消息中的用户ID为123456,IP地址为1.1.1.1,业务标识为文本消息。
步骤S302,消息系统接收手机发送的业务消息,消息系统对业务消息进行各种检查,其中之一就是频率检查。
消息系统是业务提供商的服务器;
步骤S303,消息系统向频率控制系统发送频率检查请求;
频率控制系统是业务提供商的服务器;消息系统和频率控制系统是逻辑上的划分,在实现的过程中,频率控制系统和消息系统可以采用同一个物理实体来实现,也可以采用不同的物理实体来实现,例如频率控制系统和消息系统为同一个计算机或服务器集群上不同的软件模块,又如,频率控制系统和消息系统分别为一个计算机。
该频率检查请求用于请求对张三发的业务消息的频率检查,其中,频率检查请求中携带上的测量参数包括用户ID:123456、IP地址:1.1.1.1、业务标识:文本消息、发消息次数:1。一般来说,发消息次数为1,因为每当用户发送一条业务消息,则消息系统就进行一次频率控制或频率检查。在其他的实施例中,发消息次数还可以为N,N为大于1的自然数,如果N为2,即消息系统并不是针对每一条消息都进行频率控制,当收到该用户的两条消息后,消息系统才进行一次频率控制。N设置为大于1的自然数,这样可以降低消息系统与频率控制系统之间的交互,从而降低消息系统和频率控制系统的负载,从而也避免二者的崩溃。
步骤S304,频率控制系统接收消息系统发送的频率检查请求,频率控制系统根据收到的频率检查请求中的测参数重新计算当前频率,并依据配置文件向消息系统返回是否拦截的频率检查结果;
步骤S305,消息系统根据频率控制系统返回的频率检查结果,向手机返回业务处理结果;
如果频率检查结果表明要对该业务消息进行拦截,则消息系统响应该频率检查结果,对该业务消息进行拦截,那么消息系统向手机返回的结果为拦截业务消息;如果频率检查结果表明不对该业务消息进行拦截,则消息系统响应该频率检查结果,对该业务消息进行发送,那么消息系统向手机返回的结果为消息发送成功。拦截业务消息的结果可以采用多种形式,例如消息系统向手机发送“系统忙,请稍后再试”或者“您发送的消息过多,请稍后再试”、“客官,您的要求太多了,让我慢慢来”;如果要提供用户体验,还可以告诉用户解决办法,例如向用户的手机发送的消息内容可以为“您发送的消息过多,请稍后再试;或者,请购买会员,体验交流无限制”。
下面提供一种实现上述步骤S304的方法,本实施例中以频率控制系统收到频率检查参数包括用户ID:123456、IP地址:1.1.1.1、业务标识:文本消息、发消息次数:1为例进行说明,该方法包括:
步骤S400,频率控制系统利用用户ID为123456和业务标识为文本消息组成一个用户关键值(userkey);
用户关键值包括两部分:用户ID为123456、业务标识为文本消息。
步骤S401,频率控制系统根据用户ID查看该用户是在白名单或者黑名单,如果该用户在白名单中,则不对该用户进行频率控制,即频率检查结果为将该业务消息发送出去;如果该用户在黑名单中,则对该用户进行频率控制,即频率检查结果为拦截该业务消息。
白名单和黑名单都可以采用配置文件的形式,这样黑白名单都可以在其他设备中生成,或者由用户输入。白名单在实现的过程中可以为重要客户(VIP)或者会员客户,如果用户购买了会员,则可以不对该用户发送的业务消息进行拦截。
在其他的实施例中,还可以对白名单进行业务类别的控制,则不同的业务类别对应不同的白名单,根据用户标识查询对应的业务类别的白名单,如果在该业务类别对应的白名单中,则将该业务类别对应的业务消息发送出去。例如用户可以购买不同业务类别的会员,例如听歌和看视频是不同的业务,二者具有不同的白名单;假设用户购买了听歌会员,那么听歌业务对应的白名单中有该用户,例如业务消息为听歌,则频率控制系统向消息系统返回“将该业务消息发送出去”的频率检查结果;再如业务消息为看视频,则频率控制系统还要查看该用户是否在黑名单中。
在其他的实施例中,还可以将白名单按照优先级进行分类,不同的优先级对应不同的业务,假设优先级分为两类,第一优先级和第二优先级,第一优先级对应的业务包括发文本消息和发语音消息,第二优先级对应的业务包括发文本消息、发语音消息、发视频消息和分享链接,假设用户购买了第一优先级会员,那么第一优先级对应的白名单中有该用户,例如业务消息为文本消息,则频率控制系统向消息系统返回“将该业务消息发送出去”的频率检查结果;再如业务消息为视频消息,则频率控制系统还要查看该用户是否在黑名单中。
黑名单可以是那些满足设置规则的用户名单,例如该规则为不能发送黄色暴力内容,如果用户之前发送过暴力内容的消息,那么该用户标识很可能在黑名单中。如果用户标识在黑名单中,那么对该用户进行频率控制,即频率检查结果为拦截该业务消息。
步骤S403,根据用户ID查看该用户既不在白名单也不在黑名单中,频率控制系统在用户ID为123456对应的基于共享内存的hash存储中查找频率累积节点。
哈希(hash)存储的是userkey与频率累积节点之间的对应关系,其中频率累积节点即为次数,即频率控制系统先根据用户ID查找到123456的hash存储列表,该hash存储列表表明用户标识为123456的用户发送文本消息的次数。如果业务标识为图片消息例如发送表情、照片的消息,频率控制系统先根据用户ID查找到123456的hash存储列表,该hash存储列表表明用户标识为123456的用户发送图片消息的次数。在实现的过程中,也可以采用多种实现方式,例如,hash存储可以包括几个层级,第一层级为用户ID,第二层级为业务类型,业务类型层级的hash存储列表中记载有该用户ID发送该业务类型的消息次数。hash存储采用周期性更新,如果时间区间可以包括多个,例如一秒、一分、一刻钟、一小时、一天、一周、一个月等,如果频率控制的对象为用户,那么时间区间可以设置为一分、一小时和一天,即一分钟内设置的频率阈值是N1、一小时内设置的频率阈值是N2、一天内设置的频率阈值是N3,N1、N2和N3均为大于等于1的自然数。频率控制对象为设备或业务与用户类似。
步骤S404,频率控制系统查到的频率累积节点中包括3个时间区间对应的频率值和最后更新的时间T,比较当前时间和T,并依据配置文件中各个统计区间的时长来判断此时频率值是继续累加还是重置。如果处于同一个统计区间,则继续累加,否则重置然后再累加。
本例中,以时间区间包括三个为例进行说明,假设三个时间区间分别为一分钟、一个小时和一天,那么不同的时间区间对应不同的次数阈值,以及不同的时间区间对应不同的更新时间T,例如分钟对应的次数阈值为10,小时对应的次数阈值为100,一天对应的次数阈值为1000;分钟对应的更新时间为X分钟01秒,那么下一分钟的重置时间为(X+1)分钟01秒,小时对应的更新时间为X小时X分钟05秒,那么下一小时的重置时间为(X+1)小时(X+1)分钟05秒,一天对应的更新时间为X小时X分钟08秒,那么下一天的重置时间为第二天的X小时X分钟08秒。判断当前时间t是否在当前统计区间内,当前统计区间为更新时间T到下一个重置时间之间的时段,如果当前时间t在当前统计区间内,则将频率累积节点和当前次数1进行累加,得到频率累加值(更新后的频率值);如果当前时间t不在当前统计区间内,则对当前统计区间进行重置,将当前次数1作为频率累积节点,当然该频率累积节点也作为频率累加值。
步骤S405,频率控制系统计算更新后的频率值(即频率累加值)是否达到配置文件中对应业务的频率阈值,达到则返回拦截;否则,进行继续进行IP频率检查。
IP频率检查时,频率控制系统利用IP地址1.1.1.1和文本消息组成一个IPkey,在IP地址对应的基于共享内存的hash存储中查找频率累积节点。然后频率控制系统执行步骤S402至步骤S405类似的步骤,统计计算并检查IP地址1.1.1.1的发消息频率。IP频率检查参见下面的步骤S411至步骤S415。
如前所述,分别对时间区间分钟、小时和天的频域阈值进行判断,如果这三个时间区间的判断结果满足预设的条件,则返回拦截消息的频率检查结果;如果这三个时间区间的判断结果满足预设的条件,则返回发送消息的频率检查结果。预设的条件可以为至少任一时间区间大于预设的频率阈值,例如预设的条件可以为任一时间区间大于预设的频率阈值,或者,任意两个时间区间都大于对应的预设的频率阈值,或者,全部大于预设的频率阈值。例如如果一分钟内的频率累加值超过对应的频率阈值,则返回拦截消息的频率检查结果;如果一分钟内的频率累加值没有超过对应的频率阈值,则判断一小时内的频率累加值是否超过对应的频率阈值,如果超过,则返回拦截消息的频率检查结果;如果一分钟内的频率累加值没有超过对应的频率阈值,且一小时内的频率累加值也没有超过对应的频率阈值,则判断一天内的频率累加值是否超过对应的频率阈值,如果超过,则返回拦截消息的频率检查结果。在更新频率累加值时,可以从最小的时间区间进行更新。
上述步骤S401至步骤S405给出了一个采用用户ID为123456和业务标识为文本消息组成一个用户关键值实现步骤S304的过程,本实施例再提供一种基于采用用户IP地址为111111和业务标识为文本消息组成一个IP关键值实现步骤S304的过程,该方法包括:
步骤S411,频率控制系统利用用户IP地址为1.1.1.1和业务标识为文本消息组成一个IP关键值(IPkey);
IP关键值包括两部分:用户IP地址为1.1.1.1、业务标识为文本消息。
步骤S412,频率控制系统根据用户IP地址查看该用户是在白名单或者黑名单,如果该用户在白名单中,则不对该用户进行频率控制,即频率检查结果为将该业务消息发送出去;如果该用户在黑名单中,则对该用户进行频率控制,即频率检查结果为拦截该业务消息。
白名单和黑名单以IP地址为索引,都可以采用配置文件的形式,这样黑白名单都可以在其他设备中生成,或者由用户输入。
步骤S413,根据用户IP地址查看该用户既不在白名单也不在黑名单中,频率控制系统在用户IP地址为1.1.1.1对应的基于共享内存的hash存储中查找频率累积节点。
哈希存储的是userkey与频率累积节点之间的对应关系,其中频率累积节点即为次数,即频率控制系统先根据用户IP地址查找到1.1.1.1的hash存储列表,该hash存储列表表明用户IP地址为1.1.1.1的用户发送文本消息的次数。如果业务标识为图片消息例如发送表情、照片的消息,频率控制系统先根据用户IP地址查找到1.1.1.1的hash存储列表,该hash存储列表表明用户IP地址为1.1.1.1的用户发送图片消息的次数。在实现的过程中,也可以采用多种实现方式,例如,hash存储可以包括几个层级,第一层级为用户IP地址,第二层级为业务类型,业务类型层级的hash存储列表中记载有该用户IP地址发送该业务类型的消息次数。
步骤S414,频率控制系统查到的频率累积节点中包括3个时间区间对应的频率值和最后更新的时间T,比较当前时间和T,并依据配置文件中各个统计区间的时长来判断此时频率值是继续累加还是重置。如果处于同一个统计区间,则继续累加,否则重置然后再累加。
本例中,以时间区间包括三个为例进行说明,假设三个时间区间分别为一分钟、一个小时和一天,那么不同的时间区间对应不同的次数阈值,以及不同的时间区间对应不同的更新时间T。判断当前时间t是否在当前统计区间内,当前统计区间为更新时间T到下一个重置时间之间的时段,如果当前时间t在当前统计区间内,则将频率累积节点和当前次数1进行累加,得到频率累加值(更新后的频率值);如果当前时间t不在当前统计区间内,则对当前统计区间进行重置,将当前次数1作为频率累积节点,当然该频率累积节点也作为频率累加值。
步骤S415,频率控制系统计算更新后的频率值是否达到配置文件中对应业务的频率阈值,达到则返回拦截。
如前所述,分别对时间区间分钟、小时和天的频域阈值进行判断,如果这三个时间区间的判断结果满足预设的条件,则返回拦截消息的频率检查结果;如果这三个时间区间的判断结果满足预设的条件,则返回发送消息的频率检查结果。假设预设的条件为任一时间区间大于预设的频率阈值,则返回拦截消息的频率检查结果,例如如果一分钟内的频率累加值超过对应的频率阈值,则返回拦截消息的频率检查结果;如果一分钟内的频率累加值没有超过对应的频率阈值,则判断一小时内的频率累加值是否超过对应的频率阈值,如果超过,则返回拦截消息的频率检查结果;如果一分钟内的频率累加值没有超过对应的频率阈值,且一小时内的频率累加值也没有超过对应的频率阈值,则判断一天内的频率累加值是否超过对应的频率阈值,如果超过,则返回拦截消息的频率检查结果。在更新频率累加值时,可以从最小的时间区间进行更新。
下面介绍一下配置文件313,以用户维度的用户关键值和IP维度的IP关键值为例进行说明,参见图4所示,配置文件可以为一系列的规则,用户维度的用户关键值的规则参见41,IP维度的IP关键值的规则参见42,
[发文本消息的频率用户维度规则]41包括如下内容:
匹配业务的业务标识:文本消息;
统计的时间区间(时长):1s,5s,60s;
时间区间对应的频率阈值:1s=5次,5s=20次,60s=120次;
拦截登记(发消息次数):2;
主键类型:账号ID。
[发文本消息的频率IP维度规则]42包括如下内容:
匹配业务的业务标识:文本消息;
统计的时间区间(时长):1s,5s,60s;
时间区间对应的频率阈值:1s=20次,5s=60次,60s=400次;
拦截登记(发消息次数):1;
主键类型:账号IP。
下面介绍一下本实施例中加白名单或加拦截或去白名单或去拦截机制,在实际的运用中经常要对一些用户标识或者IP地址加白名单(加白),或者对一些已知恶意用户的用户标识或者IP地址加黑名单。具体做法是复用频率累积节点的内存空间,在第一个频率累积单元里打上“kWhiteFlag/kAddBlockFlag”标记,该标记用于标识这个节点已经加白名单或加拦截,如图5所示,该频率累计单元的第一个框51表示标记,用于表明该节点已经加白名单/加拦截、加黑名单等,第二至第四个框52至54表示频率次数,这三个频率次数分别表示三个时间区间的当前累计频率,第五个框55为过期日期,即最后更新时间设置成白名单/黑名单的过期时间。当频率控制请求过来检索到频率累积节点时,检测是否是白名单或者黑名单。若是白名单直接放过,若是黑名单直接拦截。
基于共享内存的hash存储有诸多优点,但也有一个弊端,就是内存大小需要预先指定。这就可以能导致由于内存不足导致无法插入新的节点,在这种情况之下,可以使用标准模板库std::map作为备用存储,防止出现漏统计的现象。
在其他的实施例中,返回频率拦截的部分可以引入另一个缓存(cache)模块,专门负责缓存住拦截状态,如此一来,频率系统可以分为频率累积模块和频率拦截缓存模块。调用端向频率累积模块上报频率,向频率拦截缓存模块查询拦截状态。
本发明实施例提供了一种构建统一的通用的高度可配置的频率控制方法,该方法中,用户只需根据业务的需要修改配置文件就可以实现不同的频率控制需求,无需改动任何代码。采用基于共享内存的存储模型,利用系统重启时恢复之前的频率统计信息,集成白名单机制,方便实际运营,增强了实用性。
基于前述的实施例,本发明实施例提供一种频率控制装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过计算设备中的处理器来实现;当然也可通过逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图6为本发明实施例频率控制装置的组成结构示意图,如图6所示,所述装置600包括:
第一获取单元601,用于获取频率控制对象的对象标识、业务的业务标识、待累加次数N;
组成单元602,用于根据所述对象标识和所述业务标识组成对象关键值;
查找单元603,用于在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值;
第一确定单元604,用于根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值;
第二确定单元605,用于确定所述每一时间区间的频率累加值与对应的预设的频率阈值之间的大小关系;
拦截单元606,用于如果所述至少两个时间区间对应的大小关系满足预设的条件,拦截所述业务。
在其他的实施例中,所述频率累积节点还包括重置时间或更新时间等时间参数,其中,更新时间为最近一次更新频率值的时间,更新时间和重置时间都是一个时刻,所述装置还包括:
第二获取单元,用于获取当前时间和所述频率累积节点中每一时间区间对应的重置时间,所述重新时间为重置对应时间区间的频率值的时间;
第一确定单元,用于如果所述当前时间在所述重置时间之前,则根据与所述重置时间对应的频率值和所述待累加次数N确定与所述重置时间对应的频率累加值;如果所述当前时间在所述重置时间之后,将所述待累加次数作为与所述重置时间对应的频率累加值。
与所述重置时间对应的频率累加值,即与所述重置时间在同一时间区间的频率累加值。
在其他的实施例中,所述装置还包括:
查看单元,用于根据所述对象标识查看所述频率控制对象在所述频率累积节点中是否有白名单标记或者黑名单标记;
在其他的实施例中,白名单标记和黑名单标记可以同时记载在频率累积节点中,例如白名单标记可以采用1来表示,黑名单标记可以采用2来表示。
第一处理单元,用于如果所述频率累积节点中有白名单标记,不拦截所述业务,如果所述频率累积节点中有黑名单标记,拦截所述业务;
第一确定单元,用于如果所述频率累积节点中既没有白名单标记也没有黑名单标记,根据所述每一时间区间的频率值和所述待累加次数N确定对应时间区间的频率累加值。
在其他的实施例中,所述对象标识包括以下至少之一:网际协议IP地址、设备标识、用户标识,所述组成单元,用于实现至少以下之一:
根据所述IP地址和所述业务标识组成对象关键值;
根据所述设备标识和所述业务标识组成对象关键值;
根据所述用户标识和所述业务标识组成对象关键值。
在其他的实施例中,所述业务包括业务消息,所述业务消息中至少包括对象标识、业务标识;或者,所述业务消息中至少包括对象标识,对应地,所述装置还包括第三确定单元,用于根据所述业务消息的消息内容确定业务标识。
在其他的实施例中,所述第一获取单元包括:第一确定模块,用于根据所述业务消息的消息内容确定业务标识,将同类业务标识的业务消息的数量确定为所述待累加次数N;发送模块,用于将所述业务标识、所述待累加次数N和对象标识携带于频率控制请求中,将所述频率控制请求发送给所述第二服务器;解析模块,用于解析所述频率控制请求,得到所述业务标识、所述待累加次数N和对象标识。
在其他的实施例中,所述拦截单元,包括:生成模块,用于如果所述至少两个时间区间对应的判断关系满足预设的条件,生成用于表明拦截所述业务消息的第一频率控制结果;发送模块,用于将所述第一频率控制结果发送给所述第一服务器;拦截模块,用于根据所述第一频率控制结果拦截所述业务消息。
在其他的实施例中,所述装置还包括:生成单元,用于如果所述至少两个时间区间对应的大小关系不满足预设的条件,所述第二服务器生成用于表明不拦截所述业务消息的第二频率控制结果;发送单元,用于将所述第二频率控制结果发送给所述第一服务器;第二处理单元,用于根据所述第二频率控制结果不拦截所述业务消息。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述的频率控制方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
对应地,本发明实施例提供一种频率控制设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的频率控制方法的步骤。
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的频率控制方法的步骤。
以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明存储介质和设备实施例的描述而理解。
需要说明的是,服务器可以通过计算设备来实现,计算设备可以为计算机或服务器集群,当计算设备为计算机时,图7为本发明实施例计算设备的一种硬件实体示意图,该计算设备700的硬件实体包括:处理器701、通信接口702和存储器703,其中
处理器701通常控制计算设备700的总体操作。
通信接口702可以使计算设备通过网络与其他终端或服务器通信。
存储器703配置为存储由处理器701可执行的指令和应用,还可以缓存待处理器701以及计算设备700中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种频率控制方法,其特征在于,所述方法包括:
服务器获取频率控制对象的对象标识、业务的业务标识、待累加次数N;
根据所述对象标识和所述业务标识组成对象关键值;
获取针对至少两个不同时间区间设置的频率值,并存储到基于共享内存的哈希存储中,所述频率值用于自定义维度的频率控制,所述自定义维度包括设备维度和用户维度;
在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值、以及每一时间区间对应的重置时间;
如果当前时间在过期时间之前,根据所述对象标识查看所述频率控制对象在所述频率累积节点中是否有白名单标记或者黑名单标记,其中,所述过期时间为所述频率累积节点包括的黑白名单标记对应的过期时间;
如果所述频率累积节点中有白名单标记,不拦截所述业务,如果所述频率累积节点中有黑名单标记,拦截所述业务;
如果所述频率累积节点中既没有白名单标记也没有黑名单标记、或者当前时间在过期时间之后,则执行以下处理:
获取当前时间和所述频率累积节点中所述每一时间区间对应的重置时间,所述重置时间为重置对应时间区间的频率值的时间;
如果所述当前时间在所述重置时间之前,则根据与所述重置时间对应的频率值和所述待累加次数N,确定与所述重置时间对应的频率累加值;
如果所述当前时间在所述重置时间之后,将所述待累加次数N作为与所述重置时间对应的频率累加值;
确定所述每一时间区间的频率累加值与对应的预设的频率阈值之间的大小关系,如果所述至少两个时间区间对应的大小关系满足任一时间区间大于预设的频率阈值,拦截所述业务。
2.根据权利要求1所述的方法,其特征在于,所述对象标识包括以下至少之一:网际协议IP地址、设备标识、用户标识,所述根据所述对象标识和所述业务标识组成对象关键值,包括至少以下之一:
根据所述IP地址和所述业务标识组成对象关键值;
根据所述设备标识和所述业务标识组成对象关键值;
根据所述用户标识和所述业务标识组成对象关键值。
3.根据权利要求1至2任一项所述的方法,其特征在于,所述业务包括业务消息,所述业务消息中至少包括对象标识、业务标识;或者,
所述业务消息中至少包括对象标识,对应地,所述方法还包括:根据所述业务消息的消息内容确定业务标识。
4.根据权利要求3所述的方法,其特征在于,所述服务器包括第一服务器和第二服务器,所述服务器获取频率控制对象的对象标识、业务的业务标识、待累加次数N,包括:
所述第一服务器根据所述业务消息的消息内容确定业务标识,将同类业务标识的业务消息的数量确定为所述待累加次数N;
所述第一服务器将所述业务标识、所述待累加次数N和对象标识携带于频率控制请求中,将所述频率控制请求发送给所述第二服务器;
所述第二服务器解析所述频率控制请求,得到所述业务标识、所述待累加次数N和对象标识。
5.根据权利要求4所述的方法,其特征在于,所述如果所述至少两个时间区间对应的大小关系满足任一时间区间大于预设的频率阈值,拦截所述业务消息,包括:
如果所述至少两个时间区间对应的判断关系满足任一时间区间大于预设的频率阈值,所述第二服务器生成用于表明拦截所述业务消息的第一频率控制结果;
所述第二服务器将所述第一频率控制结果发送给所述第一服务器;
所述第一服务器根据所述第一频率控制结果拦截所述业务消息。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
如果所述至少两个时间区间对应的大小关系不满足预设的条件,所述第二服务器生成用于表明不拦截所述业务消息的第二频率控制结果;
所述第二服务器将所述第二频率控制结果发送给所述第一服务器;
所述第一服务器根据所述第二频率控制结果不拦截所述业务消息。
7.一种频率控制装置,其特征在于,所述装置包括:
第一获取单元,用于获取频率控制对象的对象标识、业务的业务标识、待累加次数N;
组成单元,用于根据所述对象标识和所述业务标识组成对象关键值;
查找单元,用于获取针对至少两个不同时间区间设置的频率值,并存储到基于共享内存的哈希存储中,所述频率值用于自定义维度的频率控制,所述自定义维度包括设备维度和用户维度;在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值、以及每一时间区间对应的重置时间;
第一确定单元,用于如果当前时间在过期时间之前,根据所述对象标识查看所述频率控制对象在所述频率累积节点中是否有白名单标记或者黑名单标记,其中,所述过期时间为所述频率累积节点包括的黑白名单标记对应的过期时间;如果所述频率累积节点中有白名单标记,不拦截所述业务,如果所述频率累积节点中有黑名单标记,拦截所述业务;如果所述频率累积节点中既没有白名单标记也没有黑名单标记、或者当前时间在过期时间之后,则执行以下处理:获取当前时间和所述频率累积节点中所述每一时间区间对应的重置时间,所述重置时间为重置对应时间区间的频率值的时间;如果所述当前时间在所述重置时间之前,则根据与所述重置时间对应的频率值和所述待累加次数N,确定与所述重置时间对应的频率累加值;如果所述当前时间在所述重置时间之后,将所述待累加次数N作为与所述重置时间对应的频率累加值;
第二确定单元,用于确定所述每一时间区间的频率累加值与对应的预设的频率阈值之间的大小关系;
拦截单元,用于如果所述至少两个时间区间对应的大小关系满足任一时间区间大于预设的频率阈值,拦截所述业务。
8.一种频率控制设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6任一项所述的频率控制方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6任一项所述的频率控制方法的步骤。
10.一种频率控制系统,其特征在于,所述系统包括第一服务器和第二服务器,其中:
所述第一服务器,用于根据业务消息的消息内容确定业务标识,将同类业务标识的业务消息的数量确定为待累加次数N;将所述业务标识、所述待累加次数N和对象标识携带于频率控制请求中,将所述频率控制请求发送给所述第二服务器;
所述第二服务器,用于解析所述频率控制请求,得到所述业务标识、所述待累加次数N和对象标识;根据所述对象标识和所述业务标识组成对象关键值;获取针对至少两个不同时间区间设置的频率值,并存储到基于共享内存的哈希存储中,所述频率值用于自定义维度的频率控制,所述自定义维度包括设备维度和用户维度;在所述对象标识对应的基于共享内存的哈希存储中,查找所述对象关键值对应的频率累积节点,所述频率累积节点包括至少两个不同时间区间的频率值、以及每一时间区间对应的重置时间;如果当前时间在过期时间之前,根据所述对象标识查看所述频率控制对象在所述频率累积节点中是否有白名单标记或者黑名单标记,其中,所述过期时间为所述频率累积节点包括的黑白名单标记对应的过期时间;如果所述频率累积节点中有白名单标记,不拦截所述业务,如果所述频率累积节点中有黑名单标记,拦截所述业务;如果所述频率累积节点中既没有白名单标记也没有黑名单标记、或者当前时间在过期时间之后,则执行以下处理:获取当前时间和所述频率累积节点中所述每一时间区间对应的重置时间,所述重置时间为重置对应时间区间的频率值的时间;如果所述当前时间在所述重置时间之前,则根据与所述重置时间对应的频率值和所述待累加次数N,确定与所述重置时间对应的频率累加值;如果所述当前时间在所述重置时间之后,将所述待累加次数N作为与所述重置时间对应的频率累加值;确定所述每一时间区间的频率累加值与对应的预设的频率阈值之间的大小关系,如果所述至少两个时间区间对应的大小关系满足任一时间区间大于预设的频率阈值,拦截所述业务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711060215.2A CN109756528B (zh) | 2017-11-01 | 2017-11-01 | 频率控制方法及装置、设备、存储介质、服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711060215.2A CN109756528B (zh) | 2017-11-01 | 2017-11-01 | 频率控制方法及装置、设备、存储介质、服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109756528A CN109756528A (zh) | 2019-05-14 |
CN109756528B true CN109756528B (zh) | 2022-03-11 |
Family
ID=66398253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711060215.2A Active CN109756528B (zh) | 2017-11-01 | 2017-11-01 | 频率控制方法及装置、设备、存储介质、服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109756528B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427576B (zh) * | 2019-06-18 | 2022-04-12 | 五八有限公司 | 一种基于分享内容的区块链资源值的控制方法及系统 |
CN110618878B (zh) * | 2019-08-12 | 2022-02-01 | 网联清算有限公司 | 终态通知控速方法及装置 |
CN111031105B (zh) * | 2019-11-26 | 2022-06-28 | 北京百度网讯科技有限公司 | 自动驾驶中消息频率的统计方法、装置、设备及存储介质 |
CN111078718B (zh) * | 2019-12-30 | 2023-04-07 | 广州酷狗计算机科技有限公司 | 频率控制方法、装置、设备以及计算机存储介质 |
CN111898121B (zh) * | 2020-07-09 | 2024-02-02 | 彩讯科技股份有限公司 | 基于邮箱的频率限制方法、装置、计算机设备及存储介质 |
CN114640700B (zh) * | 2020-11-30 | 2023-04-07 | 腾讯科技(深圳)有限公司 | 一种调用频次控制方法及装置 |
CN114760121B (zh) * | 2022-03-31 | 2023-08-01 | 腾讯科技(深圳)有限公司 | 访问频率控制的方法和访问频率控制系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102083089A (zh) * | 2009-11-27 | 2011-06-01 | 中国移动通信集团山东有限公司 | 一种访问业务监控方法、系统及装置 |
CN102769549A (zh) * | 2011-05-05 | 2012-11-07 | 腾讯科技(深圳)有限公司 | 网络安全监控的方法和装置 |
CN104980421A (zh) * | 2014-10-15 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 一种批量请求处理方法及系统 |
CN105491054A (zh) * | 2015-12-22 | 2016-04-13 | 网易(杭州)网络有限公司 | 恶意访问的判断方法、拦截方法与装置 |
CN105915510A (zh) * | 2016-04-12 | 2016-08-31 | 北京小米移动软件有限公司 | 控制业务访问量的方法和装置 |
CN106534062A (zh) * | 2016-09-23 | 2017-03-22 | 南京途牛科技有限公司 | 一种防爬虫的方法 |
CN106789901A (zh) * | 2016-11-22 | 2017-05-31 | 福建中金在线信息科技有限公司 | 一种防止恶意提交网页请求的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150007278A1 (en) * | 2013-06-28 | 2015-01-01 | Business Objects Software Ltd. | Authentication for single page web interfaces |
-
2017
- 2017-11-01 CN CN201711060215.2A patent/CN109756528B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102083089A (zh) * | 2009-11-27 | 2011-06-01 | 中国移动通信集团山东有限公司 | 一种访问业务监控方法、系统及装置 |
CN102769549A (zh) * | 2011-05-05 | 2012-11-07 | 腾讯科技(深圳)有限公司 | 网络安全监控的方法和装置 |
CN104980421A (zh) * | 2014-10-15 | 2015-10-14 | 腾讯科技(深圳)有限公司 | 一种批量请求处理方法及系统 |
CN105491054A (zh) * | 2015-12-22 | 2016-04-13 | 网易(杭州)网络有限公司 | 恶意访问的判断方法、拦截方法与装置 |
CN105915510A (zh) * | 2016-04-12 | 2016-08-31 | 北京小米移动软件有限公司 | 控制业务访问量的方法和装置 |
CN106534062A (zh) * | 2016-09-23 | 2017-03-22 | 南京途牛科技有限公司 | 一种防爬虫的方法 |
CN106789901A (zh) * | 2016-11-22 | 2017-05-31 | 福建中金在线信息科技有限公司 | 一种防止恶意提交网页请求的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109756528A (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109756528B (zh) | 频率控制方法及装置、设备、存储介质、服务器 | |
US20190373052A1 (en) | Aggregation of scalable network flow events | |
US10110671B2 (en) | Method, system, and device for managing server hardware resources in a cloud scheduling environment | |
US11159649B2 (en) | Systems and methods of rate limiting for a representational state transfer (REST) application programming interface (API) | |
CN107679718B (zh) | 名单分配方法、设备以及计算机可读存储介质 | |
CN110198313B (zh) | 一种策略生成的方法及装置 | |
US10530726B2 (en) | Email notifications | |
US9935861B2 (en) | Method, system and apparatus for detecting instant message spam | |
CN109688094B (zh) | 基于网络安全的可疑ip配置方法、装置、设备及存储介质 | |
CN111193792A (zh) | 一种消息传输方法、装置、电子设备和存储介质 | |
US10700879B2 (en) | Charging method and device, access device, service quality control method and device | |
CN114208114A (zh) | 每参与者的多视角安全上下文 | |
WO2015154416A1 (zh) | 一种上网行为管理方法及装置 | |
WO2012155702A1 (zh) | 一种业务密钥更新的方法、系统及业务处理服务器 | |
US10243900B2 (en) | Using private tokens in electronic messages associated with a subscription-based messaging service | |
CN112286930A (zh) | redis业务方资源共享的方法、装置、存储介质及电子设备 | |
WO2018077138A1 (zh) | 数据配置方法、索引管理方法、相关装置以及计算设备 | |
CN115423030A (zh) | 一种设备识别的方法和装置 | |
CN114726608A (zh) | 一种蜜罐引流方法、装置及其介质 | |
CN114301696A (zh) | 恶意域名检测方法、装置、计算机设备及存储介质 | |
US8995632B1 (en) | System, method, and computer program for detecting duplicated telecommunications events in a consumer telecommunications network | |
CN112491737A (zh) | 一种流量数据采集方法及装置 | |
EP4198787B1 (en) | Cross-domain frequency filters for fraud detection | |
CN116938871B (zh) | 一种域名短码确定方法、装置、存储介质及电子装置 | |
CN108572870B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |