首页 / 专利库 / 资料储存系统 / 大容量存储 / 一种实现流量控制的方法、装置、服务器及存储介质

一种实现流量控制的方法、装置、服务器及存储介质

阅读:1029发布:2020-06-04

专利汇可以提供一种实现流量控制的方法、装置、服务器及存储介质专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种实现流量控制的方法、装置、 服务器 及存储介质,该方法包括:确定业务 请求 事件中的异常事件率,该业务请求事件是指第一服务 节点 向第二服务节点发送业务请求的事件;将异常事件率与预设异常事件率 阈值 进行比对;根据比对的结果对第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整;针对第一服务节点发送的令牌 申请 请求,根据调整后的令牌存储容量上限确定第一服务节点的令牌申请是否成功;在确定第一服务节点的令牌申请成功时,向第一服务节点返回用于触发第一服务节点执行所述业务请求事件的令牌申请成功的响应消息。本发明避免了被调用的服务节点大规模异常时对网络连接的占用,进而有效避免了整个业务的 雪 崩效应。,下面是一种实现流量控制的方法、装置、服务器及存储介质专利的具体信息内容。

1.一种实现流量控制的方法,其特征在于,所述方法包括:
确定业务请求事件中的异常事件率,所述业务请求事件是指第一服务节点向第二服务节点发送业务请求的事件;
将所述异常事件率与预设异常事件率阈值进行比对;
根据比对的结果,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整;
针对所述第一服务节点发送的令牌申请请求,根据调整后的令牌存储容量上限确定所述第一服务节点的令牌申请是否成功;
在确定所述第一服务节点的令牌申请成功时,向所述第一服务节点返回所述令牌申请成功的响应消息,所述令牌申请成功的响应消息用于触发所述第一服务节点执行所述业务请求事件。
2.根据权利要求1所述的实现流量控制的方法,其特征在于,所述根据比对的结果,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整包括:
根据比对的结果,确定所述第二服务节点所对应的令牌存储池的令牌存储容量上限的目标值;
获取所述第二服务节点所对应的令牌生产进程的心跳信息;
根据所述心跳信息,确定存活的令牌生产进程的第一数量;
根据所述第一数量和目标值,确定每个所述存活的令牌生产进程的令牌生产速率;
将每个所述存活的令牌生产进程根据所述令牌生产速率生产的令牌存入所述令牌存储池中。
3.根据权利要求1所述的实现流量控制的方法,其特征在于,所述根据比对的结果,确定所述第二服务节点所对应的令牌存储池的令牌存储容量上限的目标值包括:
当比对的结果为所述异常事件率超过所述预设异常事件率阈值时,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行降级处理,将降级处理后的所述令牌存储容量上限的值作为所述目标值;
当比对的结果为所述异常事件率未超过所述预设异常事件率阈值时,判断所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值是否达到所述令牌存储容量上限的初始值;
在判断的结果为否时,对所述令牌存储池的令牌存储容量上限进行升级处理,将升级处理后的所述令牌存储容量上限的值作为所述目标值。
4.根据权利要求3所述的实现流量控制的方法,其特征在于,所述对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行降级处理包括:
获取所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值;
确定所述当前值与预设降级系数的乘积,得到容量下调值;
确定所述当前值与所述容量下调值的差值,所述当前值与所述容量下调值的差值作为降级处理后的所述令牌存储容量上限的值。
5.根据权利要求3所述的实现流量控制的方法,其特征在于,所述对所述令牌存储池的令牌存储容量上限进行升级处理包括:
获取所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值;
确定所述当前值与预设升级系数的乘积,得到容量上调值;
确定所述当前值与所述容量上调值的和值,所述当前值与所述容量上调值的和值作为升级处理后的所述令牌存储容量上限的值。
6.根据权利要求1所述的实现流量控制的方法,其特征在于,所述确定业务请求事件中的异常事件率包括:
获取预设时间间隔内的业务请求事件所对应的请求时长;
确定所述请求时长超过预设时长的业务请求事件的第二数量;
确定所述第二数量与所述预设时间间隔内的业务请求事件的总数量的比值,将所述比值作为所述异常事件率。
7.根据权利要求1所述的实现流量控制的方法,其特征在于,所述针对所述第一服务节点发送的令牌申请请求,根据调整后的令牌存储容量上限确定所述第一服务节点的令牌申请是否成功包括:
接收第一服务节点发送的令牌申请请求;所述令牌申请请求包括申请的令牌数量;
根据调整后的令牌存储容量上限,判断所述令牌存储池中的令牌数量是否与所申请的令牌数量相匹配;
在判断的结果为是时,确定所述第一服务节点的令牌申请成功。
8.一种实现流量控制的装置,其特征在于,所述装置包括:
第一确定模,用于确定业务请求事件中的异常事件率,所述业务请求事件是指第一服务节点向第二服务节点发送业务请求的事件;
比对模块,用于将所述异常事件率与预设异常事件率阈值进行比对;
调整模块,用于根据比对的结果,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整;
第二确定模块,用于针对所述第一服务节点发送的令牌申请请求,根据调整后的令牌存储容量上限确定所述第一服务节点的令牌申请是否成功;
返回模块,用于在确定所述第一服务节点的令牌申请成功时,向所述第一服务节点返回所述令牌申请成功的响应消息,所述令牌申请成功的响应消息用于触发所述第一服务节点执行所述业务请求事件。
9.一种服务器,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1~7中任一项所述的实现流量控制的方法。
10.一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1~7任一项所述的实现流量控制的方法。

