CN109451051B - 服务请求处理方法、装置、电子设备及存储介质 - Google Patents
服务请求处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109451051B CN109451051B CN201811549175.2A CN201811549175A CN109451051B CN 109451051 B CN109451051 B CN 109451051B CN 201811549175 A CN201811549175 A CN 201811549175A CN 109451051 B CN109451051 B CN 109451051B
- Authority
- CN
- China
- Prior art keywords
- service request
- coroutine
- network server
- queue
- idle state
- 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/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
Abstract
本申请提出一种服务请求处理方法、装置、电子设备及存储介质,属于计算机技术领域。其中,该方法包括:网络服务器监听当前是否有协程进入空闲状态;网络服务器若监听到第一协程进入空闲状态,则根据服务请求队列中各服务器请求的获取时间,确定当前待分配的目标服务请求;网络服务器将目标服务请求,分配给第一协程,以使第一协程响应目标服务请求。由此,通过这种服务请求处理方法,避免了服务器的处理效率降低甚至崩溃,提高了网络服务的稳定性,改善了用户体验。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种服务请求处理方法、装置、电子设备及存储介质。
背景技术
随着互联网络和计算机的普及,越来越多的用户通过互联网来获取信息。互联网的信息一般存储在链接到网络中的服务器上,用户可以访问这些服务器来获取信息。如今网站的访问量越来越大,例如某些网站的页面浏览量甚至达到了数千万次甚至上亿的级别。
相关技术中,基于Go语言的网络服务器,在处理服务请求时,通常是每获取到一个服务请求,便为该服务请求分配一个协程,以响应该服务请求,即协程的数量可以是无限的。但是,这种服务请求处理方法,在服务请求的并发量较大时,需要大量的协程对服务请求进行处理,从而使得服务器的资源利用率较高,导致服务器的处理效率降低甚至崩溃,影响了用户体验。
发明内容
本申请提出的服务请求处理方法、装置、电子设备及存储介质,用于解决相关技术中的服务请求处理方法,在服务请求的并发量较大时,需要大量的协程对服务请求进行处理,从而使得服务器的资源利用率较高,导致服务器的处理效率降低甚至崩溃,影响用户体验的问题。
本申请一方面实施例提出的服务请求处理方法,包括:网络服务器监听当前是否有协程进入空闲状态;所述网络服务器若监听到第一协程进入空闲状态,则根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求;所述网络服务器将所述目标服务请求,分配给所述第一协程,以使所述第一协程响应所述目标服务请求。
本申请另一方面实施例提出的服务请求处理装置,包括:监听模块,用于网络服务器监听当前是否有协程进入空闲状态;确定模块,用于所述网络服务器若监听到第一协程进入空闲状态,则根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求;分配模块,用于所述网络服务器将所述目标服务请求,分配给所述第一协程,以使所述第一协程响应所述目标服务请求。
本申请再一方面实施例提出的电子设备,其包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如前所述的服务请求处理方法。
本申请再一方面实施例提出的计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如前所述的服务请求处理方法。
本申请又一方面实施例提出的计算机程序,该程序被处理器执行时,以实现本申请实施例所述的服务请求处理方法。
本申请实施例提供的服务请求处理方法、装置、电子设备、计算机可读存储介质及计算机程序,可以通过网络服务器监听当前是否有协程进入空闲状态,并在监听到第一协程进入空闲状态时,根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求,进而将目标服务请求,分配给第一协程,以使第一协程响应目标服务请求。由此,通过将处于空闲状态的协程依次分配给服务请求队列中的各服务请求,来控制网络服务器中协程的数量,从而避免了服务器的处理效率降低甚至崩溃,提高了网络服务的稳定性,改善了用户体验。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例所提供的一种服务请求处理方法的流程示意图;
图2为本申请实施例所提供的一种服务请求处理模型设计架构图;
图3为本申请实施例所提供的另一种服务请求处理方法的流程示意图;
图4为本申请实施例所提供的一种服务请求处理装置的结构示意图;
图5为本申请实施例所提供的电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的要素。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
本申请实施例针对相关技术中的服务请求处理方法,在服务请求的并发量较大时,需要大量的协程对服务请求进行处理,从而使得服务器的资源利用率较高,导致服务器的处理效率降低甚至崩溃,影响用户体验的问题,提出一种服务请求处理方法。
本申请实施例提供的服务请求处理方法,可以通过网络服务器监听当前是否有协程进入空闲状态,并在监听到第一协程进入空闲状态时,根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求,进而将目标服务请求,分配给第一协程,以使第一协程响应目标服务请求。由此,通过将处于空闲状态的协程依次分配给服务请求队列中的各服务请求,来控制网络服务器中协程的数量,从而避免了服务器的处理效率降低甚至崩溃,提高了网络服务的稳定性,改善了用户体验。
下面参考附图对本申请提供的服务请求处理方法、装置、电子设备、存储介质及计算机程序进行详细描述。
图1为本申请实施例所提供的一种服务请求处理方法的流程示意图。
如图1所示,该服务请求处理方法,包括以下步骤:
步骤101,网络服务器监听当前是否有协程进入空闲状态。
需要说明的是,随着互联网络和计算机的普及,越来越多的用户通过互联网来获取信息,因此如今网站的访问量越来越大,从而导致网络服务器的负荷不断增大。举例来说,基于Go语言的网络服务器,在处理服务请求时,通常是每获取到一个服务请求,便为该服务请求分配一个新的协程,以响应该服务请求,即协程的数量可以根据服务请求的数量无限扩充。但是,当协程的数量超过一定的限度时,会导致网络服务器的资源利用率较高,降低网络服务器的处理效率和稳定性。因此,在本申请实施例中,可以通过预设一定数量的协程,并利用处于空闲状态的协程轮流处理服务请求,从而实现对单个协程的复用,即协程的数量不会随着服务请求数量的增长而增长,有效控制了系统的开销。
在本申请实施例中,可以提前预设协程的数量,并将预定义的协程放入空闲协程队列中。因此,网络服务器可以通过对空闲协程队列进行监听,以确定空闲协程队列中是否包含处于空闲状态的协程,或者当前是否有协程进入空闲状态(即当前是否有协程进入空闲协程队列)。
需要说明的是,在本申请实施例中,协程处理完相应的服务请求之后,会重新进入空闲协程队列,以使网络服务器可以将该协程重新分配给新的服务请求。
进一步的,可以在确定当前的服务请求的并发量较大时,对协程的数量进行限制。即在本申请实施例一种可能的实现形式中,上述步骤101之前,可以包括:
所述网络服务器判断当前的每秒查询率是否大于第一阈值;
若是,则控制所述网络服务器切换至协程数量限制处理模式。
其中,每秒查询率(Query Per Second,简称QPS),是指对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,即服务器每秒可以响应的请求数。服务器可以达到的最大每秒查询率可以用于衡量服务器的性能,在服务器实际运行时,服务器当前的每秒查询率可以在服务器可以达到的最大每秒查询率范围内变动。服务器当前的每秒查询率可以根据服务器当前的并发量与平均响应时间确定,即每秒查询率=并发量/平均响应时间。其中,并发量是指服务器中同时运行的协程数量,平均响应时间是指服务器对每个服务请求作出相应的平均时长。
需要说明的是,在并发量较小时,服务器的平均响应时间也很小;在并发量较大时,会使得服务器的开销增大,从而严重影响服务器的平均响应时间。因此,根据每秒查询率与并发量、平均响应时间的关系,可以确定在并发量较小时,每秒查询率也较小,并随着并发量的增大而增大;但是,在并发量超过一定数量时,平均响应时间也显著延长,因此每秒查询率会随着并发量继续增大而逐渐降低。因此,在本申请实施例一种可能的实现形式中,可以预设每秒查询率的第一阈值,并根据网络服务器当前的每秒查询率与第一阈值的关系,确定网络服务器当前对服务请求的处理方式。
具体的,在网络服务器当前的每秒查询率大于第一阈值时,控制网络服务器切换至协程数量限制处理模式,即在每秒查询率达到峰值并下降之前,提前对协程的数量进行控制,以防止网络服务器的并发量过大,影响网络服务器的运行效率;在网络服务器当前的每秒查询率小于第一阈值时,可以确定网络服务器当前的并发量较小,可以继续为服务请求分配新的协程,而不会增加网络服务器的开销,即每获取到一个服务请求,便增加一个新的协程,并将获取到的服务请求分配给新的协程。
需要说明的是,实际使用时,第一阈值可以根据网络服务器的实际性能以及实际需要预设,本申请实施例对此不做限定。
步骤102,所述网络服务器若监听到第一协程进入空闲状态,则根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求。
在本申请实施例中,网络服务器在获取到服务请求之后,则将获取到的服务请求依次放入服务请求队列中。需要说明的是,在网络服务器进入协程数量限制模式之后,服务请求队列中的服务请求的数量通常大于预设的协程的数量,因此,网络服务器可以实时对空闲协程队列进行监听,以确定当前是否有协程处理完服务请求,进入空闲状态,并在网络服务器监听到第一协程进入空闲状态时,根据服务请求队列中的各服务请求的获取时间,将最先获取到的服务请求,确定为当前待分配的目标服务请求。
步骤103,所述网络服务器将所述目标服务请求,分配给所述第一协程,以使所述第一协程响应所述目标服务请求。
在本申请实施例中,在确定出当前待分配的目标服务请求之后,即可以将目标服务请求,分配给当前进入空闲状态的第一协程,以使第一协程响应目标服务请求。
如图2所示,为本申请实施例所提供的一种服务请求处理模型设计架构图。如图2所示,网络服务器在获取到服务请求时,首先将服务请求打入服务请求队列,并实时对空闲协程队列进行监听,以确定当前是否有进入空闲状态的第一协程,并在监听到第一协程进入空闲状态时,将最先获取到的服务请求确定为目标服务请求确定为目标服务请求,进而通过协程调度将目标服务请求分配给第一协程,即将目标服务请求转到第一协程内部的协程工作队列中。其中,协程工作队列中的每个协程都会对监听自己的队列是否有新的服务请求需要处理,并在监听到新的服务请求时,根据新的服务请求执行相应的业务逻辑。因此,第一协程在监听到目标服务请求时,即可以根据目标服务请求执行相应的业务逻辑,以响应目标服务请求。第一协程在执行完与目标服务请求相应的业务逻辑之后,网络服务器可以将第一协程重新推送至空闲协程队列,以将其他服务请求分配给第一协程。
本申请实施例提供的服务请求处理方法,可以通过网络服务器监听当前是否有协程进入空闲状态,并在监听到第一协程进入空闲状态时,根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求,进而将目标服务请求,分配给第一协程,以使第一协程响应目标服务请求。由此,通过将处于空闲状态的协程依次分配给服务请求队列中的各服务请求,来控制网络服务器中协程的数量,从而避免了服务器的处理效率降低甚至崩溃,提高了网络服务的稳定性,改善了用户体验。
在本申请一种可能的实现形式中,可以根据网络服务器当前的每秒查询率与配置信息,确定当前可用的协程数量以及服务请求队列中当前可容纳的服务请求的数量,并根据网络服务器的实际运行情况,实时调整当前可用的协程数量以及服务请求队列中当前可容纳的服务请求的数量。
下面结合图3,对本申请实施例提供的服务请求处理方法进行进一步说明。
图3为本申请实施例所提供的另一种服务请求处理方法的流程示意图。
如图3所示,该服务请求处理方法,包括以下步骤:
步骤301,根据所述当前的每秒查询率及所述网络服务器的配置信息,确定当前的可用协程数量。
需要说明的是,网络服务器的配置信息,可以反映出网络服务器的性能,比如,网络服务器可以支持的可用协程数量的最大值。但是,若处于工作状态的协程数量达到网络服务器的最大值,则会使得网络服务器的平均响应时间显著提高,从而降低服务器的处理效率和稳定性。另外,网络服务器当前的每秒查询率可以反映出网络服务器当前的运行状态,以及当前服务请求的数量。具体的,若网络服务器当前的每秒查询率较大,则可以确定网络服务器当前的运行状态良好且并发量较大(即当前待处理以及正在处理的服务请求较多);若网络服务器当前的每秒查询率较小,则可以确定网络服务器当前的运行状态较差(即当前的并发量过大,使得网络服务器的平均响应时间显著增加),或者当前待处理以及正在处理的服务请求较少。因此,可以将当前的可用协程数量确定为较大的值,以尽快处理较多的服务请求
在本申请实施例一种可能的实现形式中,可以首先根据网络服务器的配置信息,确定出网络服务器可以支持的可用协程数量的最大值,之后根据网络服务器当前的每秒查询率,在可用协程数量的最大值范围内,确定当前的可用协程数量。具体的,若网络服务器当前的每秒查询率较大,即网络服务器当前的运行状态良好且并发量较大(即当前待处理以及正在处理的服务请求较多),则可以将当前的可用协程数量确定为较大的值,以使网络服务器可以尽快响应各服务请求,并且不会降低网络服务器的处理效率;若网络服务器当前的每秒查询率较小,则可以确定网络服务器当前的运行状态较差(即当前的并发量过大,使得网络服务器的平均响应时间显著增加),或者当前待处理以及正在处理的服务请求较少,则可以将当前的可用协程数量确定为较小的值,以降低网络服务器当前的并发量,提高网络服务器的处理效率。
步骤302,根据所述当前的每秒查询率,确定所述服务请求队列当前可容纳的服务请求的数量。
需要说明的是,网络服务器中服务请求队列可容纳的服务请求的数量,一般是人为设置的,没有数量限制。但是,服务请求队列可容纳的服务请求的数量设置的不合理,也会对网络服务器的运行造成不良的影响。比如,若服务请求队列可容纳的服务请求的数量设置为过大的值,则会导致网络服务器获取并放入服务请求队列中的服务请求的数量过多,而当前的可用协程数量无法与过多的服务请求相适应,从而导致无法及时响应服务请求队列中大量的服务请求;若服务请求队列可容纳的服务请求的数量设置为过小的值,则会导致服务请求数量较多时,无法及时获取到用户发送的服务请求,从而导致大量服务请求无法成功放入服务请求队列,即无法响应后续获取到的服务请求,导致服务请求响应失败。
在本申请实施例一种可能的实现形式中,由于网络服务器当前的每秒查询率可以反映出网络服务器当前的运行状态以及当前服务请求的数量,因此,可以根据网络服务器当前的每秒查询率,确定服务请求队列当前可容纳的服务请求数量,以使网络服务器可以及时获取到用户发送的服务请求,并使得服务请求队列中服务请求的数量与预设的可用协程数量相匹配,从而可以及时响应服务请求队列中的各服务请求。
举例来说,网络服务器当前的每秒查询率为10万,则可以将服务请求队列当前可容纳的服务请求的数量,确定为10万、20万等。
需要说明的是,实际使用时,可以根据当前的每秒查询率以及实际需要,将服务请求队列可容纳的服务请求的数量,确定为合适的值,本申请实施例对此不做限定。
步骤303,将获取的服务请求添加至所述服务请求队列中。
在本申请实施例中,在确定出服务请求队列当前可容纳的服务请求数量之后,即可在获取到服务请求时,将获取到的服务请求添加至服务请求队列中。
进一步的,在将获取的服务请求添加至服务请求队列中之前,还需要确定服务队列当前是否还可以接收服务请求。即在本申请实施例一种可能的实现形式中,上述步骤303之前,还可以包括:
确定所述服务请求队列中已包含的服务请求的数量小于所述服务请求队列当前可容纳的服务请求的数量。
可以理解的是,若服务请求队列中已包含的服务请求的数量小于服务请求队列当前可容纳的服务请求的数量,则可以确定服务请求队列当前还可以接收新的服务请求,因此,可以将获取的服务请求添加至服务请求队列中。
进一步的,若服务请求队列中已包含的服务请求的数量与服务请求队列当前可容纳的服务请求的数量相同,即服务请求队列当前无法继续接收新的服务请求,则可以根据网络服务器当前的运行状态以及协程的状态,确定对获取的服务请求的处理方式。即在本申请实施例一种可能的实现形式中,上述步骤303之前,还可以包括:
判断所述服务请求队列中已包含的服务请求的数量,是否与所述服务请求队列当前可容纳的服务请求的数量相同;
若是,则在预设时间段内监听是否有协程进入空闲状态;
若所述网络服务器若在预设时间段内监听到第二协程进入空闲状态,则在将所述服务请求队列中的一个服务请求分配给所述第二协程后,将新获取的服务请求添加至所述服务请求队列。
若所述网络服务器若在预设时间段内未监听到协程进入空闲状态,则判断所述网络服务器当前的资源利用率是否大于第二阈值;
若否,则增加所述当前的可用协程数量。
需要说明的是,在确定服务队列中已包含的服务请求的数量与服务请求队列当前可容纳的服务请求的数量相同时,可以在预设时间段内继续监听是否有协程进入空闲状态,若在预设时间段内监听到第二协程进入空闲状态,即可以根据服务请求队列中各服务请求的获取时间,将服务请求队列中最先获取到的服务请求,分配给第二协程,进而将新获取到的服务请求添加至服务请求队列。
其中,预设的时间段为较小的值,比如1秒、3秒等。需要说明的是,预设时间段的目的为在服务请求队列已满时,暂时等待协程处理完服务请求进入空闲状态,将服务队列中最先获取到的服务请求分配给进入空闲状态的第二协程,进而使得可以将获取的新的服务请求添加至服务请求队列。因此,预设的时间段为较小的值,以避免长时间的等待导致网络服务器获取的大量新的服务请求无法添加至服务请求队列,导致获取的服务请求响应失败。实际使用时,预设的时间段可以根据实际需要预设,本申请实施例对此不做限定。
需要说明的是,若网络服务器在预设时间段内未监听到有协程进入空闲状态,则根据预设的第二阈值,判断网络服务器当前的资源利用率是否大于第二阈值。若网络服务器当前的资源利用率小于第二阈值,则可以确定网络服务器当前的运行状况良好,可以适当增加当前的可用协程数量,以使得当前的可用协程数量与当前服务队列中服务请求的数量相匹配,并将服务队列中最先获取到的服务请求依次分配给增加的协程,进而将获取的新的服务请求添加至服务请求队列。
实际使用时,可以根据网络服务器的配置信息以及实际需要,预设第二阈值,本申请实施例对此不做限定。
进一步的,若网络服务器当前的资源利用率大于第二阈值,则可以调整服务队列当前可容纳的服务请求的数量,以将获取的新的服务请求添加至服务请求队列。即在本申请实施例一种可能的实现形式中,判断所述网络服务器当前的资源利用率是否大于第二阈值之后,还包括:
若是,则增加所述服务请求队列当前可容纳的服务请求的数量。
需要说明的是,若网络服务器当前的资源利用率大于第二阈值,则可以确定网络服务器当前的运行负荷较重,继续增加可用协程数量,会进一步降低网络服务器的处理效率,甚至导致网络服务器崩溃。因此,若网络服务器在预设时间段内未监听到有协程进入空闲状态,并且网络服务器当前的资利用率大于第二阈值,则可以增加服务请求队列中当前可容纳的服务请求的数量,以将获取的新的服务请求添加至服务请求队列。
步骤304,网络服务器监听当前是否有协程进入空闲状态。
步骤305,所述网络服务器若监听到第一协程进入空闲状态,则根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求。
步骤306,所述网络服务器将所述目标服务请求,分配给所述第一协程,以使所述第一协程响应所述目标服务请求。
上述步骤304-306的具体实现过程及原理,可以参照上述实施例的详细描述,此处不再赘述。
本申请实施例提供的服务请求处理方法,网络服务器可以根据当前的每秒查询率及网络服务器的配置信息,确定当前的可用协程数量,并根据当前的每秒查询率,确定服务请求队列当前可容纳的服务请求的数量,之后将获取的服务请求添加至服务请求队列中,进而在监听到第一协程进入空闲状态时,根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求,并将目标服务请求,分配给第一协程,以使第一协程响应目标服务请求。由此,通过根据网络服务器的配置信息以及实时运行状态,动态调整网络服务器可用协程数量以及服务请求队列可容纳的服务请求的数量,从而使得网络服务器可以根据服务请求的数量始终保持在较佳的运行状态,进一步提高了服务器的处理效率和网络服务的稳定性,改善了用户体验。
为了实现上述实施例,本申请还提出一种服务请求处理装置。
图4为本申请实施例提供的一种服务请求处理装置的结构示意图。
如图4所示,该服务请求处理装置40,包括:
第一监听模块41,用于网络服务器监听当前是否有协程进入空闲状态;
第一确定模块42,用于所述网络服务器若监听到第一协程进入空闲状态,则根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求;
分配模块43,用于所述网络服务器将所述目标服务请求,分配给所述第一协程,以使所述第一协程响应所述目标服务请求。
在实际使用时,本申请实施例提供的服务请求处理装置,可以被配置在任意电子设备中,以执行前述服务请求处理方法。
本申请实施例提供的服务请求处理装置,可以通过网络服务器监听当前是否有协程进入空闲状态,并在监听到第一协程进入空闲状态时,根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求,进而将目标服务请求,分配给第一协程,以使第一协程响应目标服务请求。由此,通过将处于空闲状态的协程依次分配给服务请求队列中的各服务请求,来控制网络服务器中协程的数量,从而避免了服务器的处理效率降低甚至崩溃,提高了网络服务的稳定性,改善了用户体验。
在本申请一种可能的实现形式中,上述服务请求处理装置40,还包括:
第一判断模块,用于所述网络服务器判断当前的每秒查询率是否大于第一阈值;
切换模块,用于若是,则控制所述网络服务器切换至协程数量限制处理模式。
进一步的,在本申请另一种可能的实现形式中,上述服务请求处理装置40,还包括:
第二确定模块,用于根据所述当前的每秒查询率及所述网络服务器的配置信息,确定当前的可用协程数量。
进一步的,在本申请再一种可能的实现形式中,上述服务请求处理装置40,还包括:
第三确定模块,用于根据所述当前的每秒查询率,确定所述服务请求队列当前可容纳的服务请求的数量;
添加模块,用于将获取的服务请求添加至所述服务请求队列中。
进一步的,在本申请又一种可能的实现形式中,上述服务请求处理装置40,还包括:
第四确定模块,用于确定所述服务请求队列中已包含的服务请求的数量小于所述服务请求队列当前可容纳的服务请求的数量。
进一步的,在本申请又一种可能的实现形式中,上述服务请求处理装置40,还包括:
第二判断模块,用于判断所述服务请求队列中已包含的服务请求的数量,是否与所述服务请求队列当前可容纳的服务请求的数量相同;
第二监听模块,用于若是,则在预设时间段内监听是否有协程进入空闲状态;
第三判断模块,用于所述网络服务器若在预设时间段内未监听到协程进入空闲状态,则判断所述网络服务器当前的资源利用率是否大于第二阈值;
第一增加模块,用于若否,则增加所述当前的可用协程数量。
相应的,上述服务请求处理装置40,还包括:
处理模块,用于所述网络服务器若在预设时间段内监听到第二协程进入空闲状态,则在将所述服务请求队列中的一个服务请求分配给所述第二协程后,将新获取的服务请求添加至所述服务请求队列。
相应的,上述服务请求处理装置40,还包括:
第二增加模块,用于若所述网络服务器当前的资源利用率大于第二阈值,则增加所述服务请求队列当前可容纳的服务请求的数量。
需要说明的是,前述对图1、图3所示的服务请求处理方法实施例的解释说明也适用于该实施例的服务请求处理装置40,此处不再赘述。
本申请实施例提供的服务请求处理装置,网络服务器可以根据当前的每秒查询率及网络服务器的配置信息,确定当前的可用协程数量,并根据当前的每秒查询率,确定服务请求队列当前可容纳的服务请求的数量,之后将获取的服务请求添加至服务请求队列中,进而在监听到第一协程进入空闲状态时,根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求,并将目标服务请求,分配给第一协程,以使第一协程响应目标服务请求。由此,通过根据网络服务器的配置信息以及实时运行状态,动态调整网络服务器可用协程数量以及服务请求队列可容纳的服务请求的数量,从而使得网络服务器可以根据服务请求的数量始终保持在较佳的运行状态,进一步提高了服务器的处理效率和网络服务的稳定性,改善了用户体验。
为了实现上述实施例,本申请还提出一种电子设备。
图5为本发明一个实施例的电子设备的结构示意图。
如图5所示,上述电子设备200包括:
存储器210及处理器220,连接不同组件(包括存储器210和处理器220)的总线230,存储器210存储有计算机程序,当处理器220执行所述程序时实现本申请实施例所述的服务请求处理方法。
总线230表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备200典型地包括多种电子设备可读介质。这些介质可以是任何能够被电子设备200访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器210还可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)240和/或高速缓存存储器250。电子设备200可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统260可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线230相连。存储器210可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块270的程序/实用工具280,可以存储在例如存储器210中,这样的程序模块270包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块270通常执行本申请所描述的实施例中的功能和/或方法。
电子设备200也可以与一个或多个外部设备290(例如键盘、指向设备、显示器291等)通信,还可与一个或者多个使得用户能与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口292进行。并且,电子设备200还可以通过网络适配器293与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器293通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器220通过运行存储在存储器210中的程序,从而执行各种功能应用以及数据处理。
需要说明的是,本实施例的电子设备的实施过程和技术原理参见前述对本申请实施例的服务请求处理方法的解释说明,此处不再赘述。
本申请实施例提供的电子设备,可以执行如前所述的服务请求处理方法,通过网络服务器监听当前是否有协程进入空闲状态,并在监听到第一协程进入空闲状态时,根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求,进而将目标服务请求,分配给第一协程,以使第一协程响应目标服务请求。由此,通过将处于空闲状态的协程依次分配给服务请求队列中的各服务请求,来控制网络服务器中协程的数量,从而避免了服务器的处理效率降低甚至崩溃,提高了网络服务的稳定性,改善了用户体验。
为了实现上述实施例,本申请还提出一种计算机可读存储介质。
其中,该计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,以实现本申请实施例所述的服务请求处理方法。
为了实现上述实施例,本申请再一方面实施例提供一种计算机程序,该程序被处理器执行时,以实现本申请实施例所述的服务请求处理方法。
一种可选实现形式中,本实施例可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户电子设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务器上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种服务请求处理方法,其特征在于,包括:
网络服务器监听当前是否有协程进入空闲状态;
所述网络服务器若监听到第一协程进入空闲状态,则根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求;
所述网络服务器将所述目标服务请求,分配给所述第一协程,以使所述第一协程响应所述目标服务请求;所述第一协程响应所述目标服务请求包括:将目标服务请求转到第一协程内部的协程工作队列中; 其中,协程工作队列中的每个协程都会对监听自己的队列新的服务请求进行处理,
所述网络服务器监听当前是否有协程进入空闲状态之前,还包括:
所述网络服务器判断当前的每秒查询率是否大于第一阈值;
若是,则控制所述网络服务器切换至协程数量限制处理模式。
2.如权利要求1所述的方法,其特征在于,所述控制所述网络服务器切换至协程数量限制处理模式之后,还包括:
根据所述当前的每秒查询率及所述网络服务器的配置信息,确定当前的可用协程数量。
3.如权利要求1或2所述的方法,其特征在于,所述控制所述网络服务器切换至协程数量限制处理模式之后,还包括:
根据所述当前的每秒查询率,确定所述服务请求队列当前可容纳的服务请求的数量;
将获取的服务请求添加至所述服务请求队列中。
4.如权利要求3所述的方法,其特征在于,所述将获取的服务请求添加至所述服务请求队列中之前,还包括:
确定所述服务请求队列中已包含的服务请求的数量小于所述服务请求队列当前可容纳的服务请求的数量。
5.如权利要求3所述的方法,其特征在于,所述确定所述服务请求队列当前可容纳的服务请求的数量之后,还包括:
判断所述服务请求队列中已包含的服务请求的数量,是否与所述服务请求队列当前可容纳的服务请求的数量相同;
若是,则在预设时间段内监听是否有协程进入空闲状态;
所述网络服务器若在预设时间段内未监听到协程进入空闲状态,则判断所述网络服务器当前的资源利用率是否大于第二阈值;
若否,则增加所述当前的可用协程数量。
6.如权利要求5所述的方法,其特征在于,所述在预设时间段内监听是否有协程进入空闲状态之后,还包括:
所述网络服务器若在预设时间段内监听到第二协程进入空闲状态,则在将所述服务请求队列中的一个服务请求分配给所述第二协程后,将新获取的服务请求添加至所述服务请求队列。
7.如权利要求5或6所述的方法,其特征在于,所述判断所述网络服务器当前的资源利用率是否大于第二阈值之后,还包括:
若是,则增加所述服务请求队列当前可容纳的服务请求的数量。
8.一种服务请求处理装置,其特征在于,包括:
监听模块,用于网络服务器监听当前是否有协程进入空闲状态;
确定模块,用于所述网络服务器若监听到第一协程进入空闲状态,则根据服务请求队列中各服务请求的获取时间,确定当前待分配的目标服务请求;
分配模块,用于所述网络服务器将所述目标服务请求,分配给所述第一协程,以使所述第一协程响应所述目标服务请求;所述第一协程响应所述目标服务请求包括:将目标服务请求转到第一协程内部的协程工作队列中; 其中,协程工作队列中的每个协程都会对监听自己的队列新的服务请求进行处理;
还包括:
第一判断模块,用于所述网络服务器判断当前的每秒查询率是否大于第一阈值;
切换模块,用于若是,则控制所述网络服务器切换至协程数量限制处理模式。
9.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一所述的服务请求处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的服务请求处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811549175.2A CN109451051B (zh) | 2018-12-18 | 2018-12-18 | 服务请求处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811549175.2A CN109451051B (zh) | 2018-12-18 | 2018-12-18 | 服务请求处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109451051A CN109451051A (zh) | 2019-03-08 |
CN109451051B true CN109451051B (zh) | 2021-11-02 |
Family
ID=65559053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811549175.2A Active CN109451051B (zh) | 2018-12-18 | 2018-12-18 | 服务请求处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109451051B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112104679B (zh) * | 2019-06-17 | 2024-04-16 | 北京京东尚科信息技术有限公司 | 处理超文本传输协议请求的方法、装置、设备和介质 |
CN111078436B (zh) * | 2019-12-18 | 2023-04-07 | 上海金仕达软件科技股份有限公司 | 数据处理的方法、装置、设备及存储介质 |
CN111277626B (zh) * | 2020-01-07 | 2023-08-22 | 平安科技(深圳)有限公司 | 服务器升级方法、装置、电子设备及介质 |
CN112395049A (zh) * | 2020-11-30 | 2021-02-23 | 深信服科技股份有限公司 | 一种业务服务器调用方法、系统、设备及存储介质 |
CN113114737B (zh) * | 2021-03-25 | 2022-11-22 | 北京达佳互联信息技术有限公司 | 信息的发送方法、装置及服务器 |
CN113271265B (zh) * | 2021-05-25 | 2022-11-08 | 中国信息安全测评中心 | 一种请求队列动态调整方法与相关设备 |
CN113360348B (zh) * | 2021-06-30 | 2022-09-09 | 北京字节跳动网络技术有限公司 | 异常请求处理方法、装置、电子设备和存储介质 |
CN113835911B (zh) * | 2021-11-23 | 2022-03-01 | 深圳市明源云科技有限公司 | 内网穿透代理方法、系统、主机及计算机可读存储介质 |
CN114584500B (zh) * | 2022-02-25 | 2024-03-22 | 网易(杭州)网络有限公司 | 异步通信的测试方法、装置及电子设备 |
CN115987652B (zh) * | 2022-12-27 | 2023-11-03 | 北京深盾科技股份有限公司 | 一种账号管理方法、系统、设备及计算机存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1788486A2 (en) * | 2005-11-18 | 2007-05-23 | Sap Ag | Cooperative scheduling using coroutines and threads |
CN102541659A (zh) * | 2011-12-30 | 2012-07-04 | 重庆新媒农信科技有限公司 | 一种服务器业务请求处理方法和装置 |
CN102779062A (zh) * | 2011-05-09 | 2012-11-14 | 阿里巴巴集团控股有限公司 | 一种访问系统资源的线程数量的控制方法及装置 |
CN105760237A (zh) * | 2016-02-05 | 2016-07-13 | 南京贝伦思网络科技股份有限公司 | 一种基于协程机制的通讯方法 |
CN106656863A (zh) * | 2016-12-31 | 2017-05-10 | 广东欧珀移动通信有限公司 | 业务监控方法、装置和计算机设备 |
CN107220033A (zh) * | 2017-07-05 | 2017-09-29 | 百度在线网络技术(北京)有限公司 | 用于控制线程池中线程数量的方法和装置 |
CN108924213A (zh) * | 2018-06-27 | 2018-11-30 | 北京金山安全软件有限公司 | 一种服务器的qps控制方法、装置及电子设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10747511B2 (en) * | 2015-04-28 | 2020-08-18 | Microsoft Technology Licensing, Llc | Compiler optimization of coroutines |
CN106844017B (zh) * | 2015-12-03 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 用于网站服务器处理事件的方法和设备 |
CN106980546B (zh) * | 2016-01-18 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 一种任务异步执行方法、装置及系统 |
CN107465709B (zh) * | 2016-06-03 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 分布式镜像构建任务方法及装置、系统 |
CN107743137B (zh) * | 2016-09-27 | 2020-03-17 | 腾讯科技(深圳)有限公司 | 一种文件上传方法及装置 |
CN107766730A (zh) * | 2017-09-18 | 2018-03-06 | 北京知道未来信息技术有限公司 | 一种针对大规模目标进行漏洞预警的方法 |
-
2018
- 2018-12-18 CN CN201811549175.2A patent/CN109451051B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1788486A2 (en) * | 2005-11-18 | 2007-05-23 | Sap Ag | Cooperative scheduling using coroutines and threads |
CN102779062A (zh) * | 2011-05-09 | 2012-11-14 | 阿里巴巴集团控股有限公司 | 一种访问系统资源的线程数量的控制方法及装置 |
CN102541659A (zh) * | 2011-12-30 | 2012-07-04 | 重庆新媒农信科技有限公司 | 一种服务器业务请求处理方法和装置 |
CN105760237A (zh) * | 2016-02-05 | 2016-07-13 | 南京贝伦思网络科技股份有限公司 | 一种基于协程机制的通讯方法 |
CN106656863A (zh) * | 2016-12-31 | 2017-05-10 | 广东欧珀移动通信有限公司 | 业务监控方法、装置和计算机设备 |
CN107220033A (zh) * | 2017-07-05 | 2017-09-29 | 百度在线网络技术(北京)有限公司 | 用于控制线程池中线程数量的方法和装置 |
CN108924213A (zh) * | 2018-06-27 | 2018-11-30 | 北京金山安全软件有限公司 | 一种服务器的qps控制方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109451051A (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109451051B (zh) | 服务请求处理方法、装置、电子设备及存储介质 | |
CN108848039B (zh) | 服务器、消息分配的方法及存储介质 | |
EP1750200A2 (en) | System and method for executing job step, and computer product | |
JP2001331333A (ja) | 計算機システム及び計算機システムの制御方法 | |
CN108829512B (zh) | 一种云中心硬件加速计算力的分配方法、系统和云中心 | |
CN109376011B (zh) | 虚拟化系统中管理资源的方法和装置 | |
US9106483B2 (en) | Systems and methods for serving applications in an application server environment | |
CN106897299B (zh) | 一种数据库访问方法及装置 | |
US20110173319A1 (en) | Apparatus and method for operating server using virtualization technique | |
CN110795284B (zh) | 一种数据恢复方法、装置、设备及可读存储介质 | |
CN111338779B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN113849312A (zh) | 数据处理任务的分配方法、装置、电子设备及存储介质 | |
CN114155026A (zh) | 一种资源分配方法、装置、服务器及存储介质 | |
CN111679911A (zh) | 云环境中gpu卡的管理方法、装置、设备及介质 | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
KR20150007698A (ko) | 가상 데스크탑 서비스를 위한 부하 분산 시스템 | |
CN110659131B (zh) | 任务处理方法、电子装置、计算机设备及存储介质 | |
CN110336888B (zh) | 一种服务器分配方法、装置、系统及介质 | |
CN114721818A (zh) | 一种基于Kubernetes集群的GPU分时共享方法和系统 | |
CN112463361A (zh) | 一种分布式计算的弹性资源分配的方法和设备 | |
CN111625344B (zh) | 应用系统中的资源调度系统、方法及装置 | |
CN115098272A (zh) | Gpu资源调度方法、调度器、电子设备和存储介质 | |
CN102200928A (zh) | 计算资源控制设备和计算资源控制方法 | |
CN113656161A (zh) | 一种性能测试中压力产生服务的调度方法、装置和系统 | |
CN111813541B (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 |