CN109634738A - 基于微服务的异步处理方法、服务器、存储介质及装置 - Google Patents
基于微服务的异步处理方法、服务器、存储介质及装置 Download PDFInfo
- Publication number
- CN109634738A CN109634738A CN201811226133.5A CN201811226133A CN109634738A CN 109634738 A CN109634738 A CN 109634738A CN 201811226133 A CN201811226133 A CN 201811226133A CN 109634738 A CN109634738 A CN 109634738A
- Authority
- CN
- China
- Prior art keywords
- default
- thread
- default thread
- micro services
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 46
- 230000004044 response Effects 0.000 claims abstract description 101
- 238000000034 method Methods 0.000 claims abstract description 90
- 230000008569 process Effects 0.000 claims abstract description 90
- 238000012546 transfer Methods 0.000 claims description 15
- 230000005540 biological transmission Effects 0.000 claims description 13
- 238000000605 extraction Methods 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 23
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000001035 drying Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了基于微服务的异步处理方法、服务器、存储介质及装置。本发明中在接收到业务请求时,在预设微服务接入框架中确定处理业务请求的预设线程池;从预设线程池中调取第一预设线程,并通过第一预设线程从业务请求中提取请求信息;将请求信息传递至第二预设线程,并将第一预设线程返回预设线程池中;通过第二预设线程对请求信息进行业务响应,以实现对于业务请求的异步处理。明显地,将把业务请求的完整处理过程分割开,将信息提取步骤交付于第一预设线程,将信息响应步骤交付于第二预设线程,也就相当于在预设微服务接入框架中添加了异步处理的操作逻辑。所以,可认为,解决了无法异步处理业务请求的技术问题。
Description
技术领域
本发明涉及微服务技术领域,尤其涉及基于微服务的异步处理方法、服务器、存储介质及装置。
背景技术
Spring Cloud项目是一种基于Spring Boot库集合的微服务框架,而该微服务框架又可进行进一步地细分,比如,Spring Cloud项目中还包括Spring Cloud zuul子项目以及Spring Cloud Bus子项目等。其中,Spring Cloud zuul子项目主要用于充当微服务框架中的网关角色,可承载各种类型的业务请求的接入。
但是,若在业务系统的实际开发过程中基于Spring Cloud zuul子项目来接入业务请求,由于其缺乏异步处理的操作逻辑,将导致无法实现业务请求的异步处理,这最终将造成一定的性能瓶颈。
所以,可认为,存在无法异步处理业务请求的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供基于微服务的异步处理方法、服务器、存储介质及装置,旨在解决无法异步处理业务请求的技术问题。
为实现上述目的,本发明提供一种基于微服务的异步处理方法,所述基于微服务的异步处理方法包括以下步骤:
在接收到客户端发送的业务请求时,在预设微服务接入框架中确定处理所述业务请求的预设线程池;
从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息;
将所述请求信息传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中;
通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
优选地,所述从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息之后,所述基于微服务的异步处理方法还包括:
创建请求类型对象,并将所述请求信息写入所述请求类型对象中;
所述将所述请求信息传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中,包括:
将所述请求类型对象传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中;
所述通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理,包括:
通过所述第二预设线程从所述请求类型对象中读取所述请求信息并对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
优选地,所述通过所述第二预设线程从所述请求类型对象中读取所述请求信息并对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理之后,所述基于微服务的异步处理方法还包括:
创建响应类型对象,并将所述响应信息写入所述响应类型对象;
将所述响应类型对象传递至所述客户端,以使所述客户端从所述响应类型对象中获取所述响应信息。
优选地,所述将所述请求类型对象传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中之前,所述基于微服务的异步处理方法还包括:
从所述预设线程池中调取第二预设线程;
所述创建响应类型对象,并将所述响应信息写入所述响应类型对象之后,所述基于微服务的异步处理方法还包括:
将所述第二预设线程返回所述预设线程池中。
优选地,所述在接收到客户端发送的业务请求时,在预设微服务接入框架中确定处理所述业务请求的预设线程池,包括:
在接收到客户端发送的业务请求时,识别所述业务请求的业务类型;
根据所述业务类型在预设映射关系中查询对应的业务等级,所述预设映射关系中包括所述业务类型与所述业务等级之间的对应关系;
在预设微服务接入框架中根据所述业务等级确定对应的预设线程池。
优选地,所述在预设微服务接入框架中根据所述业务等级确定对应的预设线程池,包括:
在预设微服务接入框架中根据所述业务等级确定对应的预设解析线程池以及预设响应线程池;
所述从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息,包括:
从所述预设解析线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息;
所述从所述预设解析线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息之后,所述基于微服务的异步处理方法还包括:
从所述预设响应线程池中调取第二预设线程。
优选地,所述通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理,包括:
通过所述第二预设线程对所述请求信息进行业务响应;
监测是否生成响应所述请求信息的响应信息;
在监测到所述响应信息时,基于远程过程调用调取与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
此外,为实现上述目的,本发明还提出一种服务器,所述服务器包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于微服务的异步处理程序,所述基于微服务的异步处理程序配置为实现如上文所述的基于微服务的异步处理方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有基于微服务的异步处理程序,所述基于微服务的异步处理程序被处理器执行时实现如上文所述的基于微服务的异步处理方法的步骤。
此外,为实现上述目的,本发明还提出一种基于微服务的异步处理装置,所述基于微服务的异步处理装置包括:
线程池确定模块,用于在接收到客户端发送的业务请求时,在预设微服务接入框架中确定处理所述业务请求的预设线程池;
信息提取模块,用于从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息;
信息传递模块,用于将所述请求信息传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中;
异步处理模块,用于通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
本发明中在接收到业务请求时,将获取第一预设线程与第二预设线程,由第一预设线程进行业务请求的信息提取,由第二预设线程对提取出的信息进行响应,从而实现了业务请求的异步处理。明显地,本发明中将把业务请求的完整处理过程分割开,将信息提取步骤交付于第一预设线程,将信息响应步骤交付于第二预设线程,也就相当于在预设微服务接入框架中添加了异步处理的操作逻辑。所以,可认为,解决了无法异步处理业务请求的技术问题。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的服务器结构示意图;
图2为本发明基于微服务的异步处理方法第一实施例的流程示意图;
图3为本发明基于微服务的异步处理方法第二实施例的流程示意图;
图4为本发明基于微服务的异步处理方法第三实施例的流程示意图;
图5为本发明基于微服务的异步处理装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的服务器结构示意图。
如图1所示,该服务器可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为USB接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于微服务的异步处理程序。
在图1所示的服务器中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接外设;所述服务器通过处理器1001调用存储器1005中存储的基于微服务的异步处理程序,并执行本发明实施例提供的基于微服务的异步处理方法。
基于上述硬件结构,提出本发明基于微服务的异步处理方法的实施例。
参照图2,图2为本发明基于微服务的异步处理方法第一实施例的流程示意图。
在第一实施例中,所述基于微服务的异步处理方法包括以下步骤:
步骤S10:在接收到客户端发送的业务请求时,在预设微服务接入框架中确定处理所述业务请求的预设线程池。
可以理解的是,考虑到若通过Spring Cloud zuul来构建整个微服务框架中的接入框架部分,将导致在接入业务请求时无法实施业务请求的异步处理。这是因为,SpringCloud zuul在处理业务请求时仅使用了单一的线程来完成,若该业务请求的处理过程消耗的计算量较大且处理时间过长,该线程将一直处于阻塞状态,这最终将造成一定的性能瓶颈。
应当理解的是,本实施例为了实现业务请求的异步处理,将区分开请求的解析与请求的响应,并对应地使用不同的线程,使得线程不必一直处于阻塞状态,也就提高了运行效率,在一定程度上缓解了性能瓶颈。
在具体实现中,本实施例的执行主体为服务器。若在该服务器内或者该服务器所处的服务器集群中基于微服务框架来构建业务系统,业务系统的微服务框架可基于其功能性划分为多个子框架,比如,承载请求接入的接入框架以及在微服务框架内传递内部消息的消息队列框架等。
步骤S20:从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息。
可以理解的是,在接收到业务请求时,为了基于不同的线程来处理这一业务请求,将先从预设线程池中调取第一预设线程,而该第一预设线程可用于该请求的解析以便于后续的请求处理但第一预设线程并不处理该请求。其中,线程池是一种多线程的处理方式,通过管理有限的线程可以提高线程的处理效率,降低创建与销毁对象所需的时间。
步骤S30:将所述请求信息传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中。
应当理解的是,在解析出请求信息后,后续的请求处理则可交付于第二预设线程。明显地,由于区分出了进行请求解析的线程以及进行请求响应的线程,当请求解析完后,则可释放该第一预设线程回线程池,从而可规避掉当请求响应时间过久导致的长时间阻塞,无法处理其他请求的解析;同时,线程重复使用也提高了运行效率。
此外,可从预设线程池中调取第一预设线程的同时,也可从预设线程池中调取第二预设线程。
步骤S40:通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
可以理解的是,通过交付于第一预设线程提取信息以及第二预设线程进行业务响应,可将请求的处理进行拆解,从而实现了业务请求的异步处理,同时,也使得线程的运行具有高效性。
本实施例中在接收到业务请求时,将获取第一预设线程与第二预设线程,由第一预设线程进行业务请求的信息提取,由第二预设线程对提取出的信息进行响应,从而实现了业务请求的异步处理。明显地,本实施例中将把业务请求的完整处理过程分割开,将信息提取步骤交付于第一预设线程,将信息响应步骤交付于第二预设线程,也就相当于在预设微服务接入框架中添加了异步处理的操作逻辑。所以,可认为,解决了无法异步处理业务请求的技术问题。
参照图3,图3为本发明基于微服务的异步处理方法第二实施例的流程示意图,基于上述图2所示的第一实施例,提出本发明基于微服务的异步处理方法的第二实施例。
第二实施例中,所述步骤S20之后,所述基于微服务的异步处理方法还包括:
步骤S201:创建请求类型对象,并将所述请求信息写入所述请求类型对象中。
可以理解的是,为了实现对于业务请求的处理,可基于Servlet即Server Applet底层技术来响应各种类型的业务请求。
在具体实现中,考虑到Servlet具有不同的版本且不同版本的功能特性具有较大差别,比如,Servlet 2.0在处理业务请求时,将存在两种类型的对象,即请求类型对象HttpServletRequest以及响应类型对象HttpServletResponse。请求类型对象代表客户端的请求,其中封装有客户端发送的请求中的所有信息,所以,可将请求信息写入请求类型对象中,至于该请求信息包括超文本传输协议(HyperText Transfer Protocol,HTTP)请求头信息以及业务内容等;响应类型对象代表针对业务请求的响应,其中封装有向客户端发送的响应信息,至于该响应信息包括响应头、响应状态码以及业务响应内容等。但是,Servlet2.0中的请求解析、业务处理以及请求响应都是同步进行的,均在同一线程中完成,无法实现异步处理。所以,本实施例中将采用Servlet 3.0,Servlet3.0中的异步模式可适配本实施例中区分第一预设线程以及第二预设线程的操作流程。
所述步骤S30,包括:
步骤S301:将所述请求类型对象传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中。
所述步骤S40,包括:
步骤S401:通过所述第二预设线程从所述请求类型对象中读取所述请求信息并对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
可以理解的是,在获得封装了请求信息的请求类型对象后,将基于请求类型对象中的请求信息进行后续的业务响应。
进一步地,所述通过所述第二预设线程从所述请求类型对象中读取所述请求信息并对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理之后,所述基于微服务的异步处理方法还包括:
创建响应类型对象,并将所述响应信息写入所述响应类型对象;
将所述响应类型对象传递至所述客户端,以使所述客户端从所述响应类型对象中获取所述响应信息。
应当理解的是,为了将响应信息反馈至客户端侧,将启用响应类型对象以实现响应信息的传递。其中,客户端可为个人电脑或平板电脑等可发出业务请求的电子设备,也可为该电子设备中运行的应用程序。
进一步地,所述将所述请求类型对象传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中之前,所述基于微服务的异步处理方法还包括:
从所述预设线程池中调取第二预设线程;
所述创建响应类型对象,并将所述响应信息写入所述响应类型对象之后,所述基于微服务的异步处理方法还包括:
将所述第二预设线程返回所述预设线程池中。
应当理解的是,第二预设线程也可如第一预设线程一样调取自预设线程池中。当在执行完请求的响应操作后,则可释放第二预设线程,以进一步地提升吞吐量。
此外,还可基于NIO模式来对业务请求进行轮询,以判断是否接收到业务请求,以致于能够处理更高的并发连接数。其中,NIO是指java non-blocking IO,是一种应用程序编程接口(Application Programming Interface,API),可进行数据缓存以提供非阻塞式的网络连接。
本实施例中可基于Servlet 3.0创建请求类型对象,同时可基于Servlet 3.0创建响应类型对象,最终不仅可通过上述两种对象来实现业务请求的响应,也可实现对于业务请求的异线程处理。
参照图4,图4为本发明基于微服务的异步处理方法第三实施例的流程示意图,基于上述图2所示的第一实施例,提出本发明基于微服务的异步处理方法的第三实施例。
第三实施例中,所述步骤S10,包括:
步骤S101:在接收到客户端发送的业务请求时,识别所述业务请求的业务类型。
可以理解的是,考虑到业务系统处理的业务请求存在多种类型,可依据业务的重要性对不同的业务进行归类并分级,比如,可将业务类型A与业务类型B分级为第一等级,可将业务类型C与业务类型D分级为第二等级,其中,第一等级的业务较之第二等级的业务更为重要。
应当理解的是,除了业务的分级外,还可对线程池进行对应的划分,比如,可分离出两个互不干扰的线程池,第一线程池与第二线程池。可将第一等级的业务对应第一线程池,将第二等级的业务对应第二线程池,也就实现了当第二等级的业务出现运行障碍或者抖动时,由于第一等级的业务是基于第一线程池来处理的业务,故而,第一等级的业务运行不会受到影响。其中,可根据级别的不同对应地设置不同大小的线程池。
当然,上述对于业务重要性的分级方式以及线程池的分离方式只是为了进行解释,并未将保护范围仅局限于上述表达的内容。此外,还可对线程池进行监控、运维以及降级等处理。
步骤S102:根据所述业务类型在预设映射关系中查询对应的业务等级,所述预设映射关系中包括所述业务类型与所述业务等级之间的对应关系。
步骤S103:在预设微服务接入框架中根据所述业务等级确定对应的预设线程池。
在具体实现中,比如,若发送的业务请求的业务类型为业务类型D,因为归类为第二等级,则将对应第二线程池,将使用第二线程池进行该业务请求的处理。
进一步地,所述在预设微服务接入框架中根据所述业务等级确定对应的预设线程池,包括:
在预设微服务接入框架中根据所述业务等级确定对应的预设解析线程池以及预设响应线程池;
所述从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息,包括:
从所述预设解析线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息;
所述从所述预设解析线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息之后,所述基于微服务的异步处理方法还包括:
从所述预设响应线程池中调取第二预设线程。
可以理解的是,除了可基于业务类型进行线程池的分离外,还可基于请求处理的细分步骤进行线程池的分离。
在具体实现中,可让执行信息提取的线程与执行请求响应的线程进行分离,比如,让执行信息提取的第一预设线程自一线程池中调取,让执行请求响应的第二预设线程自另一线程池中调取,通过分离这两种线程,可以提升业务系统的吞吐量。同时,考虑到信息提取的细分步骤与请求响应的细分步骤的处理内容不同,可对预设解析线程池与预设响应线程池进行差异化配置,比如,可在预设解析线程池中设置更多的线程数,以适配更多的请求并发数。
当然,至于预设解析线程池中线程类型可为Tomcat工作线程,通过异步化地处理请求,可以及时地释放Tomcat工作线程,进而提升吞吐量。其中,Tomcat为一种轻量级应用服务器,可用于处理请求。
进一步地,所述通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理,包括:
通过所述第二预设线程对所述请求信息进行业务响应;
监测是否生成响应所述请求信息的响应信息;
在监测到所述响应信息时,基于远程过程调用调取与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
可以理解的是,考虑到区分第一预设线程与第二预设线程的目的是为了实现对于请求的异步处理,以实现请求与线程池之间的非阻塞。但是,在线程池完成请求的处理后,还可能在获取响应信息的获取过程中出现阻塞问题。为了规避该阻塞问题,可采用远程过程调用(Remote Procedure Call,RPC)来调取该响应信息。
在具体实现中,由于RPC不用一直等待响应信息,而是通过回调的方式来获取响应信息,不仅可释放进行业务响应的第二预设线程,也实现了异步的执行效果,从而规避了该阻塞问题。
进一步地,Dubbo作为一种开源的分布式服务框架可实施RPC,所以,在监测到所述响应信息时,可通过Dubbo框架来调取与所述请求信息对应的响应信息。
此外,考虑到Spring Cloud zuul子项目无法进行文档管理,可额外添加预设API以进行文档管理,从而使得文档易于维护,便于代码的后期维护。
本实施例中可基于业务内容的重要性不同以及请求处理步骤的不同对线程池进行分离,不仅可提高业务的吞吐量并实现业务系统的高可用性,也可隔离不同业务之间的运行影响。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于微服务的异步处理程序,所述基于微服务的异步处理程序被处理器执行时实现如上文所述的基于微服务的异步处理方法的步骤。
此外,参照图5,本发明实施例还提出一种基于微服务的异步处理装置,所述基于微服务的异步处理装置包括:
线程池确定模块10,用于在接收到客户端发送的业务请求时,在预设微服务接入框架中确定处理所述业务请求的预设线程池。
可以理解的是,考虑到若通过Spring Cloud zuul来构建整个微服务框架中的接入框架部分,将导致在接入业务请求时无法实施业务请求的异步处理。这是因为,SpringCloud zuul在处理业务请求时仅使用了单一的线程来完成,若该业务请求的处理过程消耗的计算量较大且处理时间过长,该线程将一直处于阻塞状态,这最终将造成一定的性能瓶颈。
应当理解的是,本实施例为了实现业务请求的异步处理,将区分开请求的解析与请求的响应,并对应地使用不同的线程,使得线程不必一直处于阻塞状态,也就提高了运行效率,在一定程度上缓解了性能瓶颈。
在具体实现中,若基于微服务框架来构建业务系统,业务系统的微服务框架可基于其功能性划分为多个子框架,比如,承载请求接入的接入框架以及在微服务框架内传递内部消息的消息队列框架等。
信息提取模块20,用于从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息。
可以理解的是,在接收到业务请求时,为了基于不同的线程来处理这一业务请求,将先从预设线程池中调取第一预设线程,而该第一预设线程可用于该请求的解析以便于后续的请求处理但第一预设线程并不处理该请求。其中,线程池是一种多线程的处理方式,通过管理有限的线程可以提高线程的处理效率,降低创建与销毁对象所需的时间。
信息传递模块30,用于将所述请求信息传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中。
应当理解的是,在解析出请求信息后,后续的请求处理则可交付于第二预设线程。明显地,由于区分出了进行请求解析的线程以及进行请求响应的线程,当请求解析完后,则可释放该第一预设线程回线程池,从而可规避掉当请求响应时间过久导致的长时间阻塞,无法处理其他请求的解析;同时,线程重复使用也提高了运行效率。
此外,可从预设线程池中调取第一预设线程的同时,也可从预设线程池中调取第二预设线程。
异步处理模块40,用于通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
可以理解的是,通过交付于第一预设线程提取信息以及第二预设线程进行业务响应,可将请求的处理进行拆解,从而实现了业务请求的异步处理,同时,也使得线程的运行具有高效性。
本实施例中在接收到业务请求时,将获取第一预设线程与第二预设线程,由第一预设线程进行业务请求的信息提取,由第二预设线程对提取出的信息进行响应,从而实现了业务请求的异步处理。明显地,本实施例中将把业务请求的完整处理过程分割开,将信息提取步骤交付于第一预设线程,将信息响应步骤交付于第二预设线程,也就相当于在预设微服务接入框架中添加了异步处理的操作逻辑。所以,可认为,解决了无法异步处理业务请求的技术问题。
在一实施例中,所述基于微服务的异步处理装置还包括:
请求对象创建模块,用于创建请求类型对象,并将所述请求信息写入所述请求类型对象中;
所述信息传递模块30,还用于将所述请求类型对象传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中;
所述异步处理模块40,还用于通过所述第二预设线程从所述请求类型对象中读取所述请求信息并对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
在一实施例中,所述基于微服务的异步处理装置还包括:
响应对象创建模块,用于创建响应类型对象,并将所述响应信息写入所述响应类型对象;将所述响应类型对象传递至所述客户端,以使所述客户端从所述响应类型对象中获取所述响应信息。
在一实施例中,所述线程池确定模块10,还用于在接收到客户端发送的业务请求时,识别所述业务请求的业务类型;根据所述业务类型在预设映射关系中查询对应的业务等级,所述预设映射关系中包括所述业务类型与所述业务等级之间的对应关系;在预设微服务接入框架中根据所述业务等级确定对应的预设线程池。
在一实施例中,所述基于微服务的异步处理装置还包括:
第一线程调取模块,用于从所述预设线程池中调取第二预设线程;
线程释放模块,用于将所述第二预设线程返回所述预设线程池中。
在一实施例中,所述基于微服务的异步处理装置还包括:
所述线程池确定模块10,还用于在预设微服务接入框架中根据所述业务等级确定对应的预设解析线程池以及预设响应线程池;
所述信息提取模块20,还用于从所述预设解析线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息;
第二线程调取模块,用于从所述预设响应线程池中调取第二预设线程。
在一实施例中,所述异步处理模块40,还用于通过所述第二预设线程对所述请求信息进行业务响应;监测是否生成响应所述请求信息的响应信息;在监测到所述响应信息时,基于远程过程调用调取与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
本发明所述基于微服务的异步处理装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为名称。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于微服务的异步处理方法,其特征在于,所述基于微服务的异步处理方法包括以下步骤:
在接收到客户端发送的业务请求时,在预设微服务接入框架中确定处理所述业务请求的预设线程池;
从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息;
将所述请求信息传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中;
通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
2.如权利要求1所述的基于微服务的异步处理方法,其特征在于,所述从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息之后,所述基于微服务的异步处理方法还包括:
创建请求类型对象,并将所述请求信息写入所述请求类型对象中;
所述将所述请求信息传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中,包括:
将所述请求类型对象传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中;
所述通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理,包括:
通过所述第二预设线程从所述请求类型对象中读取所述请求信息并对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
3.如权利要求2所述的基于微服务的异步处理方法,其特征在于,所述通过所述第二预设线程从所述请求类型对象中读取所述请求信息并对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理之后,所述基于微服务的异步处理方法还包括:
创建响应类型对象,并将所述响应信息写入所述响应类型对象;
将所述响应类型对象传递至所述客户端,以使所述客户端从所述响应类型对象中获取所述响应信息。
4.如权利要求3所述的基于微服务的异步处理方法,其特征在于,所述将所述请求类型对象传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中之前,所述基于微服务的异步处理方法还包括:
从所述预设线程池中调取第二预设线程;
所述创建响应类型对象,并将所述响应信息写入所述响应类型对象之后,所述基于微服务的异步处理方法还包括:
将所述第二预设线程返回所述预设线程池中。
5.如权利要求1所述的基于微服务的异步处理方法,其特征在于,所述在接收到客户端发送的业务请求时,在预设微服务接入框架中确定处理所述业务请求的预设线程池,包括:
在接收到客户端发送的业务请求时,识别所述业务请求的业务类型;
根据所述业务类型在预设映射关系中查询对应的业务等级,所述预设映射关系中包括所述业务类型与所述业务等级之间的对应关系;
在预设微服务接入框架中根据所述业务等级确定对应的预设线程池。
6.如权利要求5所述的基于微服务的异步处理方法,其特征在于,所述在预设微服务接入框架中根据所述业务等级确定对应的预设线程池,包括:
在预设微服务接入框架中根据所述业务等级确定对应的预设解析线程池以及预设响应线程池;
所述从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息,包括:
从所述预设解析线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息;
所述从所述预设解析线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息之后,所述基于微服务的异步处理方法还包括:
从所述预设响应线程池中调取第二预设线程。
7.如权利要求1所述的基于微服务的异步处理方法,其特征在于,所述通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理,包括:
通过所述第二预设线程对所述请求信息进行业务响应;
监测是否生成响应所述请求信息的响应信息;
在监测到所述响应信息时,基于远程过程调用调取与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
8.一种服务器,其特征在于,所述服务器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行基于微服务的异步处理程序,所述基于微服务的异步处理程序被所述处理器执行时实现如权利要求1至7中任一项所述的基于微服务的异步处理方法的步骤。
9.一种存储介质,其特征在于,所述存储介质上存储有基于微服务的异步处理程序,所述基于微服务的异步处理程序被处理器执行时实现如权利要求1至7中任一项所述的基于微服务的异步处理方法的步骤。
10.一种基于微服务的异步处理装置,其特征在于,所述基于微服务的异步处理装置包括:
线程池确定模块,用于在接收到客户端发送的业务请求时,在预设微服务接入框架中确定处理所述业务请求的预设线程池;
信息提取模块,用于从所述预设线程池中调取第一预设线程,并通过所述第一预设线程从所述业务请求中提取请求信息;
信息传递模块,用于将所述请求信息传递至第二预设线程,并将所述第一预设线程返回所述预设线程池中;
异步处理模块,用于通过所述第二预设线程对所述请求信息进行业务响应,获得与所述请求信息对应的响应信息,以实现对于所述业务请求的异步处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811226133.5A CN109634738A (zh) | 2018-10-19 | 2018-10-19 | 基于微服务的异步处理方法、服务器、存储介质及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811226133.5A CN109634738A (zh) | 2018-10-19 | 2018-10-19 | 基于微服务的异步处理方法、服务器、存储介质及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109634738A true CN109634738A (zh) | 2019-04-16 |
Family
ID=66066477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811226133.5A Pending CN109634738A (zh) | 2018-10-19 | 2018-10-19 | 基于微服务的异步处理方法、服务器、存储介质及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109634738A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110290202A (zh) * | 2019-06-25 | 2019-09-27 | 北京慧眼智行科技有限公司 | 一种业务网关的信息附带方法、装置及相关设备 |
CN110781018A (zh) * | 2019-10-28 | 2020-02-11 | 深圳市思迪信息技术股份有限公司 | 一种分布式系统服务组件隔离限流防雪崩的方法及装置 |
CN111475306A (zh) * | 2020-03-31 | 2020-07-31 | 招商局金融科技有限公司 | 微服务节点、异步任务处理方法、系统和存储介质 |
CN111859082A (zh) * | 2020-05-27 | 2020-10-30 | 伏羲科技(菏泽)有限公司 | 标识解析方法及装置 |
CN112769828A (zh) * | 2021-01-11 | 2021-05-07 | 深圳市洪堡智慧餐饮科技有限公司 | 一种基于sanic异步微服务方法 |
CN113037875A (zh) * | 2021-05-24 | 2021-06-25 | 武汉众邦银行股份有限公司 | 一种分布式实时业务系统中的异步网关的实现方法 |
CN113821415A (zh) * | 2021-11-24 | 2021-12-21 | 飞狐信息技术(天津)有限公司 | 一种程序故障的处理方法及相关装置 |
CN113992755A (zh) * | 2021-10-27 | 2022-01-28 | 中国电信股份有限公司 | 基于微服务网关的请求处理方法、系统、设备及存储介质 |
CN114637679A (zh) * | 2022-03-21 | 2022-06-17 | 平安普惠企业管理有限公司 | 异步接口的测试方法、装置、计算机设备及存储介质 |
CN115361271A (zh) * | 2022-07-27 | 2022-11-18 | 深圳市潮流网络技术有限公司 | Ssh服务器切换与连接方法、云端服务器及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453288A (zh) * | 2016-09-29 | 2017-02-22 | 上海和付信息技术有限公司 | 一种支持异步模式的分布式微服务框架系统及其实现方法 |
CN106506389A (zh) * | 2016-10-19 | 2017-03-15 | 广州华多网络科技有限公司 | 网络请求异步处理方法及装置 |
WO2017049912A1 (zh) * | 2015-09-25 | 2017-03-30 | 中兴通讯股份有限公司 | 一种jslee容器的业务处理方法及系统 |
-
2018
- 2018-10-19 CN CN201811226133.5A patent/CN109634738A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017049912A1 (zh) * | 2015-09-25 | 2017-03-30 | 中兴通讯股份有限公司 | 一种jslee容器的业务处理方法及系统 |
CN106453288A (zh) * | 2016-09-29 | 2017-02-22 | 上海和付信息技术有限公司 | 一种支持异步模式的分布式微服务框架系统及其实现方法 |
CN106506389A (zh) * | 2016-10-19 | 2017-03-15 | 广州华多网络科技有限公司 | 网络请求异步处理方法及装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110290202A (zh) * | 2019-06-25 | 2019-09-27 | 北京慧眼智行科技有限公司 | 一种业务网关的信息附带方法、装置及相关设备 |
CN110781018A (zh) * | 2019-10-28 | 2020-02-11 | 深圳市思迪信息技术股份有限公司 | 一种分布式系统服务组件隔离限流防雪崩的方法及装置 |
CN111475306A (zh) * | 2020-03-31 | 2020-07-31 | 招商局金融科技有限公司 | 微服务节点、异步任务处理方法、系统和存储介质 |
CN111475306B (zh) * | 2020-03-31 | 2023-04-07 | 招商局金融科技有限公司 | 微服务节点、异步任务处理方法、系统和存储介质 |
CN111859082A (zh) * | 2020-05-27 | 2020-10-30 | 伏羲科技(菏泽)有限公司 | 标识解析方法及装置 |
CN112769828A (zh) * | 2021-01-11 | 2021-05-07 | 深圳市洪堡智慧餐饮科技有限公司 | 一种基于sanic异步微服务方法 |
CN113037875B (zh) * | 2021-05-24 | 2021-07-27 | 武汉众邦银行股份有限公司 | 一种分布式实时业务系统中的异步网关的实现方法 |
CN113037875A (zh) * | 2021-05-24 | 2021-06-25 | 武汉众邦银行股份有限公司 | 一种分布式实时业务系统中的异步网关的实现方法 |
CN113992755A (zh) * | 2021-10-27 | 2022-01-28 | 中国电信股份有限公司 | 基于微服务网关的请求处理方法、系统、设备及存储介质 |
CN113992755B (zh) * | 2021-10-27 | 2024-06-28 | 中国电信股份有限公司 | 基于微服务网关的请求处理方法、系统、设备及存储介质 |
CN113821415A (zh) * | 2021-11-24 | 2021-12-21 | 飞狐信息技术(天津)有限公司 | 一种程序故障的处理方法及相关装置 |
CN114637679A (zh) * | 2022-03-21 | 2022-06-17 | 平安普惠企业管理有限公司 | 异步接口的测试方法、装置、计算机设备及存储介质 |
CN115361271A (zh) * | 2022-07-27 | 2022-11-18 | 深圳市潮流网络技术有限公司 | Ssh服务器切换与连接方法、云端服务器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634738A (zh) | 基于微服务的异步处理方法、服务器、存储介质及装置 | |
JP5088234B2 (ja) | メッセージ紐付け処理装置、方法及びプログラム | |
CN103139157B (zh) | 一种基于socket的网络通信方法、装置及系统 | |
CN108256118A (zh) | 数据处理方法、装置、系统、计算设备以及存储介质 | |
CN107193674B (zh) | 在线推送消息的处理方法及装置 | |
CN105068865A (zh) | 任务调度方法和装置 | |
CN110555019B (zh) | 一种基于业务端的数据清洗方法 | |
WO2019201340A1 (zh) | 处理器核心调度方法、装置、终端及存储介质 | |
CN104123265A (zh) | 一种众核间通信方法及系统 | |
CN102523103A (zh) | 一种工业监控网络数据采集结点 | |
CN104239000A (zh) | 用于对用于在应用处理的传入消息定序的计算机系统、计算机实施的方法和计算机程序产品 | |
CN108205477A (zh) | 服务器压力测试方法 | |
CN102571568A (zh) | 任务处理方法及装置 | |
US20170085653A1 (en) | Method, device and system for message distribution | |
CN110177146A (zh) | 一种基于异步事件驱动的非阻塞Restful通信方法、装置和设备 | |
WO2024037110A9 (zh) | 数据处理方法、装置、设备以及介质 | |
CN112988356A (zh) | 异步调用方法、装置、存储介质及电子设备 | |
CN111679911A (zh) | 云环境中gpu卡的管理方法、装置、设备及介质 | |
CN104813610A (zh) | 提供多个内容项目显示在多个设备上 | |
CN113055493B (zh) | 数据包处理方法、装置、系统、调度设备和存储介质 | |
CN104836831B (zh) | 一种用于物联网的物体服务方法 | |
CN104750553B (zh) | 应用运行方法和装置 | |
CN102902593B (zh) | 基于缓存机制的协议分发处理系统 | |
CN115361382B (zh) | 基于数据群组的数据处理方法、装置、设备和存储介质 | |
CN116610530A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190416 |
|
WD01 | Invention patent application deemed withdrawn after publication |