CN111555987B - 限流配置方法、装置、设备及计算机存储介质 - Google Patents
限流配置方法、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN111555987B CN111555987B CN202010352801.XA CN202010352801A CN111555987B CN 111555987 B CN111555987 B CN 111555987B CN 202010352801 A CN202010352801 A CN 202010352801A CN 111555987 B CN111555987 B CN 111555987B
- Authority
- CN
- China
- Prior art keywords
- current
- time
- processor
- limiting
- current limiting
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/22—Traffic shaping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/20—Traffic policing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及金融科技(Fintech)技术领域,并公开了一种限流配置方法,该方法包括:确定与服务端建立连接的多个客户端,根据各个所述客户端的参数,将各所述客户端与各自对应的限流处理器进行连接;若在各所述限流处理器中的目标限流处理器接收到请求指令,则计算所述目标限流处理器执行所述请求指令的延迟时间,并检测所述延迟时间是否大于预设的最大延迟时间;若所述延迟时间小于或等于预设的最大延迟时间,则控制所述目标限流处理器基于所述延迟时间执行所述请求指令。本发明还公开了一种限流配置装置、设备和一种计算机存储介质。本发明提高了限流配置的稳定性。
Description
技术领域
本发明涉及金融科技(Fintech)的测试技术领域,尤其涉及限流配置方法、装置、设备及计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链Blockchain、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。目前针对sftp(SSH FileTransfer Protocol,安全文件传送协议)文件的限流操作一般是采用单连接限流或全局限流的方式进行的。其中,单连接限流是采用类似固定窗口算法。定时刷新窗口,在每个限流窗口,当有字节数为n的新IO(Input/Output,输入/输出)到来时,读取限流配置m byte/s,计算需延迟处理IO任务的时间为n/m-上次IO执行完的时间。而全局限流是采用类似固定窗口算法。定时刷新窗口,在每个限流窗口,当有字节数为n的新IO到来时,读取限流配置mbyte/s,计算需延迟处理IO任务的时间为n/m-上次IO执行完的时间,IO任务放到各个socket channel(套接字通道)单独的处理队列中等待处理。但是采用这两种方式中的任意一种,均会在限流配置更新时,造成限流统计数据清空,使得瞬间流量突破限流配置,让限流配置无效。因此,如何提高限流配置的稳定性成为了目前亟待解决的技术问题。
发明内容
本发明的主要目的在于提出一种限流配置方法、装置、设备及计算机存储介质,旨在解决如何提高限流配置的稳定性的技术问题。
为实现上述目的,本发明提供一种限流配置方法,所述限流配置方法包括如下步骤:
确定与服务端建立连接的多个客户端,根据各个所述客户端的参数,将各所述客户端与各自对应的限流处理器进行连接;
若在各所述限流处理器中的目标限流处理器接收到请求指令,则计算所述目标限流处理器执行所述请求指令的延迟时间,并检测所述延迟时间是否大于预设的最大延迟时间;
若所述延迟时间小于或等于预设的最大延迟时间,则控制所述目标限流处理器基于所述延迟时间执行所述请求指令。
可选地,所述将各所述客户端与各自对应的限流处理器进行连接的步骤之前,包括:
检测各所述限流处理器中的限流参数配置是否存在已进行更新处理的目标限流参数;
若存在已进行更新处理的目标限流参数,则获取当前时间,并根据所述当前时间对所述目标限流参数进行更新。
可选地,所述根据所述当前时间对所述目标限流参数进行更新的步骤,包括:
获取所述目标限流参数的请求时间,并检测所述请求时间是否大于所述当前时间;
若所述请求时间大于所述当前时间,则计算所述请求时间与所述当前时间之间的第一差值,并计算所述第一差值与所述目标限流参数中的旧限流速度配置的第一乘积;
计算所述第一乘积与所述目标限流参数中的新限流速度配置的第一比值,再计算所述第一比值和所述当前时间的第一和值,并将所述目标限流参数中的请求时间替换为所述第一和值。
可选地,所述计算所述目标限流处理器执行所述请求指令的延迟时间的步骤,包括:
基于所述请求指令确定所述目标限流处理器中的新限流速度配置,和所述目标限流处理器中的历史请求时间;
根据所述新限流速度配置和所述历史请求时间计算所述请求指令的延迟时间。
可选地,所述根据所述新限流速度配置和所述历史请求时间计算所述请求指令的延迟时间的步骤,包括:
确定所述请求指令对应的字节数量,并计算所述字节数量与所述新限流速度配置的第二比例值;
计算所述第二比例值和所述历史请求时间之间的第二差值,并将所述第二差值作为所述请求指令的延迟时间。
可选地,所述将各所述客户端与各自对应的限流处理器进行连接的步骤,包括:
依次遍历各所述客户端,根据当前遍历的当前客户端携带的参数信息在多个具有限流处理器的分组中确定目标分组,检测所述目标分组中是否存在和所述当前客户端匹配的限流处理器;
若存在,则将所述当前客户端和所述当前客户端匹配的限流处理器进行连接,直至各所述客户端遍历完成。
可选地,所述控制所述目标限流处理器基于所述延迟时间执行所述请求指令的步骤之后,包括:
确定所述目标限流处理器对应的客户端,并在检测到所述目标限流处理器对应的客户端和所述目标限流处理器断开连接时,对所述目标限流处理器进行清空处理。
此外,为实现上述目的,本发明还提供一种限流配置装置,所述限流配置装置包括:
连接单元,用于确定与服务端建立连接的多个客户端,根据各个所述客户端的参数,将各所述客户端与各自对应的限流处理器进行连接;
计算单元,用于若在各所述限流处理器中的目标限流处理器接收到请求指令,则计算所述目标限流处理器执行所述请求指令的延迟时间,并检测所述延迟时间是否大于预设的最大延迟时间;
执行单元,用于若所述延迟时间小于或等于预设的最大延迟时间,则控制所述目标限流处理器基于所述延迟时间执行所述请求指令。
此外,为实现上述目的,本发明还提供一种限流配置设备,所述限流配置设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的限流配置程序,所述限流配置程序被所述处理器执行时实现如上所述的限流配置方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有限流配置程序,所述限流配置程序被处理器执行时实现如上所述的限流配置方法的步骤。
本发明通过确定与服务端建立连接的多个客户端,根据各个所述客户端的参数,将各所述客户端与各自对应的限流处理器进行连接;若在各所述限流处理器中的目标限流处理器接收到请求指令,则计算所述目标限流处理器执行所述请求指令的延迟时间,并检测所述延迟时间是否大于预设的最大延迟时间;若所述延迟时间小于或等于预设的最大延迟时间,则控制所述目标限流处理器基于所述延迟时间执行所述请求指令。通过将各个客户端与各自对应的限流处理器进行连接,从而避免了将所有客户端都放置在同一个限流处理器中进行处理,导致出现瞬间流量数据突破限流处理器中的限流配置现象发生,保障了限流处理器的正常运行,并且在目标限流处理器接收到请求指令时,根据请求指令计算延迟时间,并控制目标限流处理器基于延迟时间执行请求指令,从而可以使得限流处理器能有效稳定地运行请求指令,提高了限流配置的稳定性。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的限流配置设备结构示意图;
图2为本发明限流配置方法第一实施例的流程示意图;
图3为本发明限流配置装置的装置模块示意图;
图4为本发明限流配置方法中参数配置的流程示意图;
图5为本发明限流配置方法限流处理器的流程管理示意图;
图6为本发明限流配置方法中限流处理的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的限流配置设备结构示意图。
本发明实施例限流配置设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该限流配置设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的限流配置设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及限流配置程序。
在图1所示的限流配置设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的限流配置程序,并执行下述限流配置方法中的操作。
基于上述硬件结构,提出本发明限流配置方法实施例。
参照图2,图2为本发明限流配置方法第一实施例的流程示意图,所述方法包括:
步骤S10,确定与服务端建立连接的多个客户端,根据各个所述客户端的参数,将各所述客户端与各自对应的限流处理器进行连接;
在本实施例中,各个名词解释如下:sftp文件系统:支持sftp(安全文件传输协议)的文件系统。socket channel: 用于连接socket套接字,处理网络IO请求的通道。限流: 限制于对端交互的流量。分组集合:记录客户端分组方式的数据集。并且会定义分组内最后一次执行读请求的时间为lastReadTime;最后一次执行写请求的时间为lastWriteTime;旧的读请求的限流速度配置为oldReadTrafficLimit,新的读请求限流速度配置为readTrafficLimit,单位为bytes/s; 旧的写请求的限流速度配置为oldWriteTrafficLimit,新写请求的限流速度配置为writeTrafficLimit,单位为bytes/s;当前时间为currentTime,限流处理器实例当前分配的socket连接数为useCount,限流处理器定时刷新窗口间隔时间为checkInterval,窗口的上次检查时间为lastCheckTime,IO任务最大延迟处理为maxWaitTime。
并且在本实施例中,不同sftp客户端可以通过专线接入服务端的,并在多个客户端接入服务端后,可以对各个客户端进行分组限流处理。而且在服务端中,对各个限流处理器进行分组处理时,会配置各组的限流参数,将配置的参数存入数据库或配置文件中。其中,配置参数可以为:readTrafficLimit,writeTrafficLimit,checkInterval,maxWaitTime和组内成员列表(即分组内的客户端ip列表)。并且配置各组的限流参数的方式可以是采用多种刷新方式来更新限流处理器(如定时拉取配置或配置更新时调用应用的回调函数)。并且由于当前lastReadTime/lastWriteTime是按照旧的限速配置赋值,所以需要根据新的限速配置更新lastReadTime和lastWriteTime值,以满足新限速配置的需要。即可以根据如图4所示,采用限流配置模块来获取限流配置参数,并将限流参数刷新到内存配置和限流处理器中,即在开始进行配置参数时,先获取配置,并刷新进程内存中的限流参数配置,再解析最新配置,刷新分组集合,并遍历每个限流处理器,刷新限流处理器配置,直至结束。
并当对各个限流处理器进行分组后,可以确定在当前时刻与服务端建立连接的客户端(客户端的数量可以是一个也可以是多个),并且在客户端与服务端建立连接时,根据客户端socket(套接字)的参数,并根据此参数确定服务端中的分组,并建立分组内的限流处理器与此客户端的连接。需要说明的是,每个客户端和不同分组内的限流处理器的连接方式均采用如上所示的方式进行连接。并且每个分组内可以存在多个客户端。例如,如图5中的(a)所示,通过限流处理器管理模块为已建立连接的客户端分配限流处理器,即在客户端开始准备与服务端建立连接时,先请求建立新连接,再根据连接的socket属性(如socket的ip地址)查找内存中的分组集合获取该链接所在的分组。并判断该分组的限流处理器是否已经创建,若未创建,则读取该分组限流配置,新建限流处理器,初始化限流配置的lastReadTime和lastWriteTime为当前时间,初始化useCount为0。若已创建,则将限流处理器分配给该连接,同时将限流处理器useCount值加1;直至结束。
并且需要说明的是,如图5中的(b)所示,在客户端与服务端断开连接时,即在连接释放时,会清理无用的限流处理器,即在开始释放连接后,会将此连接的限流处理器的useCount值减1,并检测该限流处理器的useCount是否为0,若否,则继续保留此限流处理器。若是,销毁该限流处理器,并结束。
步骤S20,若在各所述限流处理器中的目标限流处理器接收到请求指令,则计算所述目标限流处理器执行所述请求指令的延迟时间,并检测所述延迟时间是否大于预设的最大延迟时间;
当限流处理器与客户端建立连接后,在对限流处理器的窗口检查执行情况时,会在限流处理器加锁过程中更新lastCheckTime(窗口上次检查时间)为当前时间。若lastReadTime和lastWriteTime小于lastCheckTime,则更新lastReadTime和lastWriteTime为lastCheckTime。
并且当在各个限流处理器中的目标限流处理器中接收到请求指令时,会根据请求指令的类型计算目标限流处理器执行不同请求指令的延迟时间,并会检测该延迟时间是否大于预设的最大延迟时间(即用户提前设置的任意延迟时间),再基于不同的检测结果执行不同的操作。并且在本实施例中,请求指令可以包括读请求(即IO读请求)和写请求(即IO写请求)。在请求指令为读请求时,如图6中的(a)所示,开始检测到IO读请求到来后,先假设读请求的报文为n bytes,限流处理器计算当前读请求需要延时执行的时间(即延迟时间),并更新限流处理器统计数据。其中,计算读请求的延迟时间的公式可以是
waitTime = n ÷ readTrafficLimit –( currentTime – lastReadTime)
也就是读请求的延迟时间为当前限速配置下读取n bytes报文的耗时减去当前时间距离上次读请求结束流逝的时间。并在延迟时间是超过最大限流时间时,执行拒绝策略(其中,拒绝策略可以由用户自行定义,如wait Time更新为最大延迟时间,或直接返回客户端错误报文)。若否,即延迟时间未超过最大限流时间,将读IO的处理任务放到各连接的读IO延时执行队列中,等候waitTime时间后调起执行。
在请求指令为写指令时,如图6中的(b)所示,开始检测到IO写请求到来后,先假设写请求的报文为nn bytes,限流处理器计算当前写请求需要延时执行的时间(即延迟时间),并更新限流处理器统计数据。其中,计算写请求的延迟时间的公式可以是
waitTime = nn ÷ writeTrafficLimit –( currentTime – lastWriteTime)
也就是写请求的延迟时间为当前限速配置下写入n bytes报文的耗时减去当前时间距离上次写请求结束流逝的时间。并在延迟时间是超过最大限流时间时,执行拒绝策略(其中,拒绝策略可以由用户自行定义,如wait Time更新为最大延迟时间,或直接返回客户端错误报文)。若否,即延迟时间未超过最大限流时间,将读IO的处理任务放到各连接的写IO延时执行队列中,等候waitTime时间后调起执行。
并且,需要说明的是,在客户端与分组集合内的限流处理器建立连接后,需要确定限流处理器中是否存在和客户端匹配的限流处理器实例,若不存在,则需要创建,而创建限流处理器实例时,需要自启动限流窗口刷新任务,即如图6中的(c)所示,在开始创建限流处理器实例后,限流处理器的限流窗口会重置定时任务,并根据当前时间,重置限流处理器的统计数据,也就是若lastReadTime小于当前时间,则将lastReadTime更新为当前时间;若lastWriteTime小于当前时间,则将lastWriteTime更新为当前时间,直至结束。
步骤S30,若所述延迟时间小于或等于预设的最大延迟时间,则控制所述目标限流处理器基于所述延迟时间执行所述请求指令。
当经过判断发现延迟时间小于或等于预设的最大延迟时间,则可以直接控制目标限流处理器在经过延迟时间后执行该请求指令。但是若延迟时间大于预设的最大延迟时间,则会执行拒绝策略。其中,拒绝策略可以由用户自行定义,如wait Time更新为最大延迟时间,或直接返回客户端错误报文。
在本实施例中,通过确定与服务端建立连接的多个客户端,根据各个所述客户端的参数,将各所述客户端与各自对应的限流处理器进行连接;若在各所述限流处理器中的目标限流处理器接收到请求指令,则计算所述目标限流处理器执行所述请求指令的延迟时间,并检测所述延迟时间是否大于预设的最大延迟时间;若所述延迟时间小于或等于预设的最大延迟时间,则控制所述目标限流处理器基于所述延迟时间执行所述请求指令。通过将各个客户端与各自对应的限流处理器进行连接,从而避免了将所有客户端都放置在同一个限流处理器中进行处理,导致出现瞬间流量数据突破限流处理器中的限流配置现象发生,保障了限流处理器的正常运行,并且在目标限流处理器接收到请求指令时,根据请求指令计算延迟时间,并控制目标限流处理器基于延迟时间执行请求指令,从而可以使得限流处理器能有效稳定地运行请求指令,提高了限流配置的稳定性。
进一步地,基于本发明限流配置方法第一实施例,提出本发明限流配置方法第二实施例。本实施例是本发明第一实施例的步骤S10,将各所述客户端与各自对应的限流处理器进行连接的步骤之前,包括:
步骤b,检测各所述限流处理器中的限流参数配置是否存在已进行更新处理的目标限流参数;
在本实施例中,在进行客户端与限流处理器连接之前,会在服务端的数据库中获取提前设置的配置参数(如定义配置参数为readTrafficLimit,writeTrafficLimit,checkInterval,maxWaitTime和组内成员列表(即分组内的客户端ip列表)),并根据此配置参数依次对不同组内的限流处理器进行参数配置,并在配置完成后,可以继续将配置的参数存入数据库或者配置文件中。其中,对限流处理器进行参数配置的方式可以是采用多种刷新的方式进行(如定时拉取配置文件或者数据库中的限流配置参数;当数据库或配置文件中的参数发生改变后,调用回调函数执行参数刷新操作等)。并在对各个分组内的限流处理器进行参数配置后,还需要检测各个限流处理器中的限流参数配置(即限流处理器自身应用的参数配置)中是否存在已进行更新处理过的目标限流参数,并根据不同的检测结果执行不同的操作。
步骤c,若存在已进行更新处理的目标限流参数,则获取当前时间,并根据所述当前时间对所述目标限流参数进行更新。
当经过判断发现存在有已进行更新处理的目标限流参数,则需要刷新目标限流参数(如checkInterval,maxWaitTime,readTrafficLimit,writeTrafficLimit)并获取当前时间,再分解刷新前后的限流参数及当前时间cunrrentTime,更新lastReadTime。即在lastReadTime > currrentTime时,则可以根据lastReadTime = (lastReadTime–currrentTime)×oldReadTrafficLimt ÷readTrafficLimit + currrentTime的计算公式来更新lastReadTime。并在lastReadTime ≤ currrentTime时,根据lastReadTime =currentTime的计算公式来更新lastReadTime。由于lastReadTime是目标限流参数中的一种,因此也就可以认为是根据当前时间对目标限流参数进行更新的。
在本实施例中,通过在确定存在已进行更新处理的目标限流参数时,根据当前时间对目标限流参数进行更新,从而保障了限流处理器中的限流参数配置的灵活可用性。
进一步地,根据所述当前时间对所述目标限流参数进行更新的步骤,包括:
步骤c1,获取所述目标限流参数的请求时间,并检测所述请求时间是否大于所述当前时间;
在本实施例中,在对目标限流参数进行更新时,需要先获取目标限流参数的请求时间。并且由于在目标限流处理器至少存在两种不同的处理方式(读和写),而无论是哪种处理方式,都需要检查其对应的请求时间是否大于当前时间,并根据不同的检测结果执行不同的操作。
步骤c2,若所述请求时间大于所述当前时间,则计算所述请求时间与所述当前时间之间的第一差值,并计算所述第一差值与所述目标限流参数中的旧限流速度配置的第一乘积;
当经过判断发现请求时间大于当前时间,则可以计算请求时间与当前时间的差值即第一差值(如当请求时间为读的请求时间时,则第一差值可以是lastReadTime–currrentTime;如当请求时间为写的请求时间时,则第一差值可以是lastWriteTime–currrentTime)。然后再计算第一差值与目标限流参数中的旧限流速度配置的乘积,即第一乘积(如当请求时间为读的请求时间时,第一乘积为(lastReadTime–currrentTime)*oldReadTrafficLimt;当请求时间为写的请求时间时,第一乘积为(lastWriteTime–currrentTime)*oldWriteTrafficLimt)。但是当请求时间小于或等于当前时间时,则可以直接将请求时间替换为当前时间。
步骤c3,计算所述第一乘积与所述目标限流参数中的新限流速度配置的第一比值,再计算所述第一比值和所述当前时间的第一和值,并将所述目标限流参数中的请求时间替换为所述第一和值。
再计算第一乘积与目标限流参数中的新限流速度配置的比例值,即第一比值,并将第一比值与当前时间进行相加,得到其和值,即第一和值。此时就可以将目标限流参数中的请求时间替换为第一和值。以完成对目标限流参数的更新。其中,当请求时间为读的请求时间时,第一和值的计算方式可以是lastReadTime = (lastReadTime–currrentTime)×oldReadTrafficLimt ÷readTrafficLimit + currrentTime。当请求时间为写的请求时间时,第一和值的计算方式可以是lastWriteTime= (lastWriteTime–currrentTime)×oldWriteTrafficLimt ÷writeTrafficLimit + currrentTime。
在本实施例中,通过在目标限流参数的请求时间大于当前时间时,计算请求时间与当前时间的第一差值,计算第一差值与旧限流速度配置的第一乘积,计算第一乘积与新限流速度的第一比值,计算第一比值与当前时间的第一和值,并将请求时间替换为第一和值,从而保障了对目标限流参数中的请求时间更新的准确性。
进一步地,计算所述目标限流处理器执行所述请求指令的延迟时间的步骤,包括:
步骤d,基于所述请求指令确定所述目标限流处理器中的新限流速度配置,和所述目标限流处理器中的历史请求时间;
在本实施例中,请求指令包括读请求和写请求。当客户端向目标限流处理器发送的是IO读请求(即读请求),则可以先假设读请求报文为n bytes,并根据此读请求指令在数据库或配置文件中获取目标限流处理器中新的读请求限流速度配置(即readTrafficLimit)和目标限流处理器中的历史读请求时间(即 lastReadTime)。当客户端向目标限流处理器发送的是IO写请求(即写请求),则可以先假设写请求报文为nn bytes,并根据此写请求指令在数据库或配置文件中获取目标限流处理器中新的写请求限流速度配置(即writeTrafficLimit)和目标限流处理器中的历史写请求时间(即lastWriteTime)。
步骤e,根据所述新限流速度配置和所述历史请求时间计算所述请求指令的延迟时间。
计算读请求的延迟时间可以是当前限速配置下读取n bytes报文的耗时减去当前时间距离上次读请求结束流逝的时间。其计算公式可以是waitTime = n ÷readTrafficLimit –( currentTime – lastReadTime)。
而计算写请求的延迟时间可以是当前限速配置下写入nn bytes报文的耗时减去当前时间距离上次写请求结束流逝的时间。其计算公式可以是
waitTime = nn ÷ writeTrafficLimit –( currentTime –lastWriteTime)。
在本实施例中,通过根据新限流速度配置和历史请求时间计算请求指令的延迟时间,从而保障了计算得到的请求指令的延迟时间的准确性。
进一步地,根据所述新限流速度配置和所述历史请求时间计算所述请求指令的延迟时间的步骤,包括:
步骤e1,确定所述请求指令对应的字节数量,并计算所述字节数量与所述新限流速度配置的第二比例值;
在本实施例中,当接收到请求指令时,无论此请求指令是读请求还是写请求,都需要确定请求指令所携带的字节数量n bytes。然后再计算此字节数量与新限流速度配置的比例值,即第二比例值。即n/readTrafficLimit ;或者是n/writeTrafficLimit。
步骤e2,计算所述第二比例值和所述历史请求时间之间的第二差值,并将所述第二差值作为所述请求指令的延迟时间。
然后再计算第二比例值和历史请求时间之间的差值,即第二差值,并可以将此第二差值作为请求指令的延迟时间。其中,当请求指令为读请求时,延迟时间wait Time=n/readTrafficLimit-lastReadTime。当请求指令为写请求时,延迟时间wait Time=n/writeTrafficLimit-lastWriteTime。
在本实施例中,通过计算请求指令对应的字节数量与新限流速度配置的第二比例值,并将第二比例值和历史请求时间之间的第二差值作为请求指令的延迟时间,从而保障了获取到的延迟时间的准确性。
进一步地,将各所述客户端与各自对应的限流处理器进行连接的步骤,包括:
步骤h,依次遍历各所述客户端,根据当前遍历的当前客户端携带的参数信息在多个具有限流处理器的分组中确定目标分组,检测所述目标分组中是否存在和所述当前客户端匹配的限流处理器;
在本实施例中,在确定各个客户端在服务端中的分组时,可以依次遍历各个客户端,并根据当前遍历的当前客户端携带的参数信息(如socket属性,socket的ip地址)查找内存中的分组集合,以在不同分组(即具有限流处理器的多个分组)中确定目标分组。并检测目标分组中是否存在和当前客户端匹配的限流处理器,根据不同的检测结果执行不同的操作。
步骤k,若存在,则将所述当前客户端和所述当前客户端匹配的限流处理器进行连接,直至各所述客户端遍历完成。
当经过判断发现在目标分组中存在和当前客户端匹配的限流处理器,还需要确定该限流处理器中是否存在和当前客户端匹配的限流处理器实例,若存在,建立当前客户端和当前客户端匹配的限流处理器之间的连接,并将处理器中的use Count值加1。但是若不存在限流处理器实例,则创建限流处理器实例,再建立当前客户端和当前客户端匹配的限流处理器之间的连接。
在本实施例中,通过依次遍历各个客户端,并确定当前遍历的当前客户端对应的目标分组,并在目标分组中存在当前客户端匹配的限流处理器时,建立限流处理器和客户端之间的连接,直至各个客户端遍历完成,从而保障了客户端与限流处理器之间连接的有效性。
进一步地,控制所述目标限流处理器基于所述延迟时间执行所述请求指令的步骤之后,包括:
步骤m,确定所述目标限流处理器对应的客户端,并在检测到所述目标限流处理器对应的客户端和所述目标限流处理器断开连接时,对所述目标限流处理器进行清空处理。
在本实施例中,需要先确定目标限流处理器对应的客户端,并在检测到目标限流处理器对应的客户端和目标限流处理器断开连接时,可以对目标限流处理器进行清空处理,并将目标限流处理器的useCount值减1。并当目标限流处理器的useCount值为0时,关闭和清理目标限流处理器中与此客户端对应的目标限流处理器实例。
在本实施例中,通过在客户端与目标限流处理器断开连接时,对目标限流处理器进行清空处理,从而保障了限流处理器的有效性,避免限流处理器中的限流处理器实例堆积过多。
本发明还提供一种限流配置装置,参照图3,所述限流配置装置包括:
连接单元A10,用于确定与服务端建立连接的多个客户端,根据各个所述客户端的参数,将各所述客户端与各自对应的限流处理器进行连接;
计算单元A20,用于若在各所述限流处理器中的目标限流处理器接收到请求指令,则计算所述目标限流处理器执行所述请求指令的延迟时间,并检测所述延迟时间是否大于预设的最大延迟时间;
执行单元A30,用于若所述延迟时间小于或等于预设的最大延迟时间,则控制所述目标限流处理器基于所述延迟时间执行所述请求指令。
可选地,所述连接单元A10,还用于:
检测各所述限流处理器中的限流参数配置是否存在已进行更新处理的目标限流参数;
若存在已进行更新处理的目标限流参数,则获取当前时间,并根据所述当前时间对所述目标限流参数进行更新。
可选地,所述连接单元A10,还用于:
获取所述目标限流参数的请求时间,并检测所述请求时间是否大于所述当前时间;
若所述请求时间大于所述当前时间,则计算所述请求时间与所述当前时间之间的第一差值,并计算所述第一差值与所述目标限流参数中的旧限流速度配置的第一乘积;
计算所述第一乘积与所述目标限流参数中的新限流速度配置的第一比值,再计算所述第一比值和所述当前时间的第一和值,并将所述目标限流参数中的请求时间替换为所述第一和值。
可选地,所述计算单元A20,还用于:
基于所述请求指令确定所述目标限流处理器中的新限流速度配置,和所述目标限流处理器中的历史请求时间;
根据所述新限流速度配置和所述历史请求时间计算所述请求指令的延迟时间。
可选地,所述计算单元A20,还用于:
确定所述请求指令对应的字节数量,并计算所述字节数量与所述新限流速度配置的第二比例值;
计算所述第二比例值和所述历史请求时间之间的第二差值,并将所述第二差值作为所述请求指令的延迟时间。
可选地,所述连接单元A10,还用于:
依次遍历各所述客户端,根据当前遍历的当前客户端携带的参数信息在多个具有限流处理器的分组中确定目标分组,检测所述目标分组中是否存在和所述当前客户端匹配的限流处理器;
若存在,则将所述当前客户端和所述当前客户端匹配的限流处理器进行连接,直至各所述客户端遍历完成。
可选地,所述执行单元A30,还用于:
确定所述目标限流处理器对应的客户端,并在检测到所述目标限流处理器对应的客户端和所述目标限流处理器断开连接时,对所述目标限流处理器进行清空处理。
上述各程序单元所执行的方法可参照本发明限流配置方法各个实施例,此处不再赘述。
本发明还提供一种计算机存储介质。
本发明计算机存储介质上存储有限流配置程序,所述限流配置程序被处理器执行时实现如上所述的限流配置方法的步骤。
其中,在所述处理器上运行的限流配置程序被执行时所实现的方法可参照本发明限流配置方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种限流配置方法,其特征在于,所述限流配置方法包括如下步骤:
确定与服务端建立连接的多个客户端,根据各个所述客户端的参数,将各所述客户端与各自对应的限流处理器进行连接;
若在各所述限流处理器中的目标限流处理器接收到请求指令,则计算所述目标限流处理器执行所述请求指令的延迟时间,并检测所述延迟时间是否大于预设的最大延迟时间;
若所述延迟时间小于或等于预设的最大延迟时间,则控制所述目标限流处理器基于所述延迟时间执行所述请求指令;
其中,在所述客户端与所述限流处理器建立连接后,确定所述限流处理器中是否存在和所述客户端匹配的限流处理器实例,若不存在,则需要创建限流处理器实例,在开始创建限流处理器实例时,所述限流处理器的限流窗口重置定时任务,并在最后一次执行读请求的时间小于当前时间时,将所述最后一次执行读请求的时间更新为所述当前时间,并在最后一次执行写请求的时间小于当前时间时,将所述最后一次执行写请求的时间更新为所述当前时间。
2.如权利要求1所述的限流配置方法,其特征在于,所述将各所述客户端与各自对应的限流处理器进行连接的步骤之前,包括:
检测各所述限流处理器中的限流参数配置是否存在已进行更新处理的目标限流参数;
若存在已进行更新处理的目标限流参数,则获取当前时间,并根据所述当前时间对所述目标限流参数进行更新。
3.如权利要求2所述的限流配置方法,其特征在于,所述根据所述当前时间对所述目标限流参数进行更新的步骤,包括:
获取所述目标限流参数的请求时间,并检测所述请求时间是否大于所述当前时间;
若所述请求时间大于所述当前时间,则计算所述请求时间与所述当前时间之间的第一差值,并计算所述第一差值与所述目标限流参数中的旧限流速度配置的第一乘积;
计算所述第一乘积与所述目标限流参数中的新限流速度配置的第一比值,再计算所述第一比值和所述当前时间的第一和值,并将所述目标限流参数中的请求时间替换为所述第一和值。
4.如权利要求1所述的限流配置方法,其特征在于,所述计算所述目标限流处理器执行所述请求指令的延迟时间的步骤,包括:
基于所述请求指令确定所述目标限流处理器中的新限流速度配置,和所述目标限流处理器中的历史请求时间;
根据所述新限流速度配置和所述历史请求时间计算所述请求指令的延迟时间。
5.如权利要求4所述的限流配置方法,其特征在于,所述根据所述新限流速度配置和所述历史请求时间计算所述请求指令的延迟时间的步骤,包括:
确定所述请求指令对应的字节数量,并计算所述字节数量与所述新限流速度配置的第二比例值;
计算所述第二比例值和所述历史请求时间之间的第二差值,并将所述第二差值作为所述请求指令的延迟时间。
6.如权利要求1所述的限流配置方法,其特征在于,所述将各所述客户端与各自对应的限流处理器进行连接的步骤,包括:
依次遍历各所述客户端,根据当前遍历的当前客户端携带的参数信息在多个具有限流处理器的分组中确定目标分组,检测所述目标分组中是否存在和所述当前客户端匹配的限流处理器;
若存在,则将所述当前客户端和所述当前客户端匹配的限流处理器进行连接,直至各所述客户端遍历完成。
7.如权利要求1-6任一项所述的限流配置方法,其特征在于,所述控制所述目标限流处理器基于所述延迟时间执行所述请求指令的步骤之后,包括:
确定所述目标限流处理器对应的客户端,并在检测到所述目标限流处理器对应的客户端和所述目标限流处理器断开连接时,对所述目标限流处理器进行清空处理。
8.一种限流配置装置,其特征在于,所述限流配置装置包括:
连接单元,用于确定与服务端建立连接的多个客户端,根据各个所述客户端的参数,将各所述客户端与各自对应的限流处理器进行连接;
计算单元,用于若在各所述限流处理器中的目标限流处理器接收到请求指令,则计算所述目标限流处理器执行所述请求指令的延迟时间,并检测所述延迟时间是否大于预设的最大延迟时间;
执行单元,用于若所述延迟时间小于或等于预设的最大延迟时间,则控制所述目标限流处理器基于所述延迟时间执行所述请求指令;
其中,所述连接单元,还用于在所述客户端与所述限流处理器建立连接后,确定所述限流处理器中是否存在和所述客户端匹配的限流处理器实例,若不存在,则需要创建限流处理器实例,在开始创建限流处理器实例时,所述限流处理器的限流窗口重置定时任务,并在最后一次执行读请求的时间小于当前时间时,将所述最后一次执行读请求的时间更新为所述当前时间,并在最后一次执行写请求的时间小于当前时间时,将所述最后一次执行写请求的时间更新为所述当前时间。
9.一种限流配置设备,其特征在于,所述限流配置设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的限流配置程序,所述限流配置程序被所述处理器执行时实现如权利要求1至7中任一项所述的限流配置方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有限流配置程序,所述限流配置程序被处理器执行时实现如权利要求1至7中任一项所述的限流配置方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010352801.XA CN111555987B (zh) | 2020-04-28 | 2020-04-28 | 限流配置方法、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010352801.XA CN111555987B (zh) | 2020-04-28 | 2020-04-28 | 限流配置方法、装置、设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111555987A CN111555987A (zh) | 2020-08-18 |
CN111555987B true CN111555987B (zh) | 2023-01-24 |
Family
ID=72003340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010352801.XA Active CN111555987B (zh) | 2020-04-28 | 2020-04-28 | 限流配置方法、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111555987B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113949666B (zh) * | 2021-11-15 | 2024-03-19 | 中国银行股份有限公司 | 流量控制方法、装置、设备及系统 |
CN114500382B (zh) * | 2022-04-06 | 2022-07-15 | 浙江口碑网络技术有限公司 | 客户端限流方法和装置、电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106612238B (zh) * | 2015-10-21 | 2020-11-27 | 阿里巴巴集团控股有限公司 | 流量控制方法、装置和系统 |
CN108667748B (zh) * | 2017-03-29 | 2021-02-12 | 华为技术有限公司 | 一种控制带宽的方法、装置、设备和存储介质 |
KR102259413B1 (ko) * | 2018-03-12 | 2021-06-01 | 주식회사 엘지에너지솔루션 | 과방전 방지 장치 |
CN110830391A (zh) * | 2018-08-10 | 2020-02-21 | 阿里巴巴集团控股有限公司 | 资源分配方法及装置、集群系统 |
CN110380986B (zh) * | 2019-07-23 | 2022-05-10 | 中南民族大学 | 基于Zuul的流量限制方法、装置、设备及存储介质 |
-
2020
- 2020-04-28 CN CN202010352801.XA patent/CN111555987B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111555987A (zh) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
US8589923B2 (en) | Preprovisioning virtual machines based on request frequency and current network configuration | |
US10503558B2 (en) | Adaptive resource management in distributed computing systems | |
CN107102894A (zh) | 任务调度方法、装置和系统 | |
US9875141B2 (en) | Managing pools of dynamic resources | |
CN112559182B (zh) | 资源分配方法、装置、设备及存储介质 | |
US10944683B1 (en) | Hybrid queue system for request throttling | |
CN111555987B (zh) | 限流配置方法、装置、设备及计算机存储介质 | |
CN112579304A (zh) | 基于分布式平台的资源调度方法、装置、设备及介质 | |
US10084866B1 (en) | Function based dynamic traffic management for network services | |
CN112231098A (zh) | 任务处理方法、装置、设备及存储介质 | |
EP4060496A2 (en) | Method, apparatus, device and storage medium for running inference service platform | |
CN111736975A (zh) | 请求控制方法、装置、计算机设备及计算机可读存储介质 | |
US20220413906A1 (en) | Method, device, and program product for managing multiple computing tasks based on batch | |
CN113535346B (zh) | 线程数量调整的方法、装置、设备及计算机存储介质 | |
CN108228323B (zh) | 基于数据本地性的Hadoop任务调度方法及装置 | |
CN109388609B (zh) | 基于加速核的数据处理方法和装置 | |
JP5884566B2 (ja) | バッチ処理システム、進捗状況確認装置、進捗状況確認方法、及びプログラム | |
CN114780228A (zh) | 一种混合云资源创建方法及系统 | |
CN113127187B (zh) | 用于集群扩缩容的方法和装置 | |
US11481262B1 (en) | Rapid autoscaling with preinitialized instance quantity based on historical scale up rate | |
US11520638B1 (en) | Combined active and preinitialized resource management for rapid autoscaling | |
CN111666163B (zh) | 一种网络编排系统及方法 | |
KR20220064785A (ko) | 컨테이너 프로파일 생성 장치 및 방법 | |
CN116820724A (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 |