CN104281489A - Soa架构下的多线程请求方法及系统 - Google Patents
Soa架构下的多线程请求方法及系统 Download PDFInfo
- Publication number
- CN104281489A CN104281489A CN201310293394.XA CN201310293394A CN104281489A CN 104281489 A CN104281489 A CN 104281489A CN 201310293394 A CN201310293394 A CN 201310293394A CN 104281489 A CN104281489 A CN 104281489A
- Authority
- CN
- China
- Prior art keywords
- thread
- request
- services request
- state
- threads
- 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.)
- Granted
Links
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种SOA架构下的多线程请求方法及系统。该SOA架构下的多线程请求方法及系统,通过设置线程池以对所有子系统的服务请求进行统一管理并建立相应的线程,并行执行多个线程,从而充分利用了SOA架构的分布式结构,使得对于无需逐个调用多个子系统的服务而是并行的调用多个子系统的服务,大大改善了对于系统资源的利用,缩短了所有子系统的服务请求的平均响应时间,同时使得SOA架构下的多个子系统间的服务请求更易于管理。
Description
技术领域
本发明涉及一种SOA架构下的多线程请求方法及系统。
背景技术
随着电子商务的蓬勃发展,现在的电子商务系统越来越庞大,各系统中包含的应用错综复杂,为了方便管理这些应用关系,很多公司都开始使用面向服务的体系结构,即SOA架构。SOA架构是一类分布式系统的体系结构,它将应用程序的不同功能单元(即服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
在这种架构下,各应用通过服务进行交互,达到解耦。然而,随着服务的细分和完善,提供的服务越来越多,各应用需要调用的服务也越来越多。需要调用的服务可能是由SOA架构下的同一个子系统提供,也可能分别由不同的子系统提供。现有的SOA架构下,当一个应用需要调用多个服务时,需要逐个调用,即调用一个服务后需要等待该服务响应后,再去请求下一个服务。如果需要调用的多个服务中,某一个服务响应较慢,则其他服务的调用都需要等待,非常浪费系统资源和时间。
发明内容
本发明要解决的技术问题是为了克服现有技术中SOA架构中的一个子系统向其他子系统调用服务时采用逐个调用的方式,需要依次等待其他子系统的服务响应,应用执行的效率低下且浪费时间和系统资源的缺陷,提出一种SOA架构下的多线程请求方法及系统。
本发明是通过下述技术方案来解决上述技术问题的:
本发明提供了一种SOA架构下的多线程请求方法,其特点在于,包括以下步骤:
S1、接收至少一子系统发出的至少一组服务请求,将该至少一组服务请求的状态分别记录为执行中;
S2、在一线程池中创建至少一个线程,该至少一个线程和执行中状态的服务请求一一对应,该至少一个线程进入一等待队列,该等待队列用于按创建时间从早到晚的顺序依次排列线程;
S3、判断该线程池中正在执行的线程数量是否小于一最大并发数,在判断结果为否的情况下重复执行S3,在判断结果为是的情况下执行S4;
S4、顺序依次选取该等待队列中的线程并执行,以使得正在执行的线程数量等于该最大并发数;
S5、判断是否有任意一组或多组的服务请求对应的线程已全部从该线程池中移除,在判断结果为否的情况下执行S3,在判断结果为是的情况下执行S6;
S6、将该任意一组或多组的服务请求的状态更改为执行完毕;
S7、将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统,并执行S3。
在SOA架构中,各个子系统之间通过系统总线进行通信交互,各个子系统是完全独立的,每个子系统可独立承担一个方面的业务逻辑。一组服务请求对应于一个操作,即在一个子系统上的一个操作会产生一组服务请求。一组服务请求可以包括了向其他子系统发出的多个服务请求。当其他子系统响应了服务请求时,会把服务请求所需要的数据发给发出服务请求的子系统。
S1中的一组服务请求的作用即一子系统要执行的应用程序首先请求服务。然后,S2中创建线程池以及和服务请求对应的线程。由于线程池以及能够并行执行的线程数量是有限的,因而先将线程排序。S3中判断该线程池中正在执行的线程数量是否小于一最大并发数,如果判断结果为否,则重复执行这一判断,即该等待队列中的线程继续等待。该线程池内的正在执行的线程以并行方式执行,多个线程各自的执行之间没有时序性的关系。当该线程池中有线程执行完毕时,则正在执行的线程数量就会变少,而当判断结果为是时,即可并行执行的线程出现了空缺,执行S4,顺序依次选取该等待队列中的线程并执行,以达到充分利用资源的目的。
如果有一组的服务请求相应的线程已全部移除,则说明这些线程都已经执行完毕。如上所述的,一组服务请求对应于一个操作,即一子系统要执行的应用程序的所有服务请求都已经完成。S5至S7的目的即在一组服务请求的处理完成后,将结果数据汇总返回至发出该组服务请求的子系统,返回线程执行的结果也即告知发出该组服务请求的子系统可以进行下一步操作或继续执行应用程序。
本领域技术人员应当理解,上述方法流程针对的是某一次接收到的至少一子系统发出的至少一组服务请求,在任意时刻如果有子系统发出服务请求,均执行S1。
较佳地,每一组服务请求均包含了请求用户的信息,在执行S1后执行以下步骤:
S11、判断该至少一组服务请求的请求用户中,是否有一个或多个请求用户创建的、执行中状态的服务请求对应的线程数量达到该一个或多个请求用户的线程阈值,在判断结果为否的情况下执行S2,在判断结果为是的情况下执行S12;
S12、将该一个或多个请求用户发出的一组或多组服务请求更改为延迟执行状态,并执行S2;
S6和S7之间还包括以下步骤:
S61、对于该一个或多个请求用户,判断其创建的、执行中状态的服务请求对应的线程数量是否小于其线程阈值,并在判断结果为是的情况下将该一个或多个请求用户发出的、并处于延迟执行状态的服务请求更改为执行中状态;
S62、在该线程池中创建和S61中更改为执行中状态的服务请求一一对应的线程,创建的线程进入该等待队列,并执行S7。
由于在Web应用(即网络应用)中,一个应用程序池下的所有应用共享一个线程池,为了防止某一个用户同时创建大量线程,阻塞其他用户的请求,因此需要维护对单个用户的线程最大值,即该线程阈值。容易理解的,对于不同的用户,也可设置不同的线程阈值。线程阈值用来决定每个用户可同时创建的线程数量。延迟执行状态的服务请求,作为不立即创建相应的线程的请求,被存储于该线程池外。一旦被更改为执行中状态,就会在该线程池中创建和更改后的服务请求对应的线程,并进入该等待队列中。
较佳地,S3包括以下步骤:
S31、若该线程池中的线程数量小于一最小线程数,创建空线程以使得线程数量等于该最小线程数;
S32、判断该线程池中正在执行的线程数量是否小于一最大并发数,在判断结果为否的情况下等待,在判断结果为是的情况下执行S4。
该最小线程数代表了该线程池中保留的最小线程数量,以节省创建线程所需的时间和资源。该最大并发数代表了该线程池最多同时并行执行的线程的数量。该最小线程数和该最大并发数可以由系统自动控制,也可以人为控制。对该最小线程数和该最大并发数的维护可以采用一个B/S模式(浏览器/服务器模式)的应用程序形式存在,也可以直接以配置文件的形式直接提供给用户维护,用户维护的线程池设置会保存在数据库或者配置文件中。
较佳地,每个步骤中均包括:
记录每一组服务请求的状态及对应时刻,并记录该线程池的状态。
对于服务请求和线程池的状态的记录能够在发生故障时更容易的找出故障的原因。
本发明还提供了一种SOA架构下的多线程请求系统,包括一系统总线和至少一子系统,该至少一子系统可相互发送服务请求,其特点在于,该多线程请求系统还包括:一接收模块,用于接收该至少一子系统发出的至少一组服务请求;一线程创建模块,用于在一线程池中创建至少一个线程、该至少一个线程和执行中状态的服务请求一一对应,并将该至少一个线程放入一等待队列、该等待队列用于按创建时间从早到晚的顺序依次排列线程;一线程管理模块,用于顺序依次选取该等待队列中的线程并执行,以使得正在执行的线程数量为小于或等于一最大并发数的最大值;一状态指示模块,用于在该接收模块接收该至少一组服务请求时将该至少一组服务请求的状态记录为执行中,以及在任意一组或多组的服务请求对应的线程已全部从该线程池中移除时将该任意一组或多组服务请求的状态更改为执行完毕;一结果返回模块,用于将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统。
该多线程请求系统首先由该接收模块接收服务请求,然后该线程创建模块根据服务请求来创建线程,该线程管理模块对创建的线程进行执行顺序的排序以及并行执行线程池中的线程。该状态指示模块起到更新服务请求的状态的作用。当一组服务请求对应的线程均执行完毕后,该结果返回模块将线程执行的结果汇总后返回给发送相应的服务请求的子系统,在返回数据的同时还起到通知子系统可以进行下一步的操作或继续执行应用程序的作用。
较佳地,该多线程请求系统还包括一线程阈值维护模块,该线程阈值维护模块用于在有一个或多个请求用户创建的正在执行的线程数量达到该一个或多个请求用户的线程阈值的情况下,将该一个或多个请求用户发出的一组或多组服务请求更改为延迟执行状态。该结果返回模块包括一延迟请求重启单元、一线程新建单元和一返回单元,该延迟请求重启单元用于判断该一个或多个请求用户创建的执行中状态的服务请求对应的线程数量是否小于其线程阈值,并在判断结果为是的情况下将该一个或多个请求用户发出的、并处于延迟执行状态的服务请求更改为执行中状态。该线程新建单元用于在该线程池中创建和该延迟请求重启单元更改为执行中状态的服务请求一一对应的线程,并将创建的线程放入该等待队列。该返回单元用于将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统。
在该线程池中的一些线程执行完毕后,正在执行的线程数量减少,因而原先因为同一个用户创建的正在执行的线程数量达到线程阈值而状态更改为延迟执行状态的服务请求有可能可以加入到该线程池内,该延迟请求重启单元和该线程新建单元所起的就是这一作用。
较佳地,该线程管理模块包括一最小线程数维护单元和一最大并发数维护单元,该最小线程数维护单元用于在该线程池中的线程数量小于一最小线程数时、创建空线程以使得线程数量等于该最小线程数,该最大并发数维护单元用于顺序依次选取该等待队列中的线程并执行、以使得正在执行的线程数量为小于或等于该最大并发数的最大值。
较佳地,该多线程请求系统还包括一日志模块,该日志模块用于记录每一组服务请求的状态变化及对应时刻、并实时记录该线程池的状态。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:
本发明的SOA架构下的多线程请求方法及系统,通过设置线程池以对所有子系统的服务请求进行统一管理并建立相应的线程,并行执行多个线程,从而充分利用了SOA架构的分布式结构,使得对于无需逐个调用多个子系统的服务而是并行的调用多个子系统的服务,大大改善了对于系统资源的利用,缩短了所有子系统的服务请求的平均响应时间,同时使得SOA架构下的多个子系统间的服务请求更易于管理。
附图说明
图1为本发明实施例1的SOA架构下的多线程请求方法的流程图。
图2为本发明实施例2的SOA架构下的多线程请求方法的流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
如图1所示,本发明实施例1的SOA架构下的多线程请求方法包括以下步骤:
S1、接收至少一子系统发出的至少一组服务请求,将该至少一组服务请求的状态分别记录为执行中。
S2、在一线程池中创建至少一个线程,该至少一个线程和执行中状态的服务请求一一对应,该至少一个线程进入一等待队列,该等待队列用于按创建时间从早到晚的顺序依次排列线程。
S3、判断该线程池中正在执行的线程数量是否小于一最大并发数,在判断结果为否的情况下重复执行S3,在判断结果为是的情况下执行S4。
S4、顺序依次选取该等待队列中的线程并执行,以使得正在执行的线程数量等于该最大并发数。
S5、判断是否有任意一组或多组的服务请求对应的线程已全部从该线程池中移除,在判断结果为否的情况下执行S3,在判断结果为是的情况下执行S6。
S6、将该任意一组或多组的服务请求的状态更改为执行完毕。
S7、将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统,并执行S3。
在SOA架构中,各个子系统之间通过系统总线进行通信交互,各个子系统是完全独立的,每个子系统可独立承担一个方面的业务逻辑。一组服务请求对应于一个操作,即在一个子系统上的一个操作会产生一组服务请求。一组服务请求可以包括了向其他子系统发出的多个服务请求。当其他子系统响应了服务请求时,会把服务请求所需要的数据发给发出服务请求的子系统。
S1中的一组服务请求的作用即一子系统要执行的应用程序首先请求服务。然后,S2中创建线程池以及和服务请求对应的线程。由于线程池以及能够并行执行的线程数量是有限的,因而先将线程排序。S3中判断该线程池中正在执行的线程数量是否小于一最大并发数,如果判断结果为否,则重复执行这一判断,即该等待队列中的线程继续等待。该线程池内的正在执行的线程以并行方式执行,多个线程各自的执行之间没有时序性的关系。当该线程池中有线程执行完毕时,则正在执行的线程数量就会变少,而当判断结果为是时,即可并行执行的线程出现了空缺,执行S4,顺序依次选取该等待队列中的线程并执行,以达到充分利用资源的目的。
如果有一组的服务请求相应的线程已全部移除,则说明这些线程都已经执行完毕。如上所述的,一组服务请求对应于一个操作,即一子系统要执行的应用程序的所有服务请求都已经完成。S5至S7的目的即在一组服务请求的处理完成后,将结果数据汇总返回至发出该组服务请求的子系统,返回线程执行的结果也即告知发出该组服务请求的子系统可以进行下一步操作或继续执行应用程序。
下面对本实施例的方法的应用进行举例说明。子系统A需要执行一应用,该应用包括了3个服务请求、分别发给子系统B、子系统C、子系统D。以现有的常规处理方式,子系统A需要依次等待子系统B、子系统C和子系统D对服务请求的响应。如果子系统B、子系统C和子系统D的响应分别需要时间t1、t2和t3,那么子系统A执行该应用得到返回的时间大致为T0,其中T0=t1+t2+t3。应用本实施例的方法进行处理时,在该线程池中正在执行的线程数量小于该最大并发数且比该最大并发数小3的情况下,该应用的3个服务请求可创建线程并并行执行,子系统A执行该应用得到返回的时间大致为T1,其中T1=max(t1,t2,t3)。显然T1<T0。而即使该线程池中正在执行的线程数量等于该最大并发数,使得该应用的3个服务请求对应的进程无法并行执行,子系统A执行该应用得到返回的时间也只是和T0相同。即本实施例的方法应用于SOA架构下,子系统执行包含多个服务请求的应用时,得到返回的时间小于或等于现有的方法。
以上仅为举例说明,当上述举例中该应用包括的服务请求数量越多,本实施例的SOA架构下的多线程请求方法带来的时间上的节省效果越显著。相应的,也就更好地利用了系统资源。
本实施例的SOA架构下的多线程请求系统,包括一系统总线和至少一子系统,该至少一子系统可相互发送服务请求,该多线程请求系统还包括:一接收模块,用于接收该至少一子系统发出的至少一组服务请求;一线程创建模块,用于在一线程池中创建至少一个线程、该至少一个线程和执行中状态的服务请求一一对应,并将该至少一个线程放入一等待队列、该等待队列用于按创建时间从早到晚的顺序依次排列线程;一线程管理模块,用于顺序依次选取该等待队列中的线程并执行,以使得正在执行的线程数量为小于或等于一最大并发数的最大值;一状态指示模块,用于在该接收模块接收该至少一组服务请求时将该至少一组服务请求的状态记录为执行中,以及在任意一组或多组的服务请求对应的线程已全部从该线程池中移除时将该任意一组或多组服务请求的状态更改为执行完毕;一结果返回模块,用于将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统。
该多线程请求系统首先由该接收模块接收服务请求,然后该线程创建模块根据服务请求来创建线程,该线程管理模块对创建的线程进行执行顺序的排序以及并行执行线程池中的线程。该状态指示模块起到更新服务请求的状态的作用。当一组服务请求对应的线程均执行完毕后,该结果返回模块将线程执行的结果汇总后返回给发送相应的服务请求的子系统,在返回数据的同时还起到通知子系统可以进行下一步的操作或继续执行应用程序的作用
实施例2
本实施例的SOA架构下的多线程请求方法和实施例1相比差别仅在于,每一组服务请求均包含了请求用户的信息,并且在执行S1后执行以下步骤:
S11、判断该至少一组服务请求的请求用户中,是否有一个或多个请求用户创建的、执行中状态的服务请求对应的线程数量达到该一个或多个请求用户的线程阈值,在判断结果为否的情况下执行S2,在判断结果为是的情况下执行S12。
S12、将该一个或多个请求用户发出的一组或多组服务请求更改为延迟执行状态,并执行S2。
S6和S7之间还包括以下步骤:
S61、对于该一个或多个请求用户,判断其创建的、执行中状态的服务请求对应的线程数量是否小于其线程阈值,并在判断结果为是的情况下将该一个或多个请求用户发出的、并处于延迟执行状态的服务请求更改为执行中状态。
S62、在该线程池中创建和S61中更改为执行中状态的服务请求一一对应的线程,创建的线程进入该等待队列,并执行S7。
由于在Web应用中,一个应用程序池下的所有应用共享一个线程池,为了防止某一个用户同时创建大量线程,阻塞其他用户的请求,因此需要维护对单个用户的线程最大值,即该线程阈值。容易理解的,对于不同的用户,也可设置不同的线程阈值。线程阈值用来决定每个用户可同时创建的线程数量。其中该线程阈值既可以对所有子系统统一设置,也可根据子系统的性能或运算能力进行设置,对于运算能力较强的子系统,可以将该线程阈值设置的更大。
并且S3包括以下步骤:
S31、若该线程池中的线程数量小于一最小线程数,创建空线程以使得线程数量等于该最小线程数。
S32、判断该线程池中正在执行的线程数量是否小于一最大并发数,在判断结果为否的情况下等待,在判断结果为是的情况下执行S4。
该最小线程数代表了该线程池中保留的最小线程数量,以节省创建线程所需的时间和资源。该最大并发数代表了该线程池最多同时并行执行的线程的数量。该最小线程数和该最大并发数可以由系统自动控制,也可以人为控制。对该最小线程数和该最大并发数的维护可以采用一个B/S模式(浏览器/服务器模式)的应用程序形式存在,也可以直接以配置文件的形式直接提供给用户维护,用户维护的线程池设置会保存在数据库或者配置文件中。
其中,每个步骤中均包括:
记录每一组服务请求的状态及对应时刻,并记录该线程池的状态。
对于服务请求和线程池的状态的记录能够在发生故障时更容易的找出故障的原因。
本实施例的多线程请求系统和实施例1相比,差别仅在于:
本实施例的多线程请求系统还包括一线程阈值维护模块,该线程阈值维护模块用于在有一个或多个请求用户创建的正在执行的线程数量达到该一个或多个请求用户的线程阈值的情况下,将该一个或多个请求用户发出的一组或多组服务请求更改为延迟执行状态。该结果返回模块包括一延迟请求重启单元、一线程新建单元和一返回单元,该延迟请求重启单元用于判断该一个或多个请求用户创建的执行中状态的服务请求对应的线程数量是否小于其线程阈值,并在判断结果为是的情况下将该一个或多个请求用户发出的、并处于延迟执行状态的服务请求更改为执行中状态。该线程新建单元用于在该线程池中创建和该延迟请求重启单元更改为执行中状态的服务请求一一对应的线程,并将创建的线程放入该等待队列。该返回单元用于将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统。
在该线程池中的一些线程执行完毕后,正在执行的线程数量减少,因而原先因为同一个用户创建的正在执行的线程数量达到线程阈值而状态更改为延迟执行状态的服务请求有可能可以加入到该线程池内,该延迟请求重启单元和该线程新建单元所起的就是这一作用。
其中,该线程管理模块包括一最小线程数维护单元和一最大并发数维护单元,该最小线程数维护单元用于在该线程池中的线程数量小于一最小线程数时、创建空线程以使得线程数量等于该最小线程数,该最大并发数维护单元用于顺序依次选取该等待队列中的线程并执行、以使得正在执行的线程数量为小于或等于该最大并发数的最大值。
其中,该多线程请求系统还包括一日志模块,该日志模块用于记录每一组服务请求的状态变化及对应时刻、并实时记录该线程池的状态。
下面对实施例2的SOA架构下的多线程请求方法及多线程请求系统的具体使用进行简略的举例说明。
首先,线程池本身可设有可容纳的线程的最大数量、最大并发数和最小线程数。用户可以根据自身需要对其进行人工配置,也可采用系统的自动配置。最大并发数不能无限制的提高,而是受到硬件性能的制约。并且如果最大并发数太高,有可能造成一个用户的大量线程占据了系统中的过多资源影响其他用户的使用。
当SOA架构下的某个子系统有用户执行一应用程序进行了一个操作的时候,该应用程序首先开始请求,请求获准后向发送服务请求。系统先检查是否已经建立了线程池,如果没有则要建立一新的线程池。然后针对这些服务请求,需要建立相应的线程。这时需要根据线程池的当前情况以及上述参数设置来确定是否有新的线程建立的空间以及执行的空间。根据不同的情况,可能直接创建和这些服务请求相应的线程并执行,也可能需要先等待目前正在执行的线程完成后空出空间,后一种情况下则需要排队等待。
当和用户执行应用程序的一个操作所对应的的一组请求对应的线程全部执行完毕了,则系统会汇总并返回给用户所有的执行结果。举例来说,这一组请求分别向5个子系统请求了服务,那么在5个子系统均对服务请求作出了反应返回了结果比如某些查询的数据后,用户就能够收到所有查询到的数据。容易理解的,用户能够在应用程序上进行下一步操作了。
由于这一组请求分别向5个子系统请求了服务,对于这5个子系统而言,他们各自处理请求都需要一定的时间,但由于各自的处理并行的进行,并且充分利用了SOA架构下的子系统均能够独自处理服务,因此不用等待一个请求的处理执行完毕再进行其他请求的处理,因而充分利用了SOA架构分布式服务的优点,大大提高了系统运行的效率。
该日志模块,主要用于记录多线程请求系统在运行过程中的应用日志,具体包括有:线程池状态,每当有线程执行完毕或新加入时,就记录当前线程池的状态;单个请求执行时间,当一个服务请求发出后,会记录下此请求的执行时长及排队等待时长;请求组执行时间,即记录一组请求的总执行时长,排队时长。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (8)
1.一种SOA架构下的多线程请求方法,其特征在于,包括以下步骤:
S1、接收至少一子系统发出的至少一组服务请求,将该至少一组服务请求的状态分别记录为执行中;
S2、在一线程池中创建至少一个线程,该至少一个线程和执行中状态的服务请求一一对应,该至少一个线程进入一等待队列,该等待队列用于按创建时间从早到晚的顺序依次排列线程;
S3、判断该线程池中正在执行的线程数量是否小于一最大并发数,在判断结果为否的情况下重复执行S3,在判断结果为是的情况下执行S4;
S4、顺序依次选取该等待队列中的线程并执行,以使得正在执行的线程数量等于该最大并发数;
S5、判断是否有任意一组或多组的服务请求对应的线程已全部从该线程池中移除,在判断结果为否的情况下执行S3,在判断结果为是的情况下执行S6;
S6、将该任意一组或多组的服务请求的状态更改为执行完毕;
S7、将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统,并执行S3。
2.如权利要求1所述的多线程请求方法,其特征在于,每一组服务请求均包含了请求用户的信息,在执行S1后执行以下步骤:
S11、判断该至少一组服务请求的请求用户中,是否有一个或多个请求用户创建的、执行中状态的服务请求对应的线程数量达到该一个或多个请求用户的线程阈值,在判断结果为否的情况下执行S2,在判断结果为是的情况下执行S12;
S12、将该一个或多个请求用户发出的一组或多组服务请求更改为延迟执行状态,并执行S2;
S6和S7之间还包括以下步骤:
S61、对于该一个或多个请求用户,判断其创建的、执行中状态的服务请求对应的线程数量是否小于其线程阈值,并在判断结果为是的情况下将该一个或多个请求用户发出的、并处于延迟执行状态的服务请求更改为执行中状态;
S62、在该线程池中创建和S61中更改为执行中状态的服务请求一一对应的线程,创建的线程进入该等待队列,并执行S7。
3.如权利要求1所述的多线程请求方法,其特征在于,S3包括以下步骤:
S31、若该线程池中的线程数量小于一最小线程数,创建空线程以使得线程数量等于该最小线程数;
S32、判断该线程池中正在执行的线程数量是否小于一最大并发数,在判断结果为否的情况下等待,在判断结果为是的情况下执行S4。
4.如权利要求1-3中任意一项所述的多线程请求方法,其特征在于,每个步骤中均包括:
记录每一组服务请求的状态及对应时刻,并记录该线程池的状态。
5.一种SOA架构下的多线程请求系统,包括一系统总线和至少一子系统,该至少一子系统可相互发送服务请求,其特征在于,该多线程请求系统还包括:
一接收模块,用于接收该至少一子系统发出的至少一组服务请求;
一线程创建模块,用于在一线程池中创建至少一个线程、该至少一个线程和执行中状态的服务请求一一对应,并将该至少一个线程放入一等待队列、该等待队列用于按创建时间从早到晚的顺序依次排列线程;
一线程管理模块,用于顺序依次选取该等待队列中的线程并执行,以使得正在执行的线程数量为小于或等于一最大并发数的最大值;
一状态指示模块,用于在该接收模块接收该至少一组服务请求时将该至少一组服务请求的状态记录为执行中,以及在任意一组或多组的服务请求对应的线程已全部从该线程池中移除时将该任意一组或多组服务请求的状态更改为执行完毕;
一结果返回模块,用于将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统。
6.如权利要求5所述的多线程请求系统,其特征在于,该多线程请求系统还包括一线程阈值维护模块,该线程阈值维护模块用于在有一个或多个请求用户创建的正在执行的线程数量达到该一个或多个请求用户的线程阈值的情况下,将该一个或多个请求用户发出的一组或多组服务请求更改为延迟执行状态;
该结果返回模块包括一延迟请求重启单元、一线程新建单元和一返回单元,该延迟请求重启单元用于判断该一个或多个请求用户创建的执行中状态的服务请求对应的线程数量是否小于其线程阈值,并在判断结果为是的情况下将该一个或多个请求用户发出的、并处于延迟执行状态的服务请求更改为执行中状态;
该线程新建单元用于在该线程池中创建和该延迟请求重启单元更改为执行中状态的服务请求一一对应的线程,并将创建的线程放入该等待队列;
该返回单元用于将该任意一组或多组的服务请求对应的线程执行的结果分别返回至发出该任意一组或多组的服务请求的子系统。
7.如权利要求5所述的多线程请求系统,其特征在于,该线程管理模块包括一最小线程数维护单元和一最大并发数维护单元,该最小线程数维护单元用于在该线程池中的线程数量小于一最小线程数时、创建空线程以使得线程数量等于该最小线程数,该最大并发数维护单元用于顺序依次选取该等待队列中的线程并执行、以使得正在执行的线程数量为小于或等于该最大并发数的最大值。
8.如权利要求5-7中任意一项所述的多线程请求系统,其特征在于,该多线程请求系统还包括一日志模块,该日志模块用于记录每一组服务请求的状态变化及对应时刻、并实时记录该线程池的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310293394.XA CN104281489B (zh) | 2013-07-12 | 2013-07-12 | Soa架构下的多线程请求方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310293394.XA CN104281489B (zh) | 2013-07-12 | 2013-07-12 | Soa架构下的多线程请求方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104281489A true CN104281489A (zh) | 2015-01-14 |
CN104281489B CN104281489B (zh) | 2017-11-21 |
Family
ID=52256390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310293394.XA Active CN104281489B (zh) | 2013-07-12 | 2013-07-12 | Soa架构下的多线程请求方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104281489B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105141549A (zh) * | 2015-08-17 | 2015-12-09 | 北京京东尚科信息技术有限公司 | 网络请求处理方法和装置 |
CN106547614A (zh) * | 2016-11-01 | 2017-03-29 | 山东浪潮商用系统有限公司 | 一种基于消息队列的海量数据延迟导出方法 |
CN106936688A (zh) * | 2015-12-30 | 2017-07-07 | 北京国双科技有限公司 | 通知发送方法和装置 |
CN107038025A (zh) * | 2016-09-28 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 基于soa架构的系统调用方法及装置 |
CN107800768A (zh) * | 2017-09-13 | 2018-03-13 | 平安科技(深圳)有限公司 | 开放平台控制方法和系统 |
CN107861755A (zh) * | 2017-03-14 | 2018-03-30 | 平安科技(深圳)有限公司 | 线程连接的控制方法及装置 |
CN108492211A (zh) * | 2018-04-04 | 2018-09-04 | 北京科东电力控制系统有限责任公司 | 应用于电力市场业务平台的计算方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588316A (zh) * | 2004-06-29 | 2005-03-02 | 北京大学 | 应用服务器的性能优化方法 |
CN101573690A (zh) * | 2006-12-30 | 2009-11-04 | 英特尔公司 | 线程排队的方法和装置 |
US7644410B1 (en) * | 2004-11-23 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Resource management for shared computing environment |
CN103019843A (zh) * | 2012-12-05 | 2013-04-03 | 北京奇虎科技有限公司 | Mpi函数调用方法和装置 |
CN103077006A (zh) * | 2012-12-27 | 2013-05-01 | 浙江工业大学 | 一种基于多线程的长事务并行执行方法 |
-
2013
- 2013-07-12 CN CN201310293394.XA patent/CN104281489B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1588316A (zh) * | 2004-06-29 | 2005-03-02 | 北京大学 | 应用服务器的性能优化方法 |
US7644410B1 (en) * | 2004-11-23 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Resource management for shared computing environment |
CN101573690A (zh) * | 2006-12-30 | 2009-11-04 | 英特尔公司 | 线程排队的方法和装置 |
CN103019843A (zh) * | 2012-12-05 | 2013-04-03 | 北京奇虎科技有限公司 | Mpi函数调用方法和装置 |
CN103077006A (zh) * | 2012-12-27 | 2013-05-01 | 浙江工业大学 | 一种基于多线程的长事务并行执行方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105141549A (zh) * | 2015-08-17 | 2015-12-09 | 北京京东尚科信息技术有限公司 | 网络请求处理方法和装置 |
CN105141549B (zh) * | 2015-08-17 | 2018-09-21 | 北京京东尚科信息技术有限公司 | 网络请求处理方法和装置 |
CN106936688A (zh) * | 2015-12-30 | 2017-07-07 | 北京国双科技有限公司 | 通知发送方法和装置 |
CN107038025A (zh) * | 2016-09-28 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 基于soa架构的系统调用方法及装置 |
CN107038025B (zh) * | 2016-09-28 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 基于soa架构的系统调用方法及装置 |
CN106547614A (zh) * | 2016-11-01 | 2017-03-29 | 山东浪潮商用系统有限公司 | 一种基于消息队列的海量数据延迟导出方法 |
CN107861755A (zh) * | 2017-03-14 | 2018-03-30 | 平安科技(深圳)有限公司 | 线程连接的控制方法及装置 |
CN107800768A (zh) * | 2017-09-13 | 2018-03-13 | 平安科技(深圳)有限公司 | 开放平台控制方法和系统 |
WO2019052225A1 (zh) * | 2017-09-13 | 2019-03-21 | 平安科技(深圳)有限公司 | 开放平台控制方法、系统、计算机设备和存储介质 |
CN107800768B (zh) * | 2017-09-13 | 2020-01-10 | 平安科技(深圳)有限公司 | 开放平台控制方法和系统 |
CN108492211A (zh) * | 2018-04-04 | 2018-09-04 | 北京科东电力控制系统有限责任公司 | 应用于电力市场业务平台的计算方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104281489B (zh) | 2017-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104281489A (zh) | Soa架构下的多线程请求方法及系统 | |
CN104468407B (zh) | 实现业务平台资源弹性分配的方法与装置 | |
CN110908788B (zh) | 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 | |
CN109412874B (zh) | 设备资源的配置方法、装置、服务器及存储介质 | |
CN102708173B (zh) | 处理用户访问网页的请求的方法及系统 | |
CN103080903B (zh) | 调度器、多核处理器系统以及调度方法 | |
CN108632365A (zh) | 服务资源调整方法、相关装置和设备 | |
CN103942098A (zh) | 一种任务处理系统和方法 | |
CN109445944A (zh) | 一种基于dpdk的网络数据采集处理系统及其方法 | |
CN105320561A (zh) | 任务管理方法和系统 | |
CN104717231A (zh) | 内容分发网络的预分发处理方法及装置 | |
CN108519917A (zh) | 一种资源池分配方法和装置 | |
CN101227416A (zh) | 一种通信网络中链路带宽分配方法 | |
CN109471872A (zh) | 处理高并发查询请求的方法及装置 | |
CN112162852A (zh) | 一种多架构cpu节点的管理方法、装置及相关组件 | |
CN102609316A (zh) | 一种网络计算资源的管理系统及方法 | |
CN115269193A (zh) | 自动化测试中实现分布式负载均衡的方法及装置 | |
CN105260244A (zh) | 一种分布式系统任务调度的方法和装置 | |
CN106067886B (zh) | 安全策略更新方法及系统 | |
CN103561092B (zh) | 私有云环境下管理资源的方法及装置 | |
US8966094B2 (en) | Managing session data of a composite service session in a communication network | |
CN108536518A (zh) | 任务调度的方法及系统、征信平台、服务终端及存储器 | |
CN106940656A (zh) | 一种任务调度方法及装置 | |
CN103067476B (zh) | 一种基于虚拟机的动态网络重构方法 | |
CN110069565A (zh) | 一种分布式数据库数据批量处理的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160205 Address after: 200335 Shanghai city Changning District Admiralty Road No. 968 Building No. 16 10 floor Applicant after: SHANGHAI XIECHENG BUSINESS CO., LTD. Address before: 200335 Shanghai City, Changning District Fuquan Road No. 99, Ctrip network technology building Applicant before: Ctrip computer technology (Shanghai) Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |