CN111988355A - 限流方法、装置、服务器及服务器集群 - Google Patents
限流方法、装置、服务器及服务器集群 Download PDFInfo
- Publication number
- CN111988355A CN111988355A CN202010611501.9A CN202010611501A CN111988355A CN 111988355 A CN111988355 A CN 111988355A CN 202010611501 A CN202010611501 A CN 202010611501A CN 111988355 A CN111988355 A CN 111988355A
- Authority
- CN
- China
- Prior art keywords
- value
- current limiting
- server
- local
- total
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开公开了一种限流方法,应用于服务器集群中的节点服务器,包括:接收数据访问请求;响应于所述数据访问请求,从本地缓存区中获取本地限流值,其中,所述本地限流值为总限流值的本地缓存值,所述总限流值为所述服务器集群在预设时间长度内接收到的数据访问请求的累加值;根据所述本地限流值,处理所述数据访问请求。该方法通过将总限流值缓存在本地缓存区中,并根据本地缓存区中的本地限流值处理节点服务器接收到的数据访问请求,可以灵活、方便的进行系统限流,提升限流效率。
Description
技术领域
本公开涉及互联网限流技术领域,更具体地,涉及一种限流方法、装置、服务器及服务器集群。
背景技术
通常,在系统设计阶段,会对应用系统单位时间内可处理的请求数(QPS,Queries-Per-Second)进行一个预估,并会基于预估值进行整体的系统架构设计以及部署。然而,随着业务的不断发展,应用系统在单位时间内接收到的请求数存在超过该预估值的可能性,进而可能导致整个系统服务不可用,因此,一般会在应用系统的服务接口上增加限流处理,以对应用系统进行过载保护。
目前常用的限流方法一般有:1、基于谷歌开源工具(GuavaRateLimiter)的限流方法,该方法基于令牌桶(TokenBucket)算法进行限流,即,以一个设定速度模式往令牌桶中放令牌,当有请求需要被处理的时候会从令牌桶中取走令牌,当令牌桶中没有令牌时,会触发应用系统进行限流;2、基于redis(Remote Dictionary Server)数据库的分布式限流方法,该方法同样是基于令牌桶算法进行限流,具体是通过redis的单线程执行脚本进行令牌的生成,应用系统所在的服务器集群整体对redis进行请求以判断是否触发限流。
上述第一种方法一般应用于单机或者负载较为均衡的分布式系统的限流场景中,其应用范围存在一定的局限性,并且当系统服务出现负载分布不均的情况时,该方法还存在限流失效的问题。而上述第二种方法虽然不存在应用范围的局限性,但是其对redis的性能具有强依赖性,存在不能灵活、方便的进行系统限流的问题。
发明内容
本公开实施例的一个目的是提供一种用于限流的新技术方案。
根据本公开的第一方面,提供了一种限流方法,应用于服务器集群中的节点服务器,该方法包括:
接收数据访问请求;
响应于所述数据访问请求,从本地缓存区中获取本地限流值,其中,所述本地限流值为总限流值的本地缓存值,所述总限流值为所述服务器集群在预设时间长度内接收到的数据访问请求的累加值;
根据所述本地限流值,处理所述数据访问请求。
可选地,所述根据所述本地限流值,处理所述数据访问请求,包括:
在所述本地限流值大于预设的限流阈值的情况下,对所述数据访问请求执行限流处理。
可选地,所述对所述数据访问请求执行限流处理,包括:
拒绝所述数据访问请求。
可选地,所述方法还包括:
根据所述数据访问请求,更新所述总限流值;
根据更新后的总限流值,更新所述本地限流值。
可选地,所述服务器集群还包括与节点服务器通信的数据库服务器,所述总限流值存储在所述数据库服务器中,所述更新所述总限流值,包括:
向所述数据库服务器发送用于更新所述总限流值的数据请求消息;
获取所述数据库服务器返回的、对应于所述数据请求消息的回调消息;
从所述回调消息中,获取所述更新后的总限流值。
可选地,所述更新所述总限流值还包括:
获取所述数据库服务器的服务状态;
在所述服务状态表征所述数据库服务器处于服务可用状态的情况下,执行所述向所述数据库服务器发送用于更新所述总限流值的数据请求消息步骤。
可选地,所述更新所述总限流值,还包括:
在所述服务状态表征所述数据库服务器处于服务不可用状态的情况下,使用预设的单机限流方式更新所述总限流值。
可选地,所述方法还包括:
获取所述本地限流值的缓存时长;
在所述缓存时长超过预设的有效时长的情况下,获取最新的总限流值;
根据所述最新的总限流值,更新所述本地限流值。
根据本公开的第二方面,本公开还提供了一种限流装置,包括:
请求接收模块,用于接收数据访问请求;
本地限流值获取模块,用于从本地缓存区中获取本地限流值,其中,所述本地限流值为总限流值的本地缓存值,所述总限流值为所述服务器集群在预设时间长度内接收到的数据访问请求的累加值;
限流处理模块,用于根据所述本地限流值,处理所述数据访问请求。
根据本公开的第三方面,本公开还提供了一种服务器,包括根据本公开的第二方面所述的装置;或者,包括:存储器,用于存储可执行的指令;处理器,用于根据所述指令的控制运行所述服务器执行根据本公开的第一方面所述的方法。
根据本公开的第四方面,本公开还提供了一种服务器集群,包括数据库服务器和至少一个根据本公开的第三方面所述的服务器,所述服务器作为所述服务器集群的节点服务器,将所述数据库服务器统计的所述服务器集群的总限流值缓存在本地缓存区中,得到本地限流值。
根据本公开的实施例,在节点服务器获取到数据访问请求后,不需要实时的获取最新的总限流值,而是直接从本地缓存区中获取缓存在该节点服务器本地的本地限流值,并根据该本地限流值处理该数据访问请求即可完成限流处理。该方法在执行限流处理时,可以节省节点服务器获取最新的总限流值时所耗费的时间,从而可以灵活、方便的进行系统限流,提升限流效率。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开的原理。
图1是显示可用于实现一个实施例的限流方法的限流系统的硬件配置的原理框图。
图2是根据一个实施例的限流方法的流程示意图。
图3是现有的限流方法的限流处理示意图。
图4a是用于示意一个实施例的限流处理的第一示意图。
图4b是用于示意一个实施例的限流处理的第二示意图。
图5是根据一个实施例的限流装置的原理框图。
图6是根据一个实施例的服务器的硬件结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是可用于实施根据一个实施例的限流方法的限流系统100的硬件配置的框图。
如图1所示,限流系统100可以为包括服务器1000的系统,在该系统中,服务器1000用于提供限流的全部功能。
在具体实施时,终端设备或者其它服务器可以向服务器1000发送数据访问请求,服务器1000在接收到数据访问请求后,响应于该数据访问请求,从本地缓存区中获取将总限流值缓存在本地后、得到的本地限流值,并根据该本地限流值,处理该数据访问请求,以决定是否对该数据访问请求执行限流处理。
服务器1000提供处理、数据库、通讯设施的业务点。服务器1000可以是整体式服务器或是跨多计算机或计算机数据中心的分散式服务器。服务器可以是各种类型的,例如但不限于,网络服务器,新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。例如,服务器例如刀片服务器、云端服务器等,或者可以是由多台服务器组成的服务器群组,可以包括上述类型的服务器中的一种或多种等等。
在一个实施例中,如图1所示,服务器1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600。
处理器1100用于执行计算机程序。该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括各种总线接口,例如串行总线接口(包括USB接口)、并行总线接口等。通信装置1400例如能够进行有线或无线通信。显示装置1500例如是液晶显示屏、LED显示屏触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。
本实施例中,服务器1000的存储器1200用于存储指令,该指令用于控制处理器1100进行操作以执行根据任意实施例的限流方法。技术人员可以根据本公开所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
尽管在图1中示出了服务器1000的多个装置,但是,本公开可以仅涉及其中的部分装置,例如,服务器1000只涉及存储器1200、处理器1100和通信装置1400等。
应当理解的是,尽管图1仅示出一个服务器1000,但不意味着限制各自的数量,限流系统100中也可以包含多个服务器1000,即,限流系统100也可以是以服务器集群的形式向外提供服务。
<方法实施例>
本公开提供一种限流方法,请参看图2,其是根据本公开实施例的限流方法的流程示意图。该方法可以由服务器集群中的任意节点服务器实施,例如可以由图1中的服务器1000实施。
如图2所示,本实施例的方法可以包括步骤S2100-S2300,以下予以详细说明。
步骤S2100,接收数据访问请求。
数据访问请求,是数据请求方向数据提供方索取数据的一种行为。
在具体实施时,数据请求方可以是终端设备或者是服务器,即,数据请求方可以是终端设备根据具体需要向服务器发送的数据索取请求,例如,终端设备响应用户查看某数据的操作请求,向服务器发送用于获取该数据的数据访问请求;或者,数据请求方也可以是服务器,该服务器基于其接收到的数据访问请求,向其它服务器发送获取相关数据的数据访问请求。
数据提供方,一般是指服务器,该服务器根据其接收的数据访问请求,执行相应处理以向数据请求方提供相应数据或提供请求响应结果。
在本实施例中,数据访问请求可以是服务器集群中的任意节点服务器接收到的请求,此处不做特殊限定。
步骤S2200,响应于所述数据访问请求,从本地缓存区中获取本地限流值,其中,所述本地限流值为总限流值的本地缓存值,所述总限流值为所述服务器集群在预设时间长度内接收到的数据访问请求的累加值。
本地限流值,是将总限流值缓存到节点服务器的本地缓存区中的本地缓存值。
总限流值,是服务器集群在预设时间长度内接收到的数据访问请求的累加值,其中,在本实施例中,预设时间长度可以为一个时间片(timeslice)。
在本实施例中,节点服务器中的本地缓存可以通过工具库,例如,LoadingCache工具库实现,由于现有技术中有关于LoadingCache工具库的详细说明,此处不再赘述。
请参看图3,其为现有的限流方法的限流处理示意图。如图3所示,现有技术中的限流方法在执行限流处理时,在节点服务器经过步骤S3100接收到数据访问请求后,需要以同步(synchronouscommunication)的方式执行步骤S3200,该步骤可以分解为:步骤S3201,节点服务器的当前线程向数据库服务器发送更新总限流值,以及获取最新总限流值的数据请求消息,并以线程阻塞的方式等待数据库服务器返回最新总限流值;步骤S3202、数据库服务器接收该数据请求消息,并根据该数据请求消息,对当前总限流值进行累加计数操作,获得最新总限流值;步骤S3203,数据库服务器将最新总限流值返回给节点服务器;步骤S3204,节点服务器的当前线程接收数据库服务器返回的最新总限流值。在步骤S3200获取到最新总限流值之后,执行步骤S3300。
由此可知,在现有技术中,节点服务器处理一条数据访问请求的耗时将是步骤S3100-步骤S3300消耗的时长的总和。而在实际中,执行步骤S3200需要消耗的时长是随着系统服务QPS的增长在逐步增长的,也就是说,现有技术中的限流方法对数据库服务器,例如,对redis数据库服务器的吞吐性能具有强依赖性,存在不够灵活、方便的问题。需要说明的是,在图3中,以总限流值存储在数据库服务器中为例示意现有技术中的限流处理,在实际中,基于谷歌开源工具的限流方式或者其它单机限流方式虽然是在应用服务器内部执行步骤S3200,但其同样存在不够灵活、方便的问题,此处不再赘述。
请参看图4a,其是用于示意一个实施例的限流处理的第一示意图。如图4a所示,针对现有技术中的限流方法存在的不够灵活、方便的问题,同时也为了减少节点服务器处理数据访问请求的处理时间,以提升处理速度,本实施例提供的限流方法在节点服务器的本地缓存区中设置了本地限流值字段,通过将将服务器集群对应的总限流值缓存在本地限流值字段中,在节点服务器接收到数据访问请求后,节点服务器不需要向数据库服务器请求获取最新总限流值,而是直接获取本地缓存区中存储的本地限流值,并根据该本地限流值执行限流判断。
即,本实施例提供的该方法在节点服务器执行限流处理的过程中,在节点服务器与数据库服务器之间增加本地缓存区作为中间层,通过该中间层将步骤S3200拆分,以提升限流处理的灵活性和处理速度。
在步骤S2200之后,执行步骤S2300,根据所述本地限流值,处理所述数据访问请求。
在本实施例中,所述根据所述本地限流值,处理所述数据访问请求,具体包括:在所述本地限流值大于预设的限流阈值的情况下,对所述数据访问请求执行限流处理。
在本实施例中,限流阈值,可以为预设的、节点服务器所在的服务器集群在预设时间长度内可以处理的数据访问请求的数量,即,应用系统对应的QPS阈值,在具体实施时,QPS阈值可以根据需要进行设置,此处不做特殊限定。
例如,预设的限流阈值可以为100万,则当节点服务器获取到的本地限流值的数值为10万的情况下,可以根据本地限流值与预设的限流阈值的比较结果,对节点服务器接收的数据访问请求执行限流处理。
在具体实施时,所述对所述数据访问请求执行限流处理,可以为:拒绝所述数据访问请求。
即,在节点服务器缓存的本地限流值大于预设的限流阈值的情况下,为避免系统服务出现过载的情况,节点服务器可以拒绝处理该数据访问请求,并向该数据访问请求对应的数据请求方返回错误信息,例如,可以向数据请求方返回错误状态代码“403”。
需要说明的是,在具体实施时,也可以通过其它方法对数据访问请求执行限流处理,例如,在本地限流值大于预设的限流阈值的情况下,将该数据访问请求加入待处理请求队列中,并间隔预设时间,例如,间隔1s后从待处理请求队列中取出该数据访问请求,并根据最新的本地限流值决定是否处理该数据访问请求,此处不再赘述。
当然,在本地限流值不大于预设的限流阈值的情况下,节点服务器则可以正常处理数据访问请求,例如,节点服务器可以响应于接收到的数据访问请求,正常执行与该数据访问请求对应的业务处理流程,此处不再赘述。
在具体实施时,为了保证节点服务器的本地缓存区中的本地限流值的相对准确性和相对实时性,本公开提供的该方法还包括:根据所述数据访问请求,更新所述总限流值;根据更新后的总限流值,更新所述本地限流值。
具体来讲,为了使本地限流值尽可能的与最新的总限流值保持一致,可以在节点服务器接收到数据访问请求以及响应于该数据访问请求,获取本地限流值的同时,由节点服务器根据该数据访问请求,更新总限流值,以及,根据更新后的总限流值,更新本地缓存区中的本地限流值。
在具体实施时,在节点服务器响应接收的数据访问请求,从本地缓存区中获取本地限流值的同时,可以通过异步(asynchronouscommunication)的方式根据该数据访问请求更新总限流值。
例如,在节点服务器接收到数据访问请求后,响应于该数据访问请求,节点服务器不需要以线程阻塞的方式等待获取最新的总限流值,而是由当前线程直接从本地缓存区中获取本地限流值,并根据该本地限流值处理该数据访问请求;与此同时,在当前线程响应于该数据访问请求,从本地缓存区中读取本地限流值的同时,节点服务器可以使用另一个线程以异步的方式对总限流值执行更新处理,并将更新后的总限流值缓存到本地缓存区中,以更新本地限流值。需要说明的是,在具体实施时,也可以根据需要使用其它方法异步的更新总限流值,此处不再赘述。
在具体实施时,为了提升限流效率,可以将总限流值存储在数据库服务器中,其中,该数据库服务器可以是能够与服务器集群中的节点服务器通信的服务器。例如,可以将总限流值存储在分布式数据库中,该分布式数据库可以是redis、tair等分布式数据库。
请参看图4b,其是用于示意一个实施例的限流处理的第二示意图。如图4b所示,在本实施例中,所述更新所述总限流值,包括:向所述数据库服务器发送用于更新所述总限流值的数据请求消息;获取所述数据库服务器返回的、对应于所述数据请求消息的回调消息;从所述回调消息中,获取所述更新后的总限流值。
即,在节点服务器响应于接收到的数据访问请求,通过异步的方式更新总限流值时,可以由节点服务器在另一个线程中向数据库服务器发送用于更新总限流值的数据请求消息,并可以在该数据请求消息中封装入用于更新本地限流值的回调函数的信息;在数据库服务器接收到节点服务器发送的该数据请求消息之后,根据该数据请求消息,对存储的当前总限流值进行自增累加操作,以获得更新后的总限流值;之后,数据库服务器可以根据数据请求消息中封装的回调函数的信息,将更新后的总限流值填充到该回调函数中的相应接口参数中,并通过调用该回调函数,向节点服务器返回回调消息;在节点服务器接收到该回调消息后,从该回调消息中,获得更新后的总限流值,并可以根据该总限流值更新本地限流值,以确保本地限流值的相对准确性以及相对实时性。
需要说明的是,由于数据库服务器存在宕机的可能性,因此,为了保证服务器能够正常执行限流处理以及能够正常更新总限流值,所述更新所述总限流值还包括:获取所述数据库服务器的服务状态;在所述服务状态表征所述数据库服务器处于服务可用状态的情况下,执行所述向所述数据库服务器发送用于更新所述总限流值的数据请求消息步骤。
即,为了保证系统服务的稳定性,同时也为了降低限流处理对数据库服务器的强依赖性,在本实施例中,当总限流值存储在数据库服务器中时,可以在执行所述向所述数据库服务器发送用于更新所述总限流值的数据请求消息步骤之前,获取数据库服务器的服务状态,并可以在获取到的服务状态表征数据库服务器处于服务可用状态的情况下,正常执行该步骤。
在具体实施时,节点服务器可以使用数据库服务器提供的接口函数获取数据库服务器的服务状态,当然,也可以通过其它方法获取该服务状态,此处不做特殊限定。
另外,为了进一步保证系统服务的稳定性,在获取到的服务状态表征数据库服务器处于服务不可用状态的情况下,还可以在节点服务器内部切换单机限流方式更新总限流值。
在本实施例中,单机限流方式可以是基于谷歌开源工具Guava-RateLimiter的单机限流方式。
具体来讲,在节点服务器响应于接收到的数据访问请求,以异步的方式更新数据库服务器中存储的总限流值之前,如果判断得到数据库服务器当前处于服务不可用状态,则可以将当前的分布式限流处理降级为单机限流处理,即,由节点服务器在服务器内部基于令牌桶算法,以当前本地缓存区中的本地限流值为当前总限流值,并通过异步的方式对该总限流值进行自增累加操作,并根据更新后的总限流值更新本地限流值。
在具体实施时,在以单机限流方式更新总限流值以确保节点服务器中的限流处理可以正常执行的同时,还可以间隔预设时间判断数据库服务器的服务状态,并在数据库服务器处于服务可用状态的情况下,将单机限流方式切换为基于数据库服务器进行限流的分布式限流处理方式,此处不再赘述。
此外,在具体实施时,为了保证本地限流值的相对准确性和实时性,还可以由节点服务器每间隔一段时间,执行判断本地缓存区中存储的本地限流值是否超过有效缓存时长的处理,即,本实施例提供的限流方法还包括:获取所述本地限流值的缓存时长;在所述缓存时长超过预设的有效时长的情况下,获取最新的总限流值;根据所述最新的总限流值,更新所述本地限流值。需要说明的是,在具体实施时,缓存的有效缓存时长可以根据需要进行设置,例如,可以基于系统服务的吞吐能力设置该时长,此处不再赘述。
需要说明的是,在本公开中,是以该限流方法应用于服务器集群中的任意节点服务器为例进行说明,即,以该限流方法应用于分布式系统为例进行说明,在具体实施时,该限流方法当然也可以应用于单个服务器中,即,本实施例中所述服务器集群也可以仅包含一个服务器,此处不做特殊限定。
根据以上步骤S2100-S2300可知,本实施例的方法在节点服务器获取到数据访问请求后,不需要实时的获取最新的总限流值,而是直接从本地缓存区中获取缓存在节点服务器本地的本地限流值,并根据该本地限流值处理该数据访问请求即可完成限流处理。该方法在执行限流处理时,可以节省节点服务器获取最新的总限流值时所耗费的时间,从而可以灵活、方便的进行系统限流,提升限流效率。
<装置实施例>
在本实施例中,还提供一种限流装置,如图5所示,该装置5000可以包括请求接收模块5100、本地限流值获取模块5200和限流处理模块5300。
该请求接收模块5100,用于接收数据访问请求。
该本地限流值获取模块5200,用于从本地缓存区中获取本地限流值,其中,所述本地限流值为总限流值的本地缓存值,所述总限流值为所述服务器集群在预设时间长度内接收到的数据访问请求的累加值。
该限流处理模块5300,用于根据所述本地限流值,处理所述数据访问请求。
在一个实施例中,该限流处理模块5300在根据所述本地限流值,处理所述数据访问请求时,可以用于:在所述本地限流值大于预设的限流阈值的情况下,对所述数据访问请求执行限流处理。
在一个实施例中,该限流处理模块5300在对所述数据访问请求执行限流处理时,可以用于:拒绝所述数据访问请求。
在一个实施例中,该装置5000还包括更新模块,该更新模块,用于根据所述数据访问请求,更新所述总限流值;根据更新后的总限流值,更新所述本地限流值。
在该实施例中,所述服务器集群还包括与节点服务器通信的数据库服务器,所述总限流值存储在所述数据库服务器中,该更新模块在更新所述总限流值时,可以用于:向所述数据库服务器发送用于更新所述总限流值的数据请求消息;获取所述数据库服务器返回的、对应于所述数据请求消息的回调消息;从所述回调消息中,获取所述更新后的总限流值。
在该实施例中,该更新模块在更新所述总限流值时,还可以用于:获取所述数据库服务器的服务状态;在所述服务状态表征所述数据库服务器处于服务可用状态的情况下,执行所述向所述数据库服务器发送用于更新所述总限流值的数据请求消息步骤。
在该实施例中,该更新模块在更新所述总限流值时,还可以用于:在所述服务状态表征所述数据库服务器处于服务不可用状态的情况下,使用预设的单机限流方式更新所述总限流值。
在一个实施例中,该装置5000还包括本地限流值更新模块,该本地限流值更新模块,用于获取所述本地限流值的缓存时长,在所述缓存时长超过预设的有效时长的情况下,获取最新的总限流值,根据所述最新的总限流值,更新所述本地限流值。
<设备实施例1>
在本实施例中,还提供一种服务器,其可以包括根据本公开任意实施例的限流装置5000,用于实施本公开任意实施例的限流方法。
如图6所示,该服务器6000还可以包括处理器6200和存储器6100,该存储器6100用于存储可执行的指令;该处理器6200用于根据指令的控制运行服务器以执行根据本公开任意实施例的限流方法。
以上装置5000的各个模块可以由处理器6200运行该指令以执行根据本公开任意实施例的限流方法来实现。
<设备实施例2>
在本实施例中,还提供一种服务器集群,其可以包括数据库服务器和至少一个根据本公开任意实施例的服务器6000,所述服务器6000作为所述服务器集群的节点服务器,将所述数据库服务器统计的所述服务器集群的总限流值缓存在本地缓存区中,得到本地限流值。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。
Claims (10)
1.一种限流方法,应用于服务器集群中的节点服务器,包括:
接收数据访问请求;
响应于所述数据访问请求,从本地缓存区中获取本地限流值,其中,所述本地限流值为总限流值的本地缓存值,所述总限流值为所述服务器集群在预设时间长度内接收到的数据访问请求的累加值;
根据所述本地限流值,处理所述数据访问请求。
2.根据权利要求1所述的方法,所述根据所述本地限流值,处理所述数据访问请求,包括:
在所述本地限流值大于预设的限流阈值的情况下,对所述数据访问请求执行限流处理。
3.根据权利要求1所述的方法,所述方法还包括:
根据所述数据访问请求,更新所述总限流值;
根据更新后的总限流值,更新所述本地限流值。
4.根据权利要求3所述的方法,所述服务器集群还包括与节点服务器通信的数据库服务器,所述总限流值存储在所述数据库服务器中,所述更新所述总限流值,包括:
向所述数据库服务器发送用于更新所述总限流值的数据请求消息;
获取所述数据库服务器返回的、对应于所述数据请求消息的回调消息;
从所述回调消息中,获取所述更新后的总限流值。
5.根据权利要求4所述的方法,所述更新所述总限流值还包括:
获取所述数据库服务器的服务状态;
在所述服务状态表征所述数据库服务器处于服务可用状态的情况下,执行所述向所述数据库服务器发送用于更新所述总限流值的数据请求消息步骤。
6.根据权利要求5所述的方法,所述更新所述总限流值,还包括:
在所述服务状态表征所述数据库服务器处于服务不可用状态的情况下,使用预设的单机限流方式更新所述总限流值。
7.根据权利要求1所述的方法,所述方法还包括:
获取所述本地限流值的缓存时长;
在所述缓存时长超过预设的有效时长的情况下,获取最新的总限流值;
根据所述最新的总限流值,更新所述本地限流值。
8.一种限流装置,包括:
请求接收模块,用于接收数据访问请求;
本地限流值获取模块,用于从本地缓存区中获取本地限流值,其中,所述本地限流值为总限流值的本地缓存值,所述总限流值为所述服务器集群在预设时间长度内接收到的数据访问请求的累加值;
限流处理模块,用于根据所述本地限流值,处理所述数据访问请求。
9.一种服务器,包括权利要求8所述的限流装置;或者,
所述服务器包括:
存储器,用于存储可执行的指令;
处理器,用于根据所述指令的控制运行所述服务器执行如权利要求1-7任意一项所述的方法。
10.一种服务器集群,包括数据库服务器和至少一个权利要求9所述的服务器,所述服务器作为所述服务器集群的节点服务器,将所述数据库服务器统计的所述服务器集群的总限流值缓存在本地缓存区中,得到本地限流值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010611501.9A CN111988355A (zh) | 2020-06-29 | 2020-06-29 | 限流方法、装置、服务器及服务器集群 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010611501.9A CN111988355A (zh) | 2020-06-29 | 2020-06-29 | 限流方法、装置、服务器及服务器集群 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111988355A true CN111988355A (zh) | 2020-11-24 |
Family
ID=73437732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010611501.9A Withdrawn CN111988355A (zh) | 2020-06-29 | 2020-06-29 | 限流方法、装置、服务器及服务器集群 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111988355A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804160A (zh) * | 2021-01-26 | 2021-05-14 | 北京嘀嘀无限科技发展有限公司 | 基于应用程序的限流方法、装置、设备、介质及产品 |
CN113285884A (zh) * | 2021-07-19 | 2021-08-20 | 阿里云计算有限公司 | 流量控制方法及系统 |
CN113382080A (zh) * | 2021-06-25 | 2021-09-10 | 中关村智慧城市产业技术创新战略联盟 | 一种微服务治理系统和方法 |
CN114679452A (zh) * | 2022-03-01 | 2022-06-28 | 北京金山云网络技术有限公司 | 接口调用方法、装置、电子设备和存储介质 |
CN114915593A (zh) * | 2022-06-10 | 2022-08-16 | 北京世纪好未来教育科技有限公司 | 基于Redis的流量控制方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180295150A1 (en) * | 2017-04-10 | 2018-10-11 | Yahoo! Inc. | Automatic peer to peer level of activity information maintenance and sharing method and apparatus |
CN109995669A (zh) * | 2019-04-09 | 2019-07-09 | 深圳前海微众银行股份有限公司 | 分布式限流方法、装置、设备及可读存储介质 |
CN110191160A (zh) * | 2019-05-10 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 一种并发控制方法和装置 |
WO2019178761A1 (zh) * | 2018-03-21 | 2019-09-26 | 华为技术有限公司 | 应用编程接口api网关集群的控制方法和api网关集群 |
CN110417671A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 数据传输的限流方法和服务器 |
CN110753131A (zh) * | 2019-11-04 | 2020-02-04 | 网易(杭州)网络有限公司 | 微服务分布式限流方法及装置、存储介质和电子设备 |
US20200162578A1 (en) * | 2018-11-19 | 2020-05-21 | International Business Machines Corporation | Microservices request flow control synchronization |
CN111338575A (zh) * | 2020-02-20 | 2020-06-26 | 苏州浪潮智能科技有限公司 | 一种存储服务质量控制方法、装置、设备及存储介质 |
-
2020
- 2020-06-29 CN CN202010611501.9A patent/CN111988355A/zh not_active Withdrawn
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180295150A1 (en) * | 2017-04-10 | 2018-10-11 | Yahoo! Inc. | Automatic peer to peer level of activity information maintenance and sharing method and apparatus |
WO2019178761A1 (zh) * | 2018-03-21 | 2019-09-26 | 华为技术有限公司 | 应用编程接口api网关集群的控制方法和api网关集群 |
US20200162578A1 (en) * | 2018-11-19 | 2020-05-21 | International Business Machines Corporation | Microservices request flow control synchronization |
CN109995669A (zh) * | 2019-04-09 | 2019-07-09 | 深圳前海微众银行股份有限公司 | 分布式限流方法、装置、设备及可读存储介质 |
CN110191160A (zh) * | 2019-05-10 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 一种并发控制方法和装置 |
CN110417671A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 数据传输的限流方法和服务器 |
CN110753131A (zh) * | 2019-11-04 | 2020-02-04 | 网易(杭州)网络有限公司 | 微服务分布式限流方法及装置、存储介质和电子设备 |
CN111338575A (zh) * | 2020-02-20 | 2020-06-26 | 苏州浪潮智能科技有限公司 | 一种存储服务质量控制方法、装置、设备及存储介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804160A (zh) * | 2021-01-26 | 2021-05-14 | 北京嘀嘀无限科技发展有限公司 | 基于应用程序的限流方法、装置、设备、介质及产品 |
CN112804160B (zh) * | 2021-01-26 | 2023-06-06 | 北京嘀嘀无限科技发展有限公司 | 基于应用程序的限流方法、装置、设备、介质及产品 |
CN113382080A (zh) * | 2021-06-25 | 2021-09-10 | 中关村智慧城市产业技术创新战略联盟 | 一种微服务治理系统和方法 |
CN113382080B (zh) * | 2021-06-25 | 2023-03-28 | 中关村智慧城市产业技术创新战略联盟 | 一种微服务治理系统和方法 |
CN113285884A (zh) * | 2021-07-19 | 2021-08-20 | 阿里云计算有限公司 | 流量控制方法及系统 |
CN114679452A (zh) * | 2022-03-01 | 2022-06-28 | 北京金山云网络技术有限公司 | 接口调用方法、装置、电子设备和存储介质 |
CN114915593A (zh) * | 2022-06-10 | 2022-08-16 | 北京世纪好未来教育科技有限公司 | 基于Redis的流量控制方法、装置、电子设备及存储介质 |
CN114915593B (zh) * | 2022-06-10 | 2023-05-09 | 北京世纪好未来教育科技有限公司 | 基于Redis的流量控制方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111988355A (zh) | 限流方法、装置、服务器及服务器集群 | |
CN110753112A (zh) | 云服务的弹性伸缩方法和装置 | |
CN110213620B (zh) | 带宽分配方法及装置 | |
CN111614490A (zh) | 基于顶级容器集群对托管容器集群的管理系统及方法 | |
CN111970339B (zh) | 请求控制方法、装置及电子设备 | |
CN113517985B (zh) | 文件数据处理方法、装置、电子设备及计算机可读介质 | |
CN113760324A (zh) | 构建微前端应用的方法和装置 | |
CN113961311A (zh) | 业务数据处理方法、装置、电子设备和介质 | |
CN114528517A (zh) | 一种视图处理方法、装置、电子设备及计算机可读介质 | |
CN111290871A (zh) | 获取应用程序崩溃信息的方法和装置 | |
CN114064668A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
CN113760982A (zh) | 一种数据处理方法和装置 | |
CN113778565A (zh) | 一种接口数据处理方法和装置 | |
CN113254191A (zh) | 用于运行应用的方法、电子设备和计算机程序产品 | |
CN111488117A (zh) | 用于管理元数据的方法、电子设备和计算机可读介质 | |
CN112817701B (zh) | 定时器处理方法、装置、电子设备和计算机可读介质 | |
CN112685481A (zh) | 一种数据处理方法和装置 | |
CN114374657A (zh) | 一种数据处理方法和装置 | |
CN113779122A (zh) | 导出数据的方法和装置 | |
CN112306371A (zh) | 存储管理的方法、设备和计算机程序产品 | |
CN112463616A (zh) | 一种面向Kubernetes容器平台的混沌测试方法和装置 | |
CN113064620A (zh) | 一种处理系统数据的方法和装置 | |
CN110019671B (zh) | 一种处理实时消息的方法和系统 | |
CN112187570A (zh) | 一种风险侦测方法、装置、电子设备和可读存储介质 | |
CN113742617A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201124 |