CN111858046B - 服务请求的处理方法及装置、存储介质、电子装置 - Google Patents
服务请求的处理方法及装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN111858046B CN111858046B CN202010670410.2A CN202010670410A CN111858046B CN 111858046 B CN111858046 B CN 111858046B CN 202010670410 A CN202010670410 A CN 202010670410A CN 111858046 B CN111858046 B CN 111858046B
- Authority
- CN
- China
- Prior art keywords
- service requests
- thread pool
- processing
- service
- specified number
- 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 7
- 238000012545 processing Methods 0.000 claims abstract description 159
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000004590 computer program Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 6
- 230000001960 triggered effect Effects 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 4
- 230000004044 response Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5013—Request control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5022—Workload threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种服务请求的处理方法及装置、存储介质、电子装置,其中,方法包括在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至线程池进行处理,并缓存剩余的服务请求以及新增的服务请求,在线程池处理完第一指定数量的服务请求之后,客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至线程池进行处理,并继续缓存剩余的服务请求以及新增的服务请求,这样限制了服务请求的并发数,因此,可以避免高请求量的情况下被丢弃或反复重试的情形,可以解决相关技术中分布式服务框架无法应对高请求量的问题,达到提高服务请求处理效率的技术效果。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种服务请求的处理方法及装置、存储介质、电子装置。
背景技术
相关技术中,在分布式服务框架中,例如Dubbo服务,若服务端处理线程数少于客户端请求的个数,则多余的客户端请求即被丢弃,将导致部分请求失败,或者,这些超出服务端处理线程数的客户端请求可能反复被重试,会耗尽重试次数导致请求失败。为了减少这种场景的出现,一般会加大服务端线程池大小,但服务端线程池的大小与计算机硬件条件相关,一味地加大线程池大小以提高服务端处理能力并不是持续可行的解决方案。
针对相关技术中分布式服务框架无法应对高请求量的问题,尚不存在较好的解决方案。
发明内容
本发明实施例提供了一种服务请求的处理方法及装置、存储介质、电子装置,以至少解决相关技术中分布式服务框架无法应对高请求量的问题。
根据本发明的一个实施例,提供了一种服务请求的处理方法,包括:
在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至所述线程池进行处理,并缓存所述待处理的服务请求中除所述第一指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第一指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第一指定数量小于或等于所述线程池的处理容量;
在所述线程池处理完所述第一指定数量的服务请求之后,所述客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至所述线程池进行处理,并缓存所述被缓存的服务请求中除所述第二指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第二指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第二指定数量小于或等于所述线程池的处理容量。
在一个示例的实施方式中,所述第二指定数量的服务请求是根据所述被缓存的服务请求中的服务请求的被缓存时间所确定的,其中,按照所述被缓存时间从长至短的顺序从所述被缓存的服务请求中确定所述第二指定数量的服务请求;或者,
所述第二指定数量的服务请求是根据所述被缓存的服务请求中的服务请求的优先级所确定的,其中,所述服务请求被配置了优先级,按照所述优先级从高至低的顺序从所述被缓存的服务请求中确定所述第二指定数量的服务请求。
在一个示例的实施方式中,所述第一指定数量的服务请求是根据所述待处理的服务请求中的服务请求的被缓存时间所确定的,其中,按照所述被缓存时间从长至短的顺序从所述待处理的服务请求中确定所述第一指定数量的服务请求;或者,
所述第一指定数量的服务请求是根据所述待处理的服务请求中的服务请求的优先级所确定的,其中,所述服务请求被配置了优先级,按照所述优先级从高至低的顺序从所述待处理的服务请求中确定所述第一指定数量的服务请求。
在一个示例的实施方式中,通过过滤器将所述服务请求发送至所述线程池进行处理,其中,所述过滤器被配置了所述线程池的处理容量参数,所述处理容量参数用于供所述过滤器确定待处理的服务请求的并发数量是否超过所述线程池的处理容量。
在一个示例的实施方式中,所述线程池的处理容量参数是从注册中心获取的,其中,所述线程池的处理容量参数是服务端注册到所述注册中心的,所述注册中心用于服务端注册服务参数以供所述客户端获取。
在一个示例的实施方式中,在所述线程池的处理容量参数变更的情况下,接收所述注册中心发送的变更后的所述线程池的处理容量参数,以使所述客户端根据变更后的所述线程池的处理容量参数更新所述过滤器。
在一个示例的实施方式中,在所述将第一指定数量的服务请求发送至所述线程池进行处理之后,所述方法还包括:接收所述第一指定数量的服务请求的处理结果,其中,所述处理结果用于触发所述客户端将被缓存的服务请求中的所述第二指定数量的服务请求发送至所述线程池进行处理。
根据本发明的另一个实施例,提供了一种服务请求的处理装置,包括:
第一发送模块,用于在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至所述线程池进行处理,并缓存所述待处理的服务请求中除所述第一指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第一指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第一指定数量小于或等于所述线程池的处理容量;
第二发送模块,用于在所述线程池处理完所述第一指定数量的服务请求之后,所述客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至所述线程池进行处理,并缓存所述被缓存的服务请求中除所述第二指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第二指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第二指定数量小于或等于所述线程池的处理容量。
根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述计算机可读的存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明实施例,由于在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至所述线程池进行处理,并缓存剩余的服务请求以及新增的服务请求,在所述线程池处理完所述第一指定数量的服务请求之后,客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至所述线程池进行处理,并继续缓存剩余的服务请求以及新增的服务请求,这样限制了服务请求的并发数,因此,可以避免高请求量的情况下被丢弃或反复重试的情形,可以解决相关技术中分布式服务框架无法应对高请求量的问题,达到提高服务请求处理效率的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种服务请求的处理方法的移动终端的硬件结构框图;
图2是根据本发明实施例的服务请求的处理方法的流程图;
图3是根据本发明实施例的服务请求的处理装置的结构框图;
图4是根据本发明可选实施例的获取线程配置参数的流程示意图;
图5是根据本发明可选实施例的服务请求的处理方法的流程示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例1
本申请实施例一所提供的方法实施例可以智能终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种服务请求的处理方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,在一个示例性的实施方式中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的服务请求的处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述计算机终端的服务请求的处理方法,图2是根据本发明实施例的服务请求的处理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至该线程池进行处理,并缓存该待处理的服务请求中除该第一指定数量的服务请求之外的剩余的服务请求以及该客户端在将该第一指定数量的该服务请求发送至该线程池进行处理之后所接收到的服务请求,其中,该第一指定数量小于或等于该线程池的处理容量;
步骤S204,在该线程池处理完该第一指定数量的服务请求之后,该客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至该线程池进行处理,并缓存该被缓存的服务请求中除该第二指定数量的服务请求之外的剩余的服务请求以及该客户端在将该第二指定数量的该服务请求发送至该线程池进行处理之后所接收到的服务请求,其中,该第二指定数量小于或等于该线程池的处理容量。
通过上述步骤,由于在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至该线程池进行处理,并缓存剩余的服务请求以及新增的服务请求,在该线程池处理完该第一指定数量的服务请求之后,客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至该线程池进行处理,并继续缓存剩余的服务请求以及新增的服务请求,这样限制了服务请求的并发数,因此,可以避免高请求量的情况下被丢弃或反复重试的情形,可以解决相关技术中分布式服务框架无法应对高请求量的问题,达到提高服务请求处理效率的技术效果。
需要说明的是,上述的第一指定数量、第二指定数量均可以是当前线程池所能处理的最大处理容量,这样能够提高处理效率,当然,第一指定数量、第二指定数量也可以小于当前线程池所能处理的最大处理容量,以减轻线程池的负荷。还需要说明的是,本实施例所提供的方法可以应用于分布式服务框架的场景,其中,本实施例中的客户端对应于分布式服务框架中的客户端。
在一个示例的实施方式中,该第二指定数量的服务请求是根据该被缓存的服务请求中的服务请求的被缓存时间所确定的,其中,按照该被缓存时间从长至短的顺序从该被缓存的服务请求中确定该第二指定数量的服务请求;或者,该第二指定数量的服务请求是根据该被缓存的服务请求中的服务请求的优先级所确定的,其中,该服务请求被配置了优先级,按照该优先级从高至低的顺序从该被缓存的服务请求中确定该第二指定数量的服务请求。
在一个示例的实施方式中,该第一指定数量的服务请求是根据该待处理的服务请求中的服务请求的被缓存时间所确定的,其中,按照该被缓存时间从长至短的顺序从该待处理的服务请求中确定该第一指定数量的服务请求;或者,该第一指定数量的服务请求是根据该待处理的服务请求中的服务请求的优先级所确定的,其中,该服务请求被配置了优先级,按照该优先级从高至低的顺序从该待处理的服务请求中确定该第一指定数量的服务请求。
需要说明的是,通过优先级或者缓存时间确定被发送给线程池处理的服务请求,可以使得较为重要的需要优先处理的请求,或者,较为早期的请求尽快得到处理,以提高处理效率。
需要说明的是,缓存的请求可以包括未发送至服务端的线程池进行处理的剩余的服务请求,以及客户端所产生的,或者新接收到的,新的服务请求。这些新的请求可以等待前面的请求被处理完毕之后再进行处理。这样限制了并发量,避免出现超量的服务请求被丢弃或者被反复重试的情形,以提高处理效率。
在一个示例性的实施方式中,通过过滤器将服务请求发送至该线程池进行处理,并缓存剩余的服务请求,其中,该过滤器被配置了该线程池的处理容量参数,该处理容量参数用于供该过滤器确定待处理的服务请求的并发数量是否超过该线程池的处理容量。需要说明的是,客户端中可以设置过滤器,用于限制发送至服务端的线程池进行处理的服务请求的并发量。
在一个示例性的实施方式中,该线程池的处理容量参数是从注册中心获取的,其中,该线程池的处理容量参数被注册到了该注册中心,该注册中心用于服务端注册服务参数以供该客户端获取。
在一个示例性的实施方式中,该线程池的处理容量参数是服务端注册到该注册中心的。需要说明的是,在服务端被配置了参数的情况下,可以将配置的参数注册到注册中心。
在一个示例性的实施方式中,在该线程池的处理容量参数变更的情况下,接收该注册中心发送的变更后的该线程池的处理容量参数,以使该客户端根据变更后的该线程池的处理容量参数更新该过滤器。需要说明的是,当服务端的配置参数变更的情况下,服务端可以将变更后的配置参数注册到注册中心,然后注册中心可以将变更后的配置参数发送给客户端。这样能够保证客户端可以及时获取到最新的处理容量变更参数,避免处理过程出现故障。
在一个示例性的实施方式中,在该将第一指定数量的服务请求发送至该线程池进行处理之后,该方法还包括:接收该第一指定数量的服务请求的处理结果,其中,该处理结果用于触发该客户端将被缓存的服务请求中的该第二指定数量的服务请求发送至该线程池进行处理。
需要说明的是,在客户端收到前一批服务请求的处理结果时,表明前一批服务请求已经处理完毕,则客户端可以发送新的一批服务请求至服务端的线程池进行处理。这样可以及时、连续地进行服务请求的处理,进一步提高处理效率。
在本实施例中还提供了一种服务请求的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是能并被构想的。
图3是根据本发明实施例的服务请求的处理装置的结构框图,如图3所示,该装置包括:
第一发送模块31,用于在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至所述线程池进行处理,并缓存所述待处理的服务请求中除所述第一指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第一指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第一指定数量小于或等于所述线程池的处理容量;
第二发送模块33,用于在所述线程池处理完所述第一指定数量的服务请求之后,所述客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至所述线程池进行处理,并缓存所述被缓存的服务请求中除所述第二指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第二指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第二指定数量小于或等于所述线程池的处理容量。
通过上述步骤,由于在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至该线程池进行处理,并缓存剩余的服务请求以及新增的服务请求,在该线程池处理完该第一指定数量的服务请求之后,客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至该线程池进行处理,并继续缓存剩余的服务请求以及新增的服务请求,这样限制了服务请求的并发数,因此,可以避免高请求量的情况下被丢弃或反复重试的情形,可以解决相关技术中分布式服务框架无法应对高请求量的问题,达到提高服务请求处理效率的技术效果。
在一个示例的实施方式中,该第二指定数量的服务请求是根据该被缓存的服务请求中的服务请求的被缓存时间所确定的,其中,按照该被缓存时间从长至短的顺序从该被缓存的服务请求中确定该第二指定数量的服务请求;或者,该第二指定数量的服务请求是根据该被缓存的服务请求中的服务请求的优先级所确定的,其中,该服务请求被配置了优先级,按照该优先级从高至低的顺序从该被缓存的服务请求中确定该第二指定数量的服务请求。
在一个示例的实施方式中,该第一指定数量的服务请求是根据该待处理的服务请求中的服务请求的被缓存时间所确定的,其中,按照该被缓存时间从长至短的顺序从该待处理的服务请求中确定该第一指定数量的服务请求;或者,该第一指定数量的服务请求是根据该待处理的服务请求中的服务请求的优先级所确定的,其中,该服务请求被配置了优先级,按照该优先级从高至低的顺序从该待处理的服务请求中确定该第一指定数量的服务请求。
在一个示例的实施方式中,通过过滤器将该服务请求发送至该线程池进行处理,其中,该过滤器被配置了该线程池的处理容量参数,该处理容量参数用于供该过滤器确定待处理的服务请求的并发数量是否超过该线程池的处理容量。
在一个示例的实施方式中,该线程池的处理容量参数是从注册中心获取的,其中,该线程池的处理容量参数是服务端注册到该注册中心的,该注册中心用于服务端注册服务参数以供该客户端获取。
在一个示例的实施方式中,所述装置还包括:第一接收模块,用于在该线程池的处理容量参数变更的情况下,接收该注册中心发送的变更后的该线程池的处理容量参数,以使该客户端根据变更后的该线程池的处理容量参数更新该过滤器。
在一个示例的实施方式中,该装置还包括:第二接收模块,用于在该将第一指定数量的服务请求发送至该线程池进行处理之后,接收该第一指定数量的服务请求的处理结果,其中,该处理结果用于触发该客户端将被缓存的服务请求中的该第二指定数量的服务请求发送至该线程池进行处理。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
示例实施方式
以下结合具体场景对本发明实施例进行进一步解释说明。
本实施例提出一种限制客户端瞬时高并发的请求量从而减少服务端因线程池满而丢弃请求,进而引发客户端请求失败或服务耗时的解决方案。
以Dubbo为例,Dubbo是阿里巴巴提供的开源分布式服务框架,通过使用分层的架构方式实现了服务之间的解耦合,因其主要实现的是 RPC(Remote Procedure CallProtocol)远程服务调用,因此主要包括两个角色,服务调用方和服务提供方。除此之外,Dubbo致力于透明化远程调用,即通过简单的配置使调用方在调用远程提供方提供的服务时给人感觉就像调用本地服务一样。Dubbo 提供了 SPI (Service Provider Interface)机制,让开发者可以通过SPI来对Dubbo框架进行扩展,以实现开发者想要的功能。本发明将基于Dubbo的SPI扩展机制,添加自定义请求过滤器来解决请求失败及服务耗时的问题。
在一个示例性的实施方式中,当服务端业务线程池满了,可以丢弃请求并抛出异常,若客户端配置了重试,在客户端收到线程池满的异常后会立即重新发送请求到服务端;在只有一个提供服务的服务端情况下,因这时服务端线程池还是满的,将继续丢弃请求且抛出线程池满的异常,客户端继续重试,最终耗尽重试次数导致请求失败;在有多个提供服务的服务端情况下,因负载均衡策略,当有一个服务端业务线程池满时,其他服务端一般也已经满了,这将出现和只有一个服务端一样的情况。
为了避免请求失败,可以使用一种派发策略,在该种派发策略下,当服务端因业务线程池满而丢弃多余请求时,客户端不会收到线程池满的异常,继续等待服务端的响应结果,直到客户端设置的超时时间耗尽,发现还有部分请求的响应结果没有返回,就重新发送请求,而这时的服务端业务线程池因处理完请求已有空闲线程,可以正常处理请求并发给客户端,至此,请求重试成功,但重试成功的请求耗时将会是超时时间与服务端处理请求时间之和,这是一种以时间换空间来解决请求失败的策略,若还有其他服务调用客户端服务时,该策略会导致其他服务超时,引发雪崩。此处举个例子:假如服务端的线程池大小threads=200,超时时间timeout=2000 ms,服务端处理请求时间providerTime=2 ms,客户端瞬时有300个并发请求,则当300个请求并发到服务端时,因服务端一次只能处理最多200个请求,将导致有100个请求被丢弃,然后客户端要等到超时时间耗尽后发现只收到200个请求响应结果,还有100个请求结果没收到,就重试将100个请求再次发到服务端,服务端处理后返回给客户端,但这100个请求耗时将会是timeout +providerTime=2002 ms。
在本实施例中,在客户端具有重试的情况下,可以根据服务端业务线程池配置来设置客户端参数actives,以限制并发请求量,减少服务端因线程池满处理不过来而丢弃请求的情况。举个例子:假如服务端的线程池大小threads=200,超时时间timeout=2000 ms,服务端处理请求时间providerTime=2 ms,设置客户端的actives =200,当客户端并发出300个请求时因限制了请求数,只有200个请求会并发到服务端,另外100个请求线程被挂起,等到前面有请求被处理完就会唤醒当前请求线程,这时100个请求耗时将会是providerTime *2=4 ms,但设置actives需要匹配服务端的业务线程池配置,一旦服务端修改了业务线程池配置参数,客户端也得手动修改actives参数并重新部署,这将增加开发和运维的工作量。
本发明实施例可以减少请求失败并简化开发和运维工作,在服务端应自己业务需求而修改了业务线程池配置的情况下,客户端不需要手动修改actives配置参数,而是自动检测到服务端配置的改变来更新自己的配置。
在本发明实施例中,可以基于Dubbo的SPI扩展机制,添加一个过滤器,当服务端启动时会自动将自己的线程配置参数注册到注册中心,然后客户端去调用服务端提供的服务时,先通过注册中心获取服务端线程配置参数,然后将这些参数加载到自己的过滤器中,从而实现客户端自动配置与服务端相匹配的并发限制参数。若以后服务端修改了自己的配置,客户端也会自动匹配自己的配置。本发明实施例不仅可以优化目前业务中的请求失败和耗时问题,还大大减少了开发和运维的工作量。
图4是根据本发明可选实施例的获取线程配置参数的流程示意图,如图4所示,包括:
启动zookeeper;
启动服务端,并将所有配置参数注册到zookeeper,包括线程池配置threads参数;
启动客户端,通过zookeeper订阅服务,并获取到相应服务端的threads配置参数;
自定义filter过滤器,将获取到的threads配置参数加载到自定义filter类,动态修改限制并发数的actives值;
加载filter过滤器到Dubbo服务,当并发大量请求时,触发过滤器,通过actives限制并发数,避免因大量请求并发到服务端导致服务端线程池满而丢弃请求,从而导致一系列问题;
当服务端改变线程池配置threads参数时,zookeeper上的服务端注册信息会被变更并通知客户端,客户端自动修改filter中的actives值,以匹配服务端处理请求的能力。
图5是根据本发明可选实施例的服务请求的处理方法的流程示意图,如图5所示,在添加动态过滤器后,处理请求流程包括:
客户端并发大量请求;
确定客户端动态过滤请求数不超过服务端线程池大小;若请求数大于线程池大小,将挂起超过线程池大小的其他所有请求,等到前面有请求处理完就唤醒,发到服务端;被挂起的请求最终耗时将会是“服务端处理请求时间的二倍”,因服务端处理请求时间一般很快,相较于“超时时间+服务端处理请求时间”要快很多;若请求数不大于线程池大小,服务端正常处理完所有请求,并把响应结果发给客户端,客户端接收到所有响应结果,最终“请求成功”。
因限制了并发数,将永远不会出现服务端线程池满而丢弃请求的情况,服务端正常处理完所有请求,并将响应结果返回给客户端,客户端收到所有响应结果,最终“请求成功”。
本发明实施例通过根据服务端最大可处理请求数来动态过滤客户端并发请求数,以减少服务端因线程池满处理不过来而丢弃请求的情况,降低请求失败率以及减少耗时。本发明实施例通过服务端业务线程池配置参数来自动配置相匹配的客户端并发限制参数,以减少开发和运维的工作量,即当服务端修改了业务线程池配置,客户端不需要手动修改actives参数并重新部署服务。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本发明的实施例还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。在一个示例性的实施方式中,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
在一个示例性的实施方式中,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random AccessMemory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性的实施方式中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
在一个示例性的实施方式中,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,在一个示例性的实施方式中,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种服务请求的处理方法,其特征在于,应用于客户端,包括:
在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至所述线程池进行处理,并缓存所述待处理的服务请求中除所述第一指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第一指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第一指定数量小于或等于所述线程池的处理容量;
在所述线程池处理完所述第一指定数量的服务请求之后,所述客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至所述线程池进行处理,并缓存所述被缓存的服务请求中除所述第二指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第二指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第二指定数量小于或等于所述线程池的处理容量;
其中,将服务请求发送至所述线程池进行处理,包括:
通过所述客户端中的过滤器将所述服务请求发送至所述线程池进行处理,其中,所述过滤器被配置了所述线程池的处理容量参数,所述处理容量参数用于供所述过滤器确定待处理的服务请求的并发数量是否超过所述线程池的处理容量,以及供所述过滤器限制发送至服务端的线程池进行处理的服务请求的并发量;
其中,所述线程池的处理容量参数是从注册中心获取的,所述线程池的处理容量参数是服务端注册到所述注册中心的,所述注册中心用于服务端注册服务参数以供所述客户端获取。
2.根据权利要求1所述的服务请求的处理方法,其特征在于,所述第二指定数量的服务请求是根据所述被缓存的服务请求中的服务请求的被缓存时间所确定的,其中,按照所述被缓存时间从长至短的顺序从所述被缓存的服务请求中确定所述第二指定数量的服务请求;或者,
所述第二指定数量的服务请求是根据所述被缓存的服务请求中的服务请求的优先级所确定的,其中,所述服务请求被配置了优先级,按照所述优先级从高至低的顺序从所述被缓存的服务请求中确定所述第二指定数量的服务请求。
3.根据权利要求1或2所述的服务请求的处理方法,其特征在于,所述第一指定数量的服务请求是根据所述待处理的服务请求中的服务请求的被缓存时间所确定的,其中,按照所述被缓存时间从长至短的顺序从所述待处理的服务请求中确定所述第一指定数量的服务请求;或者,
所述第一指定数量的服务请求是根据所述待处理的服务请求中的服务请求的优先级所确定的,其中,所述服务请求被配置了优先级,按照所述优先级从高至低的顺序从所述待处理的服务请求中确定所述第一指定数量的服务请求。
4.根据权利要求3所述的服务请求的处理方法,其特征在于,在所述线程池的处理容量参数变更的情况下,接收所述注册中心发送的变更后的所述线程池的处理容量参数,以使所述客户端根据变更后的所述线程池的处理容量参数更新所述过滤器。
5.根据权利要求1所述的服务请求的处理方法,其特征在于,在所述将第一指定数量的服务请求发送至所述线程池进行处理之后,所述方法还包括:
接收所述第一指定数量的服务请求的处理结果,其中,所述处理结果用于触发所述客户端将被缓存的服务请求中的所述第二指定数量的服务请求发送至所述线程池进行处理。
6.一种服务请求的处理装置,其特征在于,位于客户端,包括:
第一发送模块,用于在待处理的服务请求的并发数量超过线程池的处理容量的情况下,将第一指定数量的服务请求发送至所述线程池进行处理,并缓存所述待处理的服务请求中除所述第一指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第一指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第一指定数量小于或等于所述线程池的处理容量;
第二发送模块,用于在所述线程池处理完所述第一指定数量的服务请求之后,所述客户端被触发将被缓存的服务请求中的第二指定数量的服务请求发送至所述线程池进行处理,并缓存所述被缓存的服务请求中除所述第二指定数量的服务请求之外的剩余的服务请求以及所述客户端在将所述第二指定数量的所述服务请求发送至所述线程池进行处理之后所接收到的服务请求,其中,所述第二指定数量小于或等于所述线程池的处理容量;
其中,所述装置,还用于通过客户端中的过滤器将所述服务请求发送至所述线程池进行处理,其中,所述过滤器被配置了所述线程池的处理容量参数,所述处理容量参数用于供所述过滤器确定待处理的服务请求的并发数量是否超过所述线程池的处理容量,以及供所述过滤器限制发送至服务端的线程池进行处理的服务请求的并发量;
其中,所述线程池的处理容量参数是从注册中心获取的,所述线程池的处理容量参数是服务端注册到所述注册中心的,所述注册中心用于服务端注册服务参数以供所述客户端获取。
7.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至5任一项中所述的方法。
8.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至5任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010670410.2A CN111858046B (zh) | 2020-07-13 | 2020-07-13 | 服务请求的处理方法及装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010670410.2A CN111858046B (zh) | 2020-07-13 | 2020-07-13 | 服务请求的处理方法及装置、存储介质、电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111858046A CN111858046A (zh) | 2020-10-30 |
CN111858046B true CN111858046B (zh) | 2024-05-24 |
Family
ID=72983820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010670410.2A Active CN111858046B (zh) | 2020-07-13 | 2020-07-13 | 服务请求的处理方法及装置、存储介质、电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111858046B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527508B (zh) * | 2020-12-21 | 2022-12-09 | 卓尔智联(武汉)研究院有限公司 | 基于sgx的云端飞地资源管理方法、装置、计算机设备和介质 |
CN112835705A (zh) * | 2021-03-26 | 2021-05-25 | 中国工商银行股份有限公司 | 一种基于线程池的任务执行方法及装置 |
CN113778567B (zh) * | 2021-07-29 | 2022-07-12 | 广州酷车信息科技有限公司 | 服务调用重试方法、装置、设备和存储介质 |
CN115002225A (zh) * | 2022-05-07 | 2022-09-02 | 阿里巴巴(中国)有限公司 | 一种请求处理方法、装置及可读介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588316A (zh) * | 2004-06-29 | 2005-03-02 | 北京大学 | 应用服务器的性能优化方法 |
CN102546437A (zh) * | 2012-02-20 | 2012-07-04 | 南京邮电大学 | 一种面向物联网平台的套接字实现方法 |
CN103019859A (zh) * | 2012-12-05 | 2013-04-03 | 北京普泽天玑数据技术有限公司 | 一种对服务请求调度的方法和*** |
US8490101B1 (en) * | 2004-11-29 | 2013-07-16 | Oracle America, Inc. | Thread scheduling in chip multithreading processors |
CN103345451A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在多核处理器中缓冲数据的方法 |
CN104572277A (zh) * | 2014-12-17 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种线程流控方法和装置 |
CN107450971A (zh) * | 2017-06-29 | 2017-12-08 | 北京五八信息技术有限公司 | 任务处理方法及装置 |
CN108551465A (zh) * | 2018-03-09 | 2018-09-18 | 平安科技(深圳)有限公司 | 服务器并发数控制方法、装置、计算机设备及存储介质 |
CN109271252A (zh) * | 2018-08-29 | 2019-01-25 | 华为技术有限公司 | 一种调整线程数的方法及装置 |
CN109582472A (zh) * | 2018-10-19 | 2019-04-05 | 华为技术有限公司 | 一种微服务处理方法及设备 |
CN110401697A (zh) * | 2019-06-26 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种并发处理http请求的方法、***及设备 |
CN110457126A (zh) * | 2019-08-13 | 2019-11-15 | 杭州有赞科技有限公司 | 一种异步调用方法及*** |
WO2020019743A1 (zh) * | 2018-07-27 | 2020-01-30 | 华为技术有限公司 | 流量控制方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7237242B2 (en) * | 2002-12-31 | 2007-06-26 | International Business Machines Corporation | Dynamic thread pool tuning techniques |
US11048562B2 (en) * | 2017-06-04 | 2021-06-29 | Apple Inc. | Multi-thread synchronization primitive |
-
2020
- 2020-07-13 CN CN202010670410.2A patent/CN111858046B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588316A (zh) * | 2004-06-29 | 2005-03-02 | 北京大学 | 应用服务器的性能优化方法 |
US8490101B1 (en) * | 2004-11-29 | 2013-07-16 | Oracle America, Inc. | Thread scheduling in chip multithreading processors |
CN102546437A (zh) * | 2012-02-20 | 2012-07-04 | 南京邮电大学 | 一种面向物联网平台的套接字实现方法 |
CN103019859A (zh) * | 2012-12-05 | 2013-04-03 | 北京普泽天玑数据技术有限公司 | 一种对服务请求调度的方法和*** |
CN103345451A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在多核处理器中缓冲数据的方法 |
CN104572277A (zh) * | 2014-12-17 | 2015-04-29 | 大唐移动通信设备有限公司 | 一种线程流控方法和装置 |
CN107450971A (zh) * | 2017-06-29 | 2017-12-08 | 北京五八信息技术有限公司 | 任务处理方法及装置 |
CN108551465A (zh) * | 2018-03-09 | 2018-09-18 | 平安科技(深圳)有限公司 | 服务器并发数控制方法、装置、计算机设备及存储介质 |
WO2019169724A1 (zh) * | 2018-03-09 | 2019-09-12 | 平安科技(深圳)有限公司 | 服务器并发数控制方法、装置、计算机设备及存储介质 |
WO2020019743A1 (zh) * | 2018-07-27 | 2020-01-30 | 华为技术有限公司 | 流量控制方法及装置 |
CN109271252A (zh) * | 2018-08-29 | 2019-01-25 | 华为技术有限公司 | 一种调整线程数的方法及装置 |
CN109582472A (zh) * | 2018-10-19 | 2019-04-05 | 华为技术有限公司 | 一种微服务处理方法及设备 |
CN110401697A (zh) * | 2019-06-26 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种并发处理http请求的方法、***及设备 |
CN110457126A (zh) * | 2019-08-13 | 2019-11-15 | 杭州有赞科技有限公司 | 一种异步调用方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN111858046A (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111858046B (zh) | 服务请求的处理方法及装置、存储介质、电子装置 | |
CN109104483B (zh) | 一种基于事件通知的微服务动态负载均衡的方法及装置 | |
KR100383381B1 (ko) | 제한된메모리컴퓨터시스템에서의클라이언트관리흐름제어를위한방법과장치 | |
CN107135279B (zh) | 一种处理长连接建立请求的方法和装置 | |
CN110958281B (zh) | 基于物联网的数据传输方法及通信装置 | |
US9413851B2 (en) | Information processing system, information processing device, client terminal, and computer readable medium | |
CN106331065A (zh) | 一种用于具有服务容器的主机***的代理应用以及*** | |
US20230275976A1 (en) | Data processing method and apparatus, and computer-readable storage medium | |
US20220394785A1 (en) | System and Method of Managing PNF Connectivity in a Network Slice Instance | |
CN111586140A (zh) | 一种数据交互的方法及服务器 | |
CN112511595B (zh) | 一种消息推送方法及消息服务*** | |
WO2024103943A1 (zh) | 一种业务处理方法、装置、存储介质及设备 | |
CN113934517A (zh) | 定时任务调度方法、装置、电子装置和存储介质 | |
CN110851166A (zh) | 用户无感知的应用程序更新方法、装置及计算机设备 | |
US8397247B2 (en) | Information processing system, information processing method and computer-readable storage medium | |
CN111901395A (zh) | 多集群切换方法及装置 | |
CN112968951B (zh) | 服务节点的连接方法及装置、存储介质和电子装置 | |
CN114942823A (zh) | 一种容器中服务下线的方法、装置、电子装置和存储介质 | |
CN115065686A (zh) | 分布式负载均衡***的配置方法、装置及*** | |
CN110401708B (zh) | 基于服务器负载状态的会话处理***及方法 | |
CN113268327A (zh) | 事务请求的处理方法、装置和电子设备 | |
CN112104506B (zh) | 组网方法、装置、服务器及可读存储介质 | |
CN113742063A (zh) | 分布式定时调度***和方法 | |
WO2021259108A1 (zh) | 资源分配方法、装置、服务器及存储介质 | |
CN117527906A (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 |