基于自定义规则可实时自动调控的流量控制方法及装置与流程

文档序号:15751749发布日期:2018-10-26 17:53阅读:208来源:国知局
基于自定义规则可实时自动调控的流量控制方法及装置与流程

本发明涉及流量控制技术领域,更具体的,涉及一种基于自定义规则可实时自动调控的流量控制方法及装置。



背景技术:

随着网络技术的飞速发展,互联网金融类交易以惊人的速度增长。为了及时有效的处理这些不断增加的交易,需要充分高效的利用有限的资源,为此需要对高并发、大流量的交易进行合理有效的流量控制,以便保证交易有条不紊的被处理。同时,随着双十一等网络促销的兴起,会出现多个商户同时交易冲高或单个商户交易冲高的情况,因此还需要根据特定情况及时有效地调整策略,使得在不影响系统整体稳定性的前提下,尽可能满足每个商户的需求。

当前流量控制的方法几乎都是在网络层实现的,通过在网络层面分析访问请求来实现基于角色的流量控制,在用户和网站服务器之间部署网关,通过网关的用户验证和访问控制模块来实现流量控制,只能提供ip、端口、用户名、证书等网络层面的访问控制机制,无法解析应用层面具体的请求内容,更无法通过具体应用场景对流量控制进行自动调控,规则单一,无法自适应调节、扩展,在实际应用具有局限性。



技术实现要素:

有鉴于此,本发明提供了一种基于自定义规则可实时自动调控的流量控制方法及装置,在实际应用中制定流量控制规则,使流量控制更加智能、高效、灵活。

为了实现上述发明目的,本发明提供的具体技术方案如下:

一种基于自定义规则可实时自动调控的流量控制方法,包括:

当接收到交易报文时,对共享内存中的流量控制规则进行遍历;

判断共享内存中是否存在所述交易报文对应的目标流量控制规则;

若不存在,不进行流量控制,直接处理所述交易报文对应的交易;

若存在,获取共享内存中同时与所述交易报文和所述目标流量控制规则相对应的目标流量控制策略,并获取所述目标流量控制策略中的当前流量值、当前最大流量值和最大流量阈值,所述最大流量阈值为基准流量阈值和应急流量阈值的和值;

判断所述当前流量值加1后的值是否大于所述当前最大流量值;

若不大于所述当前最大流量值,将所述当前流量值加1,并处理所述交易报文对应的交易;

若大于所述当前最大流量值,判断所述当前流量值加1后的值是否大于所述最大流量阈值;

若大于所述最大流量阈值,提示当前流量满,所述交易报文对应的交易处于等待状态;

若不大于所述最大流量阈值,将所述当前流量值加1,按预设规则更新所述当前最大流量值,并处理所述交易报文对应的交易。

可选的,所述判断共享内存中是否存在所述交易报文对应的目标流量控制规则,包括:

获取当前流量控制规则的标签,所述当前流量控制规则为当前正在遍历的流量控制规则;

判断所述交易报文中是否存在所述标签;

若不存在所述标签,判断所述当前流量控制规则是否为共享内存中的最后一条流量控制规则;

若是最后一条流量控制规则,结束对共享内存中的流量控制规则的遍历,此时若未检测到所述交易报文对应的流量控制规则时,判定共享内存中不存在所述交易报文对应的目标流量控制规则;

若不是最后一条流量控制规则,将共享内存中所述当前流量控制规则的下一流量控制规则作为新的当前流量控制规则,并返回执行所述获取当前流量控制规则的标签;

若存在所述标签,判定所述当前流量控制规则为所述交易报文对应的目标流量控制规则,并返回执行所述判断所述当前流量控制规则是否为共享内存中的最后一条流量控制规则。

可选的,所述获取共享内存中同时与所述交易报文和所述目标流量控制规则相对应的目标流量控制策略,包括:

获取所述交易报文对应的目标流量控制规则中的标签和所述交易报文中相应的标签值;

对共享内存中的流量控制策略进行遍历,获取同时包括有所述交易报文对应的目标流量控制规则中的标签和所述交易报文中相应的标签值的目标流量控制策略。

可选的,共享内存中存在多条所述目标流量控制策略时,所述方法还包括:

获取所有所述目标流量控制策略中的当前流量值、当前最大流量值和最大流量阈值,最大流量阈值为基准流量阈值和应急流量阈值的和值;

