CN108399078B - 一种消息频率限制方法、系统、服务器和存储介质 - Google Patents
一种消息频率限制方法、系统、服务器和存储介质 Download PDFInfo
- Publication number
- CN108399078B CN108399078B CN201810225243.3A CN201810225243A CN108399078B CN 108399078 B CN108399078 B CN 108399078B CN 201810225243 A CN201810225243 A CN 201810225243A CN 108399078 B CN108399078 B CN 108399078B
- Authority
- CN
- China
- Prior art keywords
- target
- message
- frequency
- frequency limiter
- parameter
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明实施例公开了一种消息频率限制方法、系统、服务器和存储介质。该方法包括:接收目标消息;根据目标消息中的至少一个消息参数,确定目标消息对应的目标频率限制器,其中,至少一个频率限制器根据预先获取的配置文件中的配置信息创建;向目标频率限制器请求获取目标消息的目标令牌;若获取目标令牌失败,则阻止目标消息通过,否则允许目标消息通过。本发明实施例的技术方案,实现了频率限制的可配置性,以及保证了高效性和便捷性。
Description
技术领域
本发明实施例涉及网络信息处理技术,尤其涉及一种消息频率限制方法、系统、服务器和存储介质。
背景技术
后台服务器作为核心的基础服务器,其运行是否稳定直接影响到用户使用软件的情况。通常,后台服务器采用服务化的架构,服务器和服务器之间可以直接进行调用。当服务调用者异常频繁调用后台服务器时,易导致后台服务器过载,从而使得全站用户无法登录。并且还经常出现一些用户恶意频繁发送消息,也会使得后台服务器过载,不能稳定运行。因此需要对调用者调用核心服务器的频率和用户发送消息的频率进行限制,从而对核心基础服务器进行限流保护。
目前,通常利用Java版本的频率限制器来限制消息频率,但是该频率限制器不可配置,而且每次重置消息频率时,均需要重新开发代码,增加了开发成本。
发明内容
本发明实施例提供一种消息频率限制方法、系统、服务器和存储介质,以实现频率限制的可配置性,以及保证高效性和便捷性。
第一方面,本发明实施例提供了一种消息频率限制方法,包括:
接收目标消息;
根据所述目标消息中的至少一个消息参数,确定所述目标消息对应的目标频率限制器,其中,至少一个频率限制器根据预先获取的配置文件中的配置信息创建;
向所述目标频率限制器请求获取所述目标消息的目标令牌;
若获取所述目标令牌失败,则阻止所述目标消息通过,否则允许所述目标消息通过。
第二方面,本发明实施例还提供了一种消息频率限制系统,包括:
目标消息接收模块,用于接收目标消息;
目标频率限制器确定模块,用于根据所述目标消息中的至少一个消息参数,确定所述目标消息对应的目标频率限制器,其中,至少一个频率限制器根据预先获取的配置文件中的配置信息创建;
目标令牌请求模块,用于向所述目标频率限制器请求获取所述目标消息的目标令牌;
目标消息检测模块,用于若获取所述目标令牌失败,则阻止所述目标消息通过,否则允许所述目标消息通过。
第三方面,本发明实施例还提供了一种服务器,所述服务器包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所述的消息频率限制方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的消息频率限制方法。
本发明实施例通过根据目标消息中的至少一个消息参数,确定目标消息对应的目标频率限制器;向目标频率限制器请求获取目标消息的目标令牌;若获取目标令牌失败,则阻止目标消息通过,否则允许目标消息通过。其中,至少一个频率限制器根据预先获取的配置文件中的配置信息创建,实现了频率限制的可配置性,以及保证了高效性和便捷性。
附图说明
图1是本发明实施例一提供的一种消息频率限制方法的流程图;
图2是本发明实施例一提供的一种用于限制消息频率的架构示意图;
图3是本发明实施例一提供的一种令牌桶算法的原理示意图;
图4是本发明实施例二提供的一种消息频率限制方法的流程图;
图5是本发明实施例二提供的一种二维节点与链表节点的关系示意图;
图6是本发明实施例三提供的一种消息频率限制系统的结构示意图;
图7是本发明实施例四提供的一种服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种消息频率限制方法的流程图,本实施例可适用于限制消息频率的情况,尤其可以用于核心基础服务器中对接收调用者调用的消息频率和用户发送的消息频率进行限制,同时也可以用于其他需要对消息频率进行限制的应用场景中。该方法可以由消息频率限制系统来执行,该系统可以由软件和/或硬件的方式来实现,集成于消息处理服务器中。该方法具体包括如下步骤:
S110、接收目标消息。
图2给出了一种用于限制消息频率的架构示意图。如图2所示,目标消息可以是用户或调用者通过客户端向消息频率限制系统中发送的消息,该系统可以通过预设接口来接收目标消息。本实施例中接收的目标消息包括至少一个消息参数。示例性的,通过调用acquire(key_name,permits)或acquire(const uint64_t key1_name,const std::string&key2_name,const uint32_t permits)的预设接口来接收目标消息,其中key_name、key1_name和key2_name分别对应目标消息中的一个消息参数。
S120、根据目标消息中的至少一个消息参数,确定目标消息对应的目标频率限制器,其中,至少一个频率限制器根据预先获取的配置文件中的配置信息创建。
其中,消息参数可以是但不限于消息名称、用户标识、IP地址或发送时间,其中用户标识可以为用户名称、用户编号、调用者名称或调用者编号等。优选的,消息参数包括消息名称和/或用户标识。示例性的,若消息参数包括消息名称或者用户标识,则表征接收的目标消息中只有一个消息参数,即消息名称或者用户标识,此时根据该消息参数确定对应的目标频率限制器;若消息参数包括消息名称和用户标识,则表征接收的目标消息中有两个消息参数,即消息名称和用户标识,此时根据这两个消息参数确定对应的目标频率限制器。本实施例可以根据至少一个消息参数来确定目标频率限制器,使得该消息频率限制系统功能更加丰富。
本实施例通过调用预设配置接口来加载并获取配置文件,如图2所示。配置文件可以包括但不限于一维配置文件和二维配置文件。若获取的是一维配置文件,则接收的目标消息中只包括一个消息参数,即只根据一个消息参数来进行频率限制;若获取的是二维配置文件,则接收的目标消息中包括两个消息参数,即根据两个消息参数来进行频率限制。配置文件中的配置信息是用户根据实际需求自定义设置的每个待限制消息的消息参数和对应的频率限制值,从而实现频率限制的可配置性,满足用户多样化需求。可选的,一维配置文件或二维配置文件中的配置信息包括各待限制消息的消息名称和对应的频率限制值。
图2中消息频率限制系统中的每个频率限制器根据预先获取的配置文件的配置信息,基于C++版本的令牌桶算法进行创建并初始化,其中每个创建的频率限制器均对应一个令牌桶。图3给出了一种令牌桶算法的原理示意图。如图3所示,用于存放令牌的令牌桶的容量预先固定,起初令牌桶中没有令牌。当获取配置文件时,将配置文件中某一待限制消息的消息参数对应的频率限制值设置为该令牌桶的填充频率,并以该固定的填充频率向该令牌桶中填充令牌。当达到令牌桶的固定容量时,无法继续填充令牌,此时多余的令牌将被丢弃。每当令牌桶接收一个消息请求时,便从令牌桶中移除一个令牌,获取该消息对应的令牌,此时表明允许该消息通过并发送至后台服务器;若令牌桶中没有可移除的令牌,则无法获取令牌,此时表明需要阻止该消息通过。
需要注意的是,消息频率限制系统中的每个频率限制器可以在确定目标消息对应的目标频率限制器之前,根据预先获取的配置文件中的配置信息预先创建。也可以在确定目标消息对应的目标频率限制器时,根据目标消息中的至少一个消息参数和预先获取的配置文件中的配置信息实时创建。
可选的,在S120之前,还包括:
根据预先获取的一维配置文件中的配置信息,创建并初始化配置信息中各第一消息参数对应的频率限制器,其中各频率限制器中令牌的填充频率与配置信息中对应的频率限制值相等;将各第一消息参数与对应的频率限制器的映射关系存储至第一映射组;相应的,S120可以包括:根据目标消息中的第一消息参数和第一映射组,查询第一消息参数对应的目标频率限制器。
其中,当预先获取的是一维配置文件时,接收的目标消息中只有一个消息参数,即第一消息参数,此时一维配置文件中的配置信息包括各待限制消息的第一消息参数和对应的频率限制值。其中第一消息参数可以为但不限于消息名称。由于只需创建与一维配置文件中第一消息参数数量相等的频率限制器,所以优选的是在S120之前预先创建频率限制器,以简化目标频率限制器的确定过程。本实施例中的每个频率限制器根据一维配置文件中的第一消息参数创建,所以频率限制器与第一消息参数是一一对应关系,将配置信息中的每个第一消息参数与对应的频率限制器的映射关系存储至第一映射组。其中,第一映射组可以采用但不限于Map数据结构来存储映射关系。根据接收的目标消息中的第一消息参数在第一映射组中查询该第一消息参数对应的目标频率限制器,从而确定目标频率限制器。需要注意的是,若第一映射组中未查询到目标消息中第一消息参数对应的目标频率限制器,则表明一维配置文件中没有对该目标消息进行频率限制,该目标消息可以直接通过。
S130、向目标频率限制器请求获取目标消息的目标令牌。
其中,目标频率限制器接收到目标令牌的请求时,若目标频率限制器对应的令牌桶中存在令牌,则移除该令牌桶中的一个令牌,从而获取目标令牌成功;若目标频率限制器对应的令牌桶中不存在令牌,则获取目标令牌失败。
S140、若获取目标令牌失败,则阻止目标消息通过,否则允许目标消息通过。
其中,若目标消息的接收频率大于目标令牌的填充频率,则表明目标频率限制器中目标令牌的移除频率大于目标令牌的填充频率,此时目标频率限制器中不存在目标令牌,获取目标令牌失败。若目标消息的接收频率小于或等于目标令牌的填充频率,则表明目标频率限制器中目标令牌的移除频率小于或等于目标令牌的填充频率,此时目标频率限制器中存在目标令牌,获取目标令牌成功。若获取目标令牌失败,则表明该目标消息的接收频率大于配置文件中对应的频率限制值,此时阻止目标消息通过,从而限制该目标消息的频率;若获取目标令牌成功,则无需限制该目标消息频率,此时允许目标消息通过。
可选的,该方法还包括:
若获取配置更新文件,则根据配置更新文件,处理各频率限制器。
其中,若需要动态调整配置文件中的配置信息,比如修改某个消息参数对应的频率限制值,以及增加或删除某些待限制消息的配置信息,则可以重新调用预设配置接口进行重新加载,从而获取配置更新文件。将配置更新文件替换配置文件,并根据配置更新文件处理各频率限制器,以更新频率限制器中令牌的填充频率,或者根据新增加的待限制消息的配置信息创建新的频率限制器,或者根据删除的待限制消息的配置信息删除对应的已建立的频率限制器。本实施例可以通过配置更新文件的热加载,以实现频率限制器的更新,无需重新开发代码,从而更新过程更加便捷,实现了代码的零改动,降低了开发成本,而且这个更新过程是线程安全的,可靠性高。
本发明实施例通过根据目标消息中的至少一个消息参数,确定目标消息对应的目标频率限制器;向目标频率限制器请求获取目标消息的目标令牌;若获取目标令牌失败,则阻止目标消息通过,否则允许目标消息通过。其中,至少一个频率限制器根据预先获取的配置文件中的配置信息创建,实现了频率限制的可配置性,以及保证了高效性和便捷性。
实施例二
图4为本发明实施例二提供的一种消息频率限制方法的流程图。本实施例在上述实施例的基础上进行优化:根据目标消息中的至少一个消息参数,确定目标消息对应的目标频率限制器,包括:获取第二映射组,其中第二映射组用于存储第二消息参数与二维节点的映射关系;若第二映射组中不存在目标消息中的第二消息参数对应的目标二维节点,则创建目标二维节点,并更新第二映射组;若第二映射组中存在目标消息中的第二消息参数对应的目标二维节点,则根据目标消息中的第三消息参数,于目标二维节点中确定目标消息对应的目标频率限制器。
优化后,一种消息频率限制方法具有包括如下步骤:
S210、接收目标消息。
本实施例中接收的目标消息中存在两个消息参数,分别为第二消息参数和第三消息参数。示例性的,第二消息参数可以为但不限于用户标识,第三消息参数可以为但不限于消息名称。其中第二消息参数与第一消息参数不同,第三消息参数与第一消息单数可以相同,也可以不同。预先获取的配置文件为二维配置文件,其中二维配置文件中的配置信息可以包括针对所有用户的第二消息参数,各待限制消息的第三消息参数和对应的频率限制值,也可以包括针对每个待限制用户的第二消息参数,各待限制消息的第三消息参数和对应的频率限制值。示例性的,应用于网关服务器场景时,第二消息参数为用户标识,第三消息参数为消息名称,由于用户标识是动态变化的,所以优选是二维配置文件中不限制用户标识,即对于每个用户标识,各消息名称对应的频率限制值均相同,此时二维配置文件中的配置信息包括各待限制消息的消息名称和对应的频率限制值。
S220、获取第二映射组,其中第二映射组用于存储第二消息参数与二维节点的映射关系。
其中,第二映射组可以采用但不限于Map数据结构来存储第二消息参数与二维节点的映射关系。第二消息参数与二维节点是一一对应关系,一个二维节点用于存放对应的第二消息参数的各待限制消息对应的频率限制器。
S230、检测第二映射组中是否存在目标消息中的第二消息参数对应的目标二维节点;若否,则进入S240,若是,则进入S250。
其中,根据目标消息中的第二消息参数,于第二映射组中查询是否存在目标二维节点,并根据查询结果分别进行处理。
S240、创建目标二维节点,并更新第二映射组;S240之后进入S250。
其中,第二映射组中不存在目标二维节点时,则表示消息频率限制系统中还未创建目标二维节点,此时创建该目标二维节点,并将该目标消息中的第二消息参数和新创建的目标二维节点的映射关系存储至第二映射组中,以更新第二映射组。
S250、根据目标消息中的第三消息参数,于目标二维节点中确定目标消息对应的目标频率限制器。
其中,当第二映射组中存在目标二维节点时,或者新创建目标二维节点后,根据目标消息中的第三消息参数,于目标二维节点中确定目标消息对应的目标频率限制器,其中至少一个目标频率限制器根据预先获取的二维配置文件的配置信息创建。
需要注意的是,本实施例针对每个第二消息参数均需要创建与二维配置文件中第三消息参数数量相等的频率限制器,创建的频率限制器数量非常多,所以在S250之前预先创建频率限制器并不便捷而且占用内存较大,影响系统运行性能,因此本实施例优选的是根据目标消息中的第三消息参数和预先获取的二维配置文件,于目标二维节点中实时创建对应的目标频率限制器。
可选的,S250包括:
获取目标二维节点中的第三映射组,其中第三映射组用于存储目标二维节点中的第三消息参数与频率限制器之间的映射关系;若第三映射组中不存在第三消息参数对应的目标频率限制器,则根据预先获取的二维配置文件中的配置信息,于目标二维节点中创建并初始化目标频率限制器,并更新第三映射组;若第三映射组中存在第三消息参数对应的目标频率限制器,则确定目标频率限制器。
其中,第三映射组可以采用但不限于Map数据结构来存储目标二维节点中的第三消息参数与频率限制器的映射关系。每个二维节点中均包括一个存储该二维节点中的第三消息参数与频率限制器映射关系的第三映射组。其中第三消息参数与频率限制器是一一对应关系。根据目标消息中的第三消息参数,于目标二维节点中的第三映射组中查询是否存在该第三消息参数对应的目标频率限制器,若不存在,则根据预先获取的二维配置文件中的配置信息,基于C++版本的令牌桶算法,于目标二维节点中创建并初始化目标频率限制器。将目标消息中的第三消息参数和新创建的目标频率限制器的映射关系存储至第三映射组中,以更新第三映射组。若存在,则直接将存在的频率限制器确定为目标频率限制器。
可选的,在S250之后,还包括:
根据目标二维节点中的目标链表指针,确定目标链表节点;将目标链表节点移动到链表预设端,其中链表预设端为队头或队尾。
其中,当接收的第二消息参数过多时,创建的二维节点过多,导致所占内存过大,从而影响系统性能。本实施例可以根据最近最少使用(Least RecentlyUsed,LRU)算法建立LRU链表,自动淘汰最近没有访问的第二消息参数对应的二维节点,从而解决因限制大量用户的消息频率而导致的内存暴增问题,以保证频率限制的高性能。图5给出了一种二维节点与链表节点的关系示意图。如图5所示,每个二维节点中除了包括各频率限制器外,还可以包括一个指向该二维节点的链表指针,并且每个链表指针对应一个链表节点,其中链表节点包括与该二维节点对应的第二消息参数以及指向前一个链表节点的前指针和指向后一个链表节点的后指针。通过目标二维节点中的目标链表指针可以一次性找到目标消息中的第二消息参数对应的目标链表节点,其复杂度为O(1),高效便捷。将找到的目标链表节点移动到链表的预设端,使得链表节点按照访问时间进行排序,以便按照访问时间的顺序来淘汰二维节点。其中链表的预设端为最新访问的链表节点,与链表预设端的相反端为最旧访问的链表节点。
可选的,在S240中创建目标二维节点之前,还包括:
若检测到链表节点总数超过二维配置文件中的预设总数,则从与链表预设端的相反端开始依次删除预设百分数的链表节点;根据每个删除的链表节点中的第二消息参数和第二映射组,确定对应的待删除二维节点并进行删除;相应的,在创建目标二维节点之后,还包括:创建目标消息中的第二消息参数对应的目标链表节点,并将目标消息中的第二消息参数存储至目标链表节点中;将指向目标链表节点的目标链表指针存储至目标二维节点中。
其中,二维配置文件的配置信息还包括一个预设总数,其中预设总数为根据实际情况设置的一个二维节点数量的最大值,以避免二维节点过多,占用内存过大。由于二维节点与链表节点是一一对应关系,所以链表节点的总数等于二维节点的总数。若检测到链表节点总数超过预设总数,则表明需淘汰预设百分数的链表节点和对应的二维节点,以创建新的目标链表节点和目标二维节点。按照访问时间的顺序,从与链表预设端的相反端开始依次删除预设百分数的链表节点,其中预设百分数可以是但不限于10%。根据每个删除的链表节点中的第二消息参数,在O(1)时间内于第二映射组中查询到对应的待删除二维节点,并将待删除二维节点进行删除。通过删除预设百分数的链表节点和对应的二维节点,获取了较大内存空间,从而避免频率执行删除链表节点的动作。若检测到链表节点总数没有超过预设总数,则直接创建目标消息中第二消息参数对应的目标二维节点。
本实施例在创建目标二维节点之后,创建目标消息中第二消息参数对应的目标链表节点,并建立该目标链表节点和该目标二维节点的关联,即将目标消息中第二消息参数存储至目标链表节点中,将指向目标链表节点的目标链表指针存储至目标二维节点中。
S260、向目标频率限制器请求获取目标消息的目标令牌。
S270、若获取目标令牌失败,则阻止目标消息通过,否则允许目标消息通过。
本发明实施例通过根据目标消息中的两个消息参数,确定目标消息对应的目标频率限制器;向目标频率限制器请求获取目标消息的目标令牌;若获取目标令牌失败,则阻止目标消息通过,否则允许目标消息通过。从而实现了二维频率限制,即针对某个用户标识对某个消息名称的频率限制,并且保证了频率限制的高效性和便捷性。
实施例三
图6为本发明实施例三提供的一种消息频率限制系统的结构示意图,本实施例可适用于限制消息频率的情况,该系统包括:目标消息接收模块310、目标频率限制器确定模块320,目标令牌请求模块330和目标消息检测模块340。
其中,目标消息接收模块310,用于接收目标消息;目标频率限制器确定模块320,用于根据目标消息中的至少一个消息参数,确定目标消息对应的目标频率限制器,其中,至少一个频率限制器根据预先获取的配置文件中的配置信息创建;目标令牌请求模块330,用于向目标频率限制器请求获取目标消息的目标令牌;目标消息检测模块340,用于若获取目标令牌失败,则阻止目标消息通过,否则允许目标消息通过。
可选的,消息参数包括:消息名称和/或用户标识。
可选的,该系统还包括:
频率限制器创建模块,用于在根据目标消息中的至少一个消息参数,确定目标消息对应的目标频率限制器之前,根据预先获取的一维配置文件中的配置信息,创建并初始化配置信息中各第一消息参数对应的频率限制器,其中各频率限制器中令牌的填充频率与配置信息中对应的频率限制值相等;
第一映射组存储模块,用于将各第一消息参数与对应的频率限制器的映射关系存储至第一映射组;
相应的,目标频率限制器确定模块320,包括:
目标频率限制器查询单元,用于根据目标消息中的第一消息参数和第一映射组,查询第一消息参数对应的目标频率限制器。
可选的,目标频率限制器确定模块320,还包括:
第二映射组获取单元,用于获取第二映射组,其中第二映射组用于存储第二消息参数与二维节点的映射关系;
目标二维节点创建单元,用于若第二映射组中不存在目标消息中的第二消息参数对应的目标二维节点,则创建目标二维节点,并更新第二映射组;
目标频率限制器确定单元,用于若第二映射组中存在目标消息中的第二消息参数对应的目标二维节点,则根据目标消息中的第三消息参数,于目标二维节点中确定目标消息对应的目标频率限制器。
可选的,目标频率限制器确定单元,包括:
第三映射组获取子单元,用于获取目标二维节点中的第三映射组,其中第三映射组用于存储目标二维节点中的第三消息参数与频率限制器之间的映射关系;
目标频率限制器创建子单元,用于若第三映射组中不存在第三消息参数对应的目标频率限制器,则根据预先获取的二维配置文件中的配置信息,于目标二维节点中创建并初始化目标频率限制器,并更新第三映射组;
目标频率限制器确定子单元,用于若第三映射组中存在第三消息参数对应的目标频率限制器,则确定目标频率限制器。
可选的,该系统还包括:
目标链表节点确定模块,用于在根据目标消息中的第三消息参数,于目标二维节点中确定目标消息对应的目标频率限制器之后,根据目标二维节点中的目标链表指针,确定目标链表节点;
目标链表节点移动模块,用于将目标链表节点移动到链表预设端,其中链表预设端为队头或队尾。
可选的,该系统还包括:
链表节点删除模块,用于在创建目标二维节点之前,若检测到链表节点总数超过二维配置文件中的预设总数,则从与链表预设端的相反端开始依次删除预设百分数的链表节点;
二维节点删除模块,用于根据每个删除的链表节点中的第二消息参数和第二映射组,确定对应的待删除二维节点并进行删除;
相应的,该系统还包括:
目标链表节点创建模块,用于在创建目标二维节点之后,创建目标消息中的第二消息参数对应的目标链表节点,并将目标消息中的第二消息参数存储至目标链表节点中;
目标链表指针存储模块,用于将指向目标链表节点的目标链表指针存储至目标二维节点中。
可选的,该系统还包括:
频率限制器处理模块,用于若获取配置更新文件,则根据配置更新文件,处理各频率限制器。
本发明实施例所提供的消息频率限制系统可执行本发明任意实施例所提供的消息频率限制方法,具备执行方法相应的功能模块和有益效果。
实施例四
图7是本发明实施例四提供的一种服务器的结构示意图。参见图7,该服务器包括:
一个或多个处理器410;
存储器420,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器410执行,使得一个或多个处理器410实现如上述实施例中任意实施例提出的消息频率限制方法。
图7中以一个处理器410为例;服务器中的处理器410和存储器420可以通过总线或其他方式连接,图7中以通过总线连接为例。
存储器420作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的消息频率限制方法对应的程序指令/模块(例如,消息频率限制系统中的目标消息接收模块310、目标频率限制器确定模块320,目标令牌请求模块330和目标消息检测模块340)。处理器410通过运行存储在存储器420中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的消息频率限制方法。
存储器420主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器420可进一步包括相对于处理器410远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本实施例提出的服务器与上述实施例提出的消息频率限制方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行消息频率限制方法相同的有益效果。
实施例五
本实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的消息频率限制方法。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种消息频率限制方法,其特征在于,包括:
接收目标消息;
根据所述目标消息中的至少一个消息参数,确定所述目标消息对应的目标频率限制器,其中,至少一个频率限制器根据预先获取的配置文件中的配置信息创建;
向所述目标频率限制器请求获取所述目标消息的目标令牌;
若获取所述目标令牌失败,则阻止所述目标消息通过,否则允许所述目标消息通过;
所述根据所述目标消息中的至少一个消息参数,确定所述目标消息对应的目标频率限制器之前,还包括:
根据预先获取的一维配置文件中的配置信息,创建并初始化配置信息中各第一消息参数对应的频率限制器,其中各频率限制器中令牌的填充频率与所述配置信息中对应的频率限制值相等;
将各第一消息参数与对应的频率限制器的映射关系存储至第一映射组;
相应的,根据所述目标消息中的至少一个消息参数,确定所述目标消息对应的目标频率限制器,包括:
根据所述目标消息中的第一消息参数和所述第一映射组,查询所述第一消息参数对应的目标频率限制器。
2.根据权利要求1所述的方法,其特征在于,所述消息参数包括:消息名称和/或用户标识。
3.根据权利要求1或2所述的方法,其特征在于,根据所述目标消息中的至少一个消息参数,确定所述目标消息对应的目标频率限制器,包括:
获取第二映射组,其中所述第二映射组用于存储第二消息参数与二维节点的映射关系;
若所述第二映射组中不存在所述目标消息中的第二消息参数对应的目标二维节点,则创建所述目标二维节点,并更新所述第二映射组;
若所述第二映射组中存在所述目标消息中的第二消息参数对应的目标二维节点,则根据所述目标消息中的第三消息参数,于所述目标二维节点中确定所述目标消息对应的目标频率限制器。
4.根据权利要求3所述的方法,其特征在于,根据所述目标消息中的第三消息参数,于所述目标二维节点中确定所述目标消息对应的目标频率限制器,包括:
获取所述目标二维节点中的第三映射组,其中所述第三映射组用于存储所述目标二维节点中的第三消息参数与频率限制器之间的映射关系;
若所述第三映射组中不存在所述第三消息参数对应的目标频率限制器,则根据预先获取的二维配置文件中的配置信息,于所述目标二维节点中创建并初始化所述目标频率限制器,并更新所述第三映射组;
若所述第三映射组中存在所述第三消息参数对应的目标频率限制器,则确定所述目标频率限制器。
5.根据权利要求3所述的方法,其特征在于,在根据所述目标消息中的第三消息参数,于所述目标二维节点中确定所述目标消息对应的目标频率限制器之后,还包括:
根据所述目标二维节点中的目标链表指针,确定目标链表节点;
将所述目标链表节点移动到链表预设端,其中所述链表预设端为队头或队尾。
6.根据权利要求5所述的方法,其特征在于,在创建所述目标二维节点之前,还包括:
若检测到链表节点总数超过二维配置文件中的预设总数,则从与所述链表预设端的相反端开始依次删除预设百分数的链表节点;
根据每个删除的链表节点中的第二消息参数和所述第二映射组,确定对应的待删除二维节点并进行删除;
相应的,在创建所述目标二维节点之后,还包括:
创建所述目标消息中的第二消息参数对应的目标链表节点,并将所述目标消息中的第二消息参数存储至所述目标链表节点中;
将指向所述目标链表节点的目标链表指针存储至所述目标二维节点中。
7.一种消息频率限制系统,其特征在于,包括:
目标消息接收模块,用于接收目标消息;
目标频率限制器确定模块,用于根据所述目标消息中的至少一个消息参数,确定所述目标消息对应的目标频率限制器,其中,至少一个频率限制器根据预先获取的配置文件中的配置信息创建;
目标令牌请求模块,用于向所述目标频率限制器请求获取所述目标消息的目标令牌;
目标消息检测模块,用于若获取所述目标令牌失败,则阻止所述目标消息通过,否则允许所述目标消息通过;
频率限制器创建模块,用于在根据目标消息中的至少一个消息参数,确定目标消息对应的目标频率限制器之前,根据预先获取的一维配置文件中的配置信息,创建并初始化配置信息中各第一消息参数对应的频率限制器,其中各频率限制器中令牌的填充频率与配置信息中对应的频率限制值相等;
第一映射组存储模块,用于将各第一消息参数与对应的频率限制器的映射关系存储至第一映射组;
所述目标频率限制器确定模块,包括:
目标频率限制器查询单元,用于根据目标消息中的第一消息参数和第一映射组,查询第一消息参数对应的目标频率限制器。
8.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的消息频率限制方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的消息频率限制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810225243.3A CN108399078B (zh) | 2018-03-19 | 2018-03-19 | 一种消息频率限制方法、系统、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810225243.3A CN108399078B (zh) | 2018-03-19 | 2018-03-19 | 一种消息频率限制方法、系统、服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108399078A CN108399078A (zh) | 2018-08-14 |
CN108399078B true CN108399078B (zh) | 2021-06-15 |
Family
ID=63093003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810225243.3A Active CN108399078B (zh) | 2018-03-19 | 2018-03-19 | 一种消息频率限制方法、系统、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108399078B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102714618A (zh) * | 2009-06-22 | 2012-10-03 | 思杰系统有限公司 | 用于平台速率限制的系统和方法 |
CN105024942A (zh) * | 2015-05-29 | 2015-11-04 | 桂林电子科技大学 | 一种动态流量监控方法 |
US9405597B1 (en) * | 2015-05-01 | 2016-08-02 | Salesforce.Com, Inc. | Centralized throttling service |
CN106385377A (zh) * | 2015-07-29 | 2017-02-08 | 腾讯科技(深圳)有限公司 | 一种信息处理方法和系统 |
CN107800644A (zh) * | 2017-11-08 | 2018-03-13 | 中国人民解放军国防科技大学 | 一种可动态配置的流水化令牌桶限速方法与装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7289447B2 (en) * | 2003-10-21 | 2007-10-30 | Comcast Cable Holdings, Llc | Method and packet-level device for traffic regulation in a data network |
CN102118269A (zh) * | 2011-02-28 | 2011-07-06 | 华为技术有限公司 | 一种令牌发放方法和系统 |
CN102843343B (zh) * | 2011-06-23 | 2016-04-20 | 腾讯科技(深圳)有限公司 | 一种在网络中控制垃圾信息的系统、频率控制设备和业务服务器 |
US9450881B2 (en) * | 2013-07-09 | 2016-09-20 | Intel Corporation | Method and system for traffic metering to limit a received packet rate |
CN105847447B (zh) * | 2016-06-01 | 2022-06-07 | 腾讯科技(深圳)有限公司 | 消息推送方法和装置 |
-
2018
- 2018-03-19 CN CN201810225243.3A patent/CN108399078B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102714618A (zh) * | 2009-06-22 | 2012-10-03 | 思杰系统有限公司 | 用于平台速率限制的系统和方法 |
US9405597B1 (en) * | 2015-05-01 | 2016-08-02 | Salesforce.Com, Inc. | Centralized throttling service |
CN105024942A (zh) * | 2015-05-29 | 2015-11-04 | 桂林电子科技大学 | 一种动态流量监控方法 |
CN106385377A (zh) * | 2015-07-29 | 2017-02-08 | 腾讯科技(深圳)有限公司 | 一种信息处理方法和系统 |
CN107800644A (zh) * | 2017-11-08 | 2018-03-13 | 中国人民解放军国防科技大学 | 一种可动态配置的流水化令牌桶限速方法与装置 |
Non-Patent Citations (1)
Title |
---|
命名数据网络中的一种主动拥塞控制策略;王文静等;《计算机工程与应用》;20170516;1-6 * |
Also Published As
Publication number | Publication date |
---|---|
CN108399078A (zh) | 2018-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582684B (zh) | 一种本地缓存数据的更新方法、装置、服务器及存储介质 | |
CN111200657B (zh) | 一种管理资源状态信息的方法和资源下载系统 | |
CN104219316A (zh) | 一种分布式系统中的调用请求处理方法及装置 | |
EP3709664A1 (en) | Stream pushing method, system and server | |
CN111338806B (zh) | 一种业务控制方法及装置 | |
CN110633168A (zh) | 一种分布式存储系统的数据备份方法和系统 | |
US10462209B2 (en) | Increasing an efficiency of a file transfer by using multiple communication resources | |
CN113434293A (zh) | 处理重复请求的方法和装置、存储介质及电子装置 | |
CN114158030B (zh) | 会话绑定方法、系统以及存储介质 | |
CN108769196B (zh) | 一种会话创建方法及装置 | |
CN111405007B (zh) | Tcp会话管理方法、装置、存储介质及电子设备 | |
CN108124021B (zh) | 网际协议ip地址获取、网站访问的方法、装置及系统 | |
CN108399078B (zh) | 一种消息频率限制方法、系统、服务器和存储介质 | |
CN112039993A (zh) | 一种长连接地址处理方法和装置 | |
CN107846476B (zh) | 一种信息同步方法、设备及存储介质 | |
CN107612831B (zh) | 一种访问源站的数据报文的传输方法及装置 | |
CN110933121A (zh) | 连接建立方法、通信处理方法、装置及通信设备 | |
CN112131263B (zh) | 软件包获取方法、系统、装置、电子设备和存储介质 | |
CN106209666B (zh) | 一种基于负载均衡器的链路复用方法及系统 | |
CN111865884B (zh) | 一种报文处理方法、装置及设备 | |
CN109688204B (zh) | 基于ndn网络的文件下载方法、节点、终端 | |
US20220006735A1 (en) | Network device and packet processing method using same | |
CN110838967A (zh) | 虚拟专用网络的连接方法、服务器、客户端和存储介质 | |
CN113422772B (zh) | 专网终端访问处理方法、装置及电子设备 | |
CN115242733B (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 |