CN112104731B - 请求处理方法、装置、电子设备和存储介质 - Google Patents
请求处理方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN112104731B CN112104731B CN202010956405.8A CN202010956405A CN112104731B CN 112104731 B CN112104731 B CN 112104731B CN 202010956405 A CN202010956405 A CN 202010956405A CN 112104731 B CN112104731 B CN 112104731B
- Authority
- CN
- China
- Prior art keywords
- request
- batch
- message
- effective
- requests
- 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/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/21—Flow control; Congestion control using leaky-bucket
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种请求处理方法、装置、电子设备和存储介质,所述方法通过确定客户端发送的待处理请求中的批量请求,将批量请求与非批量请求做区分处理;在此基础上,针对确定出来的批量请求,在预设的消息队列中生成批量请求对应的有效消息,这些有效信息使得消费线程能够正确的还原批量请求,并正确的处理消息队列中的有效消息。因此,服务器在接收到批量请求时,通过对批量请求的前述处理,无需立即对批量请求进行处理,避免了服务器处理批量请求而导致非批量请求处理较慢的问题,以及,避免了服务器因同一时刻处理批量请求的数量过多而崩溃,提高了数据交互过程的稳定性。
Description
技术领域
本发明涉及通信技术领域,特别是涉及请求处理方法、装置、电子设备和存储介质。
背景技术
在数据交互的过程中,服务器会根据客户端发送的请求调用相应的接口,一般而言,这些请求包括批量请求和非批量请求。
在现有技术中,服务器在接收到请求后,按照接收到请求的时间顺序,调用与请求对应的接口,并返回处理结果至客户端,实现对请求的处理。然而,服务器接收到大量的批量请求的情况下,容易造成服务器因请求数量的过多而崩溃,导致数据交互过程的稳定性较差。
发明内容
本发明实施例的目的在于提供一种请求处理方法、装置、电子设备和存储介质,解决服务器在接收到大量请求的情况下,数据交互过程的稳定性较差的技术问题。具体技术方案如下:
在本发明实施的第一方面,首先提供了一种请求处理方法,包括以下步骤:
确定来自于客户端的待处理请求中的批量请求;
确定所述批量请求对应的有效消息,并将所述有效消息加入预设的消息队列;
利用预设的消费线程处理所述消息队列中的所述有效消息;
其中,所述有效消息包括所述批量请求的请求标识、请求取值和请求名称。
在本发明实施的第二方面,还提供了一种请求处理装置,所述请求处理装置包括处理模块、消息队列和消费线程;
所述消息队列,用于存储批量请求对应的有效消息;
所述消费线程,用于处理所述消息队列中的所述有效消息;
处理模块,用于确定来自于客户端的待处理请求中的批量请求;确定所述批量请求对应的有效消息,并将所述有效消息加入预设的消息队列;利用预设的消费线程处理所述消息队列中的所述有效消息;其中,所述有效消息包括所述批量请求的请求标识、请求取值和请求名称。
在本发明实施的第三方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的请求处理方法。
在本发明实施的第四方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的请求处理方法。
本发明实施例中通过确定客户端发送的待处理请求中的批量请求,将批量请求与非批量请求做区分处理;在此基础上,针对确定出来的批量请求,在预设的消息队列中生成批量请求对应的有效消息,这些有效信息使得消费线程能够正确的还原批量请求,并正确的处理消息队列中的有效消息。因此,服务器在接收到批量请求时,通过对批量请求的前述处理,无需立即对批量请求进行处理,避免了服务器处理批量请求而导致非批量请求处理较慢的问题,以及,避免了服务器因同一时刻处理批量请求的数量过多而崩溃,提高了数据交互过程的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中请求处理方法的应用场景示意图;
图2为本发明实施例中请求处理方法的流程图;
图3为本发明实施例中服务器对请求的处理流程示意图;
图4为本发明实施例中一种请求处理装置的结构示意图;
图5为本发明实施例中一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
请参阅图1,图1为本发明实施例中请求处理方法的应用场景示意图,本发明实施例提供的请求处理方法应用在服务器。
在一可能的应用场景中,在服务器与客户端进行数据交互的过程中,客户端向服务器发送请求,服务器直接调用与该请求对应的接口,执行请求对应的操作,并发送处理结果至客户端。
在另一可能的应用场景中,服务器与客户端进行数据交互的过程中,客户端向服务器发送请求,服务器响应客户端发送的请求,向客户端发送提示消息,以提示用户已接收到请求,或已开始处理请求,并调用与该请求对应的接口,并执行请求对应的操作后,发送处理结果至客户端。
上述应用场景中的客户端可以为1个,也可以为多个。
一种可能存在的情况为,客户端在于服务器的一次交互过程中,客户端可以向服务器发送批量请求,也可以向服务器发送非批量请求。
本发明实施例中,批量请求是指多个相同类型的请求。通常情况下,批量请求还可以具备数目阈值,大于或等于该数目阈值的同类型请求,一般可以视作批量请求。其中,数目阈值可以自定义预设,例如,数目阈值可以为2或2以上任意整数。后续具体说明本发明实施例中服务器如何确定批量请求,这里暂不展开说明。
与之相对的,除批量请求之外的其他请求,即为非批量请求。非批量请求可以为一个或多个请求。
需要说明的是,本发明实施例对于这些请求的类型无特别限制。示例性的,本发明实施例所涉及到的请求(包括批量请求、非批量请求)的类型,可以包括但不限于:上传请求、下载请求、编辑请求(包括但不限于:编辑、删除、位置调整等,对此无特别限制)、查询请求、搜索请求、支付请求或交易请求中的一种或多种。
客户端向服务器发送的请求包括但不限于批量请求和\或非批量请求。在现有的数据交互过程中,服务器并不会识别批量请求和非批量请求,这样,服务器在接收到批量请求的情况下,由于服务器需要多次执行同一动作以处理批量请求,导致对于批量请求的响应时间较长,容易造成服务器因请求数量的激增而崩溃,导致数据交互过程的稳定性较差。
针对前述问题,本发明实施例基于如下发明构思:在处理客户端发送的请求时,识别客户端发送的批量请求,对批量请求进行单独处理,避免服务器因同一时刻处理批量请求的数量过多而崩溃;进一步的,还可以限制一定的速率处理批量请求,实现对批量请求的流量控制,提高数据交互过程的稳定性。
本发明实施例提供了一种请求处理方法,应用于服务器,请参阅图2,图2为本发明实施例中请求处理方法的流程图。本实施例提供的请求处理方法包括:
S101,服务器确定来自于客户端的待处理请求中的批量请求。
需要说明的是,相比于非批量请求,批量请求具有如下特征:
第一,批量请求的IP地址相同,由于一个客户端能向服务器发送多个请求,因此批量请求是由同一个IP地址的客户端向服务器发送的请求。
第二,批量请求是服务器在短时间内接收到的流量较高的请求,导致服务器在接收到批量请求后的每秒查询率(Queries-Per-Second,QPS)较高,其中每秒查询率能反映服务器在一秒的时间内处理的请求的数量。
一般而言,非批量请求可以是服务器接收到的一个请求,非批量请求可以是服务器需要即时处理的请求,也可以是非即时处理请求,例如账号登陆请求和视频上传请求。
批量请求是服务器接收到的需要执行同一动作的属于同一类型的多个请求,批量请求在通常情况下对时效性要求较低,可以是非即时处理请求,例如批量用户认证请求和批量视频审核请求。
由此,可以基于请求的每秒查询率(Queries-Per-Second,QPS),区分批量请求和非批量请求。
第三,批量请求对响应时间、处理过程不敏感。由于批量请求为非即时请求,因此客户端对批量请求的处理过程不敏感,只要保证服务器已开始处理批量请求或批量请求处理完成,即可确定该批量请求处理完成。
对于非批量请求而言,由于非批量请求包括有即时请求,客户端在接收到服务器反馈的处理结果时,确定该非批量请求处理完成。
进一步的,具体说明服务器如何确定来自于客户端的待处理请求中的批量请求。
一种可选的方案为,服务器在接收到客户端发送的待处理请求后,将待处理请求输入至预设的键值存储器中,该键值存储器可以是远程字典服务(Remote DictionaryServer,Redis),也可以是其他键值存储器。
其中,Redis是一个开源数据库,能够存储五种不同类型值的键映射。Redis存储有数据表,数据表能反映请求的查询率和IP地址之间的对应关系。
需要说明的是,可以为Redis设置过期时长(或者,也可以称为更新时长,对名称无特别限制),当达到预设的过期时长,则Redis中存储的数据失效,如此,在任意一个过期时长范围内,Redis中存储的数据都是该过期时长内收到的数据。示例性的,可以将Redis的过期时长设置为一秒,也就是说,Redis数据表中统计的IP地址和查询率,均是Redis在一秒的时间内接收到的请求的IP地址和查询率。这样,Redis数据表中统计的查询率均为一秒之内各个请求的查询率,也就是请求的每秒查询率,本实施例及后续实施例中的查询率,均可以指代每秒查询率。
例如,将一个请求首次输入至Redis中,Redis获取该请求的IP地址,并设置该IP地址对应的查询率为1;再将同一IP地址的请求输入至Redis中,则该IP地址对应的查询率为2。
再例如,将5个IP地址为192.168.1.2的请求和3个IP地址为192.168.1.1的请求输入至Redis,则Redis存储的数据表中,IP地址192.168.1.2对应的查询率为5,IP地址192.168.1.1对应的查询率为3。
将所有待处理请求输入至Redis,可以从数据表中得到所有请求的IP地址和服务器处理不同请求的查询率,将高于查询阈值的查询率对应的IP地址确定为目标IP地址,并将IP地址为目标IP地址的请求确定为批量请求,其中,查询阈值可以预先设置。
另一种可选的方案为,直接读取所有请求的IP地址,并将IP地址相同的请求确定为同IP地址请求,读取服务器分别处理各同IP地址请求的查询率,将查询率高于预设查询阈值的同IP地址请求确定为批量请求。
本实施例根据请求的IP地址和QPS,将同一IP地址,且导致服务器QPS高于预设查询阈值的多个请求确定为批量请求。
S102,确定所述批量请求对应的有效消息,并将所述有效消息加入预设的消息队列。
如上所述,批量请求的一个特征为,批量请求对响应时间、处理过程不敏感。只要保证服务器已开始处理批量请求或批量请求处理完成,即可确定该批量请求处理完成。
基于批量请求的上述特征,服务器在接收到批量请求后,可以先确定批量请求对应的有效消息,并将有效消息加入预设的消息队列,在消息队列中存储有该有效消息的情况下,服务器向客户端发送对应的响应消息,该响应消息可以为“正在处理中”;服务器在对请求处理完成后,向客户端发送处理结果,该处理结果包括但不限于“处理完成”或“处理失败”。客户端收到何种反馈(响应消息或处理结果),取决于服务器的具体处理情况,不再赘述。
进一步的,具体说明如何确定批量请求对应的有效消息,并将有效消息加入预设的消息队列。
在一实施方式中,有效消息的可以为RequestInfo数据,RequestInfo数据是一种常见的具备还原性的数据,当然,有效消息也可以为其他类型的具备还原性的数据,本实施例在此不做具体限制。批量请求包括但不限于有以下参数:请求标识、请求取值和请求名称,其中,批量请求的请求标识可以是该批量请求的统一资源定位标志(URL,UniformResource Locator);请求取值即该请求对应的参数值;请求名称即批量请求的名称。
因此,可以获取批量请求的请求标识、请求取值和请求名称,并将批量请求的请求标识、请求取值和请求名称,这些参数以RequestInfo数据的格式存储,以此确定批量请求对应的有效消息,在消费线程处理RequestInfo数据时,通过读取RequestInfo数据中的请求标识、请求取值和请求名称,还原批量请求。
本发明实施例中,消息队列中所能包含的消息数目可以预设为较大值。示例性的,消息队列中所能承载的消息数目可以大于预设阈值,该阈值可以基于历史数据或经验值预设,使得该消息队列所能承载的消息数据较大,以满足批量请求的处理需求。
本发明实施例中,上述消息队列可以为无界消息队列,无界消息队列的容量为无限大,如此,该消息队列能够有效保障所有的批量请求都能够加入该消息队列,且能够被处理。
示例性的,本发明实施例所提供的消息队列可以具体包括但不限于:ConcurrentLinkedQueue队列。ConcurrentLinkedQueue队列是一个基于链接节点的无界线程安全队列,由于ConcurrentLinkedQueue队列的容量为无限,因此,它在保证有效消息不溢出的同时,还能保证队列中的所有有效消息都被执行。当然,上述消息队列也可以为其他类型的无界队列,例如LinkedBlockingQueue队列。
S103,利用预设的消费线程处理所述消息队列中的所述有效消息。
本实施例中,服务器可以在接收到客户端发送的请求时,创建一个或多个线程池;服务器也可以预先创建一个或多个线程池。上述线程池中包括有至少一个线程。
一种可选的方式为,服务器创建的线程池为消费线程池,那么,消费线程池中的线程为消费线程,其中,消费线程是Kafka中间件中的一种多线程,是一种专门用来处理消息队列中存储的消息的多线程;多线程是指多个能处理同一任务的线程。
其中,服务器创建的消费线程池也可以为Thread线程池,那么消费线程可以为Thread线程。
一种可能的实施方式为,在消息队列中存在有效消息的情况下,线程池中的消费线程自动处理消息队列中的有效消息。此时,无需服务器的额外控制,消费线程池中的消费线程即可自动处理消息队列中的有效消息。
当只存在一个消费线程时,上述消费线程自动处理消息队列中的有效消息的情况可以是,消费线程根据有效消息的排列顺序,依次处理有效消息。
当存在多个消费线程时,上述消费线程自动处理消息队列中的有效消息的情况可以是,多个消费线程设置有优先级,根据消费线程的优先级顺序选择目标消费线程,根据有效消息在消息队列中的排列顺序选择目标有效消息,目标消费线程自动处理对应的目标有效消息。
或者,另一种可能的实施方式为,服务器控制线程池中的消费线程处理有效消息。具体而言,服务器可以启动消费线程,并控制消费线程处理消息队列中的有效消息。
进一步的,服务器可以应用漏桶算法控制消费线程池处理消息队列中的有效消息。其中漏桶算法是一种流量整形算法,控制数据注入到网络的速率来为网络提供一个稳定的流量。具体而言,可以将该消息队列表征为一个漏桶,每次从消息队列中取出的待处理有效消息为从漏桶中漏出的水滴,对有效消息处理的速率为漏桶速率,通过限制消费线程每次处理有效消息的数量,相当于限制漏桶漏水的速率,以此限制服务器处理批量请求的速率,实现对于批量请求的流量控制。
请参阅图3,图3为本发明实施例中服务器对请求的处理流程示意图。如图所示,对于非批量请求,服务器按照非批量请求的顺序依次处理非批量请求,并返回处理结果至客户端。
对于批量请求,服务器基于每一批量请求,确定每一批量请求对应的有效消息,并在将该批量请求对应的有效消息存储至消息队列之后,发送响应消息至客户端,以指示批量请求处理完成,或指示已开始处理批量请求。服务器控制消费线程按照有效消息在消息队列中的排序,对有效消息进行处理,并在一个有效消息处理完成后,服务器发送与该有效消息对应的一个处理结果至客户端。
如上所述,有效消息具备还原性,也就是说,在一定条件下,一个有效消息能被还原为对应的一个批量请求。
例如,在有效消息为RequestInfo数据的情况下,消费线程可以基于SuperSocket命令行协议将RequestInfo数据还原为批量请求。
消费线程处理有效消息的实质为,将有效消息还原为批量请求,以使得服务器响应于该批量请求,调用该批量请求对应的接口,并执行该请求对应的操作。
例如,服务器接收到的批量请求为客户端A发送的用户认证请求,在消费线程还原该批量请求之后,服务器调用认证接口,并通过第一认证接口进行用户认证。
进一步的,具体说明如何控制所述消费线程处理所述有效消息。
可选的,按照预设的处理周期,根据所述消息队列中所有有效消息的排列顺序,确定所述消息队列中的N个有效消息,其中N小于预设限流阈值;控制所述消费线程处理所述N个有效消息。
需要理解的是,上述限流阈值可以是设定的RateLimiter阈值,其中RateLimiter是一个用于限制访问频率的阈值。在另一种情况下,上述限流阈值也可以是其他形式的数值,例如,自定义预设的固定数值。
在消息队列中存在大量有效消息的情况下,为了避免服务器因有效数量的激增而崩溃,可以限制消费线程以一定的速率处理有效消息。即当消息队列中存在大量有效消息的情况下,服务器可以控制消费线程每次只对消息队列中不超过限流阈值的部分有效消息进行处理,在处理完该部分有效消息后,再次从消息队列中取出不超过限流阈值的部分有效消息进行处理,直至处理完消息队列中的所有有效消息。这样,对有效消息的处理过程可以分为多个处理周期,在每个处理周期内,只处理不超过限流阈值的部分有效消息。
可选的,可以根据有效消息对应的客户端,在消息队列中对有效消息进行排序。这样,可以控制消费线程优先处理某个客户端发出的请求。
例如,客户端A发送了200个批量请求,客户端B发送了50个批量请求,客户端C发送了100个批量请求,且客户端B的重要性高于客户端A,客户端A的重要性高于客户端C。在限流阈值为RateLimiter阈值,RateLimiter阈值为300的情况下,在一个处理周期中,控制消费线程只处理客户端A对应的有效消息和客户端B对应的有效消息;而在下一个处理周期,处理客户端C对应的有效消息。
可选的,可以根据消息队列中有效消息的排序,控制消费线程按照有效消息的排序依次处理有效消息。进一步的,可以根据有效消息的类型,在消息队列中对有效消息进行排序。这样,可以控制消费线程先对某些类型的有效消息进行处理,以此,优先处理某个类型的批量请求。
可选的,当存在多个消费线程时,可以预设每个消费线程对应的接口。如此,基于每个消费线程对应的接口和有效消息对应的接口,确定有效消息对应的目标消费线程,并控制目标消费线程处理有效消息,需要理解的是,对于预设接口不同的有效消息,需要控制不同的目标消费线程进行处理。
本实施例中,在处理有效消息时,确定该有效消息对应的接口,进一步确定线程池中所有消费线程对应的接口,并将接口为有效消息对应的接口的消费线程确定为目标消费线程,控制目标消费线程处理有效消息。
例如,该有效消息为认证请求对应的有效消息,则该有效消息对应的接口为认证接口。以及,在有效消息对应的接口为认证接口的情况下,若线程池中存在第一消费线程和第二消费线程,其中,第一消费线程对应的接口为认证接口,第二消费线程对应的接口为注册接口,则控制第一消费线程处理该有效消息。
可选的,当存在多个消费线程时,将处于空闲状态的消费线程确定为目标消费线程;控制所述目标消费线程处理所述有效消息。本发明实施例中,空闲状态是指消费线程未处理有效消息。
将所述消费线程池中处于空闲状态的消费线程确定为目标消费线程;控制所述目标消费线程处理所述待处理有效消息。需要说明的是,消费线程池中包括有至少一个消费线程,将不处于工作状态,未运行的线程确定为目标消费线程。
可选的,可以根据目标消费线程的优先级,控制目标消费线程对待处理有效消息进行处理。
一种方式为,可以将消费线程的优先级分为1-10,根据优先级的大小,确定消费线程的使用顺序。
关于消费线程优先级顺序的设定。一种情况为,可以预先设置各个消费线程的优先级。或者,另一种情况为,可以通过优先级调整函数,动态的调整消费线程的优先级,其中,上述优先级调整函数可以为setPriority函数。
关于根据目标消费线程的优先级,控制目标消费线程对待处理有效消息进行处理。一种可选的方式为,按照优先级从高到底的顺序调用目标消费线程对待处理有效消息进行处理。或者,另一种可选的方式为,按照优先级从低到高的顺序调用目标消费线程对待处理有效消息进行处理。
可选的,可以结合消费线程的优先级状态和工作状态确定目标消费线程。例如,消费线程池中包含有3个处于空闲状态的目标消费线程,分别为第一目标消费线程,第二目标消费线程和第三目标消费线程,且第一目标消费线程的优先级高于第二目标消费线程,第二目标消费线程的优先级高于第三目标消费线程。设定消息队列中,排序第一的有效消息为第一有效消息,排序第二的有效消息为第二有效消息,排序第三的有效消息为第三有效消息,排序第四的有效消息为第四有效消息。
在按照优先级从高到底的顺序调用目标消费线程对待处理有效消息进行处理有效消息的情况下,控制第一目标消费线程处理第一有效消息,控制第二目标消费线程处理第二有效消息,控制第三目标消费线程处理第三有效消息;假设目标消费线程处理有效消息的速率一致,那么,消息队列中的第四有效消息应当由第一目标消费线程处理。
如图4所示,本发明实施例还提供了一种请求处理装置200,包括:处理模块201、消息队列202和消费线程203;
所述消息队列202,用于存储批量请求对应的有效消息;
所述消费线程203,用于处理所述消息队列中的所述有效消息;
处理模块201,用于确定来自于客户端的待处理请求中的批量请求;确定所述批量请求对应的有效消息,并将所述有效消息加入预设的消息队列;利用预设的消费线程处理所述消息队列中的所述有效消息;其中,所述有效消息包括所述批量请求的请求标识、请求取值和请求名称。
可选的,所述请求处理装置200还包括发送模块;
所述发送模块,用于向所述客户端发送响应消息。
可选的,所述处理模块201包括控制单元;
所述控制单元,用于控制所述消费线程处理所述有效消息。
可选的,所述控制单元具体用于:
按照预设的处理周期,根据所述消息队列中所有有效消息的排列顺序,确定所述消息队列中的N个有效消息,其中N小于预设限流阈值;
控制所述消费线程处理所述N个有效消息。
可选的,所述控制单元,还具体用于:
当存在多个消费线程时,确定每个消费线程对应的接口;
基于所述每个消费线程对应的接口和所述有效消息对应的接口,确定所述有效消息对应的目标消费线程;
控制所述目标消费线程处理所述有效消息。
可选的,所述控制单元,还具体用于:
当存在多个消费线程时,将处于空闲状态的消费线程确定为目标消费线程;
控制所述目标消费线程处理所述有效消息。
本发明实施例还提供了一种电子设备,如图5所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信。
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,实现如下步骤:
确定来自于客户端的待处理请求中的批量请求;
确定所述批量请求对应的有效消息,并将所述有效消息加入预设的消息队列;
利用预设的消费线程处理所述消息队列中的所述有效消息。
可选的,所述计算机程序被所述处理器301执行时还用于:
向所述客户端发送响应消息。
可选的,所述计算机程序被所述处理器301执行时还用于:
控制所述消费线程处理所述有效消息。
可选的,所述计算机程序被所述处理器301执行时还用于:
按照预设的处理周期,根据所述消息队列中所有有效消息的排列顺序,确定所述消息队列中的N个有效消息;
控制所述消费线程处理所述N个有效消息。
可选的,所述计算机程序被所述处理器301执行时还用于:
当存在多个消费线程时,确定每个消费线程对应的接口;
基于所述每个消费线程对应的接口和所述有效消息对应的接口,确定所述有效消息对应的目标消费线程;
控制所述目标消费线程处理所述有效消息。
可选的,所述计算机程序被所述处理器301执行时还用于:
当存在多个消费线程时,将处于空闲状态的消费线程确定为目标消费线程;
控制所述目标消费线程处理所述有效消息。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一实施例中的请求处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一实施例中的请求处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种请求处理方法,其特征在于,包括以下步骤:
确定来自于客户端的待处理请求中的批量请求;所述批量请求的IP地址相同,且所述批量请求的IP地址对应的查询率高于预设的查询阈值;
确定所述批量请求对应的有效消息,并将所述有效消息加入预设的消息队列;
利用预设的消费线程处理所述消息队列中的所述有效消息;
其中,所述有效消息包括所述批量请求的请求标识、请求取值和请求名称,所述有效信息使得消费线程能够正确的还原所述批量请求。
2.根据权利要求1所述的请求处理方法,其特征在于,所述消息队列为无界消息队列。
3.根据权利要求1或2中任一项所述的请求处理方法,其特征在于,所述利用预设的消费线程处理所述消息队列中的所述有效消息,包括:
控制所述消费线程处理所述有效消息。
4.根据权利要求3所述的请求处理方法,其特征在于,所述控制所述消费线程处理所述有效消息,包括:
按照预设的处理周期,根据所述消息队列中所有有效消息的排列顺序,确定所述消息队列中的N个有效消息,其中N小于预设限流阈值;
控制所述消费线程处理所述N个有效消息。
5.根据权利要求3所述的请求处理方法,其特征在于,所述控制所述消费线程处理所述有效消息,包括:
当存在多个消费线程时,确定每个消费线程对应的接口;
基于所述每个消费线程对应的接口和所述有效消息对应的接口,确定所述有效消息对应的目标消费线程;
控制所述目标消费线程处理所述有效消息。
6.根据权利要求3所述的请求处理方法,其特征在于,所述控制所述消费线程处理所述有效消息,包括:
当存在多个消费线程时,将处于空闲状态的消费线程确定为目标消费线程;
控制所述目标消费线程处理所述有效消息。
7.根据权利要求1所述的请求处理方法,其特征在于,所述将所述有效消息加入预设的消息队列之后,所述方法包括:
向所述客户端发送响应消息;其中,所述响应消息用于指示所述批量请求处理完成,或所述响应消息用于指示已开始处理所述批量请求。
8.一种请求处理装置,其特征在于,所述请求处理装置包括:处理模块、消息队列和消费线程;
所述消息队列,用于存储批量请求对应的有效消息;
所述消费线程,用于处理所述消息队列中的所述有效消息;
处理模块,用于确定来自于客户端的待处理请求中的批量请求;所述批量请求的IP地址相同,且所述批量请求的IP地址对应的查询率高于预设的查询阈值;确定所述批量请求对应的有效消息,并将所述有效消息加入预设的消息队列;利用预设的消费线程处理所述消息队列中的所述有效消息;其中,所述有效消息包括所述批量请求的请求标识、请求取值和请求名称,所述有效信息使得消费线程能够正确的还原所述批量请求。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010956405.8A CN112104731B (zh) | 2020-09-11 | 2020-09-11 | 请求处理方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010956405.8A CN112104731B (zh) | 2020-09-11 | 2020-09-11 | 请求处理方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112104731A CN112104731A (zh) | 2020-12-18 |
CN112104731B true CN112104731B (zh) | 2022-05-20 |
Family
ID=73750850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010956405.8A Active CN112104731B (zh) | 2020-09-11 | 2020-09-11 | 请求处理方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112104731B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804300B (zh) * | 2020-12-30 | 2022-10-11 | 平安普惠企业管理有限公司 | 流量访问控制方法、装置、电子设备及存储介质 |
CN113298513A (zh) * | 2021-06-21 | 2021-08-24 | 深圳前海微众银行股份有限公司 | 代付请求处理方法及系统 |
CN114390014B (zh) * | 2022-01-22 | 2022-12-09 | 旭儒世纪(山东)信息技术有限公司 | 在高速网络环境中提高通讯并发量的业务处理方法及系统 |
CN115118782B (zh) * | 2022-06-27 | 2023-08-22 | 平安银行股份有限公司 | 数据控制方法、装置、电子设备及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105978968A (zh) * | 2016-05-11 | 2016-09-28 | 山东合天智汇信息技术有限公司 | 一种海量数据的实时传输处理方法、服务器及处理系统 |
CN107040612A (zh) * | 2014-09-25 | 2017-08-11 | 海信集团有限公司 | 一种信息推荐方法及装置 |
CN107872398A (zh) * | 2017-06-25 | 2018-04-03 | 平安科技(深圳)有限公司 | 高并发数据处理方法、装置及计算机可读存储介质 |
CN109271417A (zh) * | 2018-11-23 | 2019-01-25 | 福建榕基软件股份有限公司 | 一种基于数据库的轻量级消息队列实现方法及存储设备 |
CN110427386A (zh) * | 2019-08-05 | 2019-11-08 | 广州华多网络科技有限公司 | 数据处理方法、装置及计算机存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090006520A1 (en) * | 2007-06-28 | 2009-01-01 | Microsoft Corporation | Multiple Thread Pools for Processing Requests |
US9256915B2 (en) * | 2012-01-27 | 2016-02-09 | Qualcomm Incorporated | Graphics processing unit buffer management |
CN107347052B (zh) * | 2016-05-05 | 2020-07-14 | 阿里巴巴集团控股有限公司 | 检测撞库攻击的方法及装置 |
EP3493046B1 (en) * | 2017-01-25 | 2022-04-13 | Huawei Technologies Co., Ltd. | Data processing system, method, and corresponding device |
CN109815258A (zh) * | 2018-12-29 | 2019-05-28 | 深圳云天励飞技术有限公司 | 一种数据处理的方法及装置 |
CN111327666B (zh) * | 2019-06-28 | 2022-11-15 | 杭州海康威视系统技术有限公司 | 服务管理方法、装置及系统、计算机设备、存储介质 |
-
2020
- 2020-09-11 CN CN202010956405.8A patent/CN112104731B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107040612A (zh) * | 2014-09-25 | 2017-08-11 | 海信集团有限公司 | 一种信息推荐方法及装置 |
CN107172177A (zh) * | 2014-09-25 | 2017-09-15 | 海信集团有限公司 | 一种信息推荐方法及装置 |
CN105978968A (zh) * | 2016-05-11 | 2016-09-28 | 山东合天智汇信息技术有限公司 | 一种海量数据的实时传输处理方法、服务器及处理系统 |
CN107872398A (zh) * | 2017-06-25 | 2018-04-03 | 平安科技(深圳)有限公司 | 高并发数据处理方法、装置及计算机可读存储介质 |
CN109271417A (zh) * | 2018-11-23 | 2019-01-25 | 福建榕基软件股份有限公司 | 一种基于数据库的轻量级消息队列实现方法及存储设备 |
CN110427386A (zh) * | 2019-08-05 | 2019-11-08 | 广州华多网络科技有限公司 | 数据处理方法、装置及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112104731A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112104731B (zh) | 请求处理方法、装置、电子设备和存储介质 | |
US11159649B2 (en) | Systems and methods of rate limiting for a representational state transfer (REST) application programming interface (API) | |
CN109542361B (zh) | 一种分布式存储系统文件读取方法、系统及相关装置 | |
CN111200657B (zh) | 一种管理资源状态信息的方法和资源下载系统 | |
CN109391673B (zh) | 一种管理更新文件的方法、系统及终端设备 | |
CN110247985B (zh) | 一种资源下载方法、装置、电子设备及介质 | |
EP3669530A1 (en) | Systems and methods for controlling real-time traffic surge of application programming interfaces (apis) at server | |
US10642585B1 (en) | Enhancing API service schemes | |
CN113591068B (zh) | 一种在线登录设备管理方法、装置及电子设备 | |
CN113517985B (zh) | 文件数据处理方法、装置、电子设备及计算机可读介质 | |
CN108512930B (zh) | 一种共享文件的管理方法、装置、服务器和存储介质 | |
CN115004673A (zh) | 消息推送方法、装置、电子设备及计算机可读介质 | |
CN111680328A (zh) | 一种数据处理方法、装置、服务器及计算机可读存储介质 | |
CN114244624A (zh) | 流量控制方法及装置、设备、存储介质 | |
CN111355765B (zh) | 一种网络请求的处理、发送方法及装置 | |
CN110311975B (zh) | 一种数据请求处理方法及装置 | |
CN111291252A (zh) | 一种每秒查询率的调整方法、装置、电子设备及存储介质 | |
US20160309005A1 (en) | Method of automatically setting protocol in programmable logic controller system | |
CN109995863B (zh) | 一种动态资源下载方法、装置、电子设备及存储介质 | |
CN111552548A (zh) | 一种任务处理方法、装置、电子设备及机器可读存储介质 | |
CN111309693A (zh) | 一种数据同步方法、装置、系统、电子设备及存储介质 | |
CN110780944A (zh) | 一种应用权限的启动方法、设备及机器可读存储介质 | |
CN114090268B (zh) | 容器管理方法及容器管理系统 | |
CN112506896B (zh) | 一种数据删除方法、装置及电子设备 | |
CN111294377A (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 |