判断每条所述目标流量控制策略中是否存在当前流量值加1后的值大于相应的最大流量阈值的目标流量控制策略;

若存在,提示当前流量满,所述交易报文对应的交易处于等待状态;

若不存在,对每条所述目标流量控制策略进行遍历,并获取当前目标流量控制策略,所述当前目标流量控制策略为当前正在遍历的目标流量控制策略;

判断所述当前目标流量控制策略中的当前流量值加1后的值是否大于当前最大流量值;

若不大于当前最大流量值,将所述当前目标流量控制策略中的当前流量值加1,并判断所述当前目标流量控制策略是否为所有所述目标流量控制策略中的最后一条流量控制策略;

若是最后一条流量控制策略,处理所述交易报文对应的交易;

若不是最后一条流量控制策略,将所有所述目标流量控制策略中所述当前目标流量控制策略的下一条目标流量控制策略确定为新的当前目标流量控制策略,并返回执行所述判断所述当前目标流量控制策略中的当前流量值加1后的值是否大于当前最大流量值;

若大于当前最大流量值,将所述当前目标流量控制策略中的当前流量值加1,按预设规则更新所述当前目标流量控制策略中的当前最大流量值,并返回执行所述判断所述当前目标流量控制策略是否为所有所述目标流量控制策略中的最后一条目标流量控制策略。

可选的,所述方法还包括:

对共享内存中每条流量控制策略对应的交易对象的流量进行实时监测;

对于每条流量控制策略,当监测到在预设时间段内交易对象的流量均小于流量控制策略中的基准流量阈值时,将基准流量阈值作为流量控制策略中的当前最大流量值。

可选的,基于分布式内存对象缓存系统中的共享内存存储、更新、添加、删除和编辑流量控制规则和流量控制策略。

一种基于自定义规则可实时自动调控的流量控制装置,包括:

遍历单元,用于当接收到交易报文时,对共享内存中的流量控制规则进行遍历;

第一判断单元,用于判断共享内存中是否存在所述交易报文对应的目标流量控制规则;

若不存在,触发交易处理单元,用于不进行流量控制,直接处理所述交易报文对应的交易;

若存在,触发获取单元,用于获取共享内存中同时与所述交易报文和所述目标流量控制规则相对应的目标流量控制策略,并获取所述目标流量控制策略中的当前流量值、当前最大流量值和最大流量阈值,所述最大流量阈值为基准流量阈值和应急流量阈值的和值;

第二判断单元,用于判断所述当前流量值加1后的值是否大于所述当前最大流量值;

若不大于所述当前最大流量值,触发第一规则更新单元,用于将所述当前流量值加1,并处理所述交易报文对应的交易;

若大于所述当前最大流量值,触发第三判断单元,用于判断所述当前流量值加1后的值是否大于所述最大流量阈值;

若大于所述最大流量阈值,触发提示单元,用于提示当前流量满,所述交易报文对应的交易处于等待状态;

若不大于所述最大流量阈值,触发第二规则更新单元,用于将所述当前流量值加1,按预设规则更新所述当前最大流量值,并处理所述交易报文对应的交易。

可选的,

所述第一判断单元,具体用于获取当前流量控制规则的标签,所述当前流量控制规则为当前正在遍历的流量控制规则;判断所述交易报文中是否存在所述标签;若不存在所述标签,判断所述当前流量控制规则是否为共享内存中的最后一条流量控制规则;若是最后一条流量控制规则,结束对共享内存中的流量控制规则的遍历,此时若未检测到所述交易报文对应的流量控制规则时,判定共享内存中不存在所述交易报文对应的目标流量控制规则;若不是最后一条流量控制规则,将共享内存中所述当前流量控制规则的下一流量控制规则作为新的当前流量控制规则,并返回执行所述获取当前流量控制规则的标签;若存在所述标签,判定所述当前流量控制规则为所述交易报文对应的目标流量控制规则,并返回执行所述判断所述当前流量控制规则是否为共享内存中的最后一条流量控制规则。

可选的,所述获取单元,具体用于获取所述交易报文对应的目标流量控制规则中的标签和所述交易报文中相应的标签值;对共享内存中的流量控制策略进行遍历,获取同时包括有所述交易报文对应的目标流量控制规则中的标签和所述交易报文中相应的标签值的目标流量控制策略。

可选的,共享内存中存在多条所述目标流量控制策略时,所述装置还包括:

