CN115314441A - 分布式集群的限流方法、装置和电子设备 - Google Patents
分布式集群的限流方法、装置和电子设备 Download PDFInfo
- Publication number
- CN115314441A CN115314441A CN202210919152.6A CN202210919152A CN115314441A CN 115314441 A CN115314441 A CN 115314441A CN 202210919152 A CN202210919152 A CN 202210919152A CN 115314441 A CN115314441 A CN 115314441A
- Authority
- CN
- China
- Prior art keywords
- tokens
- preempted
- token
- remaining
- token bucket
- 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
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000003860 storage Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 abstract description 8
- 238000009826 distribution Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
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/215—Flow control; Congestion control using token-bucket
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本说明书实施例提出一种分布式集群的限流方法、装置和电子设备,其中,上述方法中,接收任务执行指令之后,响应于任务执行指令,从集群服务器连接的任务池中捞取待执行任务,然后根据待执行任务的数量,从集群服务器连接的令牌桶中抢占令牌,进而根据抢占的令牌的数量确定上述集群服务器的限流量,最后根据限流量,对待执行任务进行限流,从而可以实现集群限流总数量根据令牌桶中的令牌数量确定,不会随着集群服务器扩容而产生变化,并且集群中的每个服务器按需抢占令牌,不会由于任务不均匀分布导致集群中服务器的执行效率降低,可以最大化集群中服务器的执行效率;另外,上述方法中,根据抢占的令牌的数量确定限流量,可以提高限流效能。
Description
【技术领域】
本说明书实施例涉及互联网技术领域,尤其涉及一种分布式集群的限流方法、装置和电子设备。
【背景技术】
限流为保证系统的平稳运行起到了关键性的作用。不管应用场景是哪种,可以认为限流是针对超过预期的流量,通过预先设定的限流规则选择性地对某些请求进行限流熔断。除了对应用本身入口处限流来保证系统不会被超预期流量冲垮之外,在全链路场景下,如果任务发送方的任务数量过大,也会对下游系统造成冲击,导致下游系统不稳定,甚至雪崩。现有相关技术中,通常采用的限流方法是针对单服务器内部的限流。而在集群场景下,随着集群的扩大,限流数量也会随之扩大,仅针对单服务器内部进行限流无法满足集群场景下的限流需求,因此需要提供一种方案,对分布式集群进行限流。
【发明内容】
本说明书实施例提供了一种分布式集群的限流方法、装置和电子设备,以实现集群限流总数量根据令牌桶中的令牌数量确定,不会随着服务器扩容而产生变化,并且集群中的每个服务器按需抢占令牌,可以最大化集群中服务器的执行效率。
第一方面,本说明书实施例提供一种分布式集群的限流方法,包括:接收任务执行指令;响应于所述任务执行指令,从集群服务器连接的任务池中捞取待执行任务;根据捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌;根据抢占的令牌的数量确定所述集群服务器的限流量;根据所述限流量,对所述待执行任务进行限流。
上述分布式集群的限流方法中,接收任务执行指令之后,响应于上述任务执行指令,从集群服务器连接的任务池中捞取待执行任务,然后根据捞取的待执行任务的数量,从上述集群服务器连接的令牌桶中抢占令牌,进而根据抢占的令牌的数量确定上述集群服务器的限流量,最后根据上述限流量,对上述待执行任务进行限流,从而可以实现集群限流总数量根据令牌桶中的令牌数量确定,不会随着集群服务器扩容而产生变化,并且集群中的每个服务器按需抢占令牌,不会由于任务不均匀分布导致集群中服务器的执行效率降低,可以最大化集群中服务器的执行效率;另外,上述方法中,根据抢占的令牌的数量确定限流量,可以提高限流效能。
其中一种可能的实现方式中,所述根据捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌之后,如果所述令牌桶中令牌被抢占之前的第一剩余令牌数大于或等于本次需要被抢占的令牌数,则所述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为所述第一剩余令牌数减去本次被抢占的令牌数后获得的差;其中,本次被抢占的令牌数与捞取的待执行任务的数量相同。
其中一种可能的实现方式中,所述根据捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌之后,如果所述令牌桶中令牌被抢占之前的第一剩余令牌数小于本次需要被抢占的令牌数,则本次被抢占的令牌数为所述第一剩余令牌数,所述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为0。
其中一种可能的实现方式中,所述根据捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌包括:查询所述集群服务器连接的令牌桶中的第一剩余令牌数,并锁定所述第一剩余令牌数;如果所述第一剩余令牌数大于或等于本次需要抢占的令牌数,则根据捞取的待执行任务的数量,从所述令牌桶中抢占令牌,并解除锁定;其中,本次需要抢占的令牌数与捞取的待执行任务的数量相同。
其中一种可能的实现方式中,所述从所述令牌桶中抢占令牌之后,所述令牌桶中的第二剩余令牌数被更新为所述第一剩余令牌数减去本次被抢占的令牌数后获得的差。
其中一种可能的实现方式中,所述锁定所述第一剩余令牌数之后,还包括:如果所述第一剩余令牌数小于本次需要抢占的令牌数,则抢占所述第一剩余令牌数对应的令牌;所述令牌桶中的第二剩余令牌数被更新为0。
其中一种可能的实现方式中,所述根据抢占的令牌的数量确定所述集群服务器的限流量包括:计算抢占的令牌的数量除以任务执行周期后获得的商,所述商为所述集群服务器的限流量。
第二方面,本说明书实施例提供一种分布式集群的限流装置,设置在集群服务器中,所述限流装置包括:接收模块,用于接收任务执行指令;捞取模块,用于响应于所述任务执行指令,从集群服务器连接的任务池中捞取待执行任务;抢占模块,用于根据所述捞取模块捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌;确定模块,用于根据所述抢占模块抢占的令牌的数量确定所述集群服务器的限流量;限流模块,用于根据所述限流量,对所述待执行任务进行限流。
其中一种可能的实现方式中,所述抢占模块从所述集群服务器连接的令牌桶中抢占令牌之后,如果所述令牌桶中令牌被抢占之前的第一剩余令牌数大于或等于本次需要被抢占的令牌数,则所述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为所述第一剩余令牌数减去本次被抢占的令牌数后获得的差;其中,本次被抢占的令牌数与捞取的待执行任务的数量相同。
其中一种可能的实现方式中,所述抢占模块从所述集群服务器连接的令牌桶中抢占令牌之后,如果所述令牌桶中令牌被抢占之前的第一剩余令牌数小于本次需要被抢占的令牌数,则本次被抢占的令牌数为所述第一剩余令牌数,所述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为0。
其中一种可能的实现方式中,所述抢占模块包括:查询子模块,用于查询所述集群服务器连接的令牌桶中的第一剩余令牌数;锁定子模块,用于锁定所述第一剩余令牌数;令牌抢占子模块,用于当所述第一剩余令牌数大于或等于本次需要抢占的令牌数时,根据捞取的待执行任务的数量,从所述令牌桶中抢占令牌,并解除锁定;其中,本次需要抢占的令牌数与捞取的待执行任务的数量相同。
其中一种可能的实现方式中,所述令牌抢占子模块从所述令牌桶中抢占令牌之后,所述令牌桶中的第二剩余令牌数被更新为所述第一剩余令牌数减去本次被抢占的令牌数后获得的差。
其中一种可能的实现方式中,所述令牌抢占子模块,还用于在所述锁定子模块锁定所述第一剩余令牌数之后,如果所述第一剩余令牌数小于本次需要抢占的令牌数,则抢占所述第一剩余令牌数对应的令牌;所述令牌桶中的第二剩余令牌数被更新为0。
其中一种可能的实现方式中,所述确定模块,具体用于计算抢占的令牌的数量除以任务执行周期后获得的商,所述商为所述集群服务器的限流量。
第三方面,本说明书实施例提供一种电子设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面提供的方法。
第四方面,本说明书实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面提供的方法。
应当理解的是,本说明书实施例的第二~四方面与本说明书实施例的第一方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
【附图说明】
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书一个实施例提供的分布式集群的限流方法的实现示意图;
图2为本说明书一个实施例提供的分布式集群的限流方法的流程图;
图3为本说明书另一个实施例提供的分布式集群的限流方法的流程图;
图4为本说明书一个实施例提供的分布式集群的限流装置的结构示意图;
图5为本说明书另一个实施例提供的分布式集群的限流装置的结构示意图;
图6为本说明书一个实施例提供的电子设备的结构示意图。
【具体实施方式】
为了更好的理解本说明书的技术方案,下面结合附图对本说明书实施例进行详细描述。
应当明确,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本说明书保护的范围。
在本说明书实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
现有相关技术中提供了两种限流方案分别为:单机限流方案和集中限流。其中,单机限流方案中,当需要限流数为M,集群机器数为N时,设置每台机器的限流量为M/N。这样,当集群机器数量由N扩大到S时,限流数量变为S*M/N=(S-N)*M/N+M流量会超出预期;另外,当服务器任务不均匀时,无法到达速率最大化。例如:有两台服务器A和B,任务数分别为A=10,B=100,假定设置限流为100,那么限流会均匀分布,即A=50,B=50,这样集群的执行效率仅为每分钟60条,集群的执行效率较低。
而集中限流方案,只适用于远程过程调用(Remote Procedure Call,RPC)、消息等中间件限流,无法做应用中的方法限流。
基于以上问题,本说明书实施例提供本说明书提供一种分布式集群的限流方法,主要包括:1、注册限流令牌桶;2、集群中服务器捞取任务;3、集群中服务器抢占令牌;4、集群中服务器执行任务(抢占到令牌则执行,未抢占到令牌则放弃)。上述分布式集群的限流方法适用于分布式集群限流场景,可以在集群扩容时无需修改自动限流,并且可以在任务分布不均匀时达到集群的执行效率最大化。
其中,限流是指通过技术手段,将某个模块的执行速率限制在某个范围内。分布式集群是指互联网应用部署中,同一个模块分布部署在不同的服务器上。
图1为本说明书一个实施例提供的分布式集群的限流方法的实现示意图,如图1所示,本说明书实施例提供的分布式集群的限流方法包括4个组件:令牌桶、任务启动器、集群服务器(服务器A和服务器B)和本地任务限流器。
上述分布式集群的限流方法可以包括:
步骤102,任务启动器注册令牌桶。
步骤104,任务启动器分别发送任务执行指令给服务器A和服务器B。
步骤106,服务器A从任务池A中捞取待执行任务,服务器B从任务池B中捞取待执行任务。
步骤108,服务器A和服务器B分别根据捞取的待执行任务的数量抢占令牌。
步骤110,服务器A和服务器B分别根据抢占令牌数量计算本机器限流数量,根据计算得到的数量使用本地限流器执行上述待执行任务。
其中,本机器限流数量可以使用抢占令牌数量除以任务执行周期获得,举例来说,假设任务每分钟执行一次,那么任务执行周期即为60秒,本机器限流数量即为抢占令牌数量/60。
下面结合图1对本说明书实施例提供的分布式集群的限流方法进行介绍。图2为本说明书一个实施例提供的分布式集群的限流方法的流程图,本实施例提供的分布式集群的限流方法可以由集群服务器执行,上述集群服务器可以为分布式集群中的一个服务器。如图2所示,上述分布式集群的限流方法可以包括:
步骤202,接收任务执行指令。
步骤204,响应于上述任务执行指令,从集群服务器连接的任务池中捞取待执行任务。
具体实现时,集群服务器接收任务执行指令之后,可以每次按照预定数量从集群服务器连接的任务池中捞取待执行任务。具体地,上述预定数量可以在具体实现时根据系统性能和/或实现需求等自行设定,举例来说,上述预定数量可以为1000。
步骤206,根据捞取的待执行任务的数量,从上述集群服务器连接的令牌桶中抢占令牌。
步骤208,根据抢占的令牌的数量确定上述集群服务器的限流量。
具体地,根据抢占的令牌的数量确定上述集群服务器的限流量可以为:计算抢占的令牌的数量除以任务执行周期后获得的商,上述商为上述集群服务器的限流量。
步骤210,根据上述限流量,对上述待执行任务进行限流。
上述分布式集群的限流方法中,接收任务执行指令之后,响应于上述任务执行指令,从集群服务器连接的任务池中捞取待执行任务,然后根据捞取的待执行任务的数量,从上述集群服务器连接的令牌桶中抢占令牌,进而根据抢占的令牌的数量确定上述集群服务器的限流量,最后根据上述限流量,对上述待执行任务进行限流,从而可以实现集群限流总数量根据令牌桶中的令牌数量确定,不会随着集群服务器扩容而产生变化,并且集群中的每个服务器按需抢占令牌,不会由于任务不均匀分布导致集群中服务器的执行效率降低,可以最大化集群中服务器的执行效率;另外,上述方法中,根据抢占的令牌的数量确定限流量,可以提高限流效能。
本说明书图2所示实施例的一种实现方式中,步骤206之后,如果上述令牌桶中令牌被抢占之前的第一剩余令牌数大于或等于本次需要被抢占的令牌数,则上述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为第一剩余令牌数减去本次被抢占的令牌数后获得的差;其中,本次被抢占的令牌数与捞取的待执行任务的数量相同。
本说明书图2所示实施例的另一种实现方式中,步骤206之后,如果上述令牌桶中令牌被抢占之前的第一剩余令牌数小于本次需要被抢占的令牌数,则本次被抢占的令牌数为上述第一剩余令牌数,上述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为0。
图3为本说明书另一个实施例提供的分布式集群的限流方法的流程图,本说明书图2所示实施例的再一种实现方式中,如图3所示,步骤206可以包括:
步骤302,查询上述集群服务器连接的令牌桶中的第一剩余令牌数,并锁定上述第一剩余令牌数。然后执行步骤304或步骤306。
其中,上述第一剩余令牌数是指令牌桶中的令牌被抢占之前的剩余令牌数。
步骤304,如果第一剩余令牌数大于或等于本次需要抢占的令牌数,则根据捞取的待执行任务的数量,从上述令牌桶中抢占令牌,并解除锁定。
其中,本次需要抢占的令牌数与捞取的待执行任务的数量相同。
本实施例中,从上述令牌桶中抢占令牌之后,上述令牌桶中的第二剩余令牌数被更新为第一剩余令牌数减去本次被抢占的令牌数后获得的差。
步骤306,如果第一剩余令牌数小于本次需要抢占的令牌数,则抢占第一剩余令牌数对应的令牌。
这时,上述令牌桶中的第二剩余令牌数被更新为0,其中,第二剩余令牌数是指令牌桶中的令牌被抢占之后的剩余令牌数。
本实施例中,在分布式集群中的一个集群服务器向令牌桶发起查询之后,该令牌桶中的剩余令牌数即被锁定,在该集群服务器抢占令牌之后,上述令牌桶中的剩余令牌才会被解除锁定,上述令牌桶才可响应分布式集群中的其他集群服务器发起的查询。
本说明书实施例提供的分布式集群的限流方法,可以实现集群限流总数量根据令牌桶中的令牌数量确定,不会随着集群服务器扩容而产生变化,并且集群中的每个服务器按需抢占令牌,不会由于任务不均匀分布导致集群中服务器的执行效率降低,可以最大化集群中服务器的执行效率;另外,上述方法中,根据抢占的令牌的数量确定限流量,可以提高限流效能。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图4为本说明书一个实施例提供的分布式集群的限流装置的结构示意图,上述分布式集群的限流装置可以设置在集群服务器中,如图4所示,上述分布式集群的限流装置可以包括:接收模块41、捞取模块42、抢占模块43、确定模块44和限流模块45;
其中,接收模块41,用于接收任务执行指令;
捞取模块42,用于响应于上述任务执行指令,从集群服务器连接的任务池中捞取待执行任务;
抢占模块43,用于根据捞取模块42捞取的待执行任务的数量,从上述集群服务器连接的令牌桶中抢占令牌;
确定模块44,用于根据抢占模块43抢占的令牌的数量确定上述集群服务器的限流量;
限流模块45,用于根据上述限流量,对上述待执行任务进行限流。
图4所示实施例提供的分布式集群的限流装置可用于执行本说明书图2所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
图5为本说明书另一个实施例提供的分布式集群的限流装置的结构示意图,本实施例的一种实现方式中,抢占模块43从上述集群服务器连接的令牌桶中抢占令牌之后,如果上述令牌桶中令牌被抢占之前的第一剩余令牌数大于或等于本次需要被抢占的令牌数,则上述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为第一剩余令牌数减去本次被抢占的令牌数后获得的差;其中,本次被抢占的令牌数与捞取的待执行任务的数量相同。
本实施例的另一种实现方式中,抢占模块43从上述集群服务器连接的令牌桶中抢占牌之后,如果上述令牌桶中令牌被抢占之前的第一剩余令牌数小于本次需要被抢占的令牌数,则本次被抢占的令牌数为第一剩余令牌数,上述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为0。
本实施例的再一种实现方式中,抢占模块43可以包括:查询子模块431、锁定子模块432和令牌抢占子模块433;
其中,查询子模块431,用于查询上述集群服务器连接的令牌桶中的第一剩余令牌数;
锁定子模块432,用于锁定上述第一剩余令牌数;
令牌抢占子模块433,用于当第一剩余令牌数大于或等于本次需要抢占的令牌数时,根据捞取的待执行任务的数量,从上述令牌桶中抢占令牌,并解除锁定;其中,本次需要抢占的令牌数与捞取的待执行任务的数量相同。
本实现方式中,令牌抢占子模块433从上述令牌桶中抢占令牌之后,上述令牌桶中的第二剩余令牌数被更新为第一剩余令牌数减去本次被抢占的令牌数后获得的差。
进一步地,令牌抢占子模块433,还用于在锁定子模块432锁定第一剩余令牌数之后,如果第一剩余令牌数小于本次需要抢占的令牌数,则抢占第一剩余令牌数对应的令牌;上述令牌桶中的第二剩余令牌数被更新为0。
本实施例中,确定模块44,具体用于计算抢占的令牌的数量除以任务执行周期后获得的商,上述商为上述集群服务器的限流量。
图5所示实施例提供的分布式集群的限流装置可用于执行本说明书图2~图3所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
图6为本说明书一个实施例提供的电子设备的结构示意图,如图6所示,上述电子设备可以包括至少一个处理器;以及与上述处理器通信连接的至少一个存储器,其中:存储器存储有可被处理器执行的程序指令,上述处理器调用上述程序指令能够执行本说明书图2~图5所示实施例提供的分布式集群的限流方法。
其中,上述电子设备可以为服务器,例如:云服务器,本实施例对上述电子设备的形式不作限定。
图6示出了适于用来实现本说明书实施方式的示例性电子设备的框图。图6显示的电子设备仅仅是一个示例,不应对本说明书实施例的功能和使用范围带来任何限制。
如图6所示,电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:一个或者多个处理器410,通信接口420,存储器430,以及连接不同组件(包括存储器430、通信接口420和处理器410)的通信总线440。
通信总线440表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,或者使用多种总线结构中的任意总线结构的局域总线。举例来说,通信总线440可以包括但不限于工业标准体系结构(industry standardarchitecture,ISA)总线,微通道体系结构(micro channel architecture,MCA)总线,增强型ISA总线、视频电子标准协会(video electronics standards association,VESA)局域总线以及外围组件互连(peripheral component interconnection,PCI)总线。
电子设备典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器430可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(random access memory,RAM)和/或高速缓存存储器。存储器430可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本说明书图2~图3所示实施例的功能。
具有一组(至少一个)程序模块的程序/实用工具,可以存储在存储器430中,这样的程序模块包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本说明书图2~图3所描述的实施例中的功能和/或方法。
处理器410通过运行存储在存储器430中的程序,从而执行各种功能应用以及数据处理,例如实现本说明书图2~图3所示实施例提供的分布式集群的限流方法。
本说明书实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本说明书图2~图3所示实施例提供的分布式集群的限流方法。
上述非暂态计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(read only memory,ROM)、可擦式可编程只读存储器(erasable programmable read onlymemory,EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、射频(radio frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本说明书操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(localarea network,LAN)或广域网(wide area network,WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本说明书的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本说明书的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本说明书的实施例所属技术领域的技术人员所理解。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
需要说明的是,本说明书实施例中所涉及的终端可以包括但不限于个人计算机(personal computer,PC)、个人数字助理(personal digital assistant,PDA)、无线手持设备、平板电脑(tablet computer)、手机、MP3播放器、MP4播放器等。
在本说明书所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本说明书各个实施例中的各功能单元可以集成在一个处理器中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(processor)执行本说明书各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (16)
1.一种分布式集群的限流方法,包括:
接收任务执行指令;
响应于所述任务执行指令,从集群服务器连接的任务池中捞取待执行任务;
根据捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌;
根据抢占的令牌的数量确定所述集群服务器的限流量;
根据所述限流量,对所述待执行任务进行限流。
2.根据权利要求1所述的方法,其中,所述根据捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌之后,如果所述令牌桶中令牌被抢占之前的第一剩余令牌数大于或等于本次需要被抢占的令牌数,则所述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为所述第一剩余令牌数减去本次被抢占的令牌数后获得的差;其中,本次被抢占的令牌数与捞取的待执行任务的数量相同。
3.根据权利要求1所述的方法,其中,所述根据捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌之后,如果所述令牌桶中令牌被抢占之前的第一剩余令牌数小于本次需要被抢占的令牌数,则本次被抢占的令牌数为所述第一剩余令牌数,所述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为0。
4.根据权利要求1所述的方法,其中,所述根据捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌包括:
查询所述集群服务器连接的令牌桶中的第一剩余令牌数,并锁定所述第一剩余令牌数;
如果所述第一剩余令牌数大于或等于本次需要抢占的令牌数,则根据捞取的待执行任务的数量,从所述令牌桶中抢占令牌,并解除锁定;其中,本次需要抢占的令牌数与捞取的待执行任务的数量相同。
5.根据权利要求4所述的方法,其中,所述从所述令牌桶中抢占令牌之后,所述令牌桶中的第二剩余令牌数被更新为所述第一剩余令牌数减去本次被抢占的令牌数后获得的差。
6.根据权利要求4所述的方法,其中,所述锁定所述第一剩余令牌数之后,还包括:
如果所述第一剩余令牌数小于本次需要抢占的令牌数,则抢占所述第一剩余令牌数对应的令牌;
所述令牌桶中的第二剩余令牌数被更新为0。
7.根据权利要求1-6任意一项所述的方法,其中,所述根据抢占的令牌的数量确定所述集群服务器的限流量包括:
计算抢占的令牌的数量除以任务执行周期后获得的商,所述商为所述集群服务器的限流量。
8.一种分布式集群的限流装置,设置在集群服务器中,所述限流装置包括:
接收模块,用于接收任务执行指令;
捞取模块,用于响应于所述任务执行指令,从集群服务器连接的任务池中捞取待执行任务;
抢占模块,用于根据所述捞取模块捞取的待执行任务的数量,从所述集群服务器连接的令牌桶中抢占令牌;
确定模块,用于根据所述抢占模块抢占的令牌的数量确定所述集群服务器的限流量;
限流模块,用于根据所述限流量,对所述待执行任务进行限流。
9.根据权利要求8所述的装置,其中,所述抢占模块从所述集群服务器连接的令牌桶中抢占令牌之后,如果所述令牌桶中令牌被抢占之前的第一剩余令牌数大于或等于本次需要被抢占的令牌数,则所述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为所述第一剩余令牌数减去本次被抢占的令牌数后获得的差;其中,本次被抢占的令牌数与捞取的待执行任务的数量相同。
10.根据权利要求8所述的装置,其中,所述抢占模块从所述集群服务器连接的令牌桶中抢占令牌之后,如果所述令牌桶中令牌被抢占之前的第一剩余令牌数小于本次需要被抢占的令牌数,则本次被抢占的令牌数为所述第一剩余令牌数,所述令牌桶中令牌被抢占之后的第二剩余令牌数被更新为0。
11.根据权利要求8所述的装置,其中,所述抢占模块包括:
查询子模块,用于查询所述集群服务器连接的令牌桶中的第一剩余令牌数;
锁定子模块,用于锁定所述第一剩余令牌数;
令牌抢占子模块,用于当所述第一剩余令牌数大于或等于本次需要抢占的令牌数时,根据捞取的待执行任务的数量,从所述令牌桶中抢占令牌,并解除锁定;其中,本次需要抢占的令牌数与捞取的待执行任务的数量相同。
12.根据权利要求11所述的装置,其中,所述令牌抢占子模块从所述令牌桶中抢占令牌之后,所述令牌桶中的第二剩余令牌数被更新为所述第一剩余令牌数减去本次被抢占的令牌数后获得的差。
13.根据权利要求11所述的装置,其中,
所述令牌抢占子模块,还用于在所述锁定子模块锁定所述第一剩余令牌数之后,如果所述第一剩余令牌数小于本次需要抢占的令牌数,则抢占所述第一剩余令牌数对应的令牌;所述令牌桶中的第二剩余令牌数被更新为0。
14.根据权利要求8-13任意一项所述的装置,其中,
所述确定模块,具体用于计算抢占的令牌的数量除以任务执行周期后获得的商,所述商为所述集群服务器的限流量。
15.一种电子设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
16.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210919152.6A CN115314441A (zh) | 2022-08-02 | 2022-08-02 | 分布式集群的限流方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210919152.6A CN115314441A (zh) | 2022-08-02 | 2022-08-02 | 分布式集群的限流方法、装置和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115314441A true CN115314441A (zh) | 2022-11-08 |
Family
ID=83859219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210919152.6A Pending CN115314441A (zh) | 2022-08-02 | 2022-08-02 | 分布式集群的限流方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115314441A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991463A (zh) * | 2015-02-13 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 实现流量控制的方法、消息主节点、令牌服务器及系统 |
CN109714268A (zh) * | 2019-01-23 | 2019-05-03 | 平安科技(深圳)有限公司 | 一种虚拟私有云的流量控制方法及相关装置 |
WO2021114829A1 (zh) * | 2020-06-09 | 2021-06-17 | 平安科技(深圳)有限公司 | 基于令牌桶的接口限流方法、装置、系统及可读存储介质 |
CN113381944A (zh) * | 2021-06-09 | 2021-09-10 | 中国工商银行股份有限公司 | 系统限流方法、装置、电子设备、介质和程序产品 |
-
2022
- 2022-08-02 CN CN202210919152.6A patent/CN115314441A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991463A (zh) * | 2015-02-13 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 实现流量控制的方法、消息主节点、令牌服务器及系统 |
CN109714268A (zh) * | 2019-01-23 | 2019-05-03 | 平安科技(深圳)有限公司 | 一种虚拟私有云的流量控制方法及相关装置 |
WO2021114829A1 (zh) * | 2020-06-09 | 2021-06-17 | 平安科技(深圳)有限公司 | 基于令牌桶的接口限流方法、装置、系统及可读存储介质 |
CN113381944A (zh) * | 2021-06-09 | 2021-09-10 | 中国工商银行股份有限公司 | 系统限流方法、装置、电子设备、介质和程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107395665B (zh) | 一种区块链业务受理及业务共识方法及装置 | |
CN110611623B (zh) | 限流方法和装置 | |
CN107766101B (zh) | App启动事件的处理方法、装置和设备 | |
CN113377348A (zh) | 应用于任务引擎的任务调整方法、相关装置和存储介质 | |
CN111240834A (zh) | 任务执行方法、装置、电子设备和存储介质 | |
CN113238861A (zh) | 一种任务执行方法和装置 | |
CN110704131B (zh) | 一种html5应用调用原生应用的方法和装置 | |
CN115525411A (zh) | 处理业务请求的方法、装置、电子设备和计算机可读介质 | |
CN104184817A (zh) | 一种下载优化方法及装置、终端 | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
CN115314441A (zh) | 分布式集群的限流方法、装置和电子设备 | |
CN113742057A (zh) | 一种任务执行方法和装置 | |
CN112306695A (zh) | 数据的处理方法、装置、电子设备及计算机存储介质 | |
CN109284177B (zh) | 一种数据更新方法和装置 | |
CN114374657B (zh) | 一种数据处理方法和装置 | |
CN112711485A (zh) | 一种消息处理方法和装置 | |
CN114579054A (zh) | 一种数据处理方法、装置、电子设备及计算机可读介质 | |
CN111176679B (zh) | 一种应用程序更新方法和装置 | |
CN109933426B (zh) | 服务调用的处理方法、装置、电子设备及可读存储介质 | |
CN113760487B (zh) | 一种业务处理方法和装置 | |
CN114168626A (zh) | 一种数据库操作的处理方法、装置、设备及介质 | |
CN112860439A (zh) | 应用启动方法、装置、终端及存储介质 | |
CN113518183A (zh) | 摄像头调用方法、装置和电子设备 | |
CN113760876A (zh) | 一种数据过滤方法和装置 | |
CN112231090A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240226 Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore Applicant after: Advanced Nova Technology (Singapore) Holdings Ltd. Country or region after: Singapore Address before: 51 Belarusian Bashar Road, Singapore, Lai Zanda 1 # 04-08 Applicant before: Alipay laboratories (Singapore) Ltd. Country or region before: Singapore |