CN112073329A - 分布式限流方法、装置、电子设备和存储介质 - Google Patents
分布式限流方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112073329A CN112073329A CN202010866777.1A CN202010866777A CN112073329A CN 112073329 A CN112073329 A CN 112073329A CN 202010866777 A CN202010866777 A CN 202010866777A CN 112073329 A CN112073329 A CN 112073329A
- Authority
- CN
- China
- Prior art keywords
- interval
- current limiting
- flow
- limiting
- distributed
- 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.)
- Granted
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/20—Traffic policing
-
- 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/29—Flow control; Congestion control using a combination of thresholds
-
- 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/41—Flow control; Congestion control by acting on aggregated flows or links
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种分布式限流方法、装置、电子设备和存储介质,该方法包括:接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,区间流量数据为分布式微服务节点按照限流策略对应的限流信息对上报区间内流量数据进行统计得到的;根据限流信息,在当前限流区间内对多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,其中,当前限流区间的时间间隔大于上报区间的时间间隔;若限流数据大于或等于限流策略中的限流阈值,则生成限流信号,并将限流信号发送至所述多个分布式微服务节点,以使得所述多个分布式微服务节点分别在所述当前限流区间内执行限流操作。本发明降低了实时计算成本,提高限流处理的准确性,提升系统性能。
Description
技术领域
本发明涉及微服务技术领域,特别是涉及一种分布式限流方法、装置、电子设备和存储介质。
背景技术
在分布式微服务场景中,资源有限的情况下服务端吞吐量是有上限的,因此,为了保证系统的稳定运行,不被突然增加的流量压垮导致服务端异常,需要对服务采取一定的保护策略,限流就是被经常采用的一种包含策略。限流是对服务端的输入流量进行限制,如果大于额定的流量就抛弃多余的流量。
在现有的分布式限流方案中,集中式redis计数限流是一种较为常用的限流方式。所有的服务端节点连接相同的redis,对同一个操作使用相同的key在redis中进行原子计数加一。按照限流的粒度,如果超过了设置的阈值,将开始进行限流操作,以将后续输入到服务端的流量进行抛弃。
现有限流方案的缺陷是所有的服务节点需要直接连接reids,而不同的服务通常有不同的开发人员,在这种情况下redis中的数据不能做到完全隔离,存在不同服务之间使用相同的key的可能性,导致限流处理错误,另外当提供的服务的数量非常巨大时,redis的计算压力非常大。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种分布式限流方法、装置、电子设备和存储介质。
依据本发明的第一方面,提供了一种分布式限流方法,包括:
接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,所述区间流量数据为所述分布式微服务节点按照限流策略对应的限流信息对所述上报区间内流量数据进行统计得到的;
根据所述限流信息,在当前限流区间内对所述多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
若所述限流数据大于或等于所述限流策略中的限流阈值,则生成限流信号,并将所述限流信号发送至所述多个分布式微服务节点,以使得所述多个分布式微服务节点分别在所述当前限流区间内执行限流操作。
依据本发明的第二方面,提供了一种分布式限流方法,包括:
根据限流策略对应的限流信息,对当前上报区间内的流量数据进行统计,得到区间流量数据;
将所述区间流量数据发送至流量数据收集节点,以使得所述流量数据收集节点在当前限流区间内对多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,并在限流数据大于或等于限流策略中的限流阈值时生成限流信号,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
若接收到所述流量数据收集节点发送的限流信号,则在当前限流区间内执行限流操作。
依据本发明的第三方面,提供了一种分布式限流装置,包括:
区间流量数据接收模块,用于接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,所述区间流量数据为所述分布式微服务节点按照限流策略对应的限流信息对所述上报区间内流量数据进行统计得到的;
流量数据聚合模块,用于根据所述限流信息,在当前限流区间内对所述多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
限流信号发送模块,用于若所述限流数据大于或等于所述限流策略中的限流阈值,则生成限流信号,并将所述限流信号发送至所述多个分布式微服务节点,以使得所述多个分布式微服务节点分别在所述当前限流区间内执行限流操作。
依据本发明的第四方面,提供了一种分布式限流装置,包括:
流量数据统计模块,用于根据限流策略对应的限流信息,对当前上报区间内的流量数据进行统计,得到区间流量数据;
区间流量数据发送模块,用于将所述区间流量数据发送至流量数据收集节点,以使得所述流量数据收集节点在当前限流区间内对多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,并在限流数据大于或等于限流策略中的限流阈值时生成限流信号,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
限流模块,用于若接收到所述流量数据收集节点发送的限流信号,则在当前限流区间内执行限流操作。
依据本发明的第五方面,还提供了一种电子设备,处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面或第二方面所述的分布式限流方法。
依据本发明的第六方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第二方面所述的分布式限流方法。
本发明提供的分布式限流方法、装置、电子设备和存储介质,通过接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,在当前限流区间内根据限流策略中的限流信息对区间流量数据进行聚合,得到限流数据,若限流数据大于或等于限流策略中的限流阈值,则生成限流信号,并将限流信号发送至多个分布式微服务节点,以使得多个分布式微服务节点分别在当前限流区间内执行限流操作,由于通过分布式微服务节点在上报区间内对当前分布式微服务节点中的流量进行汇总,并将该上报区间内汇总的流量发送至流量数据收集节点,由流量数据收集节点对多个分布式微服务节点的流量在当前限流区间内进行统计,并与限流阈值进行比较,即通过流量数据收集节点来实现限流,而不必使用redis,而且分布式微服务节点不必在接收到一次流量时就上报给流量数据收集节点,而是按照上报区间进行统计,将上报区间内的流量统一发送至流量数据收集节点,从而减少了数据的传输量,减少了流量数据收集节点的计算量,降低了实时计算成本,而且通过限流信息可以很好的区分不同的服务,提高限流处理的准确性,提升系统性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
图1是本发明实施例提供的一种分布式限流方法的步骤流程图;
图2是本发明实施例提供的一种分布式限流方法的步骤流程图;
图3是本发明实施例提供的一种分布式限流装置的结构框图;
图4是本发明实施例提供的一种分布式限流装置的结构框图;
图5为本发明实施例提供的一种电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
图1是本发明实施例提供的一种分布式限流方法的步骤流程图,可以由分布式的流量数据收集节点执行,如图1所示,该方法可以包括:
步骤101,接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,所述区间流量数据为所述分布式微服务节点按照限流策略对应的限流信息对所述上报区间内流量数据进行统计得到的。
其中,分布式微服务节点是提供微服务的分布式节点,可以提供多个不同的微服务,每个微服务通过服务方标识进行区分,即一个微服务是一个服务方。所述限流信息可以包括服务方标识、调用方标识和调用方法中的至少一个,服务方为所述分布式微服务节点中提供调用方法的程序,调用方为调用所述服务方提供的调用方法的程序。服务方标识可以是服务方名称等可以区分不同服务方的标识,调用方标识可以是调用方名称等可以区分不同调用方的标识。
每个分布式微服务节点按照限流策略对应的限流信息,对一个上报区间内的流量数据进行统计,得到区间流量数据,在到达该上报区间的时间长度时,将区间流量数据发送至流量数据收集节点。
例如,在限流信息为服务方标识时,即在所述限流策略为对所述服务方标识对应的服务方提供的流量进行限流时,每个分布式微服务节点在一个上报区间内接收到一次该服务方标识对应的流量时,进行一次计数,在该上报区间结束时,得到该上报区间的区间流量数据,并将得到的区间流量数据发送至流量数据收集节点。在限流信息包括服务方标识和调用方标识时,即在所述限流策略为对所述调用方标识调用所述服务方标识的所有调用方法时产生的流量进行限流时,每个分布式微服务节点在一个上报区间内接收到一次所述调用方标识调用所述服务方标识的任何一个调用方法产生的流量时,进行一次计数,在该上报区间结束时,得到该上报区间的区间流量数据,并将得到的区间流量数据发送至流量数据收集节点。在限流信息包括服务方标识、调用方标识和调用方法时,即在所述限流策略为对所述调用方标识调用所述服务方标识的所述调用方法时产生的流量进行限流时,每个分布式微服务节点在一个上报区间内接收到一次所述调用方标识调用所述服务方标识的所述调用方法产生的流量时,进行一次计数,在该上报区间结束时,得到该上报区间的区间流量数据,并将得到的区间流量数据发送至流量数据收集节点。
步骤102,根据所述限流信息,在当前限流区间内对所述多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔。
在当前限流区间内,根据限流策略对应的限流信息,对各个分布式微服务节点的区间流量数据进行聚合,即在接收到一个分布式微服务节点发送的区间流量数据时,就根据限流信息在已有限流数据的基础上增加该区间流量数据,得到更新后的限流数据。当前限流区间的时间间隔要远远大于上报区间的时间间隔,例如当前限量区间的时间间隔可以等于上报区间的时间间隔的5倍等,上报区间的时间间隔越小限流的时间误差越小。
步骤103,若所述限流数据大于或等于所述限流策略中的限流阈值,则生成限流信号,并将所述限流信号发送至所述多个分布式微服务节点,以使得所述多个分布式微服务节点分别在所述当前限流区间内执行限流操作。
在当前限流区间内,在对限流数据更新一次后,就将更新后的限流数据与限流策略中的限流阈值进行比较,若限流数据小于限流策略中的限流阈值,则不进行任何处理,直到接收到下一个区间流量数据并进行统计更新限流数据再次与限流阈值进行比较或者当前限流区间结束,若限流数据大于或等于限流策略中的限流阈值,则生成限流信号,并将限流信号发送至多个分布式微服务节点,多个分布式微服务节点接收到限流信号后,分别对当前分布式微服务节点的限流信息对应的流量执行限流操作。
例如,在限流信息为服务方标识时,即在所述限流策略为对所述服务方标识对应的服务方提供的流量进行限流时,若限流数据大于或等于限流阈值,则生成限流信号,将限流信号发送至多个分布式微服务节点,多个分布式微服务节点接收到限流信号后,再次接收到所述服务方的流量时,即接收到对所述服务方提供的调用方法的调用请求时,拒绝响应所述调用请求,从而实现对服务方的流量进行限流。在限流信息包括服务方标识和调用方标识时,即在所述限流策略为对所述调用方标识调用所述服务方标识的所有调用方法时产生的流量进行限流时,若限流数据大于或等于限流阈值,则生成限流信号,将限流信号发送至多个分布式微服务节点,多个分布式微服务节点接收到限流信号后,再次接收到所述调用方标识对应的调用方调用对所述服务方标识对应的调用方法的调用请求时,拒绝响应所述调用请求,从而实现对所述调用方调用所述服务方的流量进行限流。在限流信息包括服务方标识、调用方标识和调用方法时,即在所述限流策略为对所述调用方标识调用所述服务方标识的所述调用方法时产生的流量进行限流时,若限流数据大于或等于限流阈值,则生成限流信号,将限流信号发送至多个分布式微服务节点,多个分布式微服务节点接收到限流信号后,再次接收到调用请求时,若所述调用请求包括所述服务方标识、所述调用方标识和所述调用方法,即所述调用方标识对应的调用方调用所述服务方标识对应的所述调用方法时,拒绝响应所述调用请求,从而实现对所述调用方调用所述服务方的所述调用方法的流量进行限流。
本实施例提供的分布式限流方法,通过接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,在当前限流区间内根据限流策略中的限流信息对区间流量数据进行聚合,得到限流数据,若限流数据大于或等于限流策略中的限流阈值,则生成限流信号,并将限流信号发送至多个分布式微服务节点,以使得多个分布式微服务节点分别在当前限流区间内执行限流操作,由于通过分布式微服务节点在上报区间内对当前分布式微服务节点中的流量进行汇总,并将该上报区间内汇总的流量发送至流量数据收集节点,由流量数据收集节点对多个分布式微服务节点的流量在当前限流区间内进行统计,并与限流阈值进行比较,即通过流量数据收集节点来实现限流,而不必使用redis,而且分布式微服务节点不必在接收到一次流量时就上报给流量数据收集节点,而是按照上报区间进行统计,将上报区间内的流量统一发送至流量数据收集节点,从而减少了数据的传输量,减少了流量数据收集节点的计算量,降低了实时计算成本,而且通过限流信息可以很好的区分不同的服务,提高限流处理的准确性,提升系统性能。
在上述技术方案的基础上,所述方法还包括:在当前限流区间开始时,清除前一限流区间的限流数据。
在当前限流区间开始时,清除前一限流区间的限流数据,实现在每个限流区间开始时,定期清除之前的限流数据,保证每个限流区间的数据准确性。
在上述技术方案的基础上,所述分布式限流方法由分布式的流量数据收集节点执行;所述流量数据收集节点用于对与所述流量数据收集节点对应的服务方的区间流量数据进行限流处理。在分布式微服务中,若多个分布式微服务节点提供的微服务较多,可以设置分布式的多个流量数据收集节点来对多个分布式微服务节点提供的微服务进行限流,即每个流量数据收集节点收集与该流量数据收集节点对应的服务方的区间流量数据,即分布式微服务节点首先对服务方的流量在上报区间内进行统计,并将该服务方的区间流量数据发送至与该服务方对应的流量数据收集节点,由流量数据收集节点对该服务方的流量进行限流处理。通过分布式的流量数据收集节点来执行分布式限流方法,在当前已有的流量数据收集节点无法处理所有的流量时,可以扩展流量数据收集节点,提高了扩展性。
其中,所述流量数据收集节点提供节点信息获取接口,以供所述多个分布式微服务节点获取所述流量数据收集节点的节点信息。每个流量数据收集节点都是独立工作的,都可以提供节点信息获取节点,通过节点信息获取接口,多个分布式微服务节点可以获取到所有的流量数据收集节点的节点信息,从而可以通过哈希计算等方式确定不同的服务方对应的流量数据收集节点。其中,所述节点信息包括IP地址、端口等信息。
图2是本发明实施例提供的一种分布式限流方法的步骤流程图,可以由分布式微服务中任一分布式微服务节点执行,如图2所示,该方法可以包括:
步骤201,根据限流策略对应的限流信息,对当前上报区间内的流量数据进行统计,得到区间流量数据。
其中,所述限流信息可以包括服务方标识、调用方标识和调用方法中的至少一个,服务方为所述分布式微服务节点中提供调用方法的程序,调用方为调用所述服务方提供的调用方法的程序。服务方标识可以是服务方名称等可以区分不同服务方的标识,调用方标识可以是调用方名称等可以区分不同调用方的标识。
当前分布式微服务节点按照限流策略对应的限流信息,对一个上报区间内的流量数据进行统计,得到区间流量数据,在到达该上报区间的时间长度时,将区间流量数据发送至流量数据收集节点。区间流量数据包括限流信息和对应的流量数据。
例如,在限流信息为服务方标识时,即在所述限流策略为对所述服务方标识对应的服务方提供的流量进行限流时,当前分布式微服务节点在一个上报区间内接收到一次该服务方标识对应的流量时,进行一次计数,在该上报区间结束时,得到该上报区间的区间流量数据,并将得到的区间流量数据发送至流量数据收集节点。在限流信息包括服务方标识和调用方标识时,即在所述限流策略为对所述调用方标识调用所述服务方标识的所有调用方法时产生的流量进行限流时,当前分布式微服务节点在一个上报区间内接收到一次所述调用方标识调用所述服务方标识的任何一个调用方法产生的流量时,进行一次计数,在该上报区间结束时,得到该上报区间的区间流量数据,并将得到的区间流量数据发送至流量数据收集节点。在限流信息包括服务方标识、调用方标识和调用方法时,即在所述限流策略为对所述调用方标识调用所述服务方标识的所述调用方法时产生的流量进行限流时,当前分布式微服务节点在一个上报区间内接收到一次所述调用方标识调用所述服务方标识的所述调用方法产生的流量时,进行一次计数,在该上报区间结束时,得到该上报区间的区间流量数据,并将得到的区间流量数据发送至流量数据收集节点。
步骤202,将所述区间流量数据发送至流量数据收集节点,以使得所述流量数据收集节点在当前限流区间内对多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,并在限流数据大于或等于限流策略中的限流阈值时生成限流信号。
将在上报区间内统计的区间流量数据发送至流量数据收集节点,由流量数据收集节点在当前限流区间内,根据限流策略对应的限流信息,对各个分布式微服务节点的区间流量数据进行聚合,得到限流数据。当前限流区间的时间间隔要远远大于上报区间的时间间隔,例如当前限量区间的时间间隔可以等于上报区间的时间间隔的5倍等,上报区间的时间间隔越小限流的时间误差越小。
步骤203,若接收到所述流量数据收集节点发送的限流信号,则在当前限流区间内执行限流操作。
若接收到流量数据收集节点发送的限流信号,则确定在当前限流区间内所述限流信息对应的流量已超过限流阈值,这时当前分布式微服务节点需要对限流信息对应的流量执行限流操作。
例如,在限流信息为服务方标识时,即在所述限流策略为对所述服务方标识对应的服务方提供的流量进行限流时,若当前分布式微服务节点接收到流量数据收集节点发送的限流信号,则在再次接收到所述服务方的流量时,即接收到对所述服务方提供的调用方法的调用请求时,拒绝响应所述调用请求,从而实现对服务方的流量进行限流。在限流信息包括服务方标识和调用方标识时,即在所述限流策略为对所述调用方标识调用所述服务方标识的所有调用方法时产生的流量进行限流时,若当前分布式微服务节点接收到流量数据收集节点发送的限流信号,在再次接收到所述调用方标识对应的调用方调用对所述服务方标识对应的调用方法的调用请求时,拒绝响应所述调用请求,从而实现对所述调用方调用所述服务方的流量进行限流。在限流信息包括服务方标识、调用方标识和调用方法时,即在所述限流策略为对所述调用方标识调用所述服务方标识的所述调用方法时产生的流量进行限流时,若当前分布式微服务节点接收到流量数据收集节点发送的限流信号,在再次接收到调用请求时,若所述调用请求包括所述服务方标识、所述调用方标识和所述调用方法,即所述调用方标识对应的调用方调用所述服务方标识对应的所述调用方法时,拒绝响应所述调用请求,从而实现对所述调用方调用所述服务方的所述调用方法的流量进行限流。
本实施例提供的分布式限流方法,通过根据限流策略对应的限流信息,对当前上报区间内的流量数据进行统计,得到区间流量数据,将区间流量数据发送至流量数据收集节点,并在接收到流量数据收集节点发送的限流信号时,在当前限流区间内执行限流操作,由于通过当前分布式微服务节点在上报区间内对流量进行汇总,并将该上报区间内汇总的流量发送至流量数据收集节点,由流量数据收集节点对多个分布式微服务节点的流量在当前限流区间内进行统计,并与限流阈值进行比较,即通过流量数据收集节点来实现限流,而不必使用redis,而且分布式微服务节点不必在接收到一次流量时就上报给流量数据收集节点,而是按照上报区间进行统计,将上报区间内的流量统一发送至流量数据收集节点,从而减少了数据的传输量,减少了流量数据收集节点的计算量,降低了实时计算成本,而且通过限流信息可以很好的区分不同的服务,提高限流处理的准确性,提升系统性能。
在上述技术方案的基础上,所述方法还包括:通过流量数据收集节点提供的节点信息获取接口,获取流量数据收集节点的节点信息;根据所述节点信息,通过哈希计算确定每个服务方对应的流量数据收集节点,并将服务方的区间流量数据发送至与该服务方对应的流量数据收集节点。
每个流量数据收集节点都是独立工作的,都可以提供节点信息获取接口,通过节点信息获取接口,当前分布式微服务节点可以获取到所有的流量数据收集节点的节点信息,从而可以通过哈希计算等方式确定不同的服务方对应的流量数据收集节点,之后将该服务方对应的区间流量数据发送至与该服务方对应的流量数据收集节点,由该流量数据收集节点对该服务方的流量数据执行限流处理。通过流量数据收集节点提供的节点信息获取接口,可以获取到流量数据收集节点的节点信息,从而在当前已有的流量数据收集节点不能对所有的分布式微服务节点提供的所有服务进行限流处理时,可以扩展流量数据收集节点来进行处理,从而提高了扩展性。其中,所述节点信息包括IP地址、端口等信息。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图3是本发明实施例提供的一种分布式限流装置的结构框图,该分布式限流装置可以配置于分布式的流量数据收集节点中,如图3所示,该分布式限流装置可以包括:
区间流量数据接收模块301,用于接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,所述区间流量数据为所述分布式微服务节点按照限流策略对应的限流信息对所述上报区间内流量数据进行统计得到的;
流量数据聚合模块302,用于根据所述限流信息,在当前限流区间内对所述多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
限流信号发送模块303,用于若所述限流数据大于或等于所述限流策略中的限流阈值,则生成限流信号,并将所述限流信号发送至所述多个分布式微服务节点,以使得所述多个分布式微服务节点分别在所述当前限流区间内执行限流操作。
可选的,所述限流信息包括服务方标识、调用方标识和调用方法中的至少一个,服务方为所述分布式微服务节点中提供调用方法的程序,调用方为调用所述服务方提供的调用方法的程序。
可选的,所述装置还包括:
限流数据清除模块,用于在当前限流区间开始时,清除前一限流区间的限流数据。
可选的,所述分布式限流装置配置于分布式的流量数据收集节点中;
所述流量数据收集节点用于对与所述流量数据收集节点对应的服务方的区间流量数据进行限流处理。
可选的,所述流量数据收集节点提供节点信息获取接口,以供所述多个分布式微服务节点获取所述流量数据收集节点的节点信息。
本实施例提供的分布式限流装置,通过区间流量数据接收模块接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,流量数据聚合模块在当前限流区间内根据限流策略中的限流信息对区间流量数据进行聚合,得到限流数据,若限流数据大于或等于限流策略中的限流阈值,则限流信号发送模块生成限流信号,并将限流信号发送至多个分布式微服务节点,以使得多个分布式微服务节点分别在当前限流区间内执行限流操作,由于通过分布式微服务节点在上报区间内对当前分布式微服务节点中的流量进行汇总,并将该上报区间内汇总的流量发送至流量数据收集节点,由流量数据收集节点对多个分布式微服务节点的流量在当前限流区间内进行统计,并与限流阈值进行比较,即通过流量数据收集节点来实现限流,而不必使用redis,而且分布式微服务节点不必在接收到一次流量时就上报给流量数据收集节点,而是按照上报区间进行统计,将上报区间内的流量统一发送至流量数据收集节点,从而减少了数据的传输量,减少了流量数据收集节点的计算量,降低了实时计算成本,而且通过限流信息可以很好的区分不同的服务,提高限流处理的准确性,提升系统性能。
图4是本发明实施例提供的一种分布式限流装置的结构框图,该分布式限流装置可以配置于分布式微服务节点中,如图4所示,该分布式限流装置可以包括:
流量数据统计模块401,用于根据限流策略对应的限流信息,对当前上报区间内的流量数据进行统计,得到区间流量数据;
区间流量数据发送模块402,用于将所述区间流量数据发送至流量数据收集节点,以使得所述流量数据收集节点在当前限流区间内对多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,并在限流数据大于或等于限流策略中的限流阈值时生成限流信号,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
限流模块403,用于若接收到所述流量数据收集节点发送的限流信号,则在当前限流区间内执行限流操作。
可选的,所述限流信息包括服务方标识、调用方标识和调用方法中的至少一个,服务方为所述分布式微服务节点中提供调用方法的程序,调用方为调用所述服务方提供的调用方法的程序。
可选的,所述装置还包括:
节点信息获取模块,用于通过流量数据收集节点提供的节点信息获取接口,获取流量数据收集节点的节点信息;
流量收集节点确定模块,用于根据所述节点信息,通过哈希计算确定每个服务方对应的流量数据收集节点,并将服务方的区间流量数据发送至与该服务方对应的流量数据收集节点。
本实施例提供的分布式限流方法,通过流量数据统计模块根据限流策略对应的限流信息,对当前上报区间内的流量数据进行统计,得到区间流量数据,区间流量数据发送模块将区间流量数据发送至流量数据收集节点,限流模块在接收到流量数据收集节点发送的限流信号时,在当前限流区间内执行限流操作,由于通过当前分布式微服务节点在上报区间内对流量进行汇总,并将该上报区间内汇总的流量发送至流量数据收集节点,由流量数据收集节点对多个分布式微服务节点的流量在当前限流区间内进行统计,并与限流阈值进行比较,即通过流量数据收集节点来实现限流,而不必使用redis,而且分布式微服务节点不必在接收到一次流量时就上报给流量数据收集节点,而是按照上报区间进行统计,将上报区间内的流量统一发送至流量数据收集节点,从而减少了数据的传输量,减少了流量数据收集节点的计算量,降低了实时计算成本,而且通过限流信息可以很好的区分不同的服务,提高限流处理的准确性,提升系统性能。
图5为本发明实施例提供的一种电子设备的结构框图。如图5所示,该电子设备500可以包括一个或多个处理器501以及与处理器501连接的一个或多个存储器502。电子设备500还可以包括输入接口503和输出接口504,用于与另一装置或系统进行通信。被处理器501的CPU执行的程序代码可存储在存储器502中。
电子设备500中的处理器501调用存储在存储器502的程序代码,以执行上述实施例中的分布式限流方法。
上述电子设备中的上述元件可通过总线彼此连接,总线例如数据总线、地址总线、控制总线、扩展总线和局部总线之一或其任意组合。
根据本发明的一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,存储介质可以是只读存储器(Read-Only Memory,ROM),或是可读写的,例如硬盘、闪存。所述计算机程序被处理器执行时实现前述实施例的分布式限流方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种分布式限流方法、装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种分布式限流方法,其特征在于,包括:
接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,所述区间流量数据为所述分布式微服务节点按照限流策略对应的限流信息对所述上报区间内流量数据进行统计得到的;
根据所述限流信息,在当前限流区间内对所述多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
若所述限流数据大于或等于所述限流策略中的限流阈值,则生成限流信号,并将所述限流信号发送至所述多个分布式微服务节点,以使得所述多个分布式微服务节点分别在所述当前限流区间内执行限流操作。
2.根据权利要求1所述的方法,其特征在于,所述限流信息包括服务方标识、调用方标识和调用方法中的至少一个,服务方为所述分布式微服务节点中提供调用方法的程序,调用方为调用所述服务方提供的调用方法的程序。
3.根据权利要求1所述的方法,其特征在于,还包括:
在当前限流区间开始时,清除前一限流区间的限流数据。
4.根据权利要求1所述的方法,其特征在于,所述分布式限流方法由分布式的流量数据收集节点执行;
所述流量数据收集节点用于对与所述流量数据收集节点对应的服务方的区间流量数据进行限流处理。
5.根据权利要求4所述的方法,其特征在于,所述流量数据收集节点提供节点信息获取接口,以供所述多个分布式微服务节点获取所述流量数据收集节点的节点信息。
6.一种分布式限流方法,其特征在于,包括:
根据限流策略对应的限流信息,对当前上报区间内的流量数据进行统计,得到区间流量数据;
将所述区间流量数据发送至流量数据收集节点,以使得所述流量数据收集节点在当前限流区间内对多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,并在限流数据大于或等于限流策略中的限流阈值时生成限流信号,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
若接收到所述流量数据收集节点发送的限流信号,则在当前限流区间内执行限流操作。
7.根据权利要求6所述的方法,其特征在于,所述限流信息包括服务方标识、调用方标识和调用方法中的至少一个,服务方为所述分布式微服务节点中提供调用方法的程序,调用方为调用所述服务方提供的调用方法的程序。
8.根据权利要求6所述的方法,其特征在于,还包括:
通过流量数据收集节点提供的节点信息获取接口,获取流量数据收集节点的节点信息;
根据所述节点信息,通过哈希计算确定每个服务方对应的流量数据收集节点,并将服务方的区间流量数据发送至与该服务方对应的流量数据收集节点。
9.一种分布式限流装置,其特征在于,包括:
区间流量数据接收模块,用于接收多个分布式微服务节点按照上报区间定时发送的区间流量数据,所述区间流量数据为所述分布式微服务节点按照限流策略对应的限流信息对所述上报区间内流量数据进行统计得到的;
流量数据聚合模块,用于根据所述限流信息,在当前限流区间内对所述多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
限流信号发送模块,用于若所述限流数据大于或等于所述限流策略中的限流阈值,则生成限流信号,并将所述限流信号发送至所述多个分布式微服务节点,以使得所述多个分布式微服务节点分别在所述当前限流区间内执行限流操作。
10.一种分布式限流装置,其特征在于,包括:
流量数据统计模块,用于根据限流策略对应的限流信息,对当前上报区间内的流量数据进行统计,得到区间流量数据;
区间流量数据发送模块,用于将所述区间流量数据发送至流量数据收集节点,以使得所述流量数据收集节点在当前限流区间内对多个分布式微服务节点的区间流量数据进行聚合,得到限流数据,并在限流数据大于或等于限流策略中的限流阈值时生成限流信号,其中,所述当前限流区间的时间间隔大于上报区间的时间间隔;
限流模块,用于若接收到所述流量数据收集节点发送的限流信号,则在当前限流区间内执行限流操作。
11.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-5任一项所述的分布式限流方法或者如权利要求6-8任一项所述的分布式限流方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-5任一项所述的分布式限流方法或者如权利要求6-8任一项所述的分布式限流方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010866777.1A CN112073329B (zh) | 2020-08-25 | 2020-08-25 | 分布式限流方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010866777.1A CN112073329B (zh) | 2020-08-25 | 2020-08-25 | 分布式限流方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112073329A true CN112073329A (zh) | 2020-12-11 |
CN112073329B CN112073329B (zh) | 2023-01-24 |
Family
ID=73659484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010866777.1A Active CN112073329B (zh) | 2020-08-25 | 2020-08-25 | 分布式限流方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112073329B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113328906A (zh) * | 2021-04-22 | 2021-08-31 | 成都欧珀通信科技有限公司 | 一种流量实时监控方法、装置、存储介质及电子设备 |
CN113890853A (zh) * | 2021-09-27 | 2022-01-04 | 北京字跳网络技术有限公司 | 一种限流方法、装置、存储介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015077756A1 (en) * | 2013-11-25 | 2015-05-28 | Amazon Technologies, Inc. | Customer-directed networking limits in distributed systems |
CN109450806A (zh) * | 2018-10-31 | 2019-03-08 | 中国联合网络通信集团有限公司 | 一种流量控制方法及装置、分布式集群 |
CN109660467A (zh) * | 2019-02-26 | 2019-04-19 | 北京百度网讯科技有限公司 | 用于控制流量的方法和装置 |
CN110138756A (zh) * | 2019-04-30 | 2019-08-16 | 网宿科技股份有限公司 | 一种限流方法及系统 |
CN110753131A (zh) * | 2019-11-04 | 2020-02-04 | 网易(杭州)网络有限公司 | 微服务分布式限流方法及装置、存储介质和电子设备 |
US10581728B1 (en) * | 2013-09-20 | 2020-03-03 | Amazon Technologies, Inc. | Rate limiting of network traffic |
-
2020
- 2020-08-25 CN CN202010866777.1A patent/CN112073329B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10581728B1 (en) * | 2013-09-20 | 2020-03-03 | Amazon Technologies, Inc. | Rate limiting of network traffic |
WO2015077756A1 (en) * | 2013-11-25 | 2015-05-28 | Amazon Technologies, Inc. | Customer-directed networking limits in distributed systems |
CN109450806A (zh) * | 2018-10-31 | 2019-03-08 | 中国联合网络通信集团有限公司 | 一种流量控制方法及装置、分布式集群 |
CN109660467A (zh) * | 2019-02-26 | 2019-04-19 | 北京百度网讯科技有限公司 | 用于控制流量的方法和装置 |
CN110138756A (zh) * | 2019-04-30 | 2019-08-16 | 网宿科技股份有限公司 | 一种限流方法及系统 |
CN110753131A (zh) * | 2019-11-04 | 2020-02-04 | 网易(杭州)网络有限公司 | 微服务分布式限流方法及装置、存储介质和电子设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113328906A (zh) * | 2021-04-22 | 2021-08-31 | 成都欧珀通信科技有限公司 | 一种流量实时监控方法、装置、存储介质及电子设备 |
CN113328906B (zh) * | 2021-04-22 | 2023-01-06 | 成都欧珀通信科技有限公司 | 一种流量实时监控方法、装置、存储介质及电子设备 |
CN113890853A (zh) * | 2021-09-27 | 2022-01-04 | 北京字跳网络技术有限公司 | 一种限流方法、装置、存储介质及电子设备 |
CN113890853B (zh) * | 2021-09-27 | 2024-04-19 | 北京字跳网络技术有限公司 | 一种限流方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112073329B (zh) | 2023-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110798360B (zh) | Nwdaf网元的选择方法、装置、电子设备及可读存储介质 | |
CN111459750A (zh) | 基于非扁平网络的私有云监控方法、装置、计算机设备及存储介质 | |
EP3264723B1 (en) | Method, related apparatus and system for processing service request | |
CN110519183B (zh) | 一种节点限速的方法、装置、电子设备及存储介质 | |
CN112073329B (zh) | 分布式限流方法、装置、电子设备和存储介质 | |
CN111966289B (zh) | 基于Kafka集群的分区优化方法和系统 | |
CN112749056A (zh) | 应用服务指标监控方法、装置、计算机设备和存储介质 | |
CN110162270B (zh) | 基于分布式存储系统的数据存储方法、存储节点及介质 | |
CN112953840A (zh) | 一种限流控制方法、网关设备及限流控制系统 | |
CN108574645B (zh) | 一种队列调度方法及装置 | |
CN113067875A (zh) | 基于微服务网关动态流控的访问方法和装置以及设备 | |
CN111538572A (zh) | 任务处理方法、装置、调度服务器及介质 | |
CN113835905A (zh) | 一种消息队列负载均衡方法、装置、电子设备及介质 | |
CN108366102A (zh) | 一种基于Consul的服务发现方法、装置及电子设备 | |
WO2007059667A1 (fr) | Procede d'obtention de donnees d'alarme des elements de reseau | |
CN115037653B (zh) | 业务流量监控方法、装置、电子设备和存储介质 | |
CN111884932B (zh) | 一种链路确定方法、装置、设备和计算机可读存储介质 | |
CN115118583B (zh) | 日志查询方法、装置、电子设备及计算机可读存储设备 | |
CN108156086B (zh) | 一种策略规则下发方法及装置 | |
CN115955384A (zh) | 错误码返回方法、装置和系统 | |
CN113568781B (zh) | 一种数据库错误处理方法、装置及数据库集群访问系统 | |
CN114745278A (zh) | 一种业务系统扩缩容的方法、装置、电子设备和存储介质 | |
CN114221925A (zh) | 消息推送方法、装置、电子设备及存储介质 | |
CN113971093A (zh) | 一种消息处理方法、装置、设备及计算机存储介质 | |
CN113190347A (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 |