流量控制单元,用于获取所有所述目标流量控制策略中的当前流量值、当前最大流量值和最大流量阈值,最大流量阈值为基准流量阈值和应急流量阈值的和值;判断每条所述目标流量控制策略中是否存在当前流量值加1后的值大于相应的最大流量阈值的目标流量控制策略;若存在,提示当前流量满,所述交易报文对应的交易处于等待状态;若不存在,对每条所述目标流量控制策略进行遍历,并获取当前目标流量控制策略,所述当前目标流量控制策略为当前正在遍历的目标流量控制策略;判断所述当前目标流量控制策略中的当前流量值加1后的值是否大于当前最大流量值;若不大于当前最大流量值,将所述当前目标流量控制策略中的当前流量值加1,并判断所述当前目标流量控制策略是否为所有所述目标流量控制策略中的最后一条流量控制策略;若是最后一条流量控制策略,处理所述交易报文对应的交易;若不是最后一条流量控制策略,将所有所述目标流量控制策略中所述当前目标流量控制策略的下一条目标流量控制策略确定为新的当前目标流量控制策略,并返回执行所述判断所述当前目标流量控制策略中的当前流量值加1后的值是否大于当前最大流量值;若大于当前最大流量值,将所述当前目标流量控制策略中的当前流量值加1,按预设规则更新所述当前目标流量控制策略中的当前最大流量值,并返回执行所述判断所述当前目标流量控制策略是否为所有所述目标流量控制策略中的最后一条目标流量控制策略。

可选的,所述装置还包括:

监测单元,用于对共享内存中每条流量控制策略对应的交易对象的流量进行实时监测;对于每条流量控制策略,当监测到在预设时间段内交易对象的流量均小于流量控制策略中的基准流量阈值时,将基准流量阈值作为流量控制策略中的当前最大流量值。

可选的,所述装置基于分布式内存对象缓存系统中的共享内存存储、更新、添加、删除和编辑流量控制规则和流量控制策略。

相对于现有技术,本发明的有益效果如下:

本发明公开的基于自定义规则可实时自动调控的流量控制方法,共享内存中存储所有流量控制规则和流量控制策略,实现在实际应用场景中的流量控制。当接收到交易报文时,当共享内存中不存在交易报文对应的目标流量控制规则时,不进行流量控制,直接对交易进行处理,当共享内存中存在交易报文对应的目标流量控制规则和目标流量控制策略时,按照该目标流量控制策略对交易进行流量控制。流量控制策略包括当前流量值、当前最大流量值和最大流量阈值,最大流量阈值为基准流量阈值和应急流量阈值的和值,当当前流量值加1的和值大于当前流量值且小于最大流量阈值时,调整当前最大流量值,以实现对流量的实时自动化调控。

附图说明

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

图1为本发明实施例公开的一种基于自定义规则可实时自动调控的流量控制方法流程图;

图2为本发明实施例公开的一种判断共享内存中是否存在交易报文对应的目标流量控制规则的方法流程图;

图3为本发明实施例公开的另一种基于自定义规则可实时自动调控的流量控制方法流程图;

图4为本发明实施例公开的一种基于自定义规则可实时自动调控的流量控制装置结构示意图。

具体实施方式

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

请参阅图1,本实施例公开了一种基于自定义规则可实时自动调控的流量控制方法,应用于客户端与服务器之间的控制装置,或应用于服务器中的控制装置,所述方法具体包括以下步骤:

s101:当接收到交易报文时,对共享内存中的流量控制规则进行遍历;

交易报文为交易发生时由客户端发送至服务器的报文,交易报文中包括交易码、商户号、交易渠道等信息。

共享内存中存储了所有流量控制规则,流量控制规则是根据实际应用场景制定的,如根据商户号进行流量控制、根据交易渠道进行流量控制、根据商户地区进行流量控制等。

s102:判断共享内存中是否存在所述交易报文对应的目标流量控制规则;

目标流量控制规则是当前交易报文对应的流量控制规则,以对共享内存中的其他流量控制规则进行区分。

若不存在,执行s103:不进行流量控制,直接处理所述交易报文对应的交易;

可以理解的是,当共享内存中不存在交易报文对应的目标流量控制规则时,说明该交易报文对应的交易不需要进行流量控制,可以直接进行处理。

具体为将所述交易发送至交易处理队列,交易处理队列依据一定顺序对交易进行处理。

