《一种流量控制方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种流量控制方法和装置.pdf(20页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104065586A43申请公布日20140924CN104065586A21申请号201310088303922申请日20130319H04L12/81120130171申请人阿里巴巴集团控股有限公司地址英属开曼群岛大开曼资本大厦一座四层847号邮箱72发明人杨成虎74专利代理机构北京安信方达知识产权代理有限公司11262代理人解婷婷栗若木54发明名称一种流量控制方法和装置57摘要本发明公开了一种流量控制方法和装置,避免带宽占用,减少网络资源消耗。应用于客户端设备的流量控制方法包括接收并保存服务器端发送的流量状态包,流量状态包包括第一状态,所述第一状态用于指示客户端设备提高。
2、流控力度;基于第一状态的指示提高本地流控阈值;在客户端设备发送请求前,根据当前本地流控阈值判断是否允许发送请求。应用于服务器端的流量控制方法包括统计当前流量,判断服务器端当前流量高于第一警戒值时,更新当前流量状态为第一状态,向客户端设备发送包括第一状态的流量状态包。采用本发明方法和装置,从客户端侧进行流量控制,防止服务器处理资源过度消耗,避免带宽占用,无需额外配置备用服务器,降低成本。51INTCL权利要求书2页说明书10页附图7页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书10页附图7页10申请公布号CN104065586ACN104065586A1/2页21一种流量。
3、控制方法,应用于客户端设备,其特征在于,所述方法包括接收并保存服务器端发送的流量状态包,所述流量状态包包括第一状态,所述第一状态用于指示客户端设备提高流控力度;基于所述第一状态的指示提高本地流控阈值;在客户端设备发送请求前,根据当前本地流控阈值判断是否允许发送所述请求。2如权利要求1所述的方法,其特征在于所述方法还包括接收并保存服务器端发送的流量状态包,所述流量状态包包括第二状态,所述第二状态用于指示客户端设备维持流控力度;基于所述第二状态的指示保持当前本地流控阈值不变。3如权利要求1所述的方法,其特征在于所述方法还包括定期向服务器端发送流量状态查询请求,当查询所述服务器端当前流量状态为第三状。
4、态时,所述第三状态用于指示客户端设备降低流控力度,基于所述第三状态的指示降低当前本地流控阈值。4如权利要求1或2或3所述的方法,其特征在于所述根据当前本地流控阈值判断是否允许发送所述请求,包括在本地流控阈值的取值范围内生成一随机数,判断所述随机数是否大于当前本地流控阈值,如果大于则允许发送所述请求,如果小于则不允许发送所述请求。5一种流量控制方法,应用于服务器端,其特征在于,所述方法包括统计当前流量,判断服务器端当前流量高于第一警戒值时,更新当前流量状态为第一状态,所述第一状态用于指示客户端设备提高流控力度,向客户端设备发送包括第一状态的流量状态包。6如权利要求5所述的方法,其特征在于所述方法。
5、还包括判断服务器端的流量从高于第一警戒值降低到低于第一警戒值、高于第二警戒值时,更新当前流量状态为第二状态,所述第二状态用于指示客户端设备维持流控力度,向客户端设备发送包括第二状态的流量状态包,所述第一警戒值大于所述第二警戒值。7如权利要求5所述的方法,其特征在于所述方法还包括判断服务器端流量低于第二警戒值,或者从低于第二警戒值升高到低于第一警戒值时,更新当前流量状态为第三状态,所述第三状态用于指示客户端设备降低流控力度。8一种流量控制装置,应用于客户端设备,其特征在于,所述流量控制装置包括接收模块、流控阈值调整模块和流控模块,其中所述接收模块,用于接收并保存服务器端发送的流量状态包,所述流量。
6、状态包包括第一状态,所述第一状态用于指示客户端设备提高流控力度;所述流控阈值调整模块,用于基于所述第一状态的指示提高本地流控阈值;所述流控模块,用于在客户端设备发送请求前,根据当前本地流控阈值判断是否允许发送所述请求。9如权利要求8所述的流量控制装置,其特征在于所述接收模块,还用于接收并保存服务器端发送的流量状态包,所述流量状态包包括权利要求书CN104065586A2/2页3第二状态,所述第二状态用于指示客户端设备维持流控力度;所述流控阈值调整模块,还用于基于所述第二状态的指示保持当前本地流控阈值不变。10如权利要求8所述的流量控制装置,其特征在于所述流控阈值调整模块,还用于定期向服务器端发。
7、送流量状态查询请求,当查询所述服务器端当前流量状态为第三状态时,所述第三状态用于指示客户端设备降低流控力度,基于所述第三状态的指示降低当前本地流控阈值。11如权利要求8或9或10所述的流量控制装置,其特征在于所述流控模块根据当前本地流控阈值判断是否允许发送所述请求,包括在本地流控阈值的取值范围内生成一随机数,判断所述随机数是否大于当前本地流控阈值,如果大于则允许发送所述请求,如果小于则不允许发送所述请求。12一种流量控制装置,应用于服务器端,其特征在于,所述流量控制装置包括监控模块和发送模块,其中所述监控模块,用于统计当前流量,判断服务器端当前流量高于第一警戒值时,更新当前流量状态为第一状态,。
8、所述第一状态用于指示客户端设备提高流控力度;所述发送模块,用于向客户端设备发送包括第一状态的流量状态包。13如权利要求12所述的流量控制装置,其特征在于所述监控模块,还用于判断服务器端的流量从高于第一警戒值降低到低于第一警戒值、高于第二警戒值时,更新当前流量状态为第二状态,所述第二状态用于指示客户端设备维持流控力度;所述发送模块,还用于向客户端设备发送包括第二状态的流量状态包,所述第一警戒值大于所述第二警戒值。14如权利要求12所述的流量控制装置,其特征在于所述监控模块,还用于判断服务器端流量低于第二警戒值,或者从低于第二警戒值升高到低于第一警戒值时,更新当前流量状态为第三状态,所述第三状态用。
9、于指示客户端设备降低流控力度。权利要求书CN104065586A1/10页4一种流量控制方法和装置技术领域0001本发明涉及计算机网络领域,具体涉及一种流量控制方法和装置。背景技术0002C/S(CLIENT/SERVER,客户端/服务端)模型的服务程序一般存在流量隐患。当流量过载时可能会影响正常服务。同时,在云计算平台上,流量控制也是重要的功能之一,不同的流量权限,不同的计费价格。0003已知的一种实现方案为在服务端统计流量后再拒绝请求;已知的另一种实现方案为在服务端流量超限后,将用户的请求重定向到备用服务器。上述第一种方案存在以下问题1和问题2,上述第二种方案存在以下问题1和问题30004。
10、1、虽然服务端不实际处理请求,但由于请求已经到达服务端,网络资源已经消耗,且解析包等操作,仍然消耗大量资源;00052、服务端直接拒绝请求,此时全部请求都可能失败,无过渡,实现上比较粗暴,对应用的损害较大;00063、只适用于可预知流量大小的场景,一方面设置备用服务器成本较高,另一方面备用服务器也可能流量过载。发明内容0007本发明要解决的技术问题是提供一种流量控制方法和装置,避免带宽占用,减少网络资源消耗。0008为解决上述技术问题,本发明提供了一种流量控制方法,应用于客户端设备,所述方法包括0009接收并保存服务器端发送的流量状态包,所述流量状态包包括第一状态,所述第一状态用于指示客户端设。
11、备提高流控力度;0010基于所述第一状态的指示提高本地流控阈值;0011在客户端设备发送请求前,根据当前本地流控阈值判断是否允许发送所述请求。0012进一步地,所述方法还包括接收并保存服务器端发送的流量状态包,所述流量状态包包括第二状态,所述第二状态用于指示客户端设备维持流控力度;基于所述第二状态的指示保持当前本地流控阈值不变。0013进一步地,所述方法还包括定期向服务器端发送流量状态查询请求,当查询所述服务器端当前流量状态为第三状态时,所述第三状态用于指示客户端设备降低流控力度,基于所述第三状态的指示降低当前本地流控阈值。0014进一步地,所述根据当前本地流控阈值判断是否允许发送所述请求,包。
12、括在本地流控阈值的取值范围内生成一随机数,判断所述随机数是否大于当前本地流控阈值,如果大于则允许发送所述请求,如果小于则不允许发送所述请求。0015为解决上述技术问题,本发明还提供了一种流量控制方法,应用于服务器端,所述说明书CN104065586A2/10页5方法包括0016统计当前流量,判断服务器端当前流量高于第一警戒值时,更新当前流量状态为第一状态,所述第一状态用于指示客户端设备提高流控力度,向客户端设备发送包括第一状态的流量状态包。0017进一步地,所述方法还包括判断服务器端的流量从高于第一警戒值降低到低于第一警戒值、高于第二警戒值时,更新当前流量状态为第二状态,所述第二状态用于指示客。
13、户端设备维持流控力度,向客户端设备发送包括第二状态的流量状态包,所述第一警戒值大于所述第二警戒值。0018进一步地,所述方法还包括判断服务器端流量低于第二警戒值,或者从低于第二警戒值升高到低于第一警戒值时,更新当前流量状态为第三状态,所述第三状态用于指示客户端设备降低流控力度。0019为解决上述技术问题,本发明还提供了一种流量控制装置,应用于客户端设备,所述流量控制装置包括接收模块、流控阈值调整模块和流控模块,其中0020所述接收模块,用于接收并保存服务器端发送的流量状态包,所述流量状态包包括第一状态,所述第一状态用于指示客户端设备提高流控力度;0021所述流控阈值调整模块,用于基于所述第一状。
14、态的指示提高本地流控阈值;0022所述流控模块,用于在客户端设备发送请求前,根据当前本地流控阈值判断是否允许发送所述请求。0023进一步地,所述接收模块,还用于接收并保存服务器端发送的流量状态包,所述流量状态包包括第二状态,所述第二状态用于指示客户端设备维持流控力度;0024所述流控阈值调整模块,还用于基于所述第二状态的指示保持当前本地流控阈值不变。0025进一步地,所述流控阈值调整模块,还用于定期向服务器端发送流量状态查询请求,当查询所述服务器端当前流量状态为第三状态时,所述第三状态用于指示客户端设备降低流控力度,基于所述第三状态的指示降低当前本地流控阈值。0026进一步地,所述流控模块根据。
15、当前本地流控阈值判断是否允许发送所述请求,包括在本地流控阈值的取值范围内生成一随机数,判断所述随机数是否大于当前本地流控阈值,如果大于则允许发送所述请求,如果小于则不允许发送所述请求。0027为解决上述技术问题,本发明还提供了一种流量控制装置,应用于服务器端,所述流量控制装置包括监控模块和发送模块,其中0028所述监控模块,用于统计当前流量,判断服务器端当前流量高于第一警戒值时,更新当前流量状态为第一状态,所述第一状态用于指示客户端设备提高流控力度;0029所述发送模块,用于向客户端设备发送包括第一状态的流量状态包。0030进一步地,所述监控模块,还用于判断服务器端的流量从高于第一警戒值降低到。
16、低于第一警戒值、高于第二警戒值时,更新当前流量状态为第二状态,所述第二状态用于指示客户端设备维持流控力度;0031所述发送模块,还用于向客户端设备发送包括第二状态的流量状态包,所述第一警戒值大于所述第二警戒值。0032进一步地,所述监控模块还用于判断服务器端流量低于第二警戒值,或者从低于说明书CN104065586A3/10页6第二警戒值升高到低于第一警戒值时,更新当前流量状态为第三状态,所述第三状态用于指示客户端设备降低流控力度。0033采用本发明方法和装置,通过客户端与服务端配合处理,从客户端侧进行流量控制,防止服务器处理资源过度消耗,避免带宽占用,减少网络资源消耗,且控制平滑,无需额外配。
17、置备用服务器,降低成本。附图说明0034图1为本发明实施例1客户端流控方法流程图;0035图2为本发明实施例1客户端流控装置结构示意图;0036图3为本发明实施例2客户端流控方法流程图;0037图4为本发明实施例4服务器端流控方法流程图;0038图5为本发明实施例4服务器端流控装置结构示意图;0039图6为本发明实施例5服务器端流控方法流程图;0040图7为本发明实施例6服务器端流控方法流程图;0041图8为本发明应用示例1流控系统流程图;0042图9为本发明应用示例1流量与流控力度关系曲线图;0043图10为本发明应用示例2流量控制模块流程示意图;0044图11为本发明应用示例3流量监控模块。
18、流程示意图;0045图12为本发明应用示例4提高流控阈值流程图;0046图13为本发明应用示例4降低流控阈值流程图;0047图14为本发明应用示例5提高流控阈值状态下更新阈值流程图;0048图15为本发明应用示例6周期性查询流程图。具体实施方式0049为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。0050实施例10051本实施例介绍应用于客户端设备(以下简称客户端)的流量控制方法,本实施例方法针对需要限制请求的情况,如图1所示,包括以下步骤0052步骤101,接收并保。
19、存服务器端发送的流量状态包,所述流量状态包包括第一状态,所述第一状态用于指示客户端提高流控力度;0053步骤102,基于所述第一状态的指示提高本地流控阈值;0054步骤103,在客户端发送请求前,根据当前本地流控阈值判断是否允许发送所述请求。0055上述步骤103中,根据当前本地流控阈值判断是否允许发送所述请求的一种优选方式是在本地流控阈值的取值范围内生成一随机数,判断所述随机数是否大于当前本地流控阈值,如果大于则允许发送所述请求,如果小于则不允许发送所述请求。除此种优选方式外,还可以采用其他优选方式,例如将本地流控阈值作为衡量请求数量的标准,如果请求说明书CN104065586A4/10页7。
20、数量已超过本地流控阈值,则不允许发送,否则不允许;再例如,将本地流控阈值作为衡量请求优先级的标准,如果当前请求的优先级超过本地流控阈值,则允许发送,否则不允许。不论采用何种方式实现,只要服务器端要求提高流控力度,客户端则需要相应提高本地流控阈值,以此控制请求发送的数量,避免服务器端流量过载。0056实现本实施例方法的流量控制装置如图2所示,包括接收模块201、流控阈值调整模块202和流控模块203,其中0057所述接收模块201,用于接收并保存服务器端发送的流量状态包,所述流量状态包包括第一状态;0058所述流控阈值调整模块202,用于基于所述第一状态的指示提高本地流控阈值;0059所述流控模。
21、块203,用于在客户端发送请求前,根据当前本地流控阈值判断是否允许发送所述请求。0060上述流控模块203根据本地流控阈值判断是否允许发送请求的方式参见上述方法流程中描述,此处不再赘述。0061上述流量控制装置优选设置于客户端内。0062在本实施例中,由客户端控制请求的发送,减少了请求发送到服务器端时需要耗费的流量,避免由于处理拒绝请求而消耗服务器端资源。另外,客户端侧可以自行调整控制力度,例如逐步增大控制力度,使控制更加平滑,带给用户更好的体验。0063实施例20064本实施例介绍应用于客户端的流量控制方法,本实施例方法针对需要维持当前流量的情况,如图3所示,包括以下步骤0065步骤301,。
22、接收并保存服务器端发送的流量状态包,所述流量状态包包括第二状态,所述第二状态用于指示客户端设备维持流控力度;0066步骤302,基于所述第二状态的指示保持当前本地流控阈值不变;0067步骤303,同实施例1步骤103。0068如果服务器端发送包含第二状态的流量控制包,说明当前流量处于服务器端能够承受的状态,对于客户端而言,只要保持当前本地流控阈值不变即可。0069实现本实施例方法的流量控制装置结构同实施例1,区别在于,接收模块201还用于接收并保存服务器端发送的流量状态包,所述流量状态包包括第二状态;流控阈值调整模块202还用于基于所述第二状态的指示保持当前本地流控阈值不变。0070实施例30。
23、071本实施例介绍应用于客户端的流量控制方法,本实施例方法针对不需要限制当前流量的情况。对于此种情况,一种处理方式是服务器端可以主动向客户端发送流量状态包,状态包中包括第三状态,该第三状态用于指示客户端设备降低流控力度,客户端基于该第三状态降低本地流控阈值。另一种处理方式是,客户端定期向服务器端发送流量状态查询请求,当查询所述服务器端当前流量状态为第三状态时,基于所述第三状态的指示降低当前本地流控阈值,采用第二种处理方式可以减少服务器端处理的资源消耗。第二种处理方式中的定期发送流量状态查询请求的一种实现方式是设置流量状态查询时间间隔S1,只要当前时间距离上次流量状态查询时间超过该时间间隔S1,。
24、就发起流量状态查询。另一种实现方式是,设置流量状态查询时间间隔S2,只要当前时间距离上次调整本地流控阈值说明书CN104065586A5/10页8(提高或者降低)的时间超过该时间间隔S2,就发起流量状态查询。0072不论采用上述第一种处理方式还是第二种处理方式,此后在客户端发送请求前,根据当前本地流控阈值判断是否允许发送所述请求,由于当前本地流控阈值已经降低,因此,将会有更多的请求被允许发送到服务器端。0073为实现本实施例方法,上述实施例1或实施例2的流量控制装置中的流控阈值调整模块202还用于定期向服务器端发送流量状态查询请求,当查询所述服务器端当前流量状态为第三状态时,基于该第三状态的指。
25、示降低当前本地流控阈值。0074实施例40075本实施例介绍应用于服务器端的流量控制方法,本实施例方法针对需要限制请求的情况,如图4所示,包括以下步骤0076步骤401,统计当前流量,判断服务器端当前流量高于第一警戒值时,更新当前流量状态为第一状态,所述第一状态用于指示客户端提高流控力度;0077步骤402,向客户端发送包括第一状态的流量状态包。0078实现本实施例方法的流量控制装置如图5所示,包括监控模块501和发送模块502,其中0079所述监控模块501,用于统计当前流量,判断服务器端当前流量高于第一警戒值时,更新当前流量状态为第一状态;0080所述发送模块502,用于向客户端发送包括第。
26、一状态的流量状态包。0081实施例50082本实施例介绍应用于服务器端的流量控制方法,本实施例方法针对需要维持当前流量的情况,如图6所示,包括以下步骤0083步骤601,统计当前流量,判断服务器端的流量从高于第一警戒值降低到低于第一警戒值、高于第二警戒值时,更新当前流量状态为第二状态,所述第二状态用于指示客户端维持流控力度;0084上述第一警戒值大于所述第二警戒值;0085步骤602,向客户端发送包括第二状态的流量状态包。0086实现本实施例方法的流量控制装置结构同实施例4,不同之处在于,监控模块501用于统计当前流量,判断服务器端的流量从高于第一警戒值降低到低于第一警戒值、高于第二警戒值时,。
27、更新当前流量状态为第二状态;发送模块502用于向客户端发送包括第二状态的流量状态包。0087实施例60088本实施例介绍应用于服务器端的流量控制方法,本实施例方法针对不需要限制当前流量的情况,如图7所示,包括以下步骤0089步骤701,统计当前流量,判断服务器端流量低于第二警戒值,或者从低于第二警戒值升高到低于第一警戒值时,更新当前流量状态为第三状态,所述第三状态用于指示客户端降低流控力度;0090上述第一警戒值大于所述第二警戒值;0091步骤702,向客户端发送包括第三状态的流量状态包。0092在一个优选实施例中,上述步骤702可以省略,即更新当前流量状态后不将当前说明书CN10406558。
28、6A6/10页9流量状态发送给客户端,而是等待客户端主动查询。0093实现本实施例方法的流量控制装置结构同实施例4,不同之处在于,监控模块501用于统计当前流量,判断服务器端流量低于第二警戒值,或者从低于第二警戒值升高到低于第一警戒值时,更新当前流量状态为第三状态。0094下面结合应用示例对上述各实施例方法进行说明。在不冲突的情况下,以下应用示例以及应用示例中的特征可以相互任意组合,以下应用示例以及应用示例中的特征也可以与上述实施例相互任意组合。0095应用示例10096本示例描述客户端与服务器端交互的流程,本示例中客户端中的流量控制装置为流量控制模块,服务器端中的流量控制装置为流量监控模块,。
29、上述流量控制装置也可以与客户端或服务器端分开设置。如图8所示,包括以下步骤0097步骤801,客户端向流量控制模块发送请求,由流量控制模块判断是否需要进行流控,并返回判断结果,如果需要流控,则直接拒绝请求,客户端不发送请求,如果不需要流控,执行步骤802;0098客户端在发送请求前,首先需要询问流量控制模块是否可以发送该请求,流控模块会根据相应算法,回答是否允许发送请求,若客户端得知不允许发送请求,则不会发送请求到服务端,以此来达到流控的效果。0099在向流量控制模块发请求时,可在请求中携带目标地址。0100步骤802,客户端向服务器端发送请求消息;0101步骤803,流量监控模块获取流量信息。
30、;0102步骤804,流量监控模块统计当前流量,判断是否超过设定的警戒值;0103步骤805A,服务器端向客户端返回请求的处理结果;0104步骤805B,流量监控模块判断当前流量如果超过设定的警戒值,则通过服务器端向流量控制模块发送流量状态;0105若客户端的请求正常发送到服务器端,服务器端会处理该请求,同时计算此请求消耗的流量,累加给流量监控模块,流量监控模块根据用户事先配置的警戒值来决定发送何种流量状态给客户端。0106步骤805B1,该流量控制模块根据流量状态更新流控阈值。0107通过检测服务器的流量是否超标,若流量超标,则由客户端阻塞请求,从而实现流控。0108在本示例中,流控系统支持。
31、三种流量状态,状态代码与含义为0109UP(提高流控阈值)状态流量超出警戒值,需要客户端限制请求,客户端应该调高控制力度;0110KEEP(保持流控阈值)状态流量已经低于警戒值,客户端可以维持当前流量,控制力度不变;0111DOWN(降低流控阈值)状态流量正常,客户端不需要限制请求。0112初始状态为DOWN状态。0113在本示例中,服务器端配置2个警戒值UPPER(第一警戒值),LOWER(第二警戒值),具体地说明书CN104065586A7/10页100114UPPER为高水位,当流量大于UPPER时,对应UP状态;0115LOWER为低水位,当流量从大于UPPER的水位降低到LOWER以。
32、上、UPPER以下时,对应状态为KEEP状态;0116为了防止客户端对流控反应过于激烈,只有流量从UPPER降低到LOWER以下,才会恢复为DOWN状态;当流量从LOWER以下上升到UPPER以下、LOWER以上时,状态不变,保持DOWN状态。0117流量与流量状态(流控力度)的关系如图9所示,其中流控力度由流控阈值控制,流控阈值越高,拒绝的请求越多。0118应用示例20119本示例描述客户端中流量控制模块如何判断是否允许发送请求,如图10所示,包括以下步骤0120步骤1001,接收客户端发送的请求数据;0121步骤1002,在流控阈值的取值范围内生成一随机数(即RANDOMMAX,其中MAX。
33、为流控阈值的最大取值);0122流控阈值(VAR)的取值范围为0,MAX,MAX越大,控制精度越高,例如MAX1000。0123步骤1003,根据随机数与流控阈值判断是否需要进行流控,如果不需要进行流控,执行步骤1004,如果需要进行流控执行步骤1005;0124通过比较随机数与流控阈值的大小判断是否需要进行流控,例如,如果随机数小于流控阈值,则认为不需要进行流控,如果随机数大于流控阈值则认为需要流控。对于此种实现方式,当有询问到达时,流量控制模块会随机生成一个大于0小于MAX的数字,随机数小于等于VAR则拒绝请求发送,反之则允许发送请求,也就是说拒绝的比例为100VAR/MAX,VAR越接近。
34、MAX,流控力度越大。0125步骤1004,回复客户端,允许发送请求;0126步骤1005,判断连续拒绝次数是否小于N次,如果是,执行步骤1006,否则执行步骤1008;0127步骤1006,判断距离上次发送流量状态查询请求的时间间隔是否大于S,如果是,执行步骤1007,否则执行步骤1008;0128步骤1007,发送流量状态查询请求,执行步骤1008;0129步骤1008,回复客户端,拒绝发送请求。0130上述步骤1005和1006为优选执行步骤。0131应用示例30132本示例描述服务器端中流量监控模块如何判断发送何种流量状态给客户端,以应用示例1中的流量状态为例进行说明,如图11所示,包。
35、括以下步骤0133步骤1101,收到客户端发送的请求消息;0134步骤1102,计算当前的流量,设当前流量为C,前一刻的流量为P;0135步骤1103,判断当前流量C是否大于第一警戒值UPPER,如果是,执行步骤1104,否则执行步骤1105;0136步骤1104,更新服务器当前流量状态STAT为UP状态,向流量控制模块发送流量状态包,其中包括当前流量状态,结束;说明书CN104065586A108/10页110137步骤1105,判断当前流量C是否小于等于第二警戒值LOWER,如果是,执行步骤1106,否则执行步骤1107;0138步骤1106,更新服务器当前流量状态STAT为DOWN状态,。
36、结束;0139步骤1107,判断前一刻的流量是否大于UPPER,如果是,执行步骤1108,否则执行步骤1109;0140步骤1108,更新服务器当前流量状态STAT为KEEP状态,向流量控制模块发送流量状态包,其中包括当前流量状态,结束;0141步骤1109,判断前一刻的流量是否小于LOWER,如果是,执行步骤1106,否则执行步骤1110;0142步骤1110,保持前一时刻的状态不变,例如,如果前一时刻流量状态为DOWN,则更新当前流量状态仍为DOWN状态,如果前一时刻流量状态为KEEP,则更新当前流量状态仍为KEEP状态,并向流量控制模块发送流量状态包,其中包括当前流量状态,结束。0143。
37、应用示例40144本示例介绍流量控制模块如何通过维护变量VAR值的大小,实现流控力度的控制。0145当流量控制模块收到UP状态通知时,调用以下提高流控阈值的流程,增大VAR。提高流控阈值的流程如图12所示,包括以下步骤0146步骤1201,接收到提高流控阈值的命令;0147步骤1202,增加VAR;0148增加VAR的方式有很多种,比如每次增加固定的步长,或者是采用以下公式VARVARUP_FACTORMAXVAR,其中UP_FACTOR为预设提高因子,取值范围为0,1,通过调整该提高因子可根据实际情况调整流控阈值每次提高的步长。此公式适合与期望VAR增大幅度是平稳的情况,VAR越接近MAX,。
38、幅度相对VAR比例越小,VAR的变化会相对平稳,那么流控也就越温和。0149步骤1203,判断VAR是否大于最大取值MAX,如果是,执行步骤1204,否则,执行步骤1205;0150步骤1204,取VAR为最大值,执行步骤1205;0151步骤1205,输出当前VAR值。0152流量控制模块如果不收到DOWN状态通知,则会每隔一定时间,尝试降低VAR。降低流控阈值的流程如图13所示,包括以下步骤0153步骤1301,接收到降低流控阈值的命令;0154步骤1302,降低VAR;0155降低VAR的方式有很多种,比如每次减少固定的步长,或者是采用以下公式VARVARDOWN_FACTORVAR,其。
39、中DOWN_FACTOR为预设降低因子,取值范围为0,1,通过调整该降低因子可根据实际情况调整流控阈值每次降低的步长。0156步骤1303,判断VAR是否小于最小取值(本示例中为0),如果是,执行步骤1304,否则,执行步骤1305;0157步骤1304,取VAR为最小值,执行步骤1305;0158步骤1305,输出当前VAR值。说明书CN104065586A119/10页120159上述增加VAR和降低VAR的方式相比,VAR降低的变化程度较VAR的增大幅度更加剧烈,或者说,VAR的降低速率相对增大速率要大,这是考虑到降低VAR是因为当前服务器端处于DOWN状态,所以期望能尽快降低VAR以避。
40、免服务器端长时间流量超负荷。总之VAR的改变宜采取渐进的方式,保证流量曲线的平滑。0160当流量控制模块收到KEEP状态通知时,不改变流控阈值的大小,但是更新状态更新计数器,换句话说,虽然VAR值没有改动,但是仍然算作一次流控阈值调整。0161应用示例50162客户端的流量控制模块可以在收到流量状态为UP状态的通知后即刻提高流控阈值,也可以进行一些判断操作,如图14所示,包括以下步骤0163步骤1401,接收到流量状态;0164步骤1402,判断流量状态是否为UP状态,如果是,执行步骤1403,否则结束;0165步骤1403,判断距离上次调整时间间隔是否大于S秒,如果是,提高流控阈值,执行步骤。
41、1404,否则,结束;0166步骤1404,提高流控阈值,结束。0167在本示例中,设置VAR值的更新周期为S秒,即每次VAR值的增加都需要一定时间间隔,以避免VAR值的频繁变化。0168应用示例60169本示例针对服务器端不主动发送DOWN状态,由流量控制模块主动发起查询的场景,描述流量控制模块如何周期性发起查询的流程,如图15所示,包括以下步骤0170步骤1501,流量控制阈值重置;0171步骤1502,判断距离上次调整间隔是否大于预设时间(本示例中为2S秒),如果是,执行步骤1503,否则执行步骤1504;0172步骤1503,向流量监控模块发起查询流量状态,执行步骤1504;0173步。
42、骤1504,等待S秒后执行步骤1501。0174本示例中,S秒是状态调整的时间间隔,考虑到查询状态实际上主要是为了查询是否为DOWN状态,假如发现状态在S秒以内更新过,那么可以推断出当前服务器端的流量状态极大可能性仍是UP状态或者是KEEP状态,此时发送状态查询请求是不经济的。相反的考虑,当大于S秒的时间没有更新过,可以说明此时状态有极大可能性已经恢复到DOWN状态了。但如果等待时间过久又会导致DOWN状态恢复延迟,因此本示例中取S2作为等待时间的经验值。0175上述实施例以及应用示例的方法可以在分布式缓存中实现。缓存系统在内部有很多的应用共享同一组服务器。如果某个存在BUG(漏洞)的外部应用。
43、出现了大量的重复调用,由于服务器是共享的,如果资源被占满,将影响大量业务运行。此时流控功能发挥作用,当发现流量过大,服务器端自动将状态更新为UP状态,客户端接收到该状态后,开始进行流控,服务器端的负载逐渐降低。当流量降低到一定程度后,服务器端状态更新为KEEP状态,此时流量稳定在一定范围内。当开发人员定位BUG,回滚应用后,重复调用消失,此时服务器端的状态更新为DOWN状态,即恢复到初始状态,客户端查询到该状态后,逐步地降低流控力度,服务器端的负载逐渐升高,直到服务器端状态再次更新为KEEP状态。由于流控功能的存在,本次故障不会影响到其他业务产品。说明书CN104065586A1210/10页。
44、130176上述流量并不局限于数据量,还可以扩展到其他类似的场景中。例如上述实施例以及应用示例的方法还可以应用于云计算平台,云计算平台一般都有计费的维度,比如容量或者调用量。资费标准越高,可以调用频率越高(该调用频率可以理解为广义的流量),通过本申请提供的流控功能可以将超出资费标准的调用拒绝掉。例如,某个用户购买XXX元的流量服务,此服务可以提供10MB/S的流量供应,服务端可以设置流量水位LOWER为10MB,UPPER为11MB,当用户使用时,流量为0109MB以下时,正常。当流量15MB时,开始流控,额户端会随机拒绝请求,通过设置流控阈值,控制接受的请求量在1011MB之间,直到用户增加。
45、了资费(如提高LOWER为15MB,UPPER为159MB),或者降低自身的请求小于10MB,则客户端不会再拒绝请求。同样,上述方法也适用于次数的统计(每秒的操作次数)。0177本申请流控方案提供了一个反馈机制,当流量增大时,流控阈值也增大即控制力度增大,则会降低流量;假若控制力度过大,导致流量状态突然降低到DOWN状态,则流控力度也会随着时间减弱,从而使流量再次上升,直到稳定在KEEP状态时,表明控制力度合适,维持该控制力度。0178本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上。
46、述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。0179当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。说明书CN104065586A131/7页14图1图2图3说明书附图CN104065586A142/7页15图4图5图6图7说明书附图CN104065586A153/7页16图8图9说明书附图CN104065586A164/7页17图10说明书附图CN104065586A175/7页18图11说明书附图CN104065586A186/7页19图12图13说明书附图CN104065586A197/7页20图14图15说明书附图CN104065586A20。