说明书全文

一种实现流量控制的方法、装置、服务器及存储介质

技术领域

[0001] 本发明涉及计算机技术领域,特别涉及一种实现流量控制的方法、装置、服务器及存储介质。

背景技术

[0002] 在大流量的复杂业务中常常涉及到多个服务节点,各个服务节点之间存在业务功能的调用关系,当被调用的服务节点出现异常时,会导致发起调用的服务节点的网络连接被瞬间占用完,造成后续请求的阻塞,这些请求的阻塞可能会占用内存、线程、数据库连接等资源,最终造成使用这些资源的其他服务节点不能正常工作,导致整个业务的崩效应。
[0003] 因此,需要有效或者可靠的技术方案来实现对服务节点所承受的流量的控制,以避免上述雪崩效应的发生。

发明内容

[0004] 为了解决现有技术的问题,本发明实施例提供了一种实现流量控制的方法、装置、服务器及存储介质。所述技术方案如下:
[0005] 一方面,提供了一种实现流量控制的方法,所述方法包括:
[0006] 确定业务请求事件中的异常事件率,所述业务请求事件是指第一服务节点向第二服务节点发送业务请求的事件;
[0007] 将所述异常事件率与预设异常事件率阈值进行比对;
[0008] 根据比对的结果,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整;
[0009] 针对所述第一服务节点发送的令牌申请请求,根据调整后的令牌存储容量上限确定所述第一服务节点的令牌申请是否成功;
[0010] 在确定所述第一服务节点的令牌申请成功时,向所述第一服务节点返回所述令牌申请成功的响应消息,所述令牌申请成功的响应消息用于触发所述第一服务节点执行所述业务请求事件。
[0011] 另一方面,提供了一种实现流量控制的装置,所述装置包括:
[0012] 第一确定模,用于确定业务请求事件中的异常事件率,所述业务请求事件是指第一服务节点向第二服务节点发送业务请求的事件;
[0013] 比对模块,用于将所述异常事件率与预设异常事件率阈值进行比对;
[0014] 调整模块,用于根据比对的结果,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整;
[0015] 第二确定模块,用于针对所述第一服务节点发送的令牌申请请求,根据调整后的令牌存储容量上限确定所述第一服务节点的令牌申请是否成功;
[0016] 返回模块,用于在确定所述第一服务节点的令牌申请成功时,向所述第一服务节点返回所述令牌申请成功的响应消息,所述令牌申请成功的响应消息用于触发所述第一服务节点执行所述业务请求事件。
[0017] 在一个可选的实施方式中,所述调整模块包括:
[0018] 第三确定模块,用于根据比对的结果,确定所述第二服务节点所对应的令牌存储池的令牌存储容量上限的目标值;
[0019] 第一获取模块,用于获取所述第二服务节点所对应的令牌生产进程的心跳信息;
[0020] 第四确定模块,用于根据所述心跳信息,确定存活的令牌生产进程的第一数量;
[0021] 第五确定模块,用于根据所述第一数量和目标值,确定每个所述存活的令牌生产进程的令牌生产速率;
[0022] 存储模块,用于将每个所述存活的令牌生产进程根据所述令牌生产速率生产的令牌存入所述令牌存储池中。
[0023] 在一个可选的实施方式中,所述第三确定模块包括:
[0024] 降级处理模块,用于在比对的结果为所述异常事件率超过所述预设异常事件率阈值时,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行降级处理,将降级处理后的所述令牌存储容量上限的值作为所述目标值;
[0025] 第一判断模块,用于在比对的结果为所述异常事件率未超过所述预设异常事件率阈值时,判断所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值是否达到所述令牌存储容量上限的初始值;
[0026] 升级处理模块,用于在第一判断模块判断的结果为否时,对所述令牌存储池的令牌存储容量上限进行升级处理,将升级处理后的所述令牌存储容量上限的值作为所述目标值。
[0027] 在一个可选的实施方式中,所述降级处理模块包括:
[0028] 第二获取模块,用于获取所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值;
[0029] 第六确定模块,用于确定所述当前值与预设降级系数的乘积,得到容量下调值;
[0030] 第七确定模块,用于确定所述当前值与所述容量下调值的差值,所述当前值与所述容量下调值的差值作为降级处理后的所述令牌存储容量上限的值。
[0031] 在一个可选的实施方式中,所述升级处理模块包括:
[0032] 第三获取模块,用于获取所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值;
[0033] 第八确定模块,用于确定所述当前值与预设升级系数的乘积,得到容量上调值;
[0034] 第九确定模块,用于确定所述当前值与所述容量上调值的和值,所述当前值与所述容量上调值的和值作为升级处理后的所述令牌存储容量上限的值。
[0035] 在一个可选的实施方式中,所述第一确定模块包括:
[0036] 第四获取模块,用于获取预设时间间隔内的业务请求事件所对应的请求时长;
[0037] 第十确定模块,用于确定所述请求时长超过预设时长的业务请求事件的第二数量;
[0038] 第十一确定模块,用于确定所述第二数量与所述预设时间间隔内的业务请求事件的总数量的比值,将所述比值作为所述异常事件率。
[0039] 在一个可选的实施方式中,所述第二确定模块包括:
[0040] 接收模块,用于接收第一服务节点发送的令牌申请请求;所述令牌申请请求包括申请的令牌数量;
[0041] 第二判断模块,用于根据调整后的令牌存储容量上限,判断所述令牌存储池中的令牌数量是否与所申请的令牌数量相匹配;
[0042] 第十二确定模块,用于在第二判断模块判断的结果为是时,确定所述第一服务节点的令牌申请成功。
[0043] 另一方面,提供了一种服务器,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述实现流量控制的方法。
[0044] 另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述的实现流量控制的方法。
[0045] 本发明实施例通过业务请求事件中的异常事件率与预设异常事件率阈值的比对结果来对第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整,进而针对第一服务节点发送的令牌申请请求,可以根据调整后的令牌存储容量上限来确定该第一服务节点的令牌申请是否成功,并在确定令牌申请成功时,向该第一服务节点返回用于触发该第一服务节点执行业务请求事件的令牌申请成功的响应消息,从而实现根据被调用的服务节点(即第二服务节点)的服务状态对流量进行控制,避免了被调用的服务节点大规模异常时对网络连接的占用,进而有效避免了整个业务的雪崩效应的出现。附图说明
[0046] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0047] 图1是本发明实施例提供的一种实施环境的示意图;
[0048] 图2是本发明实施例提供的实现流量控制的方法的流程示意图;
[0049] 图3是本发明实施例提供的根据比对的结果对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整的一种方法的流程示意图;
[0050] 图4a和图4b为采用本发明实施例提供的实现流量控制的方法进行流量控制的测试效果图;
[0051] 图5是本发明实施例提供的一种实现流量控制的装置的结构示意图;
[0052] 图6是本发明实施例提供的另一种实现流量控制的装置的结构示意图;
[0053] 图7是本发明实施例提供的一种服务器的硬件结构框图