若存在,s104:获取共享内存中同时与所述交易报文和所述目标流量控制规则相对应的目标流量控制策略,并获取所述目标流量控制策略中的当前流量值、当前最大流量值和最大流量阈值;

流量控制策略是流量控制在不同流量控制规则下的控制细则,即,流量控制规则表示根据什么标签(如,商户号、交易渠道等)进行流量控制,流量控制策略则针对流量控制规则具体限定了对某一特定标签值的交易进行具体的流量控制。例如:流量控制规则中标签为交易渠道,流量控制策略中对个人网银交易渠道的交易进行具体的流量控制。

所述最大流量阈值为基准流量阈值和应急流量阈值的和值。

以根据商户号进行流量控制为例,假设有n个商户接入系统,为每个商户设定一个基准流量阈值,记为ji(i从1~n),同时为每个商户设定一个流量控制参数,记为ci(i从1~n)。系统的总流量阈值记为z,总流量阈值z包含两部分:n个商户基准流量阈值之和j、应急总流量y,即z=j+y,其中,对于每个商户ji而言,可根据设定的流量控制参数ci从应急总流量y中分得部分应急流量阈值yi,yi的计算方法为此yi值是该商户可分的的最大应急流量。

对商户ji而言,若交易报文是由商户ji发送的,交易报文对应的流量控制规则中包括商户ji的当前流量值、当前最大流量值和最大流量阈值,需要说明的是,当前最大流量值最小为基准流量阈值,当前最大流量值最大流量阈值。

s105:判断所述当前流量值加1后的值是否大于所述当前最大流量值;

若不大于所述当前最大流量值,执行s106:将所述当前流量值加1,并处理所述交易报文对应的交易;

具体为,将交易报文对应的流量控制规则中的当前流量值加1,实现对流量控制规则的更新。

若大于所述当前最大流量值,执行s107:判断所述当前流量值加1后的值是否大于所述最大流量阈值;

若大于所述最大流量阈值,执行s109:提示当前流量满,所述交易报文对应的交易处于等待状态;

当收到目标流量控制策略控制的其他交易完成释放流量后,目标流量控制策略中当前流量值小于最大流量阈值时,根据目标流量控制策略对该交易进行处理。

可以理解的是,当处理交易时,交易占用流量,交易完成时,释放交易占用的流量。流量控制策略中的当前流量值表示当前受该流量控制策略控制的所有交易占用流量的和值。

当前流量值加1后的值大于最大流量阈值,说明若处理该交易,流量就会超出最大流量控制,此时暂时不处理该交易,提示当前流量满,所述交易报文对应的交易处于等待状态。

若该交易的等待时间大于预先设定的等待时间阈值时,则提示交易超时异常。

若不大于所述最大流量阈值,执行s108:将所述当前流量值加1,按预设规则更新所述当前最大流量值,并处理所述交易报文对应的交易。

还需要说明的是,所述方法还包括:

对共享内存中每条流量控制策略对应的交易对象的流量进行实时监测;

对于每条流量控制策略,当监测到在预设时间段内交易对象的流量均小于流量控制策略中的基准流量阈值时,将基准流量阈值作为流量控制策略中的当前最大流量值。

具体的,流量控制策略对应的交易对象为具有该流量控制策略的标签值的交易对象,例如,流量控制策略中标签值为商户号a,则该流量控制策略对应的交易对象为商户a的所有交易。

还以上述根据商户号进行流量控制为例,运行中如果发现某个商户(如商户i)实时交易流量达到其基准流量阈值ji,则系统自动渐进式增加该商户流量阈值,直至阈值达到ji+yi,同时持续检测该商户i的交易流量,如果在一段时间内其交易流量都在基准流量阈值ji以下,则系统自动将其流量阈值变为基准流量阈值ji。

可以理解的是,当前最大流量值可以为基准流量阈值,也可以为已在基准流量阈值的基础上渐进式增加流量后的流量值。

以某电子商务系统为例,假如系统的总量阈值z为14000,单位为万(下同)。共有4个商户a、b、c、d,他们的基准流量阈值分别为:4000、2000、1000、1000,则根据上述公式z=j+y,j=4000+2000+1000+1000,为8000,则应急流量y为6000。根据以往业务经验,4个商户的流量控制参数分别设置为为4、2、1、1,则商户a最大可增加的阈值即ya=3000,那么此商户最大阈值7000(4000+3000)。在系统运行过程中,如果检测到商户a的实时流量达到了其基准流量阈值4000,则系统自动将其阈值渐进式增加,直至达到了7000。如果系统检测到商户a的实时流量在一段时间内一直维持在4000以下,则系统自动将a的流量阈值恢复至基准阈值4000。同理,商户b、c、d的最大可增加流量阈值分别为:3500、1750、1750。

