CN115086234B - 消息处理方法及系统、设备及存储介质 - Google Patents
消息处理方法及系统、设备及存储介质 Download PDFInfo
- Publication number
- CN115086234B CN115086234B CN202210501382.0A CN202210501382A CN115086234B CN 115086234 B CN115086234 B CN 115086234B CN 202210501382 A CN202210501382 A CN 202210501382A CN 115086234 B CN115086234 B CN 115086234B
- Authority
- CN
- China
- Prior art keywords
- current
- current limiting
- access
- tenant
- current time
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 230000000670 limiting effect Effects 0.000 claims abstract description 308
- 238000000034 method Methods 0.000 claims description 49
- 230000015654 memory Effects 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 35
- 238000004891 communication Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 20
- 230000007246 mechanism Effects 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 18
- 238000010801 machine learning Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000004044 response Effects 0.000 description 6
- 230000005291 magnetic effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000002147 killing effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例提供一种消息处理方法及系统、设备及存储介质。在本申请实施例中,采用滑动窗口机制,任一租户在每个时间窗口内向消息队列设备发送的访问请求的数量不能超过该租户对应的访问流量规格。同时,针对每个时间窗口,在相对于时间窗口更为细粒度的时间分片内,消息队列设备在接收到任一租户在当前时间分片内发起的访问请求后,与限流服务器集群交互识别是否需要拒绝接收租户在当前时间窗口的剩余时间分片发起的访问请求。由此,实现针对不同租户访问消息队列的访问流量进行不同的规格的限流控制,且以比时间窗口更为细粒度的时间分片进行更加平滑地限流控制,改善了消息队列服务的性能。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种消息处理方法及系统、设备及存储介质。
背景技术
消息队列(Message Queue,简称MQ)是构建分布式应用系统的基础设施,能够为分布式应用系统提供异步解耦和削峰填谷等服务,并通过异步处理提高系统性能,减少响应所需时间。在多租户场景下,因租户配置的消息队列的访问流量规格不同,需要有针对性地控制不同租户对消息队列发起的访问流量。其中,租户是指申请使用消息队列服务的分布式应用系统的提供方。目前,在多租户场景下,如何更好地控制消息队列的访问流量是研究热点。
发明内容
本申请的多个方面提供一种消息处理方法及系统、设备及存储介质,用以更好地控制消息队列的访问流量。
本申请实施例提供一种消息处理系统,包括:消息队列设备和包括多个限流服务器的限流服务器集群;消息队列设备,用于在当前时间分片内接收第一租户发送的访问请求,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片;在当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量;以及在目标限流服务器返回限流识别结果指示限流的情况下,在当前时间窗口的剩余时间分片内禁止接收第一租户发送的访问请求;目标限流服务器,用于响应限流识别请求,根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果,并向消息队列设备返回限流识别结果。
本申请实施例还提供一种消息处理方法,应用于消息队列设备,该方法包括:在当前时间分片内接收第一租户发送的访问请求,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片;在当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量;接收目标限流服务器返回的限流识别结果;若限流识别结果指示限流,则在当前时间窗口的剩余时间分片内禁止接收第一租户发送的访问请求。
本申请实施例还提供一种消息处理方法,应用于限流服务器集群中的目标限流服务器,该方法包括:接收消息队列设备发送的限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片;根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果;向消息队列设备返回限流识别结果。
本申请实施例还提供一种消息队列设备,包括:接收模块,用于在当前时间分片内接收第一租户发送的访问请求,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片;发送模块,用于在当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量;接收模块,还用于接收目标限流服务器返回的限流识别结果;处理模块,用于若限流识别结果指示限流,则在当前时间窗口的剩余时间分片内禁止接收第一租户发送的访问请求。
本申请实施例还提供一种服务器,包括:接收模块,用于接收消息队列设备发送的限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片;处理模块,用于根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果;发送模块,用于向消息队列设备返回限流识别结果。
本申请实施例还提供一种计算机设备,包括:存储器和处理器;存储器,用于存储计算机程序;处理器耦合至存储器,用于执行计算机程序以用于执行消息处理方法中的步骤。
本申请实施例还提供一种存储有计算机程序的计算机存储介质,当计算机程序被处理器执行时,致使处理器能够实现消息处理方法中的步骤。
在本申请实施例中,采用滑动窗口机制,任一租户在每个时间窗口内向消息队列设备发送的访问请求的数量不能超过该租户对应的访问流量规格。同时,针对每个时间窗口,在相对于时间窗口更为细粒度的时间分片内,消息队列设备在接收到任一租户在当前时间分片内发起的访问请求后,与限流服务器集群交互识别是否需要拒绝接收租户在当前时间窗口的剩余时间分片发起的访问请求。由此,实现针对不同租户访问消息队列的访问流量进行不同的规格的限流控制,且以比时间窗口更为细粒度的时间分片进行更加平滑地限流控制,改善了消息队列服务的性能。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请提供的一种消息处理系统的结构示意图;
图2为本申请实施例提供的一种消息处理方法的信令交互图;
图3为一种时间窗口划分为多个时间切片的示意图;
图4为本申请实施例提供的一种消息处理方法的流程图;
图5为本申请实施例提供的另一种消息处理方法的流程图;
图6为本申请实施例提供的另一种消息处理方法的流程图;
图7为本申请实施例提供的一种消息队列设备的结构示意图;
图8为本申请实施例提供的一种服务器的结构示意图;
图9为本申实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,在多租户场景下,如何更好地控制消息队列的访问流量是研究热点。为此,本申请实施例提供一种消息处理方法及系统、设备及存储介质。在本申请实施例中,采用滑动窗口机制,任一租户在每个时间窗口内向消息队列设备发送的访问请求的数量不能超过该租户对应的访问流量规格。同时,针对每个时间窗口,在相对于时间窗口更为细粒度的时间分片内,消息队列设备在接收到任一租户在当前时间分片内发起的访问请求后,与限流服务器集群交互识别是否需要拒绝接收租户在当前时间窗口的剩余时间分片发起的访问请求。由此,实现针对不同租户访问消息队列的访问流量进行不同的规格的限流控制,且以比时间窗口更为细粒度的时间分片进行更加平滑地限流控制,改善了消息队列服务的性能。
图1为本申请提供的一种消息处理系统的结构示意图。如图1所示,该消息处理系统包括消息队列设备10,用于为生产者设备与消费者设备提供消息队列服务,实现两者提供可靠的异步通信和加快系统响应等。其中,生产者设备部署有与生产者对应的提供特定服务的服务系统,生产者设备将由生产者产生的消息发送至消息队列设备10中进行存储,在本申请中,一个租户可以对应若干个生产者。消费者设备部署有与消费消息的消费者对应的提供特定服务的服务系统,消费者设备从消息队列设备10中拉取消息进行消费。实际应用中,使用消息队列设备10提供的消息队列服务的生产者设备或消费者设备的数量可能不止一个。图1中以n个生产者设备和n个消费者设备进行示出,n为正整数。
在本申请实例中,消息处理系统中还增设了提供限流服务的由多个限流服务器30组成的限流服务器集群20,这样,基于消息队列设备10与限流服务器集群20之间的相互交互,准确地控制各个租户访问消息队列的访问流量。
如图1所示,该消息处理系统还可以包括数据库40。在本申请实施例中,支持租户配置和更改的访问流量规格,并在数据库40中保存租户当前的访问流量规格。访问流量规格可以理解为单位时间内可允许访问消息队列的访问请求的请求数量。例如,租户的访问流量规格是100TPS(Transaction Per Second,每秒事务数)、100QPS(Queries PerSecond,每秒查询率)、UV(访问数(Unique Visitor)等等。具体而言,租户通过生产者设备向消息队列设备10发起配置请求,配置请求用于请求配置租户针对消息队列的访问流量规格,消息队列设备10响应配置请求将租户的租户标识及其对应的访问流量规格存储至数据库40中。在消息队列设备10与限流服务器集群20交互以对租户进行限流识别时,限流服务器集群20从数据库40中读取所需识别的租户的访问流量规格,并基于所需识别的租户的访问流量规格识别对应的租户是否需要限流,并向消息队列设备10返回针对租户的限流识别结果。当然,租户可以按需发起配置更新请求,更新数据库40中已保存自身的访问流量规格。
继续参见图1,对消息处理过程进行说明:在本申请实施例中,租户在一个时间窗口内访问消息队列设备10的访问请求的数量不能超过租户在该时间窗口对应的访问流量规格,且一个时间窗口被划分为更新粒度的多个时间分片。首先,如图1中①所示,在当前时间窗口的当前时间分片内任一租户通过对应的生产者设备向消息队列设备10发送访问请求,该访问请求是租户产生的消息,消息队列设备10接收并存储当前时间分片内的访问请求。如图1中②所示,消费者设备在触发拉取事件后,从消息队列设备10拉取当前时间分片内的访问请求并进行响应。如图1中③所示,消息队列设备10在接收到当前时间分片内的访问请求之后,与限流服务器集群20进行交互,识别租户截止至当前时间分片发起的访问请求的数量是否达到当前时间窗口对应的访问流量规格,若是,确认需要对租户进行访问限流,拒绝接收租户在当前时间窗口的剩余时间分片发起的访问请求,以及可向租户返回限流通知信息。若否,确认可以接收租户在当前时间分片的下一个时间分片内发起的访问请求。
值得注意的是,生产者设备、消息队列设备10和消费者设备可以是终端设备或服务器。其中,终端设备可以是硬件也可以是软件。当终端设备为硬件时,终端设备例如为手机、平板电脑、台式计算机、可穿戴式智能设备、智能家居设备等。当终端设备为软件时,其可以安装在上述列举的硬件设备中,此时,终端设备例如为多个软件模块或单个软件模块等,本申请实施例并不限制。服务器可以是硬件也可以是软件。当服务器为硬件时,该服务器为单个服务器或多个服务器组成的分布式服务器集群。当服务器为软件时,可以为多个软件模块或单个软件模块等,本申请实施例并不限制。
应当理解的是,图1仅是本申请实施例提供的一种消息处理系统的示意图,本申请实施例不对图1中包括的设备进行限定,也不对图1中设备之间的位置关系进行限定。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图2为本申请实施例提供的一种消息处理方法的信令交互图。参见图2,该方法可以包括以下步骤:
201、消息队列设备在当前时间分片内接收第一租户发送的访问请求,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片。
202、消息队列设备在当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求。
其中,限流识别请求至少包括当前时间分片内接收到的访问请求的数量。
203、目标限流服务器在接收限流识别请求后,根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果。
204、目标限流服务器向消息队列设备返回限流识别结果。
205、消息队列设备在接收限流识别结果后,若限流识别结果指示限流,则在当前时间窗口的剩余时间分片内禁止接收第一租户发送的访问请求。
其中,剩余时间分片是指当前时间分片之后的时间分片。
在本实施例中,消息队列设备采用滑动窗口机制进行限流控制,也即将时间划分为多个时间窗口,在每个时间窗口内按照租户对应的访问流量规格进行限流控制。其中,时间窗口的时长例如包括但不限于:1秒钟、1分钟以及1毫秒等等,对此不做限制。
为了支持采用滑动窗口机制进行限流控制,消息队列设备预先为每个租户配置其在时间窗口内的访问流量规格。于是,在消息队列设备在接收第一租户发起的访问请求之前,接收针对第一租户的配置请求,配置请求包括第一租户的租户标识和访问流量规格;将第一租户的租户标识和访问流量规格关联存储至数据库中。其中,第一租户是多个租户中任一租户。
进一步的,为了满足租户随时更新访问流量规格的需求,消息队列设备还可以接收针对第一租户的配置更新请求,更新数据库中已保存第一租户的访问流量规格。在本实施例中,以单位时间为时间窗口,访问流量规格是指一个时间窗口内可允许访问消息队列的访问请求的请求数量。
进一步地,为了更加平滑地限流控制,消息队列设备在接收任一租户的访问请求之前,将任一时间窗口划分为多个时间分片,消息队列设备在接收到当前时间分片的访问请求后需要与限流服务器集群进行交互,以识别是否需要对租户在当前时间窗口内进行访问限流。
在本实施例中,例如,可以将时间窗口划分为多个时长相同的时间分片,也可以按照指定规则将时间窗口划分为时长各不相同的时间分片,也可以将当前时间窗口随机划分成多个时间分片,在此,对时间分片的划分逻辑不做限制。值得注意的是,随机性划分当前时间窗口,可以进一步地帮助分散限流服务器集群的压力,进而帮助更好地进行限流控制。
以图3为例,在秒级时间窗口内,有的时长为1000毫秒的时间窗口随机划分为3个时间分片,有的时长为1000毫秒的时间窗口随机划分为2个时间分片,同一时间窗口内各个时间分片的时长可能相同,也可能不同。
在本实施例中,在到达当前时间窗口的起始时刻后,消息队列设备开始第一个时间分片的计时,并在第一个时间分片结束后,开始第二个时间分片的计时,直至到达当前时间窗口的结束时刻。为了便于理解和区分,将多个租户中任一租户称作为第一租户。针对该第一租户,依次将当前时间窗口中的一个时间分片作为当前时间分片,在当前时间分片结束的情况下,也即当前时间分片的结束时刻已到达的情况下,将消息队列设备在当前时间分片内接收到第一租户的访问请求的数量上报限流服务器集群中的目标限流服务器进行限流识别。若目标限流服务器返回指示限流的限流识别结果,则消息队列设备确认当前时间窗口内接收到的第一租户的访问请求的数量达到第一租户在当前时间窗口对应的访问流量规格,则不再接收在当前时间窗口的剩余时间分片内第一租户发送的访问请求。若目标限流服务器返回指示允许访问(也即不限流)的限流识别结果,则消息队列设备确认当前时间窗口内接收到的第一租户的访问请求的数量尚未达到该第一租户在当前时间窗口对应的访问流量规格,则消息队列设备在当前时间分片的下一个时间分片内接收第一租户发送的访问请求。
值得注意的是,消息队列设备可以以使限流服务器集群保持负载均衡为目标,消息队列设备在向限流服务器集群中的目标限流服务器发送限流识别请求之前,从限流服务器集群中选择一个限流服务器作为目标限流服务器。实际应用中,可以采用但不限于以下几种可选实现方式选择目标限流服务器。
方式1:结合限流服务器集群中各个限流服务器的属性信息从限流服务器集群中选择目标限流服务器。其中,属性信息例如包括但不限于:工作状态(包括可用状态和不可用状态)、负载状态、限流服务器与消息队列设备之间的通信质量、限流服务器与消息队列设备之间的通信距离等等,但并不以此为限。
值得注意的是,基于限流服务器的多种属性信息选择最合适的目标限流服务器,进而保证消息队列设备能够快速且可靠地得到限流识别结果,增强消息队列设备的限流访问的响应性能和消息处理性能。
作为一种示例,可以灵活设置各个属性信息的选择优先级,按照选择优先级从高到低的顺序,依次对限流服务器集群执行多次选择操作,以及从最后一次选择操作选择出的限流服务器中选择一个作为目标限流服务器。其中,上一次选择操作所选择的限流服务器作为下一次选择操作的待选限流服务器。
例如,确定选择优先级从高到低的顺序依次为工作状态、负载状态、通信质量、以及通信距离;首先,基于限流服务器集群中各个限流服务器的工作状态,从限流服务器集群中选择若干个处于可用状态的限流服务器;接着,按照各个限流服务器的负载状态从小到大的顺序对处于可用状态的限流服务器进行排序,从排序后的处于可用状态的限流服务器中选择排序靠前的若干个第一限流服务器;接着,基于第一限流服务器的通信质量,从若干个第一限流服务器中选择通信质量排序在前的若干个第二限流服务器;最后,从若干个第二限流服务器中选择与消息队列设备的通信距离最短的第二限流服务器作为目标限流服务器。
值得注意的是,上述仅仅是以选择优先级从高到低的顺序依次为工作状态、负载状态、负载状态以及通信距离进行举例,依次类推,按照其他选择优先级的顺序从限流服务器集群中选择目标限流服务器。
作为另一种示例,还可以利用机器学习模型自动选择出最合适的目标限流服务器。其中,机器学习模型是利用海量的训练数据进行迭代模型训练得到的。其中,训练数据包括多个样本限流服务器的属性信息以及其标注结果,其中,标注结果指示样本限流服务器是否为期望限流服务器。期望限流服务器是指期望与消息队列设备进行交互以完成限流识别的样本限流服务器。以机器学习模型预测出的限流服务器为期望限流服务器为目标,迭代训练机器学习模型,训练好的机器学习模型能够基于多个限流服务器的属性信息选择与消息队列设备进行交互以完成限流识别的目标限流服务器。其中,机器学习模型的模型结构可以包括但不限于:卷积神经网络(Convolutional Neural Networks,CNN)、循环神经网络(Recurrent Neural Networks,RNN)和长短期记忆网络(Long Short-Term Memory,LSTM)。
方式2:为了使得限流服务器集群能够保持较好的负载均衡性能,消息队列设备还可以:采用一致性哈希算法(consistent hashing)对当前时间分片内接收到的访问请求的数量进行哈希运算,得到一致性哈希结果;根据一致性哈希结果从限流服务器集群选择目标限流服务器。
值得注意的是,采用一致性哈希算法确定消息队列设备所要发起限流识别请求的限流服务器,每个限流服务器只负责自身对应的时间分片的限流识别任务,保证了大规模集群的高性能可扩展秒级流控。
方式3:综合限流服务器的属性信息和一致性哈希结果选择更加合适的目标限流服务器。具体而言,结合限流服务器集群中各个限流服务器的属性信息从限流服务器集群中选择候选限流服务器;采用一致性哈希算法对当前时间分片内接收到的访问请求的数量进行哈希运算,得到一致性哈希结果;根据一致性哈希结果从候选限流服务器选择目标限流服务器。
在方式3中,结合限流服务器集群中各个限流服务器的属性信息从限流服务器集群中选择候选限流服务器的一种实现方式具体是:首先,确定各个属性信息对应的选择优先级,以及按照选择优先级从高到低的顺序,依次对限流服务器集群执行多次选择操作,以及将最后一次选择操作选择出的限流服务器中选择一个限流服务器作为候选限流服务器;其中,上一次选择操作所选择的限流服务器作为下一次选择操作的待选限流服务器。
结合限流服务器集群中各个限流服务器的属性信息从限流服务器集群中选择候选限流服务器的另一种实现方式具体是:将多个限流服务器的属性信息输入至预先训练好的机器学习模型中,以得到由机器学习模型输出的候选限流服务器。
实际应用中,消息队列设备向限流服务器集群中目标限流服务器发送限流识别请求之后,可能会出现长时间未接收到目标限流服务器返回的限流识别结果的情况。造成上述情况的因素可能是多种多样的,例如,可能是目标限流服务器出现了异常故障,或者,可能是消息队列设备与目标限流服务器之间的通信链路不稳定,或者,可能是目标限流服务器没有接收到限流识别请求等等。
然而,若不约束目标限流服务器响应限流识别请求的响应时长,会致使消息队列设备难以及时接收租户后续发送的访问请求,拖累消息队列设备的消息处理性能。于是,进一步可选的,消息队列设备在当前时间分片结束后向目标限流服务器发送限流识别请求之后,消息队列设备若在预设时长内未接收目标限流服务器返回的限流识别结果,则在当前时间分片的下一个时间分片内接收第一租户发送的访问请求。当然,消息队列设备若在预设时长内接收目标限流服务器返回的限流识别结果,则基于限流识别结果确认是否在当前时间分片的下一个时间分片内接收第一租户发送的访问请求。
其中,预设时长根据实际应用需求灵活设置。可选的,预设时长小于时间分片的一半。例如,时间分片为100毫秒,预设时长为40毫秒。
在本实施例中,对目标限流服务器向消息队列设备返回的限流识别结果的响应时长进行限制。若目标限流服务器在较长时间内未向消息队列设备返回限流识别结果,则消息队列设备会忽略当前时间分片对应的本次限流识别结果,并继续在当前时间分片的下一个时间分片内接收第一租户发送的访问请求。如此,尽管忽略部分时间分片对应的限流识别结果,但是,并不会大规模降级所有限流服务,只会影响部分时间分片的限流服务,极大地降低系统影响,提高了消息队列设备的容错能力、整体限流服务的可用性和弹性能力。
在本实施例中,消息队列设备在每个时间窗口的每个时间分片内,累计第一租户发起的访问请求的数量,以及将在时间分片内由第一租户发起的访问请求的数量上报至限流服务器进行限流识别。而并不是每接收到第一租户发送的访问请求,消息队列设备便向限流服务器上报第一租户的访问请求的数量以由限流服务器进行限流识别,将时间复杂度由O(N)降低到了O(1),降低了限流服务器的压力,实现了高性能高可用可扩展的消息队列限流服务。
在本实施例中,消息队列设备在当前时间窗口的一个时间分片结束后,请求限流服务器集群中的目标限流服务器针对当前时间窗口进行一次限流识别。可以理解的是,不同时间分片,消息队列设备所请求的目标限流服务器可能相同,也可能不同。在同一时间窗口内,消息队列设备请求限流服务器集群中一个或多个限流服务器进行一次或多次限流识别。
在本实施例中,目标限流服务器发送的限流识别请求至少包括当前时间分片内接收到的访问请求的数量,则目标限流服务器在接收限流识别请求后,根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果。
具体而言,目标限流服务器在确定当前时间窗口的限流识别结果时,将当前时间分片内接收到的访问请求的数量以及在当前时间窗口内且在当前时间分片之前已接收到的访问请求的数量进行累加,得到在当前时间窗口内已接收到的访问请求的最新数量;根据最新数量与访问流量规格的匹配结果确定当前时间窗口的限流识别结果。其中,根据最新数量与访问流量规格的匹配结果确定当前时间窗口的限流识别结果具体可以是:若最新数量与访问流量规格匹配,则确定当前时间窗口的限流识别结果指示限流;若最新数量与访问流量规格不匹配,则确定当前时间窗口的限流识别结果指示允许访问。
在本实施例中,目标限流服务器可以请求限流服务器集群中其他限流服务器发送第一租户的访问流量规格;目标限流服务器也可以请求消息队列设备查询数据库获取第一租户的访问流量规格并返回;目标限流服务器也可以在确定当前时间窗口的限流识别结果之前,根据限流识别请求中的第一租户的租户标识,查询数据库,以获取第一租户的访问流量规格,数据库预先保存有多个租户的租户标识及其访问流量规格。对此,本申请实施例不做限制。
本申请实施例提供的技术方案,采用滑动窗口机制,任一租户在每个时间窗口内向消息队列设备发送的访问请求的数量不能超过该租户对应的访问流量规格。同时,针对每个时间窗口,在相对于时间窗口更为细粒度的时间分片内,消息队列设备在接收到任一租户在当前时间分片内发起的访问请求后,与限流服务器集群交互识别是否需要拒绝接收租户在当前时间窗口的剩余时间分片发起的访问请求。由此,实现针对不同租户访问消息队列的访问流量进行不同的规格的限流控制,且以比时间窗口更为细粒度的时间分片进行更加平滑地限流控制,改善了消息队列服务的性能。
为了更好地理解本申请提供的技术方案,下面介绍一种场景实施例进行说明。
在削峰填谷场景中,例如,在秒杀或团购活动中,由于用户请求量较大,导致流量暴增,秒杀应用系统在处理如此大量的访问流量后,下游的通知系统无法承载海量的调用量,甚至会导致系统崩溃等问题而发生漏通知的情况。为解决该问题,在秒杀应用系统和通知系统之间增设消息队列设备和限流服务器集群。
实际应用中,秒杀应用系统可能有很多个,且对应多个不同租户,不同租户购买的访问消息队列设备的访问流量规格不同,例如,有的租户购买的访问流量规格是100TPS,有的租户购买的访问流量规格是1000TPS。针对任一租户,在秒级时间窗口内,消息队列设备与限流服务器集群进行交互,并按照时间分片的粒度对租户进行限流访问控制。
图4为本申请实施例提供的一种消息处理方法的流程图。该方法的执行主体是消息队列设备,参见图4,该方法可以包括以下步骤:
401、在当前时间分片内接收第一租户发送的访问请求,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片。
402、在当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量。
403、接收目标限流服务器返回的限流识别结果。
404、若限流识别结果指示限流,则在当前时间窗口的剩余时间分片内禁止接收第一租户发送的访问请求。
进一步可选的,上述方法还包括:若在预设时长内未接收目标限流服务器返回的限流识别结果,或者限流识别结果指示允许访问,则在当前时间分片的下一个时间分片内接收第一租户发送的访问请求。
进一步可选的,在当前时间分片内接收第一租户发送的访问请求之前,上述方法还包括:将当前时间窗口随机划分成多个时间分片。
进一步可选的,在向限流服务器集群中的目标限流服务器发送限流识别请求之前,上述方法还包括:结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择目标限流服务器。
进一步可选的,结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择目标限流服务器具体包括:结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择候选限流服务器;采用一致性哈希算法对当前时间分片内接收到的访问请求的数量进行哈希运算,得到一致性哈希结果;根据一致性哈希结果从候选限流服务器中选择目标限流服务器。
进一步可选的,结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择候选限流服务器具体包括:确定各个属性信息对应的选择优先级,以及按照选择优先级从高到低的顺序,依次对限流服务器集群执行多次选择操作,以及从最后一次选择操作选择出的限流服务器中选择一个限流服务器作为候选限流服务器;其中,上一次选择操作所选择的限流服务器作为下一次选择操作的待选限流服务器。
进一步可选的,属性信息至少包括:工作状态、负载状态、限流服务器与消息队列设备之间的通信质量以及限流服务器与消息队列设备之间的通信距离中至少一种。
进一步可选的,结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择候选限流服务器,包括:将多个限流服务器的属性信息输入至预先训练好的机器学习模型中,以得到由机器学习模型输出的候选限流服务器。
进一步可选的,在当前时间分片内接收第一租户发送的访问请求之前,上述方法还包括:接收针对第一租户的配置请求,配置请求包括第一租户的租户标识和访问流量规格;将第一租户的租户标识和访问流量规格关联存储至数据库中。
进一步可选的,上述方法还包括:接收针对第一租户的配置更新请求,更新数据库中已保存第一租户的访问流量规格。
关于该方法实施例中执行各步骤的详细实施过程可参见系统实施例中的相关描述,在此不再赘述。
本申请实施例提供的技术方案,采用滑动窗口机制,任一租户在每个时间窗口内向消息队列设备发送的访问请求的数量不能超过该租户对应的访问流量规格。同时,针对每个时间窗口,在相对于时间窗口更为细粒度的时间分片内,消息队列设备在接收到任一租户在当前时间分片内发起的访问请求后,与限流服务器集群交互识别是否需要拒绝接收租户在当前时间窗口的剩余时间分片发起的访问请求。由此,实现针对不同租户访问消息队列的访问流量进行不同的规格的限流控制,且以比时间窗口更为细粒度的时间分片进行更加平滑地限流控制,改善了消息队列服务的性能。
图5为本申请实施例提供的另一种消息处理方法的流程图。该方法的执行主体是限流服务器集群中的目标限流服务器,参见图5,该方法可以包括以下步骤:
501、接收消息队列设备发送的限流识别请求。
其中,限流识别请求至少包括当前时间分片内接收到的访问请求的数量,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片。
502、根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果;
503、向消息队列设备返回限流识别结果。
进一步可选的,根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果具体包括:将当前时间分片内接收到的访问请求的数量以及在当前时间窗口内且在当前时间分片之前已接收到的访问请求的数量进行累加,得到在当前时间窗口内已接收到的访问请求的最新数量;若最新数量与访问流量规格匹配,则确定当前时间窗口的限流识别结果指示限流;若最新数量与访问流量规格不匹配,则确定当前时间窗口的限流识别结果指示允许访问。
进一步可选的,在确定当前时间窗口的限流识别结果之前,上述方法还包括:根据限流识别请求中的第一租户的租户标识,查询数据库,以获取第一租户的访问流量规格,数据库预先保存有多个租户的租户标识及其访问流量规格。
关于该方法实施例中执行各步骤的详细实施过程可参见系统实施例中的相关描述,在此不再赘述。
本申请实施例提供的技术方案,采用滑动窗口机制,任一租户在每个时间窗口内向消息队列设备发送的访问请求的数量不能超过该租户对应的访问流量规格。同时,针对每个时间窗口,在相对于时间窗口更为细粒度的时间分片内,消息队列设备在接收到任一租户在当前时间分片内发起的访问请求后,与限流服务器集群交互识别是否需要拒绝接收租户在当前时间窗口的剩余时间分片发起的访问请求。由此,实现针对不同租户访问消息队列的访问流量进行不同的规格的限流控制,且以比时间窗口更为细粒度的时间分片进行更加平滑地限流控制,改善了消息队列服务的性能。
图6为本申请实施例提供的另一种消息处理方法的流程图。该方法的执行主体是消息队列设备,参见图6,该方法可以包括以下步骤:
601、将当前时间窗口随机划分为多个时间分片,并依次将当前时间窗口中的一个时间分片作为当前时间分片。
602、在当前时间分片内接收第一租户发送的访问请求。
603、在当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求。
604、判断在预设时长内是否接收到目标限流服务器发送的限流识别结果,若是,执行步骤605,若否,执行步骤607。
605、判断限流识别结果是否指示限流,若是,执行步骤606,若否,执行步骤607。
606、在当前时间剩余时间分片窗口的剩余时间分片内禁止接收第一租户发送的访问请求。
其中,剩余时间分片是指当前时间分片之后的时间分片。
607、将当前时间分片的下一个时间分片作为新的当前时间分片,并返回执行步骤602。
关于该方法实施例中执行各步骤的详细实施过程可参见系统实施例中的相关描述,在此不再赘述。
本申请实施例提供的技术方案,采用滑动窗口机制,任一租户在每个时间窗口内向消息队列设备发送的访问请求的数量不能超过该租户对应的访问流量规格。同时,针对每个时间窗口,在相对于时间窗口更为细粒度的时间分片内,消息队列设备在接收到任一租户在当前时间分片内发起的访问请求后,与限流服务器集群交互识别是否需要拒绝接收租户在当前时间窗口的剩余时间分片发起的访问请求。由此,实现针对不同租户访问消息队列的访问流量进行不同的规格的限流控制,且以比时间窗口更为细粒度的时间分片进行更加平滑地限流控制,改善了消息队列服务的性能。
图7为本申请实施例提供的一种消息队列设备的结构示意图。参见图7,该消息队列设备可以包括:接收模块71、发送模块72以及处理模块73。
接收模块71,用于在当前时间分片内接收第一租户发送的访问请求,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片。
发送模块72,用于在当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量。
接收模块71,还用于接收目标限流服务器返回的限流识别结果。
处理模块73,用于若限流识别结果指示限流,则在当前时间窗口的剩余时间分片内禁止接收第一租户发送的访问请求。
进一步可选的,处理模块73,还用于若在预设时长内未接收目标限流服务器返回的限流识别结果,或者限流识别结果指示允许访问,则在当前时间分片的下一个时间分片内接收第一租户发送的访问请求。
进一步可选的,在接收模块71用于在当前时间分片内接收第一租户发送的访问请求之前,处理模块73,还用于将当前时间窗口随机划分成多个时间分片。
进一步可选的,在接收模块71用于向限流服务器集群中的目标限流服务器发送限流识别请求之前,处理模块73,还用于结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择目标限流服务器。
进一步可选的,处理模块73结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择目标限流服务器时,具体用于:结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择候选限流服务器;采用一致性哈希算法对当前时间分片内接收到的访问请求的数量进行哈希运算,得到一致性哈希结果;根据一致性哈希结果从候选限流服务器中选择目标限流服务器。
进一步可选的,处理模块73结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择候选限流服务器时,具体用于:确定各个属性信息对应的选择优先级,以及按照选择优先级从高到低的顺序,依次对限流服务器集群执行多次选择操作,以及从最后一次选择操作选择出的限流服务器中选择一个限流服务器作为候选限流服务器;其中,上一次选择操作所选择的限流服务器作为下一次选择操作的待选限流服务器。
进一步可选的,属性信息至少包括:工作状态、负载状态、限流服务器与消息队列设备之间的通信质量以及限流服务器与消息队列设备之间的通信距离中至少一种。
进一步可选的,进一步可选的,处理模块73结合限流服务器集群中各个限流服务器的属性信息,从限流服务器集群中选择候选限流服务器时,具体用于:将多个限流服务器的属性信息输入至预先训练好的机器学习模型中,以得到由机器学习模型输出的候选限流服务器。
进一步可选的,接收模块71在当前时间分片内接收第一租户发送的访问请求之前,还用于:接收针对第一租户的配置请求,配置请求包括第一租户的租户标识和访问流量规格;将第一租户的租户标识和访问流量规格关联存储至数据库中。
进一步可选的,接收模块71还用于:接收针对第一租户的配置更新请求,更新数据库中已保存第一租户的访问流量规格。
图7所示的消息队列设备其中各个模块执行操作的具体方式可参见系统实施例中的相关描述,在此不再赘述。
图8为本申请实施例提供的一种服务器的结构示意图。参见图8,该服务器可以包括:接收模块81、处理模块82以及发送模块83。
接收模块81,用于接收消息队列设备发送的限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片。
处理模块82,用于根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果;
发送模块83,要不高于向消息队列设备返回限流识别结果。
进一步可选的,处理模块82根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果时,具体用于:将当前时间分片内接收到的访问请求的数量以及在当前时间窗口内且在当前时间分片之前已接收到的访问请求的数量进行累加,得到在当前时间窗口内已接收到的访问请求的最新数量;若最新数量与访问流量规格匹配,则确定当前时间窗口的限流识别结果指示限流;若最新数量与访问流量规格不匹配,则确定当前时间窗口的限流识别结果指示允许访问。
进一步可选的,进一步可选的,在确定当前时间窗口的限流识别结果之前,处理模块82还用于:根据限流识别请求中的第一租户的租户标识,查询数据库,以获取第一租户的访问流量规格,数据库预先保存有多个租户的租户标识及其访问流量规格。
图8所示的服务器其中各个模块执行操作的具体方式可参见系统实施例对限流服务器的相关描述,在此不再赘述。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤401至步骤403的执行主体可以为设备A;又比如,步骤401和402的执行主体可以为设备A,步骤403的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如401、402等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图9为本申实施例提供的一种计算机设备的结构示意图。如图9所示,该计算机设备包括:存储器91和处理器92;
存储器91,用于存储计算机程序,并可被配置为存储其它各种数据以支持在计算平台上的操作。这些数据的示例包括用于在计算平台上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器91可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器92,与存储器91耦合,用于执行存储器91中的计算机程序,以用于:在当前时间分片内接收第一租户发送的访问请求,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片;在当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量;接收目标限流服务器返回的限流识别结果;若限流识别结果指示限流,则在当前时间窗口的剩余时间分片内禁止接收第一租户发送的访问请求。
或者,处理器92,与存储器91耦合,用于执行存储器91中的计算机程序,以用于:接收消息队列设备发送的限流识别请求,限流识别请求至少包括当前时间分片内接收到的访问请求的数量,当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片;根据当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果;向消息队列设备返回限流识别结果。
关于处理器执行各动作的详细实施过程可参见前述方法实施例或设备实施例中的相关描述,在此不再赘述。
进一步,如图9所示,该计算机设备还包括:通信组件93、显示器94、电源组件95、音频组件96等其它组件。图9中仅示意性给出部分组件,并不意味着计算机设备只包括图9所示组件。另外,图9中虚线框内的组件为可选组件,而非必选组件,具体可视计算机设备的产品形态而定。本实施例的计算机设备可以实现为台式电脑、笔记本电脑、智能手机或IOT设备等终端设备,也可以是常规服务器、云服务器或服务器阵列等服务端设备。若本实施例的计算机设备实现为台式电脑、笔记本电脑、智能手机等终端设备,可以包含图9中虚线框内的组件;若本实施例的计算机设备实现为常规服务器、云服务器或服务器阵列等服务端设备,则可以不包含图9中虚线框内的组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由计算机设备执行的各步骤。
相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器能够实现上述方法实施例中可由计算机设备执行的各步骤。
上述通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
上述电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种消息处理系统,其特征在于,包括:消息队列设备和包括多个限流服务器的限流服务器集群;
所述消息队列设备,用于在当前时间分片内接收第一租户发送的访问请求,所述当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片,所述当前时间窗口内各个时间分片的时长相同或不同;在所述当前时间分片结束的情况下,向所述限流服务器集群中的目标限流服务器发送限流识别请求,所述限流识别请求至少包括所述当前时间分片内接收到的访问请求的数量;以及在所述目标限流服务器返回限流识别结果指示限流的情况下,在所述当前时间窗口的剩余时间分片内禁止接收所述第一租户发送的访问请求;
所述目标限流服务器,用于响应所述限流识别请求,根据所述当前时间分片内接收到的访问请求的数量以及所述第一租户对应的访问流量规格,确定所述当前时间窗口的限流识别结果,并向所述消息队列设备返回所述限流识别结果,所述第一租户对应的访问流量规格表征所述第一租户在所述当前时间窗口内允许访问所述消息队列设备的访问请求的请求数量。
2.一种消息处理方法,其特征在于,应用于消息队列设备,所述方法包括:
在当前时间分片内接收第一租户发送的访问请求,所述当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片,所述当前时间窗口内各个时间分片的时长相同或不同;
在所述当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求,所述限流识别请求至少包括所述当前时间分片内接收到的访问请求的数量;
接收所述目标限流服务器返回的限流识别结果,所述限流识别结果是根据所述当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格确定,所述第一租户对应的访问流量规格表征所述第一租户在所述当前时间窗口内允许访问所述消息队列设备的访问请求的请求数量;
若所述限流识别结果指示限流,则在所述当前时间窗口的剩余时间分片内禁止接收所述第一租户发送的访问请求。
3.根据权利要求2所述的方法,其特征在于,还包括:
若在预设时长内未接收所述目标限流服务器返回的限流识别结果,或者所述限流识别结果指示允许访问,则在所述当前时间分片的下一个时间分片内接收所述第一租户发送的访问请求。
4.根据权利要求2所述的方法,其特征在于,在当前时间分片内接收第一租户发送的访问请求之前,还包括:
将所述当前时间窗口随机划分成多个时间分片。
5.根据权利要求2所述的方法,其特征在于,在向限流服务器集群中的目标限流服务器发送限流识别请求之前,还包括:
结合所述限流服务器集群中各个限流服务器的属性信息,从所述限流服务器集群中选择目标限流服务器。
6.根据权利要求5所述的方法,其特征在于,结合所述限流服务器集群中各个限流服务器的属性信息,从所述限流服务器集群中选择目标限流服务器包括:
结合所述限流服务器集群中各个限流服务器的属性信息,从所述限流服务器集群中选择候选限流服务器;
采用一致性哈希算法对所述当前时间分片内接收到的访问请求的数量进行哈希运算,得到一致性哈希结果;
根据所述一致性哈希结果从所述候选限流服务器中选择所述目标限流服务器。
7.根据权利要求6所述的方法,其特征在于,结合所述限流服务器集群中各个限流服务器的属性信息,从所述限流服务器集群中选择候选限流服务器,包括:
确定各个属性信息对应的选择优先级,以及按照选择优先级从高到低的顺序,依次对所述限流服务器集群执行多次选择操作,以及从最后一次选择操作选择出的限流服务器中选择一个限流服务器作为所述候选限流服务器;
其中,上一次选择操作所选择的限流服务器作为下一次选择操作的待选限流服务器。
8.根据权利要求7所述的方法,其特征在于,所述属性信息至少包括:工作状态、负载状态、限流服务器与消息队列设备之间的通信质量以及限流服务器与消息队列设备之间的通信距离中至少一种。
9.一种消息处理方法,其特征在于,应用于限流服务器集群中的目标限流服务器,所述方法包括:
接收消息队列设备发送的限流识别请求,所述限流识别请求至少包括当前时间分片内接收到的访问请求的数量,所述当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片,所述当前时间窗口内各个时间分片的时长相同或不同;
根据所述当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果,所述第一租户对应的访问流量规格表征所述第一租户在所述当前时间窗口内允许访问所述消息队列设备的访问请求的请求数量;
向所述消息队列设备返回所述限流识别结果。
10.根据权利要求9所述的方法,其特征在于,根据所述当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定所述当前时间窗口的限流识别结果,包括:
将所述当前时间分片内接收到的访问请求的数量以及在所述当前时间窗口内且在所述当前时间分片之前已接收到的访问请求的数量进行累加,得到在所述当前时间窗口内已接收到的访问请求的最新数量;
若所述最新数量与所述访问流量规格匹配,则确定所述当前时间窗口的限流识别结果指示限流;
若所述最新数量与所述访问流量规格不匹配,则确定所述当前时间窗口的限流识别结果指示允许访问。
11.一种消息队列设备,其特征在于,包括:
接收模块,用于在当前时间分片内接收第一租户发送的访问请求,所述当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片,所述当前时间窗口内各个时间分片的时长相同或不同;
发送模块,用于在所述当前时间分片结束的情况下,向限流服务器集群中的目标限流服务器发送限流识别请求,所述限流识别请求至少包括所述当前时间分片内接收到的访问请求的数量;
接收模块,还用于接收所述目标限流服务器返回的限流识别结果,所述限流识别结果是根据所述当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格确定,所述第一租户对应的访问流量规格表征所述第一租户在所述当前时间窗口内允许访问所述消息队列设备的访问请求的请求数量;
处理模块,用于若所述限流识别结果指示限流,则在所述当前时间窗口的剩余时间分片内禁止接收所述第一租户发送的访问请求。
12.一种服务器,其特征在于,包括:
接收模块,用于接收消息队列设备发送的限流识别请求,所述限流识别请求至少包括当前时间分片内接收到的访问请求的数量,所述当前时间分片是当前时间窗口包含的多个时间分片中的任一时间分片,所述当前时间窗口内各个时间分片的时长相同或不同;
处理模块,用于根据所述当前时间分片内接收到的访问请求的数量以及第一租户对应的访问流量规格,确定当前时间窗口的限流识别结果,所述第一租户对应的访问流量规格表征所述第一租户在所述当前时间窗口内允许访问所述消息队列设备的访问请求的请求数量;
发送模块,用于向所述消息队列设备返回所述限流识别结果。
13.一种计算机设备,其特征在于,包括:存储器和处理器;所述存储器,用于存储计算机程序;所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行权利要求2-10任一项所述方法中的步骤。
14.一种存储有计算机程序的计算机存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器能够实现权利要求2-10任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210501382.0A CN115086234B (zh) | 2022-05-09 | 2022-05-09 | 消息处理方法及系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210501382.0A CN115086234B (zh) | 2022-05-09 | 2022-05-09 | 消息处理方法及系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115086234A CN115086234A (zh) | 2022-09-20 |
CN115086234B true CN115086234B (zh) | 2024-04-26 |
Family
ID=83248033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210501382.0A Active CN115086234B (zh) | 2022-05-09 | 2022-05-09 | 消息处理方法及系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115086234B (zh) |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7404003B1 (en) * | 1999-09-30 | 2008-07-22 | Data Expedition, Inc. | Method and apparatus for client side state management |
CN106375472A (zh) * | 2016-09-29 | 2017-02-01 | 北京三快在线科技有限公司 | 访问请求处理方法、装置和服务器 |
CN107920095A (zh) * | 2016-10-08 | 2018-04-17 | 阿里巴巴集团控股有限公司 | 一种在p2p环境下发送方以及接收方流量限制的方法、装置 |
CN110166371A (zh) * | 2019-05-16 | 2019-08-23 | 北京达佳互联信息技术有限公司 | 流量控制方法、装置、电子设备及存储介质 |
WO2019178761A1 (zh) * | 2018-03-21 | 2019-09-26 | 华为技术有限公司 | 应用编程接口api网关集群的控制方法和api网关集群 |
WO2020038273A1 (zh) * | 2018-08-20 | 2020-02-27 | 中兴通讯股份有限公司 | 一种多租户访问控制方法及装置、计算机可读存储介质 |
CN111431813A (zh) * | 2020-06-09 | 2020-07-17 | 北京信安世纪科技股份有限公司 | 访问限流方法、设备及存储介质 |
CN112367269A (zh) * | 2020-10-30 | 2021-02-12 | 深圳壹账通智能科技有限公司 | 基于双指针的滑动窗口限流方法、装置、设备及存储介质 |
CN112685169A (zh) * | 2019-10-17 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 一种负载控制方法、装置、服务器及可读存储介质 |
CN112804160A (zh) * | 2021-01-26 | 2021-05-14 | 北京嘀嘀无限科技发展有限公司 | 基于应用程序的限流方法、装置、设备、介质及产品 |
CN113301075A (zh) * | 2020-05-18 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 流量控制方法、分布式系统、设备及存储介质 |
CN113645310A (zh) * | 2021-08-20 | 2021-11-12 | 北京高途云集教育科技有限公司 | 一种数据限流方法、装置、电子设备及可读存储介质 |
CN113726683A (zh) * | 2021-09-09 | 2021-11-30 | 海尔数字科技(青岛)有限公司 | 访问限流方法、装置、设备、存储介质及计算机程序产品 |
WO2021237826A1 (zh) * | 2020-05-28 | 2021-12-02 | 网宿科技股份有限公司 | 一种流量调度方法、系统及装置 |
CN113949678A (zh) * | 2021-09-15 | 2022-01-18 | 北京三快在线科技有限公司 | 流量控制方法、装置、电子设备及计算机可读存储介质 |
CN113986497A (zh) * | 2021-10-27 | 2022-01-28 | 北京百度网讯科技有限公司 | 基于多租户技术的队列调度方法、装置及系统 |
CN114070847A (zh) * | 2020-07-27 | 2022-02-18 | 腾讯科技(深圳)有限公司 | 服务器的限流方法、装置、设备及存储介质 |
CN114189478A (zh) * | 2021-12-01 | 2022-03-15 | 浪潮云信息技术股份公司 | 一种基于滑动窗口算法的分布式限流实现方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9258249B2 (en) * | 2012-02-13 | 2016-02-09 | Microsoft Technology Licensing, Llc | Resource access throttling |
US9584588B2 (en) * | 2013-08-21 | 2017-02-28 | Sap Se | Multi-stage feedback controller for prioritizing tenants for multi-tenant applications |
WO2015120460A1 (en) * | 2014-02-10 | 2015-08-13 | Bigcommerce Pty. Ltd. | Systems and methods for api rate limiting and distribution |
US10776373B2 (en) * | 2014-10-28 | 2020-09-15 | Salesforce.Com, Inc. | Facilitating elastic allocation of organization-specific queue resources in an on-demand services environment |
CN106331150B (zh) * | 2016-09-18 | 2018-05-18 | 北京百度网讯科技有限公司 | 用于调度云服务器的方法和装置 |
CN112019475B (zh) * | 2019-05-28 | 2021-12-21 | 阿里巴巴集团控股有限公司 | 无服务器架构下的资源访问方法、设备、系统及存储介质 |
-
2022
- 2022-05-09 CN CN202210501382.0A patent/CN115086234B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7404003B1 (en) * | 1999-09-30 | 2008-07-22 | Data Expedition, Inc. | Method and apparatus for client side state management |
CN106375472A (zh) * | 2016-09-29 | 2017-02-01 | 北京三快在线科技有限公司 | 访问请求处理方法、装置和服务器 |
CN107920095A (zh) * | 2016-10-08 | 2018-04-17 | 阿里巴巴集团控股有限公司 | 一种在p2p环境下发送方以及接收方流量限制的方法、装置 |
WO2019178761A1 (zh) * | 2018-03-21 | 2019-09-26 | 华为技术有限公司 | 应用编程接口api网关集群的控制方法和api网关集群 |
WO2020038273A1 (zh) * | 2018-08-20 | 2020-02-27 | 中兴通讯股份有限公司 | 一种多租户访问控制方法及装置、计算机可读存储介质 |
CN110166371A (zh) * | 2019-05-16 | 2019-08-23 | 北京达佳互联信息技术有限公司 | 流量控制方法、装置、电子设备及存储介质 |
CN112685169A (zh) * | 2019-10-17 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 一种负载控制方法、装置、服务器及可读存储介质 |
CN113301075A (zh) * | 2020-05-18 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 流量控制方法、分布式系统、设备及存储介质 |
WO2021237826A1 (zh) * | 2020-05-28 | 2021-12-02 | 网宿科技股份有限公司 | 一种流量调度方法、系统及装置 |
CN111431813A (zh) * | 2020-06-09 | 2020-07-17 | 北京信安世纪科技股份有限公司 | 访问限流方法、设备及存储介质 |
CN114070847A (zh) * | 2020-07-27 | 2022-02-18 | 腾讯科技(深圳)有限公司 | 服务器的限流方法、装置、设备及存储介质 |
CN112367269A (zh) * | 2020-10-30 | 2021-02-12 | 深圳壹账通智能科技有限公司 | 基于双指针的滑动窗口限流方法、装置、设备及存储介质 |
CN112804160A (zh) * | 2021-01-26 | 2021-05-14 | 北京嘀嘀无限科技发展有限公司 | 基于应用程序的限流方法、装置、设备、介质及产品 |
CN113645310A (zh) * | 2021-08-20 | 2021-11-12 | 北京高途云集教育科技有限公司 | 一种数据限流方法、装置、电子设备及可读存储介质 |
CN113726683A (zh) * | 2021-09-09 | 2021-11-30 | 海尔数字科技(青岛)有限公司 | 访问限流方法、装置、设备、存储介质及计算机程序产品 |
CN113949678A (zh) * | 2021-09-15 | 2022-01-18 | 北京三快在线科技有限公司 | 流量控制方法、装置、电子设备及计算机可读存储介质 |
CN113986497A (zh) * | 2021-10-27 | 2022-01-28 | 北京百度网讯科技有限公司 | 基于多租户技术的队列调度方法、装置及系统 |
CN114189478A (zh) * | 2021-12-01 | 2022-03-15 | 浪潮云信息技术股份公司 | 一种基于滑动窗口算法的分布式限流实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115086234A (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017186092A1 (zh) | 网络切片的选择方法及装置 | |
CN112069422A (zh) | 信息展示方法、服务器、终端和介质 | |
US9215569B2 (en) | Broadcast media content to subscriber group | |
US20140082065A1 (en) | System and method for enabling control of mobile device functional components | |
CN113296903A (zh) | 边缘云系统、边缘管控方法、管控节点及存储介质 | |
US20190028882A1 (en) | Data enhancements for esim profile operation callbacks | |
CN111431813B (zh) | 访问限流方法、设备及存储介质 | |
CN113301075B (zh) | 流量控制方法、分布式系统、设备及存储介质 | |
CN109412821B (zh) | 消息处理方法和装置以及电子设备 | |
US10642662B2 (en) | Method for application action synchronization, terminal device, and storage medium | |
CN114189885B (zh) | 网元信息处理方法、设备及存储介质 | |
KR20150053932A (ko) | 통신 네트워크 내의 모바일 디바이스로의 애플리케이션 데이터의 전송 제어를 위한 장치 및 방법 | |
CN110908774A (zh) | 一种资源调度方法、设备、系统及存储介质 | |
EP4329358A1 (en) | Network slice self-optimization method, base station, and storage medium | |
EP3285217A1 (en) | A method for predicting the engagement level of a user of a user device, a related engagement prediction device and user device | |
CN115086234B (zh) | 消息处理方法及系统、设备及存储介质 | |
CN112395103B (zh) | 延迟消息发送方法、装置及存储介质 | |
CN112954669A (zh) | 共享终端业务控制方法、装置、网元及存储介质 | |
CN114385647B (zh) | 联盟链出块方法、装置、电子设备及介质 | |
US10638539B2 (en) | Facilitating resource frequency management for emergency response | |
CN113301076B (zh) | 流量控制方法、分布式系统、设备及存储介质 | |
US11310860B2 (en) | Dynamic quality of service (QOS) based channel in wireless network | |
CN107548080B (zh) | 移动网络数据传输方法、系统及电子设备 | |
CN110881064A (zh) | 一种域名配置方法及设备 | |
CN112953993A (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 |