CN111427674A - 一种微服务管理方法、装置及系统 - Google Patents
一种微服务管理方法、装置及系统 Download PDFInfo
- Publication number
- CN111427674A CN111427674A CN202010197134.2A CN202010197134A CN111427674A CN 111427674 A CN111427674 A CN 111427674A CN 202010197134 A CN202010197134 A CN 202010197134A CN 111427674 A CN111427674 A CN 111427674A
- Authority
- CN
- China
- Prior art keywords
- thread
- target
- service
- controller
- service instance
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 26
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000002159 abnormal effect Effects 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims description 8
- 230000005856 abnormality Effects 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 5
- 238000002955 isolation Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 241000700189 Hystrix <Rodentia> Species 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- 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
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/481—Exception handling
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种微服务管理方法、装置及系统。该方法中,在接收到服务请求后,从Tomcat线程池中选择第一线程用于响应该服务请求;根据服务请求所属的业务类型从N个controller线程池中确定目标controller线程池,目标controller线程池包括M个线程;第二线程根据服务请求访问目标服务实例,其中第二线程为目标controller线程池中任一线程;若第二线程在的预设超时时间内访问目标服务实例失败,则将目标服务实例标记为不可用,以使每个线程不再访问目标服务实例。该方案能够避免在目标服务实例异常时,系统不断向该目标实例发送请求,而这些重复的请求将会占用大量的时间与资源。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种微服务管理方法、装置及系统。
背景技术
单一计算机的处理能力已经不能满足我们的需求,于是采用多台计算机形 成分布式系统为用户提供服务。分布式服务系统在对外提供服务的过程中,能 够分解处理压力,提高性能并提高服务的可用性。
图1为示例性的给出了一种分布式系统访问流程示意图,如图所示,在接 收到用户的服务请求后,确定用于响应该服务请求的controller,确定出的 controller根据服务请求向目标服务实例发送访问请求,以获取用户所需数据。 若controller根据服务请求确定向服务实例B发送访问请求以获取相应数据, 而服务实例B发生异常,无法正常响应controller,故controller将重复项 服务实例B发送请求,将会占用大量资源并影响其他业务处理,在高并发情况 下可能会导致资源耗尽进而导致系统崩溃。
发明内容
本申请实施例提供一种微服务管理方法、装置及系统,用于实现全线程隔 离,有助于避免由于一个服务实例异常导致系统雪崩的情况发生。
第一方面,本申请实施例提供了一种微服务管理方法,包括:
接收用户的服务请求;
从Tomcat线程池中选择第一线程用于响应所述服务请求;
根据所述服务请求所属的业务类型从N个controller线程池中确定目标controller线程池,所述目标controller线程池包括M个线程,N、M为大于 等于1的整数;
第二线程根据所述服务请求访问目标服务实例,所述第二线程为所述目标controller线程池中任一线程;
若所述第二线程在的预设超时时间内访问目标服务实例失败,则将所述目 标服务实例标记为不可用,以使所述N个controller线程池中的每个线程不 再访问所述服务实例。
在一种可能的实现方式中,上述方法还包括:
若所述第二线程程序运行故障,且在所述线程池对应的预设超时时间内未 恢复,则释放所述第二线程。
在一种可能的实现方式中,上述方法还包括:
确定所述第二线程异常原因,向用户输出所述异常原因。
在一种可能的实现方式中,确定所述第二线程异常原因,包括:
根据所述第二线程输出的超文本传输协议HTTP消息中包含的异常原因代 码确定异常原因。
在一种可能的实现方式中,所述预设超时时间,为所述目标controller 线程池对应的超时时间,或者,为所述目标controller线程池与所述目标服 务实例对应的超时时间。
在一种可能的实现方式中,所述M的取值根据CPU的数量、CPU的使用率、 所述预设超时时间以及预设的理想消耗时间确定;或者
所述M的取值根据当前负载大小和线程上限值确定;或者
所述M为预设的常数。
在一种可能的实现方式中,在将所述目标服务实例标记为不可用之后,还 包括:
若接收到所述目标服务实例恢复正常的指示信息,将所述目标服务实例标 记为可用。
在一种可能的实现方式中,上述方法还包括:
对所述服务请求的服务过程进行监控;
统计访问目标服务实例的数量和/或访问异常数量。
第二方面,本申请实施例提供一种微服务管理装置,包括:
接收模块,用于接收用户的服务请求;
确定模块,用于从Tomcat线程池中选择第一线程用于响应所述服务请求; 根据所述服务请求所属的业务类型从N个controller线程池中确定目标 controller线程池,所述目标controller线程池包括M个线程,N、M为大于 等于1的整数;第二线程根据所述服务请求访问目标服务实例,所述第二线程 为所述目标controller线程池中任一线程;
管理模块,若所述第二线程在的预设超时时间内访问目标服务实例失败, 用于将所述目标服务实例标记为不可用,以使所述N个controller线程池中 的每个线程不再访问所述目标服务实例。
第三方面,本申请实施例提供一种微服务管理系统,包括:
客户端模块,用于接收用户的服务请求;
网关层模块,用于从Tomcat线程池中选择第一线程用于响应所述服务请 求;根据所述服务请求所属的业务类型从N个controller线程池中确定目标 controller线程池,所述目标controller线程池包括M个线程,N、M为大于 等于1的整数;
控制层模块,用于选择第二线程,所述第二线程根据所述服务请求访问目 标服务实例,所述第二线程为所述目标controller线程池中任一线程;若所 述第二线程在的预设超时时间内访问所述目标服务实例失败,则将所述目标服 务实例标记为不可用,以使所述N个controller线程池中的每个线程不再访 问所述目标服务实例。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读 存储介质存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行 如第一方面中任一项所述方法。
在上述实施例中,对每个服务请求进行线程隔离,并且设置有超时时间, 若在相应的超时时间内访问目标服务实例失败,则将给目标服务实例标记为不 可用,不再向该目标服务实例发送请求。该方案能够避免在目标服务实例异常 时,系统不断向该目标实例发送请求,而这些重复的请求将会占用大量的时间 与资源,如果在高并发的情况下,将会影响其他功能的正常使用,甚至可能导 致耗尽上层服务的资源从而导致上层服务的崩溃。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述 中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付 出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种分布式系统访问流程示意图;
图2为本申请实施例提供的微服务管理方法的流程示意图;
图3为本申请实施例提供的分布式微服务系统示意图之一;
图4为本申请实施例提供的分布式微服务系统示意图之二。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将对本申请的技术方 案进行详细的描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不 是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创 造性劳动的前提下所得到的所有其它实施方式,都属于本申请所保护的范围。
为了避免由于个别服务实例异常导致分布式服务系统中的controller重 复向服务实例发送请求而占用大量资源的情况,本申请实施例提供了一种微服 务管理方法,该方法可以应用于分布式微服务系统中。
参见图2,为本申请实施例提供的微服务管理方法的流程示意图,如图所 示,该方法可以包括以下步骤:
步骤201、接收用户的服务请求。
步骤202、从Tomcat线程池中选择第一线程用于响应该服务请求。
Tomcat是一个万维网应用服务器,运行在主服务器中,属于轻量级应用服 务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用。Tomcat 位于应用程序接口(ApplicationProgrammingInterface,API)层,Tomcat 线程池中包括若干个线程,每个线程可以用于处理一个服务请求。本申请对 Tomcat线程池中线程的数量不进行限定,可以根据分布式微服务系统的性能、 业务量大小、硬件环境等进行设置。
在从Tomcat线程池的若干线程中选择出用于为当前接收到的服务请求的 第一线程时,可以根据该线程池中的各线程的占用情况、等待队列中代处理请 求的数量等因素进行选择;还可以创建新的线程,并将新的线程作为上述第一 线程。
步骤203、根据该服务请求所属的业务类型从N个controller线程池中确 定目标controller线程池,该目标controller线程包括M个线程。其中,N、 M均为大于等于1的整数。
在分布式微服务系统中,服务请求在通过API层之后,将进入controller 层,如图3所示,controller层中包括N个controller线程池(图3中以N=3 为例),每个controller线程池用于提供一种或多种业务类型的服务。其中, N为大于等于1的整数,具体的,N的数值可以根据业务类型的数量、业务量 的大小、硬件环境等因素进行设置。每个controller线程池中可以包括多个 线程,可以用于为一个或多个服务请求提供服务。
在确定目标controller线程池时,可以先确定服务请求所属的业务类型, 然后确定用于为该业务类型提供服务的controller线程池。例如,若服务请 求用于请求登录系统,可以选择用于提供登录服务的controller线程池1为 其提供服务;若服务请求用于请求访问系统页面,可以选择用于提供访问页面 范围的controller线程池2为其提供服务。
进一步地,若能够为该业务类型提供服务的controller线程池有多个, 可以根据这多个controller线程池的负载等情况确定用于为该服务请求提供 服务的目标controller线程池。在确定出目标controller线程池后,还可以 确定用于为该服务请求提供服务的线程,例如可以根据该目标controller线 程池中的各线程的占用情况、业务类型等等因素确定用于为该服务请求提供服 务的一个或多个线程。
步骤204、第二线程根据服务请求访问目标服务实例,其中,第二线程为 目标controller线程池中任一线程。
上述第二线程即为目标controller线程池中用于为该服务请求提供服务 的线程。第二线程根据服务请求的业务需求,确定需要访问的目标服务实例, 并向该目标服务实例发送请求,以执行业务所需流程和/或获取所需数据。
步骤205、若第二线程在预设的超时时间内访问目标服务实例失败,则将 目标服务实例标记为不可用,以使系统中的N个controller线程池中的每个 线程不再访问该目标服务实例。
若目标服务实例发生异常,则第二线程可以在未接受到目标服务实例的响 应时再次向目标服务实例发生请求。但是,若目标服务实例在预设的超时时间 内一直异常没有响应,在本申请实施例中,则将该目标服务实例标记为不可用, 不在向该目标服务实例发送消息,此外,其他线程也不再向该目标服务实例发 送消息,以避免不断向异常的服务实例发送消息而浪费时间及资源。
在上述方法实施例中,通过对每个服务请求进行全线程隔离,即,在API 层、controller层均进行线程隔离,若在相应的超时时间内访问目标服务实例 失败,则将给目标服务实例标记为不可用,不再向该目标服务实例发送请求。 该方案能够避免在目标服务实例异常时,系统不断向该目标实例发送请求,而 这些重复的请求将会占用大量的时间与资源,如果在高并发的情况下,将会影 响其他功能的正常使用,甚至可能导致耗尽上层服务的资源从而导致上层服务 的崩溃。
在目标服务实例发生异常后,系统将其标记为不可用,以避免第二线程以 及其他线程再次访问异常服务实例,造成资源浪费。若目标服务实例已被修复, 系统接收到了目标服务实例回复正常的指示信息,系统还可以将不可用标记删 除,标记为可用,使得各线程能够继续访问已被修复的服务实例。
进一步地,除了目标服务实例可能发生异常的情况,还可能发生第二线程 程序运行异常的情况,且在预设的超时时间内未能恢复正常,则释放该第二线 程。由于对每个服务请求进行了全线程隔离,当为某个服务请求提供服务的线 程发生异常时及时释放该线程,能够避免该线程占用时间、资源进行无效操作。 尤其是在高并发情况下,及时释放掉异常线程,为其他服务请求提供服务,避 免由于该线程占用过多内存影响系统性能甚至崩溃的情况发生,有助于提高系 统效率。
在目前常见的防雪崩框架Hystrix中,采用HTTP调用方式,然而HTTP方 式调用底层服务会重新封装异常返回,而Hystrix的回路(fallback)机制很 难能获取到原始异常,只能返回统一的异常。例如,新增用户时,用于注册的 手机号码必须是唯一的,当出现系统异常时,Hystrix上层服务无法确定是手 机号码已重复注册还是系统出现问题,仅提示用户:新增用户失败,不利于及 时发现问题、解决问题。而在本申请实施例中,可以预先定义多种异常类型, 且每种异常类型都对应有唯一的异常代码,在HTTP传输过程中,将异常对应 的异常代码封装在HTTP消息中,并传递至上层服务。具体的,第二线程在出 现异常时,如访问目标服务实例异常或自身程序运行异常,可以将异常类型的 代码封装在HTTP消息中,并将该HTTP消息返回至客户端,客户端根据该HTTP 消息中的异常类型代码,确定异常原因,并输出该异常原因,以使用户能够知 道访问失败的原因,进而能够针对原因解决问题。
可选的,前述预设的超时时间,可以是针对每个controller线程池分别 设置一个超时时间,即,不同的controller线程池可以设置相同或不同的超 时时间。例如,可以根据controller线程池所负责的业务类型,根据该业务 类型可接受的延时时长,确定该controller线程池对应的超时时间,复杂业 务时间可以超时时间长一点,简单业务超时时间可以短一点。又例如,如图4 所示,可以将controller线程池2的超时时间设置为10s,将controller线 程池3的超时时间设置为3s。
或者,该超时时间还可以是针对该controller线程池与目标服务实例对 应设置的,即,可以分别对每个controller线程池,分别设置访问每个服务 实例的超时时间。例如,可以将controller线程池1访问服务实例1的超时 时间设置为3s,将controller线程池1访问服务实例2的超时时间设置为10s。
在一些实施例中,每个controller线程池包含的线程数量,即M的取值, 可以通过定长线程池方式或不定长线程池方式确定。
不定长线程池方式,可以指定初始线程数和线程数上限值,如果访问量超 出预设阈值,系统可以自动创建新线程,直到线程数量上限值。该方式尤为适 合各controller功能使用不平均,且负载量时大时小的情况。
定长线程方式可以具体包括以下两种实现方式:一、根据中央处理器(CPU) 的数量、CPU使用率、预设超时时间以及预设的理想耗时时间等因素确定。例 如,线程数M=NCPU*UCPU*(1+W/C),其中,NCPU表示CPU的数量,UCPU表示CPU的 使用率,即,0<UCPU<1,W表示超时时间,C表示理想消耗时间;UCPU的默认值可 以取0.85,即表示当前创建的线程数量将令各CPU的使用率保持在0.85左右。 该方式尤为适合各线程功能使用比较平均且负载量比较稳定的情况下。二、根 据经验值设置常数M,且该M个线程带有线程工作窃取机制,即,当有线程闲 置时,则窃取其他正在被使用的线程的队列中的任务。队列为双向可访问队列, 线程从该线程对应的队列中从后取任务,其他线程在闲置时可以在该队列中从 前取任务,以实现负载均衡、提供系统效率。
进一步的,在本申请实施例中,还可以对每个服务请求的服务过程进行监 控,从而统计访问目标服务实例的数量和/或访问异常数量。具体的,系统可 以访问eureka,对eureka服务进行监控;可以根据实际运行情况动态展现服 务的实时健康状况、报警次数、访问量等指标。
基于相同的技术构思,本申请实施例还提供了一种微服务管理装置,该装 置可以包括:
接收模块,用于接收用户的服务请求;
确定模块,用于从Tomcat线程池中选择第一线程用于响应所述服务请求; 根据所述服务请求所属的业务类型从N个controller线程池中确定目标 controller线程池,所述目标controller线程池包括M个线程,N、M为大于 等于1的整数;第二线程根据所述服务请求访问目标服务实例,所述第二线程 为所述目标controller线程池中任一线程;
管理模块,若所述第二线程在的预设超时时间内访问目标服务实例失败, 用于将所述目标服务实例标记为不可用,以使所述N个controller线程池中 的每个线程不再访问所述目标服务实例。
在一种可能的实现方式中,管理模块还用于:若所述第二线程程序运行故 障,且在所述线程池对应的预设超时时间内未恢复,则释放所述第二线程。
在一种可能的实现方式中,管理模块还用于:确定所述第二线程异常原因, 向用户输出所述异常原因。
在一种可能的实现方式中,管理模块在确定所述第二线程异常原因时,具 体用于:根据所述第二线程输出的超文本传输协议HTTP消息中包含的异常原 因代码确定异常原因。
在一种可能的实现方式中,所述预设超时时间,为所述目标controller 线程池对应的超时时间,或者,为所述目标controller线程池与所述目标服 务实例对应的超时时间。
在一种可能的实现方式中,所述M的取值根据CPU的数量、CPU的使用率、 所述预设超时时间以及预设的理想消耗时间确定;或者
所述M的取值根据当前负载大小和线程上限值确定;或者
所述M为预设的常数。
在一种可能的实现方式中,管理模块在将所述目标服务实例标记为不可用 之后,还用于:若接收到所述目标服务实例恢复正常的指示信息,将所述目标 服务实例标记为可用。
在一种可能的实现方式中,管理模块503还用于:对所述服务请求的服务 过程进行监控;统计访问目标服务实例的数量和/或访问异常数量。
需要说明的是,应理解以上微服务管理装置的各个单元的划分仅仅是一种 逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以 物理上分开。
基于相同的技术构思,本申请实施例该提供了一种微服务管理系统,包括:
客户端模块,用于接收用户的服务请求;
网关层模块,用于从Tomcat线程池中选择第一线程用于响应所述服务请 求;根据所述服务请求所属的业务类型从N个controller线程池中确定目标 controller线程池,所述目标controller线程池包括M个线程,N、M为大于 等于1的整数;
控制层模块,用于选择第二线程,所述第二线程根据所述服务请求访问目 标服务实例,所述第二线程为所述目标controller线程池中任一线程;若所 述第二线程在的预设超时时间内访问所述目标服务实例失败,则将所述目标服 务实例标记为不可用,以使所述N个controller线程池中的每个线程不再访 问所述目标服务实例。
在一种可能的实现方式中,上述控制层模块还用于:
若所述第二线程程序运行故障,且在所述线程池对应的预设超时时间内未 恢复,则释放所述第二线程。
在一种可能的实现方式中,上述客户端模块还用于确定所述第二线程异常 原因,向用户输出所述异常原因。
在一种可能的实现方式中,客户端模块在确定所述第二线程异常原因时, 具体用于:根据所述第二线程输出的超文本传输协议HTTP消息中包含的异常 原因代码确定异常原因。
在一种可能的实现方式中,所述预设超时时间,为所述目标controller 线程池对应的超时时间,或者,为所述目标controller线程池与所述目标服 务实例对应的超时时间。
在一种可能的实现方式中,所述M的取值根据CPU的数量、CPU的使用率、 所述预设超时时间以及预设的理想消耗时间确定;或者
所述M的取值根据当前负载大小和线程上限值确定;或者
所述M为预设的常数。
在一种可能的实现方式中,控制层模块在将所述目标服务实例标记为不可 用之后,还用于:若接收到所述目标服务实例恢复正常的指示信息,将所述目 标服务实例标记为可用。
在一种可能的实现方式中,上述控制层模块还用于:对所述服务请求的服 务过程进行监控;统计访问目标服务实例的数量和/或访问异常数量。
基于相同的技术构思,本申请实施例还提供了一种计算机可读存储介质, 该计算机可读存储介质存储有计算机指令,当所述指令在计算机上运行时,使 得计算机执行上述微服务管理方法的实施例。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种微服务管理方法,其特征在于,包括:
接收用户的服务请求;
从Tomcat线程池中选择第一线程用于响应所述服务请求;
根据所述服务请求所属的业务类型从N个controller线程池中确定目标controller线程池,所述目标controller线程池包括M个线程,N、M为大于等于1的整数;
第二线程根据所述服务请求访问目标服务实例,所述第二线程为所述目标controller线程池中任一线程;
若所述第二线程在的预设超时时间内访问所述目标服务实例失败,则将所述目标服务实例标记为不可用,以使所述N个controller线程池中的每个线程不再访问所述目标服务实例。
2.根据权利要求1所述的方法,其特征在于,还包括:
若所述第二线程程序运行故障,且在所述线程池对应的预设超时时间内未恢复,则释放所述第二线程。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
确定所述第二线程异常原因,向用户输出所述异常原因。
4.根据权利要求3所述的方法,其特征在于,确定所述第二线程异常原因,包括:
根据所述第二线程输出的超文本传输协议HTTP消息中包含的异常原因代码确定异常原因。
5.根据权利要求1所述的方法,其特征在于,所述预设超时时间,为所述目标controller线程池对应的超时时间,或者,为所述目标controller线程池与所述目标服务实例对应的超时时间。
6.根据权利要求1所述的方法,其特征在于,所述M的取值根据CPU的数量、CPU的使用率、所述预设超时时间以及预设的理想消耗时间确定;或者
所述M的取值根据当前负载大小和线程上限值确定;或者
所述M为预设的常数。
7.根据权利要求1所述的方法,其特征在于,在将所述目标服务实例标记为不可用之后,还包括:
若接收到所述目标服务实例恢复正常的指示信息,将所述目标服务实例标记为可用。
8.根据权利要求1所述的方法,其特征在于,还包括:
对所述服务请求的服务过程进行监控;
统计访问目标服务实例的数量和/或访问异常数量。
9.一种微服务管理装置,其特征在于,包括:
接收模块,用于接收用户的服务请求;
确定模块,用于从Tomcat线程池中选择第一线程用于响应所述服务请求;根据所述服务请求所属的业务类型从N个controller线程池中确定目标controller线程池,所述目标controller线程池包括M个线程,N、M为大于等于1的整数;第二线程根据所述服务请求访问目标服务实例,所述第二线程为所述目标controller线程池中任一线程;
管理模块,若所述第二线程在的预设超时时间内访问所述目标服务实例失败,用于将所述目标服务实例标记为不可用,以使所述N个controller线程池中的每个线程不再访问所述目标服务实例。
10.一种微服务管理系统,其特征在于,包括:
客户端模块,用于接收用户的服务请求;
网关层模块,用于从Tomcat线程池中选择第一线程用于响应所述服务请求;根据所述服务请求所属的业务类型从N个controller线程池中确定目标controller线程池,所述目标controller线程池包括M个线程,N、M为大于等于1的整数;
控制层模块,用于选择第二线程,所述第二线程根据所述服务请求访问目标服务实例,所述第二线程为所述目标controller线程池中任一线程;若所述第二线程在的预设超时时间内访问所述目标服务实例失败,则将所述目标服务实例标记为不可用,以使所述N个controller线程池中的每个线程不再访问所述目标服务实例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010197134.2A CN111427674A (zh) | 2020-03-19 | 2020-03-19 | 一种微服务管理方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010197134.2A CN111427674A (zh) | 2020-03-19 | 2020-03-19 | 一种微服务管理方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111427674A true CN111427674A (zh) | 2020-07-17 |
Family
ID=71549633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010197134.2A Pending CN111427674A (zh) | 2020-03-19 | 2020-03-19 | 一种微服务管理方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111427674A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913795A (zh) * | 2020-08-07 | 2020-11-10 | 上海许继电气有限公司 | 一种继电子站端故障的高并发处理方法、系统设备及介质 |
CN112181641A (zh) * | 2020-09-14 | 2021-01-05 | 中国银联股份有限公司 | 线程处理方法、装置、设备及存储介质 |
CN113760656A (zh) * | 2021-08-30 | 2021-12-07 | 深圳壹账通智能科技有限公司 | 一种连接池的连接线程监控方法、装置、介质及设备 |
CN115473791A (zh) * | 2022-09-15 | 2022-12-13 | 中国平安财产保险股份有限公司 | 业务流程处理异常的处理方法、装置、设备和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106656604A (zh) * | 2016-12-23 | 2017-05-10 | 郑州云海信息技术有限公司 | 微服务请求管理方法、微服务控制器及高并发微服务架构 |
CN107733726A (zh) * | 2017-11-29 | 2018-02-23 | 新华三云计算技术有限公司 | 一种服务请求的处理方法及装置 |
CN108427581A (zh) * | 2018-02-07 | 2018-08-21 | 平安普惠企业管理有限公司 | 系统微服务化方法及终端设备 |
CN108762913A (zh) * | 2018-03-23 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 服务处理方法及装置 |
CN109542645A (zh) * | 2018-11-20 | 2019-03-29 | 北京锐安科技有限公司 | 一种调用服务的方法、装置、电子设备及存储介质 |
CN109582472A (zh) * | 2018-10-19 | 2019-04-05 | 华为技术有限公司 | 一种微服务处理方法及设备 |
CN110392100A (zh) * | 2019-07-12 | 2019-10-29 | 辽宁途隆科技有限公司 | 高并发事件的处理方法及装置、存储介质、计算机设备 |
CN110633133A (zh) * | 2018-06-21 | 2019-12-31 | 中兴通讯股份有限公司 | 一种任务处理方法、装置及计算机可读存储介质 |
CN110851311A (zh) * | 2019-11-12 | 2020-02-28 | 深圳前海微众银行股份有限公司 | 服务故障的识别方法、装置、设备及存储介质 |
-
2020
- 2020-03-19 CN CN202010197134.2A patent/CN111427674A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106656604A (zh) * | 2016-12-23 | 2017-05-10 | 郑州云海信息技术有限公司 | 微服务请求管理方法、微服务控制器及高并发微服务架构 |
CN107733726A (zh) * | 2017-11-29 | 2018-02-23 | 新华三云计算技术有限公司 | 一种服务请求的处理方法及装置 |
CN108427581A (zh) * | 2018-02-07 | 2018-08-21 | 平安普惠企业管理有限公司 | 系统微服务化方法及终端设备 |
CN108762913A (zh) * | 2018-03-23 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 服务处理方法及装置 |
CN110633133A (zh) * | 2018-06-21 | 2019-12-31 | 中兴通讯股份有限公司 | 一种任务处理方法、装置及计算机可读存储介质 |
CN109582472A (zh) * | 2018-10-19 | 2019-04-05 | 华为技术有限公司 | 一种微服务处理方法及设备 |
CN109542645A (zh) * | 2018-11-20 | 2019-03-29 | 北京锐安科技有限公司 | 一种调用服务的方法、装置、电子设备及存储介质 |
CN110392100A (zh) * | 2019-07-12 | 2019-10-29 | 辽宁途隆科技有限公司 | 高并发事件的处理方法及装置、存储介质、计算机设备 |
CN110851311A (zh) * | 2019-11-12 | 2020-02-28 | 深圳前海微众银行股份有限公司 | 服务故障的识别方法、装置、设备及存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913795A (zh) * | 2020-08-07 | 2020-11-10 | 上海许继电气有限公司 | 一种继电子站端故障的高并发处理方法、系统设备及介质 |
CN111913795B (zh) * | 2020-08-07 | 2023-04-07 | 上海许继电气有限公司 | 一种继电子站端故障的高并发处理方法、系统设备及介质 |
CN112181641A (zh) * | 2020-09-14 | 2021-01-05 | 中国银联股份有限公司 | 线程处理方法、装置、设备及存储介质 |
CN113760656A (zh) * | 2021-08-30 | 2021-12-07 | 深圳壹账通智能科技有限公司 | 一种连接池的连接线程监控方法、装置、介质及设备 |
CN115473791A (zh) * | 2022-09-15 | 2022-12-13 | 中国平安财产保险股份有限公司 | 业务流程处理异常的处理方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10348809B2 (en) | Naming of distributed business transactions | |
WO2018130163A1 (zh) | 移动云计算平台的调度方法和装置 | |
CN106452818B (zh) | 一种资源调度的方法和系统 | |
WO2021258753A1 (zh) | 一种业务处理方法、装置及电子设备和存储介质 | |
CN111427674A (zh) | 一种微服务管理方法、装置及系统 | |
CN112231075B (zh) | 一种基于云服务的服务器集群负载均衡控制方法及系统 | |
US20020129127A1 (en) | Apparatus and method for routing a transaction to a partitioned server | |
CN111913818A (zh) | 一种确定服务间依赖关系的方法及相关装置 | |
CN110069337B (zh) | 一种容灾降级的方法和装置 | |
CN113422842B (zh) | 一种考虑网络负载的分布式电力用电信息数据采集系统 | |
CN111427751A (zh) | 基于异步处理机制对业务进行处理的方法及系统 | |
CN112579304A (zh) | 基于分布式平台的资源调度方法、装置、设备及介质 | |
CN109117280A (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
CN101114984A (zh) | 一种多线程网络负载控制方法 | |
CN111988198B (zh) | 在线用户人数统计方法、装置、电子设备及计算机介质 | |
CN112817772B (zh) | 一种数据通信方法、装置、设备及存储介质 | |
CN109117279A (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
EP3084603B1 (en) | System and method for supporting adaptive busy wait in a computing environment | |
CN111835809B (zh) | 工单消息分配方法、装置、服务器及存储介质 | |
JP2001202318A (ja) | データ配信システム | |
CN117149382A (zh) | 虚拟机调度方法、装置、计算机设备和存储介质 | |
CN111488373A (zh) | 用于处理请求的方法和系统 | |
CN116032932A (zh) | 针对边缘服务器的集群管理方法、系统、设备及介质 | |
US20030023775A1 (en) | Efficient notification of multiple message completions in message passing multi-node data processing systems | |
WO2022021858A1 (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200717 |