在本实施例中,由于预先为商户设置了流量控制参数,这一参数反应了各商户流量冲高的可能性,即使在某段时间内(例如双十一)商户a、c、d同时促销,也能在系统承受范围内尽可能满足各商户需求,不会出现某些大商户流量吃紧,而某些小商户流量仍有空余的现象。另一方面,如果在某个特定时期,已知某商户会有一个交易洪峰,而其他商户基本保持不变(例如商户b是铁道部系统,在春节抢票期间会出现交易洪峰,且预计会超过最大阈值5500),则可临时调高流量控制参数,使其在不影响其他系统的前提下,可应对交易洪峰。

还需要说明的是,基于分布式内存对象缓存系统memchache中的共享内存存储、更新、添加、删除和编辑流量控制规则和流量控制策略。使用memchache,不仅使查找、更新共享内存的流量控制规则和流量控制策略具有很高的命中率,大大提高了查找速度,并且能够动态的增加和去除服务器及其节点,并将这些节点上的规则策略迅速部署到其他可用节点,从而保证了共享内存中数据的正确性和完整性。

请参阅图2,所述判断共享内存中是否存在所述交易报文对应的目标流量控制规则,包括以下步骤:

s201:获取当前流量控制规则的标签,所述当前流量控制规则为当前正在遍历的流量控制规则;

一个流量控制规则代表了一个流量限制条件,确切的来说是确定交易报文中的标签,因此流量控制规则是流量控制策略的根据。比如:rulekey=”transcode”,就说明是以上送报文中的”<ebank>/<transcode>”为条件进行流量控制。

策略代表了具体流量控制在不同限制条件下的控制细则,是规则延伸出的具体控制策略,是流量控制的单元。比如:rulekey=”transcode”,proxykey=”0001”,maxflow=”10000”是一种策略,代表了并行的transcode(交易码)为0001的交易不能超过10000笔。其中,“transcode”交易码为流量控制的标签。

以某行电子商务系统为例,在处理交易时,每一笔交易都可用一个交易报文来表示,例如:

{"message":{"version":"v3.0.3","format":"json","merchant":{"ecmerchanttype":"ebus"},"common":{"channel":"perbank"},"trxrequest":{"trxtype":"abcregcardpay","requestid":"14007529552531425794","merchantno":"103881234560010","pwdfield":"123456","acctno":"6228300010053046","acctype":"403","accname":"xx","accprocod":"11","accopenbranch":"112233","cardduedate":"2020","pid":"123456","certificateno":"142703","certificatetype":"i","pmmno":"ep001","custsinglequota":"1000","custdayquota":"5000","mediatype":"2","signature":"12345"}}}

其中,属性channel表示该笔交易的渠道,它可赋值为perbank(个人网银),corbank(企业网银)等,属性merchantno表示该笔交易的商户号,每个接入电子商务系统的商户都有一个固定的商务号。假如某一段时间内,商户a(商户号为103881234560010)要做促销活动,它的高峰交易量大幅度增加,此时电子商务系统的处理能力是不变的,如果不对商户a做流量控制,势必会影响到其他商户的用户体验。

针对需要做促销的商户a,我们制定了规则rulekey="merchantno",即:使用商户号来作为流量控制规则的标签,每个商户的商户号是固定,因此即使访问这个商户的用户是随机的,流量控制规则和策略都无需改变。针对这一规则,可制定策略rulekey="merchantno",proxykey="103881234560010",maxflow=”12000000”,该策略表示商户号为103881234560010(也就是商户a)的并发交易量不能超过1200万笔(考虑到商户促销的具体情况和实际应用的承受的能力,制定了这个最大交易笔数)。

s202:判断所述交易报文中是否存在所述标签;

若不存在所述标签,执行s203:判断所述当前流量控制规则是否为共享内存中的最后一条流量控制规则;

若是最后一条流量控制规则,执行s204:结束对共享内存中的流量控制规则的遍历,此时若未检测到所述交易报文对应的流量控制规则时,判定共享内存中不存在所述交易报文对应的目标流量控制规则;

