公开/公告号CN105337931A
专利类型发明专利
公开/公告日2016-02-17
原文格式PDF
申请/专利权人 北京新媒传信科技有限公司;
申请/专利号CN201410306383.5
发明设计人 秦振海;
申请日2014-06-30
分类号H04L29/06(20060101);H04L29/08(20060101);
代理机构11323 北京市隆安律师事务所;
代理人权鲜枝
地址 100089 北京市海淀区万泉庄路28号万柳新贵大厦A座6层602室
入库时间 2023-12-18 14:16:33
法律状态公告日
法律状态信息
法律状态
2019-08-20
授权
授权
2016-03-16
实质审查的生效 IPC(主分类):H04L29/06 申请日:20140630
实质审查的生效
2016-02-17
公开
公开
技术领域
本发明涉及互联网技术领域,特别涉及一种限额控制方法及分布式限额控制系统。
背景技术
随着互联网的普及,上网人群越来越多,这对互联网的可靠性、扩容性提出了很高的要求。分布式系统由于使用了并行处理技术,处理计算能力强,并将工作负载分散在多台机器上,单机故障只会使一台机器停机,因此具有很高的可靠性,而且分布式系统允许在需求增长时逐渐进行扩充,因其具有上述优点,而普遍应用于互联网站及其他应用系统中。
互联网站及许多应用系统中为安全性或体验合理性考虑,经常会对用户的行为进行控制。例如:天气预报网站为防止其他网站抓取自身天气源数据,会对来源ip做每分钟、每小时请求次数限制,一旦固定来源ip请求次数超过系统设置值,系统屏蔽此ip再次请求。再比如登录QQ,飞信等通讯即时软件后的新邮件到达提醒,如果不对每小时内接收邮件数量做限额控制,那么频繁的新邮件到达提醒将大大降低用户体检。基于以上考虑,需要对于分布式系统下用户限额进行控制。
现有的分布式系统下限额控制方法是,假如服务端要对客户端的请求做每分钟400次限额控制,那么现有技术一般将400次的限额控制次数均匀分到各个服务器上,即每台服务器的每分钟限额控制为100次。
在实现本发明的过程中,发明人发现现有技术的限额控制方法至少存在如下问题:
在客户端随机访问分布式系统中的任一服务器时,会导致某一服务器的接收请求次数大于其他服务器的接收请求次数,从而导致限额控制不精准的问题。
发明内容
本发明提供了一种限额控制方法及分布式限额控制系统,以解决现有技术中在客户端随机访问分布式系统中的任一服务器时存在限额控制不精准的问题。
为达到上述目的,本发明实施例采用如下技术方案:
一方面,本发明实施例提供一种限额控制方法,所述方法包括:
应用服务器接收客户端发送的业务服务请求,向限额控制服务器发送限额控制请求;
所述限额控制服务器根据所述限额控制请求判断所述业务服务请求是否为所述客户端的首次业务服务请求;
如果是首次业务服务请求,所述限额控制服务器返回未超过限额指示至所述应用服务器;
如果不是首次业务服务请求,所述限额控制服务器进一步判断所述业务服务请求是否在有效期限内,若所述业务服务请求不在有效期限内,则返回未超过限额指示至所述应用服务器;若所述业务服务请求在有效期限内,再进一步判断所述客户端的请求次数是否超过最大限额数,若未超过最大限额数,返回未超过限额指示至所述应用服务器,若超过最大限额数,返回超过限额指示至所述应用服务器;
当接收到未超过限额指示时,所述应用服务器根据所述业务服务请求进行业务处理,返回处理结果至所述客户端;当接收到超过限额指示时,所述应用服务器返回错误信息响应至所述客户端。
另一方面,本发明实施例提供一种分布式限额控制系统,包括限额控制服务器和至少两个应用服务器;
所述应用服务器,用于接收客户端发送的业务服务请求,向限额控制服务器发送限额控制请求;当接收到未超过限额指示时,根据所述业务服务请求进行业务处理,返回处理结果至所述客户端;当接收到超过限额指示时,返回错误信息响应至所述客户端;
所述限额控制服务器,用于根据所述限额控制请求判断所述业务服务请求是否为所述客户端的首次业务服务请求;如果是首次业务服务请求,返回未超过限额指示至所述应用服务器;如果不是首次业务服务请求,进一步判断所述业务服务请求是否在有效期限内,若所述业务服务请求不在有效期限内,则返回未超过限额指示至所述应用服务器;若所述业务服务请求在有效期限内,再进一步判断所述客户端的请求次数是否超过最大限额数,若未超过最大限额数,返回未超过限额指示至所述应用服务器,若超过最大限额数,返回超过限额指示至所述应用服务器。
可选地,所述限额控制服务器独立设置,或者所述限额控制服务器设置在任一应用服务器上。
本发明实施例的有益效果是:本发明提供的限额控制方法及分布式限额控制系统,当分布式系统中的任一应用服务器收到客户端的业务服务请求时,通过向限额控制服务器发送限额控制请求,由所述限额控制服务器统一判断所述客户端的当前请求次数是否已经超过最大限额,并向应用服务器返回超过限额数指示或者未超过限额数指示,应用服务器根据限额控制服务器返回的是否超过限额指示,对客户端的业务服务请求或进行业务处理并返回处理结果或返回错误信息响应至所述客户端,从而达到对客户端用户限额进行精准控制的目的。本发明实施例对均匀接收客户端请求与随机接收客户端请求的分布式系统都适用。
附图说明
图1为本发明实施例提供的一种限额控制方法流程图;
图2为本发明实施例提供的另一种限额控制方法流程图;
图3为本发明实施例进行限额控制过程中的主要限额数据示意图;
图4为本发明实施例提供的一种分布式限额控制系统结构图;
图5为本发明实施例提供的一种分布式限额控制系统下进行限额控制的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供一种限额控制方法,应用于分布式系统中,如图1所示,为本发明实施例提供的一种限额控制方法流程图,所述方法包括:
步骤S120,应用服务器接收客户端发送的业务服务请求,向限额控制服务器发送限额控制请求。
分布式系统中一般有多个应用服务器,客户端向任一应用服务器发送业务服务请求,其中任一应用服务器执行的流程都是一样的;该任一应用服务器接收客户端发送的业务服务请求后,根据所述业务服务请求生成限额控制请求。
步骤S121,限额控制服务器根据所述限额控制请求判断所述业务服务请求是否为所述客户端的首次业务服务请求。
步骤S122,如果是首次业务服务请求,则返回未超过限额指示至所述应用服务器。
步骤S123,如果不是首次业务服务请求,进一步判断所述业务服务请求是否在有效期限内。
步骤S124,若所述业务服务请求不在有效期限内,则返回未超过限额指示至所述应用服务器。
步骤S125,若所述业务服务请求在有效期限内,再进一步判断所述客户端的请求次数是否超过最大限额数。
步骤S126,若未超过最大限额数,返回未超过限额指示至所述应用服务器。
步骤S127,若超过最大限额数,返回超过限额指示至所述应用服务器。
步骤S128,所述应用服务器接收到未超过限额指示时,根据所述业务服务请求进行业务处理,返回处理结果至所述客户端。
步骤S129,所述应用服务器接收到超过限额指示时,返回错误信息响应至所述客户端。
再一种实施例中,客户端发送的业务服务请求中可以携带客户端的标识信息,下面就以业务服务请求中携带该客户端的标识信息为例具体介绍一下本发明提供的限额控制方法流程,参照附图2所示。
步骤S210,应用服务器接收客户端发送的业务服务请求,从所述业务服务请求中获取该客户端的标识信息。
步骤S211,所述应用服务器根据该客户端的标识信息生成限额控制请求,向限额控制服务器发送该限额控制请求。
其中,所述限额控制请求中携带该客户端的标识信息。
步骤S212,所述限额控制服务器从所述限额控制请求中获取该客户端的标识信息,判断自身存储的客户端标识中是否存在所述客户端的标识信息,如果不存在,执行步骤S213;如果存在,执行步骤S214。
本实施例中,如果限额控制服务器自身存储的客户端标识中不存在所述客户端的标识信息,则判断是首次业务服务请求;
如果限额控制服务器自身存储的客户端标识中存在所述客户端的标识信息,则判断不是首次业务服务请求。
步骤S213,限额控制服务器在客户端标识中保存所述客户端的标识信息,将请求次数设置为1,将当前时间设置为第一次请求时间,返回未超过限额指示至所述应用服务器。
步骤S214,所述限额控制服务器进一步判断所述业务服务请求是否在有效期限内,若不在有效期限内,执行步骤S215;若在有限期限内,执行步骤S216。
本实施例中,所述限额控制服务器判断所述业务服务请求是否在有限期限内包括:
限额控制服务器判断当前时间减去预存的第一次请求时间得到的时间差值是否小于或等于预设的时间长度;
如果所述时间差值小于或等于所述预设的时间长度,则认为所述业务服务请求在有效期限内;如果所述时间差值大于所述预设的时间长度,则认为所述业务服务请求不在有效期限内。
此外,本实施例中并不局限于采用上述方法判断所述业务服务请求是否在有效期限内,也可以判断所述业务服务请求对应的接收时间是否在预设时间范围内等,在此不再赘述。
步骤S215,所述限额控制服务器将请求次数置为1,将所述当前时间设置为第一次请求时间,并返回未超过限额指示至所述应用服务器。
步骤S216,所述限额控制服务器再进一步判断所述客户端的请求次数是否超过最大限额数,若未超过,执行步骤S217;若超过,执行步骤S218。
本实施例中,所述限额控制服务器将请求次数加1后得到所述客户端的当前请求次数;
判断所述客户端的当前请求次数是否小于或等于最大限额数,若小于或等于最大限额数,执行步骤S217;若所述客户端的请求次数大于最大限额数,执行步骤S218。
步骤S217,所述限额控制服务器返回未超过限额指示至所述应用服务器。
步骤S218,所述限额控制服务器返回超过限额指示至所述应用服务器。
步骤S219,所述应用服务器接收到未超过限额指示时,根据所述业务服务请求进行业务处理,返回处理结果至所述客户端。
步骤S220,所述应用服务器接收到超过限额指示时,返回错误信息响应至所述客户端。
需要说明的是,本发明实施例在进行限额控制过程涉及的主要限额数据包括客户端标识、时间长度、最大限额数,其中,
所述客户端标识不局限于ip地址与用户Userid,可以根据业务进行扩充,包括手机号、用户名,所有能标识客户端的方式均在本发明保护范围之内。
所述时间差值,不局限于以分钟Min、小时Hour、天Day为单位的时间长度,也可以进一步划分,可以增加秒Second、周week、月Month、年Year为单位的时间长度,所有标识时间长度的方式都在本发明保护范围之内。
所述最大限度数例如可以是100、500、1000、2000等,这根据分布式系统中安全性或者体验和理性考虑确定。
将上述客户端标识、时间长度和最大限额数进行相应组合,组合方式示例如图3所示。可以理解,上述主要限额数据可以任意扩充,例如可以增加Enable,用于标识此行限额是否起作用等。
基于与上述方法实施例相同的发明构思,如图4所示,本发明实施例提供的一种分布式限额控制系统400,包括限额控制服务器410和至少两个应用服务器420;其中,
所述应用服务器420,用于接收客户端发送的业务服务请求,向限额控制服务器410发送限额控制请求;当接收到未超过限额指示时,根据所述业务服务请求进行业务处理,返回处理结果至所述客户端;当接收到超过限额指示时,返回错误信息响应至所述客户端;
所述限额控制服务器410,用于根据所述限额控制请求判断所述业务服务请求是否为所述客户端的首次业务服务请求;如果是首次业务服务请求,返回未超过限额指示至所述应用服务器420;如果不是首次业务服务请求,进一步判断所述业务服务请求是否在有效期限内,若所述业务服务请求不在有效期限内,则返回未超过限额指示至所述应用服务器420;若所述业务服务请求在有效期限内,再进一步判断所述客户端的请求次数是否超过最大限额数,若未超过最大限额数,返回未超过限额指示至所述应用服务器220,若超过最大限额数,返回超过限额指示至所述应用服务器420。
在本发明的一个实施例中,上述的应用服务器420包括:
第一处理模块,用于接收客户端发送的业务服务请求,从所述业务服务请求中获取所述客户端的标识信息,向限额控制服务器410发送限额控制请求,其中,所述限额控制请求中携带所述客户端的标识信息。
相应的,在本发明的另一个实施方式中,本发明实施例的限额控制服务器410包括:
获取模块,用于从所述限额控制请求中获取所述客户端的标识信息。
第一判断模块,用于判断自身存储的客户端标识中是否存在所述客户端的标识信息;如果不存在则判断是首次业务服务请求,如果存在则判断不是首次业务服务请求。
再一实施方式中,所述限额控制服务器410进一步包括:
保存设置模块,用于如果自身存储的客户端标识中不存在所述客户端的标识信息,在客户端标识中保存所述客户端的标识信息,将请求次数设置为1,将当前时间设置为第一次请求时间,返回未超过限额指示至所述应用服务器。
优选的,再一实施方式中,所述限额控制服务器410还包括:
第二判断模块,用于判断当前时间减去预存的第一次请求时间得到的时间差值是否小于或等于预设的时间长度,若是,则判断所述业务服务请求在有效期限内,若否,则判断所述业务服务请求不在有效期限内。
进一步地,所述限额控制服务器还包括:
第二处理模块,用于若所述时间差值大于所述预设的时间长度,将请求次数置为1,将所述当前时间设置为第一次请求时间,返回未超过限额指示至所述应用服务器;
第三处理模块,用于若所述时间差值小于或等于所述预设的时间长度,将请求次数加1后得到所述客户端的当前请求次数;判断所述客户端的当前请求次数是否小于等于最大限额数,若小于等于最大限额数,返回未超过限额指示至所述应用服务器420;若所述客户端的请求次数大于最大限额数,返回超过限额指示至所述应用服务器420。
为了更清楚的说明本发明的技术方案,以下结合一种具体的应用场景,对本发明提供的限额控制方法及分布式限额控制系统进行详细阐述。
在本应用场景下,如图5所示,本发明实施例提供的一种分布式限额控制系统包括四个应用服务器,分别是应用服务器A、应用服务器B、应用服务器C以及应用服务器D,一个独立设置的限额控制服务器以及一个客户端,所述客户端标识用ip地址表示,时间长度为1分钟,最大限额数为100。
基于上述应用场景,所述客户端向上述任一应用服务器发送服务请求,应用服务器从服务请求中获取该客户端的ip地址,并向限额控制服务器发送限额控制请求,所述限额控制请求携带有所述客户端的ip地址;由限额控制服务器根据所述客户端的ip地址统一判断所述客户端的当前请求次数N是否已经超过最大限额数100。为便于说明清楚,我们对应用服务器做了区分,并结合图5说明如下。
第一种情形是:
客户端向应用服务器A发送业务服务请求,应用服务器A从所述业务服务请求中获取该客户端的ip地址;
应用服务器A向限额控制服务器发送限额控制请求,所述限额控制请求携带有所述客户端的ip地址;
限额控制服务器首先判断所述客户端的ip地址是否存在,
如果不存在,限额控制服务器在客户端标识中保存所述客户端的标识信息,并将请求次数置为1,同时记录当前时间为第一次请求时间,并向应用服务器A返回未超过限额指示;
应用服务器A根据接收到的未超过限额指示,对客户端的业务服务请求进行业务处理,并向客户端返回处理结果。
第二种情形是:
客户端向应用服务器B发送业务服务请求,应用服务器B从所述业务服务请求中获取该客户端的ip地址;
应用服务器B向限额控制服务器发送限额控制请求,所述限额控制请求携带有所述客户端的ip地址;
限额控制服务器首先判断所述客户端的ip地址是否存在,
如果存在,将当前时间减去预存的第一次请求时间得到的时间差值与预设的时间长度1分钟进行比较,
如果大于预设的时间长度1分钟,将请求次数N置为1,同时记录当前时间为第一次请求时间,并向应用服务器B返回未超过限额指示;
应用服务器B根据接收到的未超过限额指示,对客户端的业务服务请求进行业务处理,并向客户端返回处理结果。
第三种情形是:
客户端向应用服务器C发送业务服务请求,应用服务器C从所述业务服务请求中获取该客户端的ip地址;
应用服务器C向限额控制服务器发送限额控制请求,所述限额控制请求携带有所述客户端的ip地址;
限额控制服务器首先判断所述客户端的ip地址是否存在,
如果存在,将当前时间减去预存的第一次请求时间得到的时间差值与预设的时间长度1分钟进行比较,
如果所述时间差值小于等于预设的时间长度1分钟,将请求次数N加1后与预设的最大限额数100比较,
如果小于等于最大限100,向应用服务器C返回未超过限额指示;
应用服务器C根据接收到的未超过限额指示,对客户端的服务请求进行业务处理,并向客户端返回处理结果。
第四种情形是:
客户端向应用服务器D发送业务服务请求,应用服务器D从所述业务服务请求中获取该客户端的ip地址;
应用服务器D向限额控制服务器发送限额控制请求,所述限额控制请求携带有所述客户端的ip地址;
限额控制服务器首先判断所述客户端的ip地址是否存在,
如果存在,将当前时间减去预存的第一次请求时间得到的时间差值与预设的时间长度1分钟进行比较,
如果所述时间差值小于等于预设的时间长度1分钟,将请求次数N加1后与预设的最大限额数100比较,
如果大于最大限额数100,向应用服务器D返回超过限额数指示;
应用服务器D根据接收到的超过限额数指示,向客户端返回错误信息响应。
综上所述,本发明提供的限额控制方法及分布式限额控制系统,当分布式系统中的任一应用服务器收到客户端的业务服务请求时,通过向限额控制服务器发送限额控制请求,由所述限额控制服务器统一判断所述客户端的当前请求次数是否已经超过最大限额,并向应用服务器返回超过限额数指示或者未超过限额数指示,应用服务器根据限额控制服务器返回的是否超过限额指示,对客户端的业务服务请求或进行业务处理并返回处理结果或返回错误信息响应至所述客户端,从而达到对客户端用户限额进行精准控制的目的。本发明实施例对均匀接收客户端请求与随机接收客户端请求的分布式系统都适用。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
机译: 分布式交易限额执行的方法和系统
机译: 一种移动通信方法,使移动通信订户可以在超出限额的情况下避免支付超额费用
机译: 信用卡限额的控制方法