CN112968945B - 限流方法、装置、电子设备及存储介质 - Google Patents
限流方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112968945B CN112968945B CN202110137474.0A CN202110137474A CN112968945B CN 112968945 B CN112968945 B CN 112968945B CN 202110137474 A CN202110137474 A CN 202110137474A CN 112968945 B CN112968945 B CN 112968945B
- Authority
- CN
- China
- Prior art keywords
- service instance
- metering data
- request
- terminal equipment
- service
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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)
- Selective Calling Equipment (AREA)
- Telephonic Communication Services (AREA)
Abstract
本公开实施例提供一种限流方法、装置、电子设备及存储介质,通过响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组;其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据;若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理;即本公开实施例在服务实例分组中存储终端设备的请求计量数据,避免了中心化存储的性能瓶颈,减少了通信延迟。
Description
技术领域
本公开实施例涉及微服务技术领域,尤其涉及一种限流方法、装置、电子设备及存储介质。
背景技术
在微服务架构下,为了防止某项微服务被无限制的任意调用而造成服务打挂,需要对请求量进行限制,即进行限流保护。
现有技术中,通常采用中心化存储方案对微服务进行分布式限流保护,即将请求的计量数据进行中心化存储。
但是,由于实现微服务的各项服务实例需要与中心化存储节点进行频繁通信,存在着一定的性能瓶颈、通信延迟等,造成限流效果不佳。
发明内容
本公开实施例提供一种限流方法、装置、电子设备及存储介质,以克服中心化存储方案存在的性能瓶颈、通信延迟问题。
第一方面,本公开实施例提供一种限流方法,包括:响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组;其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据;若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理。
第二方面,本公开实施例提供一种限流装置,包括:确定模块,用于响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组;其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;获取模块,用于从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据;处理模块,用于若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理。
第三方面,本公开实施例提供一种电子设备,包括:至少一个处理器和存储器;所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的限流方法。
第四方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的限流方法。
第五方面,本公开实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的限流方法。
本实施例提供的限流方法、装置、电子设备及存储介质,通过响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组;其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据;若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理;即本公开实施例对所有服务实例进行分组,在服务实例分组中存储有终端设备的请求计量数据,当终端设备发起请求时,当前的服务实例与服务实例分组进行通信以获取终端设备的请求计量数据,实现了去中心化存储数据,避免了中心化存储的性能瓶颈,减少了通信延迟。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种应用场景示意图;
图2为本公开实施例提供的限流方法的流程示意图一;
图3为本公开实施例提供的限流方法示意图二;
图4为本公开实施例提供的限流方法示意图三;
图5为本公开提供的一种限流方法的流程框图;
图6为本公开提供另一种限流方法的流程框图;
图7为本公开实施例提供的限流装置的结构框图;
图8为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
首先对本公开所涉及的名词进行解释:
微服务:将整个应用分散成多个服务,例如可以将电商系统划分成用户服务、商品服务、订单服务、促销服务等。每个服务可以包括多个服务器,每个服务器上运行有实现该服务的服务实例。
在微服务架构下,为了防止某项微服务被无限制的任意调用而造成服务打挂,需要对请求量进行限制,即进行限流保护。而由于微服务一般通过水平扩展以集群的方式进行部署,因此对应的限流方案就不是单机限流而是分布式架构下的限流。
现有技术中,通常采用中心化存储方案对微服务进行分布式限流保护,即需要将请求的计量数据进行中心化存储。
但是,由于实现微服务的各项服务实例需要与中心化存储节点进行频繁通信,存在着一定的性能瓶颈、通信延迟等,造成限流效果不佳。
针对上述技术问题,本公开的技术构思在于:对于微服务架构下的的所有服务实例进行分组,每个服务实例分组记录对应终端设备的请求计量数据,即一部分节点(一部分服务器)存储一部分终端设备对应的请求计量数据,另一部分节点(另一部分服务器)存储另一部分终端设备对应的请求计量数据,从而实现了去中心化存储的分布式限流方案。
图1为本公开实施例提供的一种应用场景示意图,如图1所示,用户通过终端设备向微服务发起请求,其中,微服务架构中包括多个服务器,所述微服务架构中每一服务器运行有服务实例,每个服务实例均可以实现与请求对应的业务功能。例如,在图1所示的微服务架构中,实现的是用户登录服务,即用户通过在终端设备上输入用户名、密码等向微服务发起登录请求,微服务对该登录请求进行响应。其中,微服务架构下的每一个服务器均可以执行下述各实施例所述的限流方法。
参考图2,图2为本公开实施例提供的限流方法的流程示意图一。该限流方法应用于如图1所示的微服务架构中的任一服务器。所述方法包括:
S101、响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组。
其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据。
具体来说,在微服架构下,会对服务实例进行分组,服务实例分组中的每一个服务实例对应的服务器上均存储有对应的终端设备的请求计量数据。
举例来说,假设用于实现用户登录服务的服务器群部署有50个服务实例,即服务实例一、服务实例二、服务实例三……服务实例四十九、服务实例五十,将每5个服务实例分成一组,例如服务实例一至服务实例五构成第一服务实例分组,服务实例六至服务实例十构成第二服务实例分组,……服务实例四十六至服务实例五十构成第十服务实例分组。其中,第一服务实例分组对应终端设备A、B、C、D,即在第一服务实例分组中的每一个服务器上均存储有终端设备A、B、C、D的请求计量数据;第二服务实例分组对应终端设备E、F,即第二服务实例分组中的每一个服务器上均存储有终端设备E、F的请求计量数据;依次类推,每个服务实例分组会存储对应的终端设备的请求计量数据。并且可将终端设备与服务实例分组的对应关系作为预设关系对照表存储到每个服务实例对应的服务器上。
在本步骤中,当有终端设备向某一个服务实例发起请求时,可将该服务实例对应的服务器称之为当前的服务器,该当前的服务器会根据本地存储的预设关系对照表确定发起请求的终端设备所对应的服务实例分组。
可选的,所述终端设备所对应的服务实例分组对应的服务器中,包括当前的服务器;或者,所述终端设备所对应的服务实例分组对应的服务器中,不包括当前的服务器。
具体来说,终端设备向当前的服务器发起请求包括两种情况,一种是当前的服务器属于终端设备所对应的服务实例分组中的服务器,例如终端设备A向服务实例一发起请求;另一种是,当前的服务器不属于终端设备对应的服务实例分组中的服务器,例如,终端设备A向第六服务实例发起请求,第六服务实例对应的服务器作为当前的服务器不属于终端设备A对应的第一服务实例分组,但每个服务实例对应的服务器上均存储有预设关系对照表,则第六服务实例对应的服务器可以确定向其发起请求的终端设备A对应第一服务实例分组。
S102、从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据。
具体来说,服务实例分组中会存储有对应的终端设备的请求计量数据,因此,当确定发起请求的终端设备所对应的服务实例分组后,可以从该服务实例分组中的任意一个服务器中获取到该终端设备的请求计量数据。
作为可选的实施例,所述终端设备对应的请求计量数据为当前时间间隔的终端设备对应的请求计量数据;或者,所述终端设备对应的请求计量数据为多个预设时间间隔的终端设备对应的请求计量数据。
具体来说,在服务实例分组中的每一个服务器上,会存储有对应的终端设备在最近一段时间内的请求计量数据,一般来说,为了尽可能精确反应终端设备当前的请求数据量,且避免记录的计量数据过大,服务实例分组一般默认以1秒为间隔记录每个终端设备的请求的计量数据。在本实施例中,可以从服务实例分组中的任一服务器上获取当前时间间隔(也可称之为当前时间窗口,窗口宽度为1秒)的请求计量数据。或者,也可以从服务实例分组中的任一服务器上获取最近一段时间内的多个预设时间间隔的请求计量数据,例如,获取最近一段时间内的10个间隔的数据
作为可选的实施例,所述终端设备所对应的服务实例分组对应的服务器中,包括当前的服务器。具体来说,接收请求的当前的服务器根据预设关系对照表确定该终端设备所对应的服务实例分组为当前的服务器所在的服务实例分组时,则当前的服务器会从本地存储器中获取到该终端设备的请求计量数据。举例来说,当终端设备A向第一服务实例发起请求,第一服务实例确定终端设备A对应第一服务实例分组后,第一服务实例对应的服务器会读取本地所存储的终端设备A的请求计量数据。
作为可选的实施例,若终端设备所对应的服务实例分组对应的服务器中,不包括当前的服务器,则S102包括:向所述终端设备所对应的服务实例分组对应的任一服务器,发送获取请求;其中,所述获取请求用于指示获取与所述终端设备对应的请求计量数据;接收所述任一服务器发送的与所述终端设备对应的请求计量数据。
具体来说,接收请求的当前的服务器,根据预设关系对照表确定该终端设备所对应的服务实例分组后(该服务实例分组不是当前的服务器所在的服务实例分组),则当前的服务器会向终端设备所对应的服务实例分组中的任意一个服务器发送获取请求,例如“getcount”消息,以从该服务实例分组中的任意一个服务器上获取到该终端设备对应的业务请求计量数据。举例来说,终端设备A向第六服务实例发起请求,第六服务实例确定终端设备A对应第一服务实例分组,则第六服务实例对应的服务器会向第一服务实例分组中的任意一个服务器发送获取请求,例如“getcount”消息,以获取终端设备A的请求计量数据。
作为可选的实施例,若没有从所述服务实例分组对应的任一服务器中接收到与所述终端设备对应的请求计量数据,则再次执行所述向所述终端设备所对应的服务实例分组对应的任一服务器,发送获取请求的步骤。作为可选的实施例,若再次执行所述向所述终端设备所对应的服务实例分组对应的任一服务器,发送获取请求的步骤后,还是没有接收到所述终端设备对应的请求计量数据,则根据当前服务器上所存储的终端设备对应的请求计量数据确定是否进行限流处理。
具体来说,当前的服务器在确定终端设备对应的服务实例分组后,会随机从对应的服务实例分组中选取一个服务实例去尝试读取终端设备的业务请求计量数据,可见,相比于中心化存储的技术方案,本实施例是将读取请求计量数据的压力分散到该组全部服务实例上;若读取失败,可重试一次,即再次随机从对应的服务实例分组中选取一个服务实例去尝试读取;若还是读取失败,则基于本地历史存储的终端设备的业务请求计量数据进行限流判断;其中,本地存储的终端设备的业务请求计量数据是当前的服务器与终端设备对应的服务实例分组中的服务器上一次通信成功获取的,具体来说,可以是当前的服务器上次发送获取请求,例如“getcount”消息,服务实例分组中的任一服务器成功反馈后,记录在本地存储中的,也可以是,每隔一段时间,当前的服务器会在后台异步与终端设备对应的服务实例分组进行通信获取的。
S103、若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理。
具体来说,若获取到终端设备在当前时间间隔内的请求计量数据,则可以在该请求计量数据较大时,确定进行限流处理;在该请求计量数据较小时,确定不进行限流处理,而是接收该请求,实现对应的服务。
若所述终端设备对应的请求计量数据为多个预设时间间隔的终端设备对应的请求计量数据;则S103中的根据所述终端设备对应的请求计量数据确定进行限流处理,包括:对多个预设时间间隔的终端设备对应的请求计量数据进行加权平均处理;根据加权平均处理后的请求计量数据确定进行限流处理。
具体来说,若当前的服务器获取的是最近一段时间内的多个预设时间间隔的请求计量数据,则可以对这多个数据进行加权平均处理,然后利用加权平均处理后的计量数据进行限流判断。其中,这多个预设时间间隔的请求计量数据的个数可以动态配置,从而可以控制数据准确性和移动平均计算的曲线平滑程度,对于移动平均的计算策略,为了给最近的数据给予更大的权重,并能避免在局部过于平滑的误差,能给数据发生变化是更加及时的捕获,可采用分形自适应移动平均算法(Fractal Adaptive Moving Average,简称FRAMA)实现。
作为可选的实施例,步骤103中的所述根据所述终端设备对应的请求计量数据确定进行限流处理,包括:若所述终端设备对应的请求计量数据大于等于第一预设阈值,则确定进行限流处理。
具体来说,在根据上述方法获取到终端设备的请求计量数据后,可以根据获取的请求计量数据判断否进行限流,在本实施例中,针对不同的终端设备,可以设置不同的第一预设阈值,该第一预设阈值用于表征微服务可接收的终端设备的最大请求量阈值;当获取的终端设备的请求计量数据大于等于该第一预设阈值后,说明此时微服务接收到来自终端设备的请求已经超过最大请求量阈值,需要进行限流处理。
可选的,可以采用天气时钟(dmclock)算法实现流量限制,即对客户端发送到服务器上的每个请求打上标签,标签值是与当前时间相关的数字。
作为可选的实施例,步骤103中的所述根据所述终端设备对应的请求计量数据确定进行限流处理,包括:若所述终端设备对应的请求计量数据与当前的服务器接收到的所有终端设备对应的请求计量数据之和的比值大于等于第二预设阈值,则确定进行限流处理。
具体来说,针对微服务对外提供的模式和场景,在具体进行限流管控时除了上述提供的最大阈值管控方式外,同时还提供体现终端设备优先级的限流管控;即在各个终端设备具备相对优先级时,可以基于优先级高低分配不同管控比例,即针对当前的服务器获取到的各个客户端的请求的计量数据之和,计算对应终端设备的计量数据所占的比例,当比例大于等于第二预设阈值时,则需要进行限流管控。
作为可选的实施例,步骤103中的所述对所述终端设备进行限流处理,包括:直接拒绝所述终端设备发起的请求;或者,经过预设时长后,再次获取与所述终端设备对应的请求计量数据,并根据所述终端设备对应的请求计量数据确定是否进行限流处理;或者,不拒绝所述终端设备发起的请求;或者,输出告警信息。
具体来说,本领域技术人员可以根据不同的应用场景灵活配置不同的限流处理方式,包括以下至少一种方式:
(1)直接拒绝:即在确定需要进行限流时,直接拒绝对应的请求;
(2)推迟排队:即若在当前时间间隔内,确定需要进行限流时,则可以推迟预设时长,到下一个判断周期再进行限流判断;
(3)静默打点:在确定需要进行限流时,对微服务进行监控,但不拒绝该请求,可用于微服务系统的功能、压力测试等。
(4)分级告警:确定需要进行限流时,向终端设备和提供该服务的人员输出告警信息,可以以超过第一预设阈值或第二预设阈值的10%、20%、30%分级进行警告,通过短信、邮件、电话等不同形式进行告警。
本公开实施例提供的限流方法,通过响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组;其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据;若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理;即本公开实施例对所有服务实例进行分组,在服务实例分组中存储有终端设备的业务请求计量数据,当终端设备发起请求时,当前的服务实例与服务实例分组进行通信以获取终端设备的请求计量数据,实现了去中心化存储数据,避免了中心化存储的性能瓶颈,减少了通信延迟。
在上述实施例的基础上,参考图3,图3为本公开实施例提供的限流方法示意图二,该限流方法包括:
S201、获取所有服务实例标识。
S202、根据所有服务实例标识对所有服务实例进行分组,获得所述服务实例分组。
S203、构建终端设备与所述服务实例分组的对应关系。
S204、响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组。
其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;
S205、从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据。
S206、若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理。
本实施例中的S204、S205以及S206与前述实施例中的S101、S102以及S103的实现方式类似,在此不进行赘述。
与前述实施例不同的是,本实施例进一步限定了如何进行服务实例分组以及构建终端设备与服务实例分组的对应关系。在本实施例中,获取所有服务实例标识;根据所有服务实例标识对所有服务实例进行分组,获得所述服务实例分组;构建终端设备与所述服务实例分组的对应关系。
具体来说,微服务架构下,还包括服务发现(Service Discovery)服务,各应用服务在启动时会自动将实现该应用服务的服务实例注册到该服务发现(Service Discovery)服务中。本实施例中,微服务中的每个服务实例通过服务发现(Service Discovery)获取该服务的全部服务实例列表。
然后对全部服务实例进行分组,其中,每个服务实例采用相同的一致性哈希(consistent hash)算法,保证了每个服务实例的分组结果是相同的。
然后构建终端设备与服务实例分组的对应关系。终端设备在访问本服务时,需要指定一个键值(key),用来确定对特定请求信息的记录,当前流量管控仅考虑对服务端在机房(IDC)维度进行配置,因此需要区分客户端所在IDC、服务名称、调用方法,key的定义如下:
客户端Key:from_cluster/from_service/to_method
基于上述对客户端Key的定义,首先使用一致性哈希函数将其映射到一个区间上,然后再用哈希函数将每个服务实例分组也映射到同样的区间上,最后基于一致性哈希函数构建终端设备到服务实例分组的对应关系。最后,在每个服务实例的内存中构建了一致性哈希数据结构(即上述所说的预设关系对照表),使得每个服务实例在接收到终端设备发起的请求时,可以路由该终端设备到对应的服务实例分组中。
作为可选的实施例,所述服务实例标识为互联网协议IP地址;S202包括:根据所述互联网协议IP地址对所有服务实例进行排序;按照预设分组数对排序的所有服务实例进行分组,获得所述服务实例分组。
具体来说,在同一个网络分区内的服务实例之间的延迟相比其他情况来说低很多,因此服务实例之间的网络延迟很明显是按照IP地址的网段进行划分的,IP地址接近的服务实例之间延迟更低,因此只需每个服务实例通过服务发现查询到当前服务的全部节点IP后进行排序,再按照预先设定的分组实例数进行划分即可。
作为可选的实施例,若按照预设分组数对排序的所有服务实例进行分组后,还剩余小于预设分组数的服务实例未进行分组,则将未进行分组的服务实例组成一组服务实例分组,或者将未进行分组的服务实例分别添加到已经分组好的服务实例分组中。
具体来说,若按照预设分组数进行划分后,还剩下小于该预设分组数的服务实例未进行分组,可根据剩下服务实例的个数,确定是进行单独分成一组,还是添加到已经分好的服务实例分组中。例如,若按照预设分组数为5进行分组后,最后还剩下4个或3个服务实例,则单独作为一组;若剩下2个,则最后一个添加到最临近一组,倒数第二个添加到次临近一组,若仅一个分组则全部添加进去;若剩下1个,则添加到最临近的一组即可。
在前述实施例的基础上,通过获取所有服务实例标识;根据所有服务实例标识对所有服务实例进行分组,获得所述服务实例分组;构建终端设备与所述服务实例分组的对应关系;响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组;其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据;若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理;即本公开实施例对所有服务实例进行分组,在服务实例分组中存储有终端设备的请求计量数据,当终端设备发起请求时,当前的服务实例与服务实例分组进行通信,实现了去中心化存储数据,避免了中心化存储的性能瓶颈,减少了通信延迟。
在上述实施例的基础上,参考图4,图4为本公开实施例提供的限流方法示意图三,该限流方法包括:
S301、响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组。
其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据。
S302、从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据。
S303、若根据所述终端设备对应的请求计量数据确定不进行限流处理,则执行与所述请求对应的服务。
S304、更新所述服务实例分组中的任一服务器上所存储的终端设备对应的请求计量数据,并将更新后的终端设备对应的请求计量数据同步到所述服务实例分组中除任一服务器以外的其他服务器中。
本实施例中的S301、S302与前述实施例中的S101、S102的实现方式类似,在此不进行赘述。
与前述实施例不同的是,本实施例进一步限定了服务实例分组中的终端设备中的业务请求计量数据的更新。在本实施例中,若根据所述终端设备对应的请求计量数据确定不进行限流处理,则执行与所述请求对应的服务,更新所述服务实例分组中的任一服务器上所存储的终端设备对应的请求计量数据,并将更新后的终端设备对应的请求计量数据同步到所述服务实例分组中除任一服务器以外的其他服务器中。
具体来说,如果根据终端设备对应的请求计量数据确定不进行限流处理后,在通过该请求后,当前的服务器会发送更新请求,例如“addcount”消息到服务实例分组中的任意一个服务器,该任意一个服务器会根据接收到的“addcount”消息去更新该终端设备对应的请求计量数据;然后该任意一个服务器会基于尽力服务best-effort将更新后的请求计量数据更新到该服务实例分组中的其他服务器中。需要说明的是,终端设备可能为一个代理终端设备,即在同一时刻该终端设备可能会向多个服务实例发起请求,每个服务实例在判断请求通过后,会向服务实例分组中的任一服务器发送更新请求,例如“addcount”消息,也就是说,服务实例分组可能在同一时间收到很多“addcount”消息,则服务实例分组可以以预设间隔,例如500ms间隔进行通信gossip过程,构建信息同步,跟随探活消息进行发送和全组传播,在同步各个节点累加收到的总请求数后,最终计算全部累加和,作为更新后的请求计量数据。
或者说,每个服务实例记录当前一秒内处理的各个终端设备的请求个数,并在统计完成之后,通过后台异步的发送给对应的服务实例分组。
作为可选的实施例,确定所述服务实例分组中延迟时间最小的服务器,其中,所述延迟时间用于表征当前服务器从服务实例分组对应的任一服务器中,获取到所述终端设备对应的请求计量数据时所耗费时间;则S304中,包括:更新所述服务实例分组中延迟时间最小的服务器上所存储的终端设备对应的请求计量数据。
具体来说,每个服务实例会基于记录历史上发送的获取请求,例如“getCount”消息的平均延迟(若首次启动还没有历史记录时则均为0),根据平均延迟得出延迟最小的服务实例作为候选节点,若出现多个最优候选节点,则随机从中选择一个,向该候选节点发送更新请求,例如“addcount”消息,以更新候选节点所存储的终端设备对应的请求计量数据。所有通信均以尽力服务(best-effort)协议实现,避免网络开销过大。
图5为本公开提供的一种限流方法的流程框图;图6为本公开提供另一种限流方法的流程框图,下面结合图5、图6对本公开的实施例进行进一步的说明。
如图5所示,第一服务实例分组Group1对应于终端设备clients 0~10,第N服务实例分组GroupN对应于终端设备clients n~n+10。首先每个服务实例通过服务发现(Service Discovery)获取到该服务的全部实例列表,然后按照网络延迟情况进行服务实例分组;每个微服务引用分布式限流组件的SDK,以中间件的方式便捷的集成到服务代码中;SDK在每个服务实例的内存中构建一致性哈希(consistent hash)数据结构,对每个特定的终端设备路由到某个服务实例分组。服务负责人将限流的规则(Rules)通过单独的配置服务(ConfigServer)进行配置和发布,并由SDK的限流管理器(RateLimitManager)主动从配置服务定期拉取。
如图5所示,当第一服务施例分组中的某服务器接收到来自终端设备client n+1的请求后,服务器根据一致性哈希数据结构确定client n+1对应的服务实例分组为第N个服务实例分组GroupN;从GroupN中的任一服务实例中获取client n+1的请求计量数据;然后根据获取的client n+1的请求计量数据和从配置服务拉取的限流规则,判断是否允许(Allow)终端设备client n+1访问,如果不允许,则进行“报警”或“拒绝”(Alert/Deny)等方式进行限流处理,如果允许,则进入对应该请求的服务代码(biz),以实现该服务。
如图6所示,终端设备A可以为代理终端设备,即在同一时间代理终端设备A可能会向多个服务实例发起请求;每个接收到请求的服务实例会从终端设备A对应的服务实例分组中获取终端设备A的请求计量数据,例如通过图6中的“getcount”消息获取;然后根据获取的终端设备A的请求凄凉数据判断是否允许访问;如果允许访问,则每个接收到该请求的服务实例需要对当前允许访问的请求进行计数,并且发送更新请求,例如图6中的“addcount”消息,到终端设备A对应的服务实例分组中,进行累加增量,将累加增量更新到该服务实例分组中所存储的终端设备A的请求计量数据。
在前述实施例的基础上,通过若根据所述终端设备对应的请求计量数据确定不进行限流处理,则执行与所述请求对应的服务;更新所述服务实例分组中的任一服务器上所存储的终端设备对应的请求计量数据,并将更新后的终端设备对应的请求计量数据同步到所述服务实例分组中除任一服务器以外的其他服务器中;即本公开实施例能够及时更新服务实例分组中服务器上所存储的终端设备的请求计量数据,使得限流控制更准确。
对应于上文实施例的限流方法,图7为本公开实施例提供的限流装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图7,所述装置包括:确定模块10、获取模块20以及处理模块30。
其中,确定模块10,用于响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组;其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;获取模块20,用于从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据;处理模块30,用于若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理。
在本公开的一个实施例中,所述装置还包括分组模块40,所述分组模块40用于,获取所有服务实例标识;根据所有服务实例标识对所有服务实例进行分组,获得所述服务实例分组;构建终端设备与所述服务实例分组的对应关系。
在本公开的一个实施例中,所述服务实例标识为互联网协议IP地址;所述分组模块40,具体用于根据所述互联网协议IP地址对所有服务实例进行排序;按照预设分组数对排序的所有服务实例进行分组,获得所述服务实例分组。
在本公开的一个实施例中,所述分组模块40,还具体用于若按照预设分组数对排序的所有服务实例进行分组后,还剩余小于预设分组数的服务实例未进行分组,则将未进行分组的服务实例组成一组服务实例分组,或者将未进行分组的服务实例分别添加到已经分组好的服务实例分组中。
在本公开的一个实施例中,所述终端设备所对应的服务实例分组对应的服务器中,包括当前的服务器。
在本公开的一个实施例中,若终端设备所对应的服务实例分组对应的服务器中,不包括当前的服务器,则从所述获取模块20,用于:向所述终端设备所对应的服务实例分组对应的任一服务器,发送获取请求;其中,所述获取请求用于指示获取与所述终端设备对应的请求计量数据;接收所述任一服务器发送的与所述终端设备对应的请求计量数据。
在本公开的一个实施例中,所述获取模块20,还用于若没有从所述服务实例分组对应的任一服务器中接收到与所述终端设备对应的请求计量数据,则再次执行所述向所述终端设备所对应的服务实例分组对应的任一服务器,发送获取请求的步骤。
在本公开的一个实施例中,若再次执行所述向所述终端设备所对应的服务实例分组对应的任一服务器,发送获取请求的步骤后,还是没有接收到所述终端设备对应的请求计量数据,则处理模块30,用于根据当前服务器上所存储的终端设备对应的请求计量数据确定是否进行限流处理。
在本公开的一个实施例中,所述终端设备对应的请求计量数据为当前时间间隔的终端设备对应的请求计量数据。
在本公开的一个实施例中,所述终端设备对应的请求计量数据为多个预设时间间隔的终端设备对应的请求计量数据;则所述处理模块30,用于:对多个预设时间间隔的终端设备对应的请求计量数据进行加权平均处理;根据加权平均处理后的请求计量数据确定进行限流处理。
在本公开的一个实施例中,所述处理模块30,还用于:若根据所述终端设备对应的请求计量数据确定不进行限流处理,则执行与所述请求对应的服务。
在本公开的一个实施例中,所述装置还包括更新模块50,所述更新模块50还用于:更新所述服务实例分组中的任一服务器上所存储的终端设备对应的请求计量数据,并将更新后的终端设备对应的请求计量数据同步到所述服务实例分组中除任一服务器以外的其他服务器中。
在本公开的一个实施例中,所述更新模块50还用于:确定所述服务实例分组中延迟时间最小的服务器,其中,所述延迟时间用于表征当前服务器从服务实例分组对应的任一服务器中,获取到所述终端设备对应的请求计量数据时所耗费时间;更新所述服务实例分组中延迟时间最小的服务器上所存储的终端设备对应的请求计量数据。
在本公开的一个实施例中,所述处理模块30,用于:若所述终端设备对应的请求计量数据大于等于第一预设阈值,则确定进行限流处理。
本公开的一个实施例中,所述处理模块30,用于:若所述终端设备对应的请求计量数据与当前的服务器接收到的所有终端设备对应的请求计量数据之和的比值大于等于第二预设阈值,则确定进行限流处理。
本公开的一个实施例中,所述处理模块30,用于:直接拒绝所述终端设备发起的请求;或者,经过预设时长后,再次获取与所述终端设备对应的请求计量数据,并根据所述终端设备对应的请求计量数据确定是否进行限流处理;或者,不拒绝所述终端设备发起的请求;或者,输出告警信息。
本实施例提供的限流装置,可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
本公开实施例还提供了一种电子设备,包括:至少一个处理器和存储器;所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的限流方法。
参考图8,其示出了适于用来实现本公开实施例的电子设备800的结构示意图,该电子设备800可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图8示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)801,其可以根据存储在只读存储器(Read Only Memory,简称ROM)802中的程序或者从存储装置808加载到随机访问存储器(Random Access Memory,简称RAM)803中的程序而执行各种适当的动作和处理。在RAM703中,还存储有电子设备800操作所需的各种程序和数据。处理装置801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
通常,以下装置可以连接至I/O接口805:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置806;包括例如液晶显示器(Liquid CrystalDisplay,简称LCD)、扬声器、振动器等的输出装置807;包括例如磁带、硬盘等的存储装置808;以及通信装置809。通信装置809可以允许电子设备800与其他设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备800,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置809从网络上被下载和安装,或者从存储装置808被安装,或者从ROM802被安装。在该计算机程序被处理装置801执行时,执行本公开实施例的方法中限定的上述功能。
即,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的限流方法。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network,简称LAN)或广域网(Wide Area Network,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (18)
1.一种限流方法,其特征在于,包括:
获取所有服务实例标识;
根据所有服务实例标识对所有服务实例进行分组,获得服务实例分组;
构建终端设备与所述服务实例分组的对应关系;
响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组;其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;
从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据;
若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理。
2.根据权利要求1所述的方法,其特征在于,所述服务实例标识为互联网协议IP地址;
所述根据所有服务实例标识对所有服务实例进行分组,获得所述服务实例分组,包括:
根据所述互联网协议IP地址对所有服务实例进行排序;
按照预设分组数对排序的所有服务实例进行分组,获得所述服务实例分组。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若按照预设分组数对排序的所有服务实例进行分组后,还剩余小于预设分组数的服务实例未进行分组,则将未进行分组的服务实例组成一组服务实例分组,或者将未进行分组的服务实例分别添加到已经分组好的服务实例分组中。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述终端设备所对应的服务实例分组对应的服务器中,包括当前的服务器。
5.根据权利要求1-3任一项所述的方法,其特征在于,若终端设备所对应的服务实例分组对应的服务器中,不包括当前的服务器,则从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据,包括:
向所述终端设备所对应的服务实例分组对应的任一服务器,发送获取请求;其中,所述获取请求用于指示获取与所述终端设备对应的请求计量数据;
接收所述任一服务器发送的与所述终端设备对应的请求计量数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若没有从所述服务实例分组对应的任一服务器中接收到与所述终端设备对应的请求计量数据,则再次执行所述向所述终端设备所对应的服务实例分组对应的任一服务器,发送获取请求的步骤。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若再次执行所述向所述终端设备所对应的服务实例分组对应的任一服务器,发送获取请求的步骤后,还是没有接收到所述终端设备对应的请求计量数据,则根据当前的服务器上所存储的终端设备对应的请求计量数据确定是否进行限流处理。
8.根据权利要求1-3任一项所述的方法,其特征在于,所述终端设备对应的请求计量数据为当前时间间隔的终端设备对应的请求计量数据。
9.根据权利要求1-3任一项所述的方法,其特征在于,所述终端设备对应的请求计量数据为多个预设时间间隔的终端设备对应的请求计量数据;则所述根据所述终端设备对应的请求计量数据确定进行限流处理,包括:
对多个预设时间间隔的终端设备对应的请求计量数据进行加权平均处理;
根据加权平均处理后的请求计量数据确定进行限流处理。
10.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
若根据所述终端设备对应的请求计量数据确定不进行限流处理,则执行与所述请求对应的服务。
11.根据权利要求10所述的方法,其特征在于,所述执行与所述请求对应的业务之后,还包括:
更新所述服务实例分组中的任一服务器上所存储的终端设备对应的请求计量数据,并将更新后的终端设备对应的请求计量数据同步到所述服务实例分组中除任一服务器以外的其他服务器中。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
确定所述服务实例分组中延迟时间最小的服务器,其中,所述延迟时间用于表征当前服务器从服务实例分组对应的任一服务器中,获取到所述终端设备对应的请求计量数据时所耗费时间;
则所述更新所述服务实例分组中的任一服务器上所存储的终端设备对应的请求计量数据,包括:
更新所述服务实例分组中延迟时间最小的服务器上所存储的终端设备对应的请求计量数据。
13.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述终端设备对应的请求计量数据确定进行限流处理,包括:
若所述终端设备对应的请求计量数据大于等于第一预设阈值,则确定进行限流处理。
14.根据权利要求1-3任一项所述的方法,其特征在于,所述根据所述终端设备对应的请求计量数据确定进行限流处理,包括:
若所述终端设备对应的请求计量数据与当前的服务器接收到的所有终端设备对应的请求计量数据之和的比值大于等于第二预设阈值,则确定进行限流处理。
15.根据权利要求1-3任一项所述的方法,其特征在于,所述对所述终端设备进行限流处理,包括:
直接拒绝所述终端设备发起的请求;
或者,经过预设时长后,再次获取与所述终端设备对应的请求计量数据,并根据所述终端设备对应的请求计量数据确定是否进行限流处理;
或者,不拒绝所述终端设备发起的请求;
或者,输出告警信息。
16.一种限流装置,其特征在于,包括:
分组模块,用于获取所有服务实例标识;
根据所有服务实例标识对所有服务实例进行分组,获得服务实例分组;
构建终端设备与所述服务实例分组的对应关系;
确定模块,用于响应于终端设备发起的请求,确定所述终端设备所对应的服务实例分组;其中,所述服务实例分组包括至少一个服务实例,所述服务实例分组中的每一个服务实例对应的服务器上存储有终端设备的请求计量数据;
获取模块,用于从所述终端设备所对应的服务实例分组对应的任一服务器中,获取与所述终端设备对应的请求计量数据;
处理模块,用于若根据所述终端设备对应的请求计量数据确定进行限流处理,则对所述终端设备进行限流处理。
17.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至15任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至15任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110137474.0A CN112968945B (zh) | 2021-02-01 | 2021-02-01 | 限流方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110137474.0A CN112968945B (zh) | 2021-02-01 | 2021-02-01 | 限流方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112968945A CN112968945A (zh) | 2021-06-15 |
CN112968945B true CN112968945B (zh) | 2023-01-24 |
Family
ID=76272371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110137474.0A Active CN112968945B (zh) | 2021-02-01 | 2021-02-01 | 限流方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112968945B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113472875A (zh) * | 2021-06-28 | 2021-10-01 | 深信服科技股份有限公司 | 一种连接复用方法、装置、电子设备及存储介质 |
CN113364885B (zh) * | 2021-06-29 | 2022-11-22 | 天翼云科技有限公司 | 微服务调用方法、装置、电子设备和可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110351357A (zh) * | 2019-07-08 | 2019-10-18 | 中国平安人寿保险股份有限公司 | 服务器限流方法、装置、计算机设备以及存储介质 |
CN110417671A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 数据传输的限流方法和服务器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10523507B2 (en) * | 2017-05-11 | 2019-12-31 | Nirmata, Inc. | Method and system for tuning performance of microservices-based applications |
-
2021
- 2021-02-01 CN CN202110137474.0A patent/CN112968945B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110351357A (zh) * | 2019-07-08 | 2019-10-18 | 中国平安人寿保险股份有限公司 | 服务器限流方法、装置、计算机设备以及存储介质 |
CN110417671A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 数据传输的限流方法和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN112968945A (zh) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107995036B (zh) | 数据传输方法、装置、服务器及可读存储介质 | |
CN110808922B (zh) | 一种消息处理方法、装置、存储介质及电子设备 | |
CN111787069A (zh) | 业务接入请求的处理方法、装置、设备及计算机存储介质 | |
CN112968945B (zh) | 限流方法、装置、电子设备及存储介质 | |
CN112311656B (zh) | 消息聚合、展示方法、装置、电子设备和计算机可读介质 | |
CN110795446A (zh) | 榜单更新方法、装置、可读介质和电子设备 | |
CN111277848A (zh) | 直播间互动消息的处理方法、装置、电子设备及存储介质 | |
CN112637287A (zh) | 负载均衡方法及设备 | |
CN114466226B (zh) | 带宽时长占比确定方法、装置、设备和计算机可读介质 | |
CN110311963B (zh) | 消息推送方法、装置、计算机设备及计算机可读存储介质 | |
WO2022057727A1 (zh) | 网络质量确定方法、装置、电子设备和可读存储介质 | |
CN114205296A (zh) | 网络接入方法、装置、介质及电子设备 | |
CN111817985A (zh) | 业务处理方法及装置 | |
CN107819761B (zh) | 数据处理方法、装置及可读存储介质 | |
CN114979241A (zh) | 通信方法、装置、存储介质以及电子设备 | |
CN114650295A (zh) | 质量调度方法、装置、介质和电子设备 | |
JP2006528867A (ja) | 電子デバイス接続のリソース管理 | |
CN112527454A (zh) | 容器组调度方法、装置、电子设备和计算机可读介质 | |
CN113127550A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN113176937A (zh) | 任务处理方法、装置和电子设备 | |
CN112181605A (zh) | 负载均衡方法、装置、电子设备和计算机可读介质 | |
CN113765692B (zh) | 限流方法、装置、电子设备和计算机可读介质 | |
CN113472565B (zh) | 服务器功能的扩容方法、装置、设备和计算机可读介质 | |
CN112422342B (zh) | 一种业务数据的获取方法及装置 | |
CN114826932B (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 |