若不是最后一条流量控制规则,执行s205:将共享内存中所述当前流量控制规则的下一流量控制规则作为新的当前流量控制规则,并返回执行s201;

若存在所述标签,执行s206:判定所述当前流量控制规则为所述交易报文对应的目标流量控制规则,并返回执行s203。

在此基础上,上述实施例中所述获取共享内存中同时与所述交易报文和所述目标流量控制规则相对应的目标流量控制策略,包括:

获取所述交易报文对应的目标流量控制规则中的标签和所述交易报文中相应的标签值;

对共享内存中的流量控制策略进行遍历,获取同时包括有所述交易报文对应的目标流量控制规则中的标签和所述交易报文中相应的标签值的目标流量控制策略。

需要说明的是,本发明可以从多方面对流量进行控制,以对多个商户的流量进行控制为例,可以通过对交易报文中的交易码、商户号等标签,在共享内存中设置关于支付渠道、商户号、商户区域等维度的流量控制规则,实现多种应用场景下的流量控制。

在此基础上,本实施例公开了另一种基于自定义规则可实时自动调控的流量控制方法,共享内存中存在多条目标流量控制策略时,请参阅图3,所述方法包括以下步骤:

s301:当接收到交易报文时,对共享内存中的流量控制规则进行遍历;

s302:判断共享内存中是否存在所述交易报文对应的目标流量控制规则;

若不存在,执行s303:不进行流量控制,直接处理所述交易报文对应的交易;

若存在,执行s304:获取所有目标流量控制策略中的当前流量值、当前最大流量值和最大流量阈值;

最大流量阈值为基准流量阈值和应急流量阈值的和值。

s305:判断每条目标流量控制策略中是否存在当前流量值加1后的值大于相应的最大流量阈值的目标流量控制策略;

即,交易报文对应的所有目标流量控制策略中,若存在当前流量值加1后的值大于相应的最大流量阈值的目标流量控制策略时,说明针对该笔交易若处理就会超出流量控制,此时提示交易异常。

若存在,执行s306:提示当前流量满,所述交易报文对应的交易处于等待状态;

若不存在,执行s307:对每条目标流量控制策略进行遍历,并获取当前目标流量控制策略;

所述当前目标流量控制策略为当前正在遍历的目标流量控制策略。

s308:判断当前目标流量控制策略中的当前流量值加1后的值是否大于当前最大流量值;

若不大于当前最大流量值,执行s309:将当前目标流量控制策略中的当前流量值加1;

s310:判断当前目标流量控制策略是否为所有目标流量控制策略中的最后一条目标流量控制策略;

若是最后一条目标流量控制规则,执行s311:处理所述交易报文对应的交易;

若不是最后一条目标流量控制规则,执行s312:将所有目标流量控制策略中所述当前目标流量控制策略的下一条目标流量控制策略确定为新的当前目标流量控制策略,并返回执行s308;

若大于当前最大流量值,执行s313:将当前目标流量控制策略中的当前流量值加1,按预设规则更新所述当前目标流量控制策略中的当前最大流量值,并返回执行s310。

以交易报文对应2条流量控制规则为例,其中,流量控制规则a是根据商户号进行流量控制,流量控制规则b是根据交易渠道进行流量控制。若流量控制规则a对应的流量控制策略a中当前流量值加1的值小于当前最大流量值时,对流量控制策略a中当前流量值进行更新;若流量控制规则b对应的流量控制策略b中当前流量值加1的值大于当前最大流量值且小于最大流量阈值时,对流量控制策略b中的当前流量值和当前最大流量值进行更新。

基于上述实施例公开的一种基于自定义规则可实时自动调控的流量控制方法,请参阅图4,本实施例对应公开了一种基于自定义规则可实时自动调控的流量控制装置,包括:

遍历单元401,用于当接收到交易报文时,对共享内存中的流量控制规则进行遍历;

第一判断单元402,用于判断共享内存中是否存在所述交易报文对应的流量控制规则;

若不存在,触发交易处理单元403,用于不进行流量控制,直接处理所述交易报文对应的交易;

若存在,触发获取单元404,用于获取共享内存中同时与所述交易报文和所述目标流量控制规则相对应的目标流量控制策略,并获取所述目标流量控制策略中的当前流量值、当前最大流量值和最大流量阈值,所述最大流量阈值为基准流量阈值和应急流量阈值的和值;