具体实施方式

[0054] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0055] 需要说明的是,本发明的说明书权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0056] 请参阅图1,其所示为本发明实施例提供的一种实施环境示意图,该实施环境可以包括客户端110、第一服务节点120、第二服务节点130和流量控制服务器140。
[0057] 其中,客户端110可以向第一服务节点120发送用户请求,该客户端110可以是智能手机、台式电脑、平板电脑笔记本电脑等具有各种操作系统的硬件设备,也可以是配置在上述硬件设备中的软件,如应用程序。
[0058] 第一服务节点120在接收到客户端110发送的用户请求后,可以根据该用户请求所请求的业务对第二服务节点130的相关应用程序编程接口(Application Programming Interface,API)发起调用,API是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能,而又无需访问源码或理解内部工作机制的细节。其中,服务节点可以是服务器、被调用的应用程序编程接口,也可以是其他的计算机设备。
[0059] 本说明书实施例中,为了能够有效应对突发的流量和避免整个业务的雪崩效应的出现,设置了流量控制服务器140,该流量控制服务器140可以实现对被调用的第二服务节点130所承受的流量的控制。流量控制服务器140通过网络分别与第一服务节点120和第二服务节点130连接通信,该网络可以是有线网络或者无线网络。流量控制服务器140可以是一个独立运行的服务器,也可以是由多个服务器组成的服务器集群。
[0060] 请参阅图2,其所示为本发明实施例提供的一种实现流量控制的方法的流程示意图,该方法可以应用于图1中的流量控制服务器。需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
[0061] S201,确定业务请求事件中的异常事件率。
[0062] 其中,所述业务请求事件是指第一服务节点向第二服务节点发送业务请求的事件。
[0063] 具体的,当第一服务节点需要调用第二服务节点的相关应用程序编程接口时,第一服务节点的业务请求模块可以在满足预设条件的情况下向第二服务节点发送业务请求,第一服务节点在发送业务请求后,可以通过第一服务节点的本地日志生成对应该业务请求的请求日志,该请求日志中可以但不限于记录相应业务请求的请求时长、请求成功或请求失败等信息。
[0064] 需要说明的是,第一服务节点是需要调用第二服务节点的相关应用程序编程接口的多个服务节点中的任一服务节点。
[0065] 本说明书实施例中,为了便于后续对请求日志的统计分析,第一服务节点可以将请求日志存储在指定的存储位置,该指定的存储位置可以是基于分布式文件存储的数据库如Mongo  DB,也可以是分布式多用户能力的全文搜索引擎如Elasticsearch,Elasticsearch是一个基于Apache Lucene的开源搜索服务器,它允许快速和接近实时地存储、搜索和分析大量数据。
[0066] 本说明书实施例中,异常事件率是指业务请求事件中表现异常的业务请求事件占总业务请求事件的比率。具体的实施中,表现异常的业务请求事件可以但不限于包括请求时长超过预设时长的业务请求事件,请求失败的业务请求事件等等,相应的,异常事件率可以但不限于包括超时率、失败率等等。
[0067] 以异常事件率为超时率为例,所述确定业务请求事件中的异常事件率可以包括以下步骤:
[0068] 获取预设时间间隔内的业务请求事件所对应的请求时长。具体的,可以从指定的存储位置查询预设时间间隔内的请求日志,获取各请求日志记录的相应业务请求事件的请求时长。其中,预设时间间隔可以根据实际需要进行设定,例如可以是1分钟、5分钟等等。
[0069] 确定所述请求时长超过预设时长的业务请求事件的第二数量。具体的,将预设时间间隔内各业务请求事件对应的请求时长与预设时长进行比对,统计请求时长超过预设时长的业务请求事件的数量作为第二数量Qabnormal。其中,预设时长可以根据实际需要进行设定,例如可以设置为2s、5s等。一般预设时长设置的越小,对于被调用的服务节点的流量控制越严格。
[0070] 确定所述第二数量与所述预设时间间隔内的业务请求事件的总数量的比值,将所述比值作为所述异常事件率。具体的,可以将预设时间间隔内的业务请求事件的总数量记为QTotal,则超时率=Qabnormal/QTotal,该超时率可以作为异常事件率。
[0071] S203,将所述异常事件率与预设异常事件率阈值进行比对。
[0072] 其中,预设异常事件率阈值可以根据实际应用中的历史经验进行设定,例如可以设定为0.5、0.7等等。
[0073] S205,根据比对的结果,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整。
[0074] 本说明书实施例中,令牌存储池的令牌存储容量上限是指单位时间内该令牌存储池允许存储的令牌数量的最大值,可以表征为每秒并发写入的最大令牌数量,例如可以是100qps、50qps等等。实际应用中,可以采用图3中的方法实现根据比对的结果对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整,如图3所示,该方法可以包括:
[0075] S301,根据比对的结果,确定所述第二服务节点所对应的令牌存储池的令牌存储容量上限的目标值。
[0076] 本说明书实施例中,当比对的结果为异常事件率超过所述预设异常事件率阈值时,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行降级处理,并将降级处理后的所述令牌存储容量上限的值作为所述目标值。
[0077] 当比对的结果为异常事件率未超过所述预设异常事件率阈值时,判断所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值是否达到所述令牌存储容量上限的初始值;在判断的结果为否时,对所述令牌存储池的令牌存储容量上限进行升级处理,将升级处理后的所述令牌存储容量上限的值作为所述目标值。
[0078] 实际应用中,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行降级处理可以包括以下步骤:
[0079] 获取所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值。
[0080] 确定所述当前值与预设降级系数的乘积,得到容量下调值。其中,预设降级系数的取值范围为(0,1),具体取值可以根据实际需要进行设定,例如可以设定为0.5等等。本说明书实施例中,预设降级系数可以是固定的数值,也可以是变化的数值。例如,(异常事件率-预设异常事件率阈值)≤A1时,预设降级系数f1取值为z1,A1<(异常事件率-预设异常事件率阈值)
[0081] 确定所述当前值与所述容量下调值的差值,所述当前值与所述容量下调值的差值作为降级处理后的所述令牌存储容量上限的值。即降级处理后的令牌存储容量上限的值=C1-C1*f1,其中,C1表示令牌存储容量上限的当前值;f1表示预设降级系数,f1∈(0,1)。
[0082] 实际应用中,对所述令牌存储池的令牌存储容量上限进行升级处理可以包括以下步骤:
[0083] 获取所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值。
[0084] 确定所述当前值与预设升级系数的乘积,得到容量上调值。其中,预设升级系数可以根据实际需要进行设定,例如可以是0.5、1等。本说明书实施例中,预设升级系数可以是固定的数值,也可以是变化的数值。例如,(预设异常事件率阈值-异常事件率)≤B1时,预设降级系数f2取值为p1,B1<(预设异常事件率阈值-异常事件率)
[0085] 确定所述当前值与所述容量上调值的和值,所述当前值与所述容量上调值的和值作为升级处理后的所述令牌存储容量上限的值。即升级处理后的令牌存储容量上限的值=C1+C1*f2,其中,C1表示令牌存储容量上限的当前值;f2表示预设升级系数。
[0086] 实际应用中,会经过线下容量评估以确定第二服务节点所对应令牌存储池的令牌存储容量上限的初始值,该初始值一般为令牌存储容量上限的最大值,可以将线下评估确定的初始值存储在配置数据库中。在进行升级处理时,在将当前值与所述容量上调值的和值作为升级处理后的所述令牌存储容量上限的值之前,可以从配置数据库中获取第二服务节点所对应令牌存储池的令牌存储容量上限的初始值,判断当前值与所述容量上调值的和值是否超过令牌存储容量上限的初始值,若未超过令牌存储容量上限的初始值,则可以将当前值与所述容量上调值的和值作为升级处理后的所述令牌存储容量上限的值;若超过令牌存储容量上限的初始值,则将令牌存储容量上限的初始值作为升级处理后的所述令牌存储容量上限的值。
[0087] S303,获取所述第二服务节点所对应的令牌生产进程的心跳信息。
[0088] 本说明书实施例中,第二服务节点所对应的令牌生产进程可以分布式部署在多台机器,每台机器可以部署多个该令牌生产进程,且每台机器的每个该令牌生产进程都会上报心跳信息,该上报的心跳信息可以存储在Key-Value数据库如redis或者关系型数据库如MySQL中。如此,当某个该令牌生产进程挂了时,可以使用其他该令牌生产进程继续生产令牌;当某个机器挂了,可以使用其他机器上的该令牌生产进程继续生产令牌。
[0089] S305,根据所述心跳信息,确定存活的令牌生产进程的第一数量。
[0090] 具体的,一个心跳信息代表一个存活的上述令牌生产进程,通过统计获取到的心跳信息可以确定当前存活的令牌生产进程的数量作为第一数量。
[0091] S307,根据所述第一数量和目标值,确定每个所述存活的令牌生产进程的令牌生产速率。
[0092] 具体的,将目标值除以第一数量可以得到每个存活的上述令牌生产进程的令牌生产速率。例如,目标值为100qps,存活的上述令牌生产进程的第一数量为2,则每个存活的上述令牌生产进程的令牌生产速率=100qps/2=50qps。
[0093] S309,将每个所述存活的令牌生产进程根据所述令牌生产速率生产的令牌存入所述令牌存储池中。
[0094] 本说明书实施例中,令牌存储池中的令牌存储可以采用队列形式,通过队列可以保证消耗的令牌不会超过令牌存储池中已有令牌的总数,也可以减少使用的复杂度和代码侵入性。
[0095] S207,针对所述第一服务节点发送的令牌申请请求,根据调整后的令牌存储容量上限确定所述第一服务节点的令牌申请是否成功。
[0096] 本说明书实施例中,第一服务节点在向第二服务节点发送业务请求之前,需要向流量控制服务器申请相应的令牌,只有在申请到令牌的情况下,才能向第二服务节点发送该业务请求。流量控制服务器针对第一服务节点发送的令牌申请请求,可以根据调整后的令牌存储容量上限来确定第一服务节点的令牌申请是否成功。具体的实施中,步骤S207可以包括:
[0097] 接收第一服务节点发送的令牌申请请求;所述令牌申请请求包括申请的令牌数量。
[0098] 根据调整后的令牌存储容量上限,判断所述令牌存储池中的令牌数量是否与所申请的令牌数量相匹配。
[0099] 在判断的结果为是时,确定所述第一服务节点的令牌申请成功。具体的,当令牌存储池中的令牌数量超过所申请的令牌数量时,表明令牌存储池中的令牌数量与所申请的令牌数量相匹配,此时可以确定第一服务节点的令牌申请成功,可以执行步骤S209;当令牌存储池中的令牌数量小于所申请的令牌数量时,表明令牌存储池中的令牌数量与所申请的令牌数量不匹配,此时可以确定第一服务节点的令牌申请失败。
[0100] S209,在确定所述第一服务节点的令牌申请成功时,向所述第一服务节点返回所述令牌申请成功的响应消息。
[0101] 其中,所述令牌申请成功的响应消息用于触发所述第一服务节点执行所述业务请求事件。
[0102] 本说明书实施例中,当确定第一服务节点的令牌申请成功时,生成令牌申请成功的响应消息,该响应消息中可以携带所申请的令牌数量的令牌,并向第一服务节点返回该令牌申请成功的响应消息,第一服务节点在接收到该令牌申请成功的响应消息后,可以执行向第二服务节点发送业务请求的事件即发起对第二服务节点的相应应用程序编程接口的调用。具体的实施中,在向第一服务节点返回令牌申请成功的响应消息后,可以将令牌存储池中的令牌数量减少所申请的令牌数量。
[0103] 实际应用中,当确定第一服务节点的令牌申请失败时,还可以向第一服务节点返回令牌申请失败的响应消息,第一服务节点在接收到该令牌申请失败的响应消息后对相应的业务请求进行丢弃,从而可以调整对第二服务节点的调用频率
[0104] 可以理解的,实际的流量控制过程中,当异常事件率超过预设异常事件率阈值时,对令牌存储池的令牌存储容量上限的一次降级处理往往很难将异常事件率控制在预设异常事件率阈值以下,因此,本发明实施例的上述实现流量控制的方法实际是一个动态调控的过程,即当异常事件率超过预设异常事件率阈值时,对第二服务节点所对应的令牌存储池的令牌存储容量上限进行降级处理,降级处理后可以继续执行上述方法中异常事件率的比对,如果异常事件率仍超过预设异常事件率阈值,则对第二服务节点所对应的令牌存储池的令牌存储容量上限继续进行降级处理,直至异常事件率未超过预设异常事件率阈值。在异常事件率未超过预设异常事件率阈值时,可以对第二服务节点所对应的令牌存储池的令牌存储容量上限进行升级处理,直至令牌存储容量上限到达初始值。
[0105] 请参阅图4a和图4b,其所示为采用本发明实施例提供的实现流量控制的方法进行流量控制的测试效果图,横坐标为时间,纵坐标为每分钟第一服务节点对第二服务节点的调用次数即业务请求事件总数。
[0106] 其中,图4a模拟过载流量:480-500qps,在17:32开启限流功能,可以看到第一服务节点对第二服务节点的请求频率从500qps被限制为了100qps。图4b中,在21:15模拟第二服务节点出现70%的超时率,在21:22超时率开始恢复,可以看到第一服务节点对第二服务节点发起的请求次数先是逐步衰减,在21:22-21:28的时间,请求次数逐步恢复正常。
[0107] 由本发明实施例的上述技术方案可见,本发明实施例可以根据被调用方即第二服务节点的服务状态对第二服务节点所承受的流量进行动态的控制,避免了被调用方大规模异常时对网络连接的占用,进而有效避免了整个业务的雪崩效应的出现。
[0108] 此外,本发明实施例还能够在业务请求量突增时,有效的判断被调用的服务节点的容量阈值,通过限流避免对被调用的服务节点产生影响。
[0109] 与上述几种实施例提供的实现流量控制的方法相对应,本发明实施例还提供一种实现流量控制的装置,由于本发明实施例提供的实现流量控制的装置与上述几种实施例提供的实现流量控制的方法相对应,因此前述实现流量控制的方法的实施方式也适用于本实施例提供的实现流量控制的装置,在本实施例中不再详细描述。
[0110] 请参阅图5,其所示为本发明实施例提供的一种实现流量控制的装置的结构示意图,该装置具有实现上述方法实施例中实现流量控制的方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图5所示,该装置可以包括:
[0111] 第一确定模块510,用于确定业务请求事件中的异常事件率,所述业务请求事件是指第一服务节点向第二服务节点发送业务请求的事件;
[0112] 比对模块520,用于将所述异常事件率与预设异常事件率阈值进行比对;
[0113] 调整模块530,用于根据比对的结果,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整;
[0114] 第二确定模块540,用于针对所述第一服务节点发送的令牌申请请求,根据调整后的令牌存储容量上限确定所述第一服务节点的令牌申请是否成功;
[0115] 返回模块550,用于在确定所述第一服务节点的令牌申请成功时,向所述第一服务节点返回所述令牌申请成功的响应消息,所述令牌申请成功的响应消息用于触发所述第一服务节点执行所述业务请求事件。
[0116] 在一个可选的实施方式中,调整模块530可以包括:
[0117] 第三确定模块,用于根据比对的结果,确定所述第二服务节点所对应的令牌存储池的令牌存储容量上限的目标值;
[0118] 第一获取模块,用于获取所述第二服务节点所对应的令牌生产进程的心跳信息;
[0119] 第四确定模块,用于根据所述心跳信息,确定存活的令牌生产进程的第一数量;
[0120] 第五确定模块,用于根据所述第一数量和目标值,确定每个所述存活的令牌生产进程的令牌生产速率;
[0121] 存储模块,用于将每个所述存活的令牌生产进程根据所述令牌生产速率生产的令牌存入所述令牌存储池中。
[0122] 在一个可选的实施方式中,第三确定模块可以包括:
[0123] 降级处理模块,用于在比对的结果为所述异常事件率超过所述预设异常事件率阈值时,对所述第二服务节点所对应的令牌存储池的令牌存储容量上限进行降级处理,将降级处理后的所述令牌存储容量上限的值作为所述目标值;
[0124] 第一判断模块,用于在比对的结果为所述异常事件率未超过所述预设异常事件率阈值时,判断所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值是否达到所述令牌存储容量上限的初始值;
[0125] 升级处理模块,用于在第一判断模块判断的结果为否时,对所述令牌存储池的令牌存储容量上限进行升级处理,将升级处理后的所述令牌存储容量上限的值作为所述目标值。
[0126] 在一个可选的实施方式中,降级处理模块可以包括:
[0127] 第二获取模块,用于获取所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值;
[0128] 第六确定模块,用于确定所述当前值与预设降级系数的乘积,得到容量下调值;
[0129] 第七确定模块,用于确定所述当前值与所述容量下调值的差值,所述当前值与所述容量下调值的差值作为降级处理后的所述令牌存储容量上限的值。
[0130] 在一个可选的实施方式中,所述升级处理模块包括:
[0131] 第三获取模块,用于获取所述第二服务节点所对应的令牌存储池的令牌存储容量上限的当前值;
[0132] 第八确定模块,用于确定所述当前值与预设升级系数的乘积,得到容量上调值;
[0133] 第九确定模块,用于确定所述当前值与所述容量上调值的和值,所述当前值与所述容量上调值的和值作为升级处理后的所述令牌存储容量上限的值。
[0134] 在一个可选的实施方式中,第一确定模块510可以包括:
[0135] 第四获取模块,用于获取预设时间间隔内的业务请求事件所对应的请求时长;
[0136] 第十确定模块,用于确定所述请求时长超过预设时长的业务请求事件的第二数量;
[0137] 第十一确定模块,用于确定所述第二数量与所述预设时间间隔内的业务请求事件的总数量的比值,将所述比值作为所述异常事件率。
[0138] 在一个可选的实施方式中,第二确定模块540可以包括:
[0139] 接收模块,用于接收第一服务节点发送的令牌申请请求;所述令牌申请请求包括申请的令牌数量;
[0140] 第二判断模块,用于根据调整后的令牌存储容量上限,判断所述令牌存储池中的令牌数量是否与所申请的令牌数量相匹配;
[0141] 第十二确定模块,用于在第二判断模块判断的结果为是时,确定所述第一服务节点的令牌申请成功。
[0142] 需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能,如图6提供的另一种实现流量控制的装置的结构示意图,该装置可以包括:令牌存储模块610,令牌生产模块620,令牌中控模块630、动态限流模块640和初始化配置模块650。
[0143] 其中,令牌存储模块610可以存储第二服务节点所对应的令牌,并可以用于执行图5中第二确定模块540和返回模块550的相应功能。
[0144] 令牌生产模块620和令牌中控模块630可以用于执行图5中调整模块530的相应功能。具体的,令牌中控模块630可以根据动态限流模块640同步过来的信息以及令牌生产模块620中存活的令牌生产进程数量安排令牌生产模块620中每个机器的每个存活的令牌生产进程具体每秒给第二服务节点生产令牌的数量。
[0145] 动态限流模块640可以包括Elasticsearch、接口异常率统计模块和阈值判断动态限流模块,其中,Elasticsearch可以用于请求日志的存储;接口异常率统计模块可以用于执行图5总第一确定模块510的相应功能;阈值判断动态限流模块可以用于执行图5中比对模块520的相应功能,并将比对结果同步到令牌中控模块630。
[0146] 初始化配置模块650可以用于存储第二服务节点所对应的令牌存储池的令牌存储容量上限的初始值。例如,第二服务节点经过线下容量评估只能到100qps,则初始化配置模块里就存储100qps的数值作为上述的初始值。
[0147] 另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0148] 本发明实施例的实现流量控制的装置通过业务请求事件中的异常事件率与预设异常事件率阈值的比对结果来对第二服务节点所对应的令牌存储池的令牌存储容量上限进行调整,进而针对第一服务节点发送的令牌申请请求,可以根据调整后的令牌存储容量上限来确定该第一服务节点的令牌申请是否成功,并在确定令牌申请成功时,向该第一服务节点返回用于触发该第一服务节点执行业务请求事件的令牌申请成功的响应消息,从而实现根据被调用方(即第二服务节点)的服务状态对流量进行控制,避免了被调用方大规模异常时对网络连接的占用,进而有效避免了整个业务的雪崩效应的出现。
[0149] 此外,本发明实施例的实现流量控制的装置还能够在业务请求量突增时,有效的判断被调用的服务节点的容量阈值,通过限流避免对被调用的服务节点产生影响。
[0150] 本发明实施例提供了一种服务器,该服务器包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的实现流量控制的方法。
[0151] 存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及流量控制。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
[0152] 本发明实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图7是本发明实施例提供的运行一种实现流量控制的方法的服务器的硬件结构框图,如图7所示,该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)710(处理器710可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器730,一个或一个以上存储应用程序723或数据722的存储介质720(例如一个或一个以上海量存储设备)。其中,存储器730和存储介质720可以是短暂存储或持久存储。存储在存储介质720的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器710可以设置为与存储介质720通信,在服务器700上执行存储介质720中的一系列指令操作。服务器700还可以包括一个或一个以上电源
760,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口740,和/或,一个或一个以上操作系统721,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
[0153] 输入输出接口740可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器700的通信供应商提供的无线网络。在一个实例中,输入输出接口740包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口740可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
[0154] 本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器700还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。
[0155] 本发明的实施例还提供了一种计算机可读存储介质,所述存储介质可设置于终端之中以保存用于实现一种实现流量控制的方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的实现流量控制的方法。
[0156] 可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0157] 需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0158] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0159] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0160] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