CN112667467A - 集群的自适应限流方法、装置、计算机设备及存储介质 - Google Patents
集群的自适应限流方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112667467A CN112667467A CN202011538926.8A CN202011538926A CN112667467A CN 112667467 A CN112667467 A CN 112667467A CN 202011538926 A CN202011538926 A CN 202011538926A CN 112667467 A CN112667467 A CN 112667467A
- Authority
- CN
- China
- Prior art keywords
- current limiting
- computer
- threshold value
- cluster
- computers
- 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.)
- Pending
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明涉及软件监控技术领域,提供一种集群的自适应限流方法、装置、计算机设备及存储介质,所述方法包括以下步骤:检测第三方存储器的运行状态,所述第三方存储器用于存储预设周期内计算机集群中包含的所有计算机接收到的访问请求的数量;在所述第三方存储器运行正常的情况下,基于第一阈值对所述所有计算机进行分布式限流,其中,所述第一阈值为所述集群中包含的所有计算机接收到的访问请求数量的阈值;在所述第三方存储器运行异常的情况下,基于第二阈值对所述集群中包含的每台计算机进行单机限流,其中,所述第二阈值为集群中包含的每台计算机接收到的访问请求数量的阈值。
Description
技术领域
本发明涉及软件监控技术领域,特别涉及一种集群的自适应限流方法、装置、计算机设备及存储介质。
背景技术
目前对于高并发流量的控制手段主要包括单机限流和分布式限流两种。其中单机限流是针对单台计算机进行独立控制,具体可以采用令牌桶算法或者漏斗桶算法。分布式限流是针对集群中的所有计算机进行整体控制,具体可以利用第三方存储器如redis结合lua脚本的原子性实现分布式限流,以统一控制集群的流量。然而,在目前主流的集群部署下,单机限流的实施效果如同鸡肋,而分布式限流又严重依赖于redis的可用性,当redis不可用时集群限流也不可用,从而容易造成应用不可用等严重后果。
因此,如何在第三方应用异常时保证应用集群的高可用性成为本领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种能够在高并发流量下保证限流稳定性的技术方案,以解决现有技术中存在的上述问题。
为实现上述目的,本发明提供一种集群的自适应限流方法,包括以下步骤:
检测第三方存储器的运行状态,所述第三方存储器用于存储预设周期内计算机集群中包含的所有计算机接收到的访问请求的数量;
在所述第三方存储器运行正常的情况下,基于第一阈值对所述所有计算机进行分布式限流,其中,所述第一阈值为所述集群中包含的所有计算机接收到的访问请求数量的阈值;
在所述第三方存储器运行异常的情况下,基于第二阈值对所述集群中包含的每台计算机进行单机限流,其中,所述第二阈值为集群中包含的每台计算机接收到的访问请求数量的阈值。
根据本发明提供的自适应限流方法,所述检测第三方存储器的运行状态的步骤包括:
响应于所述计算机集群接收到访问请求,向所述第三方存储器发送计数值累加命令;
在预设时间内检测是否接收到所述第三方存储器回复的累加成功信息;
若接收到所述累加成功信息,确定所述第三方存储器运行正常;否则,确定所述第三方存储器运行异常。
根据本发明提供的自适应限流方法,所述在所述第三方存储器运行正常的情况下,基于第一阈值对所述所有计算机进行分布式限流的步骤包括:
在每个所述预设周期内从零开始设置第一计数值,所述所有计算机每接收到一个访问请求,为所述第一计数值加一;其中所述第一计数值存储在所述第三方存储器中;
判断所述第一计数值是否达到所述第一阈值;
在所述第一计数值达到所述第一阈值的情况下,禁止所述所有计算机接收新的访问请求;
在所述第一计数值未达到所述第一阈值的情况下,允许所述所有计算机接收新的访问请求。
根据本发明提供的自适应限流方法,所述在所述第三方存储器运行异常的情况下,基于第二阈值对所述每台计算机进行单机限流的步骤包括:
确定当前时刻所在的当前周期;
在当前周期的剩余时间内禁止所述所有计算机接收新的访问请求;
在所述当前周期的下一个周期从零开始设置第二计数值,所述每台计算机每接收到一个访问请求,为所述第二计数值加一;其中所述第二计数值存储在所述每台计算机的内存中;
判断所述第二计数值是否达到所述第二阈值;
在所述第二计数值达到所述第二阈值的情况下,禁止所述每台计算机接收新的访问请求;
在所述第二计数值未达到所述第二阈值的情况下,允许所述每台计算机接收新的访问请求。
根据本发明提供的自适应限流方法,在所述第三方存储器运行异常的情况下,基于第二阈值对所述每台计算机进行单机限流的步骤之后,还包括:
基于预设频率向所述第三方存储器发送累加检测命令;
在接收到所述第三方存储器回复的累加检测成功信息的情况下,基于第一阈值对所述所有计算机进行分布式限流。
根据本发明提供的自适应限流方法,所述在接收到所述第三方存储器回复的累加检测成功信息的情况下,基于第一阈值对所述所有计算机进行分布式限流的步骤包括:
确定接收到所述累加检测成功信息时对应的第二周期;
在所述第二周期的剩余时间内继续基于第二阈值对所述每台计算机进行单机限流;
在所述第二周期的下一周期基于第一阈值对所述所有计算机进行分布式限流。
根据本发明提供的自适应限流方法,所述第二阈值是基于所述第一阈值和所述计算机集群中包含的计算机数量而确定的。
为实现上述目的,本发明还提供一种计算机集群的自适应限流装置,包括:
状态检测模块,适用于检测第三方存储器的运行状态,所述第三方存储器用于存储预设周期内计算机集群中包含的所述所有计算机接收到的访问请求的数量;
分布式限流模块,适用于在所述第三方存储器运行正常的情况下,基于第一阈值对所述所有计算机进行分布式限流,其中,所述第一阈值为所述集群中包含的所有计算机接收到的访问请求数量的阈值;
单机限流模块,适用于在所述第三方存储器运行异常的情况下,基于第二阈值对所述所述集群中包含的每台计算机进行单机限流,其中,所述第二阈值为集群中包含的每台计算机接收到的访问请求数量的阈值。
为实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
为实现上述目的,本发明还提供计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明提供的集群的自适应限流方法、装置、计算机设备及存储介质,首先充分利用第三方存储器如Redis的高性能,在第三方存储器运行正常时实现分布式限流。当第三方存储器运行异常时,基于状态机及时自动切换至单机限流,从而保证限流***的高可用性。。本发明的单机限流方式和分布式限流方式全程自动切换,无需人工干预,可以大幅提高运维管理人员的工作效率。
附图说明
图1为本发明的集群的自适应限流方法实施例一的流程图;
图2示出了根据本发明实施例一的又一示例的流程图;
图3示出了根据本发明实施例一进行分布式限流的示意性流程图;
图4示出了根据本发明实施例一进行单机限流的示意性流程图;
图5示出了根据本实施例一从分布式限流向单机限流的过渡阶段示意图;
图6示出了根据本发明实施例一重新恢复分布式限流的示意性流程图;
图7示出了根据本实施例一从单机限流向分布式限流的过渡阶段示意图;
图8为本发明的自适应限流装置实施例一的程序模块示意图;
图9为本发明的自适应限流装置实施例一的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
请参阅图1,本实施例提出一种集群的自适应限流方法,包括以下步骤:
S100:检测第三方存储器的运行状态,所述第三方存储器用于存储预设周期内计算机集群中包含的所有计算机接收到的访问请求的数量。
集群是一组相互独立的计算机,通过高速的网络组成一个计算机***,每个集群节点都是运行其自己进程的一个独立服务器。对网络用户来讲,网站后端就是一个单一的***,协同起来向用户提供***资源与***服务。通过网络连接组合成一个组合来共同完一个任务。当用户需要访问上述计算机***中的资源或者服务时,会向集群发出访问请求。可以理解,访问请求的数量与用户的数量成正比。在多用户高并发的场景下,有必要对计算机集群进行限流以保证网络的正常运行。
本实施例可以根据访问请求的数量进行限流。一方面可以根据整个计算机集群中的所有计算机接收到的访问请求的数量进行限流,另一方面也可以根据集群内的单台计算机接收到的访问请求的数量进行限流。
第三方存储器可以是redis数据库,也可以是mysql数据库或其它硬件存储器等。本实施例按照预设频率检测第三方数据库的运行状态,以确定第三方数据库能否正常读取或者写入数据。其中第三方存储器优选redis数据库,这是因为使用redis设置的计时器和计数器均是全局唯一的,不管集群中包含多少个计算机节点,它们使用的都是同样的计时器和计数器,因此可以做到非常精准的流控。其中,redis中可以设置计数器,用于存储预设周期内整个计算机集群接收到的访问请求的数量。具体的,在每一个预设周期的初始时刻将计数器归零,然后每当计算机集群接收到一个访问请求,会向第三方存储器写入相应的数据,用以将计数器加一,由此准确记录计算机集群在预设周期内接收到的访问请求的数量。
第三方存储器的运行状态可以通过请求-响应模式进行检测。在本实施例中,当计算机集群接收到访问请求时,可以向所述第三方存储器发送计数值累加命令。可以在预设时间内检测是否接收到所述第三方存储器回复的累加成功信息。若接收到所述累加成功信息,确定所述第三方存储器运行正常;否则,确定所述第三方存储器运行异常。上述预设时间可以根据经验值设定,例如500ms。
S200:在所述第三方存储器运行正常的情况下,基于第一阈值对所述所有计算机进行分布式限流,其中,所述第一阈值为所述集群中包含的所有计算机接收到的访问请求数量的阈值。
如果redis数据库能够正常读写,那么就可以利用redis数据库记录计算机集群接收到的访问请求的数量。此时,可以预先设置第一阈值,当集群接收到的访问请求的数量达到预设的第一阈值时,对整个计算机集群进行限流;否则不进行限流。本实施例所述分布式限流,指的是将计算机集群作为一个整体进行限流。具体的,当第三方存储器中计数器累积的数据达到第一阈值时,对发送到该计算机集群的任意访问请求进行拦截,从而减轻计算机集群的计算压力,使计算机集群可以集中资源处理已接收到的访问请求。
进行分布式限流可以满足目前大多数场景中应用分布式***的需求,并且在进行节点扩容、缩容时能够准确控制整个服务的请求限制,对于服务依赖的各种资源也可以进行限流的保护。
S300:在所述第三方存储器运行异常的情况下,基于第二阈值对所述集群内包含的每台计算机进行单机限流,其中,所述第二阈值为集群中包含的每台计算机接收到的访问请求数量的阈值。
为了应对第三方存储器例如redis数据库无法正常读写的情况,本实施例还可以针对集群中的每台计算机进行单机限流。单机限流不需要第三方存储器的参与,直接在每台计算机的内存中记录该计算机在预设周期内接收到的访问请求的数量。当基于集群内的单台计算机接收到的访问请求的数量进行限流时,本实施例可以预先设置第二阈值,当集群中的单台计算机接收到的访问请求的数量达到第二阈值时,对该单台计算机进行限流;否则不进行限流。
本实施例所述单机限流,指的是将计算机集群中的其中一台计算机作为实施对象进行限流。具体的,当目标计算机的内存中记录的访问请求的数量达到第二阈值时,对发送到该目标计算机的任意访问请求进行拦截,从而减轻该目标计算机的计算压力,使目标计算机可以集中资源处理已接收到的访问请求。
上述第一阈值和第二阈值可以预先存储在每台计算机的配置文件中。当计算机开机启动时从配置文件中读取对应的第一阈值和第二阈值,从而可以实现根据第一阈值对计算机集群内的所有计算机进行限流,以及根据第二阈值对当前的单台计算机进行限流。
通过上述步骤,本实施例可以实现计算机集群中分布式限流与单机限流的自动切换,当分布式限流模式中出现存储器读写异常时可以及时切换到单机限流模式,从而保证对流量数据进行有效监控,维护网络运行的稳定性。
进一步,本实施例中的第二阈值可以基于所述第一阈值和所述计算机集群中包含的计算机数量而确定。例如用y1表示第一阈值,y2表示第二阈值,n表示集群中包含的计算机的总数量,那么y2≤y1÷n。由于y2是对单台计算机设置的流量阈值,y1是对集群中所有计算机设置的流量阈值,那么y1÷n就是在分布式限流过程中每台计算机的平均流量阈值。将单台计算机在单机限流过程中的实际流量阈值y2设置为小于或等于分布式限流过程中每台计算机的平均流量阈值,可以避免单台计算机超负荷运转,从而保证***运行的稳定性。
进一步,在步骤S300之后,如图2所示,本实施例还可以包括以下步骤:
S400:基于预设频率向所述第三方存储器发送累加检测命令。
上述累加检测命令是为了测试第三方存储器是否回复正常的计数值累加功能而发出的,该累加检测命令可以和上文中的计数值累加命令相同,也可以和计数值累加命令不同,本实施例对此不做限制。上述预设频率可以根据需要灵活设置,例如每毫秒发送一次。
S500:在接收到所述第三方存储器回复的累加检测成功信息的情况下,基于第一阈值对所述所有计算机进行分布式限流。
本实施例中,若接收到第三方存储器回复的累加检测成功信息,说明第三方存储器的运行状态已恢复正常;若未接收到,说明第三方存储器的运行状态仍为异常。因此,当检测到第三方存储器恢复正常时,重新对整个计算机集群进行分布式限流。
可以理解,分布式限流相对于单机限流数据处理能力更高,效率更快。因此在第三方存储器恢复正常的情况下及时将限流模式从单机限流调整回分布式限流,可以保证***运行的高效流畅。
图3示出了根据本发明实施例一进行分布式限流的示意性流程图。如图3所述,步骤S200包括:
S210:在每个所述预设周期内从零开始设置第一计数值,所述所有计算机每接收到一个访问请求,为所述第一计数值加一;其中所述第一计数值存储在所述第三方存储器中。
预设周期可以根据实际需要进行设置,例如5秒钟为一个周期,或者5分钟为一个周期等,本发明不做限制。假设每5分钟作为一个周期,则从第0分0秒钟到第4分钟59秒为第一个周期,从第5分0秒到第9分59秒为第二个周期,……以此类推。
本实施例中的第一计数器可以是redis自带的计数器,该计数器自每个周期起始时刻清零,并根据所有计算机接收到的访问请求的数量进行计数,即,第一计数器的数值与所有计算机接收到的访问请求的数量一致。
S220:判断所述第一计数值是否达到所述第一阈值。第一阈值可以根据实际需要设定,例如500条。
S230:在所述第一计数值达到所述第一阈值的情况下,禁止所述所有计算机接收新的访问请求。这种情况下,向整个计算机集群发送的所有访问请求将会被拦截,从而保证集群中的计算机有足够的资源处理已存在的请求,避免引起访问拥堵。
S240:在所述第一计数值未达到所述第一阈值的情况下,允许所述所有计算机接收新的访问请求。
第一计数值未达到第一阈值,说明计算机集群还有空闲资源,因此可以继续接收新的访问请求并进行处理。
图4示出了根据本发明实施例一进行单机限流的示意性流程图。如图4所述,步骤S300包括:
S310:确定当前时刻所在的当前周期。
仍以5分钟一个周期为例,可以根据当前时刻确定所在的当前周期。例如当前时刻为第5分10秒,可以确定当前周期为第二周期,那么自第5分11秒至第9分59秒均为当前周期的剩余时间。
S320:在当前周期的剩余时间内禁止所述所有计算机接收新的访问请求。
为保证限流策略的平稳切换,切换过程中不至于导致流量超花,本实施例在当前周期内的剩余时间将进行流量拦截,此过渡性的称为分布式异常阶段
S330:在所述当前周期的下一个周期从零开始设置第二计数值,所述每台计算机每接收到一个访问请求,为所述第二计数值加一;其中所述第二计数值存储在所述每台计算机的内存中。
第二计数器可以设置在每台计算机的内存中,用来表示在每个周期内对应的计算机接收到的访问请求的数量。可以理解,第二计数器的值与对应计算机在一个周期内接收到的访问请求的数量相一致。
S340:判断所述第二计数值是否达到所述第二阈值。
S350:在所述第二计数值达到所述第二阈值的情况下,禁止所述每台计算机接收新的访问请求。
S360:在所述第二计数值未达到所述第二阈值的情况下,允许所述每台计算机接收新的访问请求。
通过上述步骤,可以顺利实现从分布式限流的异常状态到单机限流状态的切换,并基于单机限流策略继续对访问请求进行限流,以保证网络数据的正常运行。
图5示出了根据本实施例一从分布式限流向单机限流的过渡阶段示意图。如图5所示,在周期1到周期E-1节点,执行分布式限流。在周期E中的TE时刻检测到redis异常,那么在周期E内的TE时刻之后对接收到的所有访问请求进行流量拦截,并自周期E+1开始执行单机限流。
图6示出了根据本发明实施例一重新恢复分布式限流的示意性流程图。如图6所示,步骤S500包括:
S510:确定接收到所述累加检测成功信息时对应的第二周期。
获取检测到第三方存储器如redis恢复正常时的时刻,根据该时刻确定对应的第二周期。这里的第二周期指的是redis恢复正常时刻所对应的周期,具体可以通过对恢复正常时刻相对于周期时长的倍数来确定。假设恢复正常的时刻为t,周期时长为t0,那么对应的第二周期可以是t/t0所得的整数加1。仍以5分钟一个周期为例,假设检测到redis恢复正常的时刻为第16分钟0秒,对(16÷5)取整加1得4,即对应的是第4个周期。
S520:在所述第二周期的剩余时间内继续基于第二阈值对所述每台计算机进行单机限流。
为保证限流策略的平稳切换,切换过程中不至于导致流量超花,该周期R内的剩余时间仍然进行单机限流,此过渡性的称为分布式恢复阶段。
S530:在所述第二周期的下一周期基于第一阈值对所述所有计算机进行分布式限流。
通过上述步骤,可以实现从单机限流模式向分布式限流的平稳过渡。
图7示出了根据本实施例一从单机限流向分布式限流的过渡阶段示意图。如图7所示,在周期1到周期R-1实行单机限流。在周期R内的TR时刻检测到redis恢复正常,那么在周期R的剩余时间内继续执行单机限流,并在周期R+1开始执行分布式限流。
综上所述,本发明在对计算机集群进行分布式限流的基础上使用单机限流作为兜底,保证***的高可用性。通过定义状态机,可以自动完成各种***状态的切换以及故障的自动化处理和恢复,减轻运营人员负担,提升工作效率。
请继续参阅图8,示出了一种集群的自适应限流装置,在本实施例中,自适应限流装置80可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述自适应限流方法。本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述自适应限流装置80在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:
状态检测模块81,适用于检测第三方存储器的运行状态,所述第三方存储器用于存储预设周期内计算机集群中包含的所述所有计算机接收到的访问请求的数量;
分布式限流模块82,适用于在所述第三方存储器运行正常的情况下,基于第一阈值对所述所有计算机进行分布式限流,其中,所述第一阈值为所述集群中包含的所有计算机接收到的访问请求数量的阈值;
单机限流模块83,适用于在所述第三方存储器运行异常的情况下,基于第二阈值对所述所述集群中包含的每台计算机进行单机限流,其中,所述第二阈值为集群中包含的每台计算机接收到的访问请求数量的阈值。
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备90至少包括但不限于:可通过***总线相互通信连接的存储器91、处理器92,如图9所示。需要指出的是,图9仅示出了具有组件91-92的计算机设备90,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器91(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器91可以是计算机设备90的内部存储单元,例如该计算机设备90的硬盘或内存。在另一些实施例中,存储器91也可以是计算机设备90的外部存储设备,例如该计算机设备90上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器91还可以既包括计算机设备90的内部存储单元也包括其外部存储设备。本实施例中,存储器91通常用于存储安装于计算机设备90的操作***和各类应用软件,例如实施例一的自适应限流装置80的程序代码等。此外,存储器91还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器92在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器92通常用于控制计算机设备90的总体操作。本实施例中,处理器92用于运行存储器91中存储的程序代码或者处理数据,例如运行自适应限流装置80,以实现实施例一的自适应限流方法。
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储自适应限流装置80,被处理器执行时实现实施例一的自适应限流方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
流程图中或在此以其它方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
本技术领域的普通技术人员可以理解,实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种集群的自适应限流方法,其特征在于,包括以下步骤:
检测第三方存储器的运行状态,所述第三方存储器用于存储预设周期内计算机集群中包含的所有计算机接收到的访问请求的数量;
在所述第三方存储器运行正常的情况下,基于第一阈值对所述所有计算机进行分布式限流,其中,所述第一阈值为所述集群中包含的所有计算机接收到的访问请求数量的阈值;
在所述第三方存储器运行异常的情况下,基于第二阈值对所述集群中包含的每台计算机进行单机限流,其中,所述第二阈值为集群中包含的每台计算机接收到的访问请求数量的阈值。
2.根据权利要求1所述的自适应限流方法,其特征在于,所述检测第三方存储器的运行状态的步骤包括:
响应于所述计算机集群接收到访问请求,向所述第三方存储器发送计数值累加命令;
在预设时间内检测是否接收到所述第三方存储器回复的累加成功信息;
若接收到所述累加成功信息,确定所述第三方存储器运行正常;否则,确定所述第三方存储器运行异常。
3.根据权利要求2所述的自适应限流方法,其特征在于,所述在所述第三方存储器运行正常的情况下,基于第一阈值对所述所有计算机进行分布式限流的步骤包括:
在每个所述预设周期内从零开始设置第一计数值,所述所有计算机每接收到一个访问请求,为所述第一计数值加一;其中所述第一计数值存储在所述第三方存储器中;
判断所述第一计数值是否达到所述第一阈值;
在所述第一计数值达到所述第一阈值的情况下,禁止所述所有计算机接收新的访问请求;
在所述第一计数值未达到所述第一阈值的情况下,允许所述所有计算机接收新的访问请求。
4.根据权利要求3所述的自适应限流方法,其特征在于,所述在所述第三方存储器运行异常的情况下,基于第二阈值对所述集群中包含的每台计算机进行单机限流的步骤包括:
确定当前时刻所在的当前周期;
在当前周期的剩余时间内禁止所述所有计算机接收新的访问请求;
在所述当前周期的下一个周期从零开始设置第二计数值,所述每台计算机每接收到一个访问请求,为所述第二计数值加一;其中所述第二计数值存储在所述每台计算机的内存中;
判断所述第二计数值是否达到所述第二阈值;
在所述第二计数值达到所述第二阈值的情况下,禁止所述每台计算机接收新的访问请求;
在所述第二计数值未达到所述第二阈值的情况下,允许所述每台计算机接收新的访问请求。
5.根据权利要求1所述的自适应限流方法,其特征在于,在所述第三方存储器运行异常的情况下,基于第二阈值对所述集群中包含的每台计算机进行单机限流的步骤之后,还包括:
基于预设频率向所述第三方存储器发送累加检测命令;
在接收到所述第三方存储器回复的累加检测成功信息的情况下,基于第一阈值对所述所有计算机进行分布式限流。
6.根据权利要求5所述的自适应限流方法,其特征在于,所述在接收到所述第三方存储器回复的累加检测成功信息的情况下,基于第一阈值对所述所有计算机进行分布式限流的步骤包括:
确定接收到所述累加检测成功信息时对应的第二周期;
在所述第二周期的剩余时间内继续基于第二阈值对所述每台计算机进行单机限流;
在所述第二周期的下一周期基于第一阈值对所述所有计算机进行分布式限流。
7.根据权利要求1-6中任一项所述的自适应限流方法,其特征在于,所述第二阈值是基于所述第一阈值和所述计算机集群中包含的计算机数量而确定的。
8.一种集群的自适应限流装置,其特征在于,包括:
状态检测模块,适用于检测第三方存储器的运行状态,所述第三方存储器用于存储预设周期内计算机集群中包含的所述所有计算机接收到的访问请求的数量;
分布式限流模块,适用于在所述第三方存储器运行正常的情况下,基于第一阈值对所述所有计算机进行分布式限流,其中,所述第一阈值为所述集群中包含的所有计算机接收到的访问请求数量的阈值;
单机限流模块,适用于在所述第三方存储器运行异常的情况下,基于第二阈值对所述所述集群中包含的每台计算机进行单机限流,其中,所述第二阈值为集群中包含的每台计算机接收到的访问请求数量的阈值。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011538926.8A CN112667467A (zh) | 2020-12-23 | 2020-12-23 | 集群的自适应限流方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011538926.8A CN112667467A (zh) | 2020-12-23 | 2020-12-23 | 集群的自适应限流方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112667467A true CN112667467A (zh) | 2021-04-16 |
Family
ID=75408985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011538926.8A Pending CN112667467A (zh) | 2020-12-23 | 2020-12-23 | 集群的自适应限流方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112667467A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113285883A (zh) * | 2021-05-25 | 2021-08-20 | 挂号网(杭州)科技有限公司 | 一种访问请求的限流方法及装置、电子设备、存储介质 |
CN113765998A (zh) * | 2021-07-12 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 基于集群***的访问限制方法、装置和服务器 |
-
2020
- 2020-12-23 CN CN202011538926.8A patent/CN112667467A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113285883A (zh) * | 2021-05-25 | 2021-08-20 | 挂号网(杭州)科技有限公司 | 一种访问请求的限流方法及装置、电子设备、存储介质 |
CN113765998A (zh) * | 2021-07-12 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 基于集群***的访问限制方法、装置和服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111818159B (zh) | 数据处理节点的管理方法、装置、设备及存储介质 | |
EP2414932B1 (en) | Execution of a plugin according to plugin stability level | |
US11397648B2 (en) | Virtual machine recovery method and virtual machine management device | |
US7203746B1 (en) | System and method for adaptive resource management | |
CN109857592A (zh) | 数据恢复控制方法、服务器及存储介质 | |
CN111209110B (zh) | 一种实现负载均衡的任务调度管理方法、***和存储介质 | |
CN113010260A (zh) | 容器数量弹性伸缩方法以及容器数量弹性伸缩方法*** | |
US20180107503A1 (en) | Computer procurement predicting device, computer procurement predicting method, and recording medium | |
CN112667467A (zh) | 集群的自适应限流方法、装置、计算机设备及存储介质 | |
CN111880906A (zh) | 虚拟机高可用性管理方法、***以及存储介质 | |
CN112650575B (zh) | 资源调度方法、装置和云端服务*** | |
CN112948169A (zh) | 数据备份的方法、装置、设备和存储介质 | |
CN111538585B (zh) | 一种基于node.js的服务器进程调度方法、***和装置 | |
CN109582459A (zh) | 应用的托管进程进行迁移的方法及装置 | |
CN114443441B (zh) | 一种存储***管理方法、装置、设备及可读存储介质 | |
CN109474470A (zh) | 一种自监控方法和装置 | |
CN115297124A (zh) | 一种***运维管理方法、装置及电子设备 | |
CN114296909A (zh) | 一种根据kubernetes事件的节点自动扩容缩容方法及*** | |
US20220206836A1 (en) | Method and Apparatus for Processing Virtual Machine Migration, Method and Apparatus for Generating Virtual Machine Migration Strategy, Device and Storage Medium | |
CN112835702A (zh) | 服务切换方法、装置、计算机设备及存储介质 | |
CN109032762B (zh) | 虚拟机回溯方法及相关设备 | |
CN111949384B (zh) | 任务调度方法、装置、设备及计算机可读存储介质 | |
CN112612604B (zh) | 基于Actor模型的任务调度方法、装置 | |
CN113127191B (zh) | 一种资源更新方法、存储介质及相关装置 | |
CN114237910A (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 |