第二判断单元405,用于判断所述当前流量值加1后的值是否大于所述当前最大流量值;

若不大于所述当前最大流量值,触发第一规则更新单元406,用于将所述当前流量值加1,并处理所述交易报文对应的交易;

若大于所述当前最大流量值,触发第三判断单元407,用于判断所述当前流量值加1后的值是否大于所述最大流量阈值;

若大于所述最大流量阈值,触发提示单元408,用于提示当前流量满,所述交易报文对应的交易处于等待状态;

若不大于所述最大流量阈值,触发第二规则更新单元409,用于将所述当前流量值加1,按预设规则更新所述当前最大流量值,并处理所述交易报文对应的交易。

可选的,所述第一判断单元402,具体用于获取当前流量控制规则的标签,所述当前流量控制规则为当前正在遍历的流量控制规则;判断所述交易报文中是否存在所述标签;若不存在所述标签,判断所述当前流量控制规则是否为共享内存中的最后一条流量控制规则;若是最后一条流量控制规则,结束对共享内存中的流量控制规则的遍历,此时若未检测到所述交易报文对应的流量控制规则时,判定共享内存中不存在所述交易报文对应的目标流量控制规则;若不是最后一条流量控制规则,将共享内存中所述当前流量控制规则的下一流量控制规则作为新的当前流量控制规则,并返回执行所述获取当前流量控制规则的标签;若存在所述标签,判定所述当前流量控制规则为所述交易报文对应的目标流量控制规则,并返回执行所述判断所述当前流量控制规则是否为共享内存中的最后一条流量控制规则。

可选的,所述获取单元404,具体用于获取所述交易报文对应的目标流量控制规则中的标签和所述交易报文中相应的标签值;对共享内存中的流量控制策略进行遍历,获取同时包括有所述交易报文对应的目标流量控制规则中的标签和所述交易报文中相应的标签值的目标流量控制策略。

可选的,共享内存中存在多条所述目标流量控制策略时,所述装置还包括:

流量控制单元,用于获取所有所述目标流量控制策略中的当前流量值、当前最大流量值和最大流量阈值,最大流量阈值为基准流量阈值和应急流量阈值的和值;判断每条所述目标流量控制策略中是否存在当前流量值加1后的值大于相应的最大流量阈值的目标流量控制策略;若存在,提示当前流量满,所述交易报文对应的交易处于等待状态;若不存在,对每条所述目标流量控制策略进行遍历,并获取当前目标流量控制策略,所述当前目标流量控制策略为当前正在遍历的目标流量控制策略;判断所述当前目标流量控制策略中的当前流量值加1后的值是否大于当前最大流量值;若不大于当前最大流量值,将所述当前目标流量控制策略中的当前流量值加1,并判断所述当前目标流量控制策略是否为所有所述目标流量控制策略中的最后一条流量控制策略;若是最后一条流量控制策略,处理所述交易报文对应的交易;若不是最后一条流量控制策略,将所有所述目标流量控制策略中所述当前目标流量控制策略的下一条目标流量控制策略确定为新的当前目标流量控制策略,并返回执行所述判断所述当前目标流量控制策略中的当前流量值加1后的值是否大于当前最大流量值;若大于当前最大流量值,将所述当前目标流量控制策略中的当前流量值加1,按预设规则更新所述当前目标流量控制策略中的当前最大流量值,并返回执行所述判断所述当前目标流量控制策略是否为所有所述目标流量控制策略中的最后一条目标流量控制策略。

可选的,所述装置基于分布式内存对象缓存系统中的共享内存存储、更新、添加、删除和编辑流量控制规则和流量控制策略。

本实施例公开的基于自定义规则可实时自动调控的流量控制装置,共享内存中存储所有流量控制规则和流量控制策略,实现在实际应用场景中的流量控制。当接收到交易报文时,当共享内存中不存在交易报文对应的目标流量控制规则时,不进行流量控制,直接对交易进行处理,当共享内存中存在交易报文对应的目标流量控制规则和目标流量控制策略时,按照该目标流量控制策略对交易进行流量控制。流量控制策略包括当前流量值、当前最大流量值和最大流量阈值,最大流量阈值为基准流量阈值和应急流量阈值的和值,当当前流量值加1的和值大于当前流量值且小于最大流量阈值时,调整当前最大流量值,以实现对流量的实时自动化调控。

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

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