CN104572290A - 消息处理线程的控制方法及装置 - Google Patents
消息处理线程的控制方法及装置 Download PDFInfo
- Publication number
- CN104572290A CN104572290A CN201310474533.9A CN201310474533A CN104572290A CN 104572290 A CN104572290 A CN 104572290A CN 201310474533 A CN201310474533 A CN 201310474533A CN 104572290 A CN104572290 A CN 104572290A
- Authority
- CN
- China
- Prior art keywords
- business
- type
- sent
- thread
- request information
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/56—Queue scheduling implementing delay-aware scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Entrepreneurship & Innovation (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- Data Mining & Analysis (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种消息处理线程的控制方法及装置,本发明通过将接收的业务请求消息中的业务内容按类型分为不同类型的业务,将不同类型的业务内容发送至对应的不同线程进行处理,在大规模用户并发业务请求消息的情况下,降低业务请求消息在消息队列中等待的时间,进而降低业务请求的响应时间,提高业务系统的业务处理效率。
Description
技术领域
本发明涉及到业务系统消息处理领域,特别涉及到一种消息处理线程的控制方法及装置。
背景技术
现在业务系统越来越庞大,动辄就是成千上万的用户同时在线,对请求的响应速度要求也越来越高,对支撑业务系统运行的应用服务器来说也就提出了更高的要求,需要能够做到充分利用服务器的物理性能,来处理大量客户端并发的业务请求消息。
参照图1,常见的应用服务器处理客户端并发的业务请求消息的过程如下:
1、应用服务器100接收从客户端101、102、103发送来的业务请求消息,交给消息分发器104中。
2、消息分发器104将接收到的各个业务请求消息分派给消息处理器105处理,分配一个线程池来处理接收到的各个业务请求消息,且每一个接收到业务请求消息使用一个线程来处理,在该业务请求处理完后将该线程释放回线程池。
3、通过业务请求处理线程池的大小来控制并发处理业务请求的数量。
但是,由于并发用户的数量越来越多,业务请求响应时间又不能降低,在这种传统模式下的业务请求消息的处理遇到了一些问题:
A、传统模式下,请求响应时间包括:业务请求的真正处理时间加上在消息队列中的等待时间。如果并发用户业务请求太多,超过业务请求处理线程池中的线程数量,那么就会有业务请求处于等待状态,直到其他业务请求处理完之后释放线程。在大规模用户并发业务请求消息的情况下,业务请求消息在消息队列中等待的时间就会更长,业务请求的响应时间就会急剧增加。
B、如果扩大线程池,增加线程的数量,在线程数量不超过1000的情况下还能解决一部分问题。如果数量再大一些,到几千、上万,业务系统的处理能力就会开始下降。
C、传统的多线程模式下,随着业务逻辑越来越复杂,编程的难度大幅增加,导致编程效率的下降。经常在编写一段代码时,要反复的思考、模拟多线程情况下可能遇到的多线程之间的同步问题。
D、不能有效地利用的系统提供的异步IO(Input/Output,输入/输出)机制,因为线程入口是同步的,需要在业务请求消息返回时获得返回结果给客户端,所以即使业务系统提供了异步IO机制,也需要等到异步回调以后,线程才能继续往下运行。
基于上述分析,现有通过增加线程数量的方式来解决大规模用户并发业务请求对业务系统的影响主要包括:
一、随着线程数量的增加,业务系统会为每个线程分配线程堆栈,线程数量增多就会占用很大部分的系统内存,从而导致真正的业务处理可用的内存资源减少;
二、线程数量增加之后,线程调度所消耗的CPU开销明显增多,又会与业务处理争用CPU资源,造成业务处理速度降低。
发明内容
本发明的主要目的为提供一种消息处理线程的控制方法及装置,旨在降低业务请求消息在消息队列中等待的时间,进而降低业务请求的响应时间,提高业务系统的业务处理效率。
本发明提出一种消息处理线程的控制方法,该方法包括:
当接收到业务请求消息时,确定接收的业务请求消息中的业务内容;
将确定的业务内容按照类型分为不同类型的业务,将各个不同类型的业务分别发送至对应的线程进行处理。
优选地,所述业务类型包括计算类型和IO操作类型,所述将确定的业务内容按照类型分为不同类型的业务,将各个不同类型的业务分别发送至对应的线程进行处理的步骤包括:
将确定的业务内容按照类型分为计算业务和IO操作业务,将IO操作业务按照操作类型分为不同操作类型的IO操作业务;
将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理。
优选地,在所述将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理的步骤之后,该方法包括:
在完成IO操作之后的业务内容需要进行计算业务时,将完成IO操作之后的业务内容发送至所述计算线程进行处理。
优选地,在所述将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理的步骤之后,该方法还包括:
在完成计算操作之后的业务内容需要进行IO操作业务时,将完成计算操作之后的业务内容发送至对应类型的IO操作线程进行处理。
优选地,当接收到多个业务请求消息时,该方法还包括:
将多个业务请求消息中的同一类型的计算业务发送至同一个计算线程进行处理。
本发明还提出一种消息处理线程的控制装置,该装置包括:
处理模块,用于当接收到业务请求消息时,确定接收的业务请求消息中的业务内容;及
将确定的业务内容按照类型分为不同类型的业务;
数据接发模块,用于将各个不同类型的业务分别发送至对应的线程进行处理。
优选地,所述业务类型包括计算类型和IO操作类型,
所述处理模块,用于将确定的业务内容按照类型分为计算业务和IO操作业务,将IO操作业务按照操作类型分为不同操作类型的IO操作业务;
所述数据接发模块,用于将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理。
优选地,所述数据接发模块,还用于在完成IO操作之后的业务内容需要进行计算业务时,将完成IO操作之后的业务内容发送至所述计算线程进行处理。
优选地,所述数据接发模块,还用于在完成计算操作之后的业务内容需要进行IO操作业务时,将完成计算操作之后的业务内容发送至对应类型的IO操作线程进行处理。
优选地,当接收到多个业务请求消息时,所述数据接发模块,还用于将多个业务请求消息中的同一类型的计算业务发送至同一个计算线程进行处理。
相对现有技术,本发明通过将接收的业务请求消息中的业务内容按类型分为不同类型的业务,将不同类型的业务内容发送至对应的不同线程进行处理,在大规模用户并发业务请求消息的情况下,降低业务请求消息在消息队列中等待的时间,进而降低业务请求的响应时间,提高业务系统的业务处理效率。
附图说明
图1为业务系统结构图;
图2为本发明消息处理线程的控制方法的第一实施例的流程示意图;
图3为本发明消息处理线程的控制方法的第二实施例的流程示意图;
图4为本发明消息处理线程的控制方法的第三实施例的流程示意图;
图5为本发明消息处理线程的控制装置的较佳实施例的具体架构图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图2所示,为本发明消息处理线程的控制方法的第一实施例的流程示意图。
需要强调的是:图2所示流程图仅为一个较佳实施例,本领域的技术人员当知,任何围绕本发明思想构建的实施例都不应脱离于如下技术方案涵盖的范围:
当接收到客户端发送来的业务请求消息时,确定接收的业务请求消息中的业务内容;将确定的业务内容按照类型分为不同类型的业务,将各个不同类型的业务分别发送至对应的线程进行处理。
以下是本实施例逐步实现消息处理线程的控制的具体步骤:
步骤S11,当接收到业务请求消息时,确定接收的业务请求消息中的业务内容。
步骤S12,将确定的业务内容按照类型分为不同类型的业务,将各个不同类型的业务分别发送至对应的线程进行处理。
具体的,在业务系统中,包括客户端和应用服务器等其他业务设备,应用服务器包括消息分发器和消息处理器,消息处理器包括消息队列及处理不同类型业务的线程,将业务系统中处理业务内容的线程分为计算线程和IO操作业务线程。在本实施例中,所述业务类型优选为包括计算类型和IO操作类型,在本发明其他实施例还可以包括计算类型和IO操作类型等其他任意适用的业务类型,在此不作一一限定。所述计算类型可以是逻辑类运算,数据的求和等,所述IO操作可以是文件操作、Socket(套接口)操作或数据库操作等。当接收到业务请求消息时,所述业务请求消息可以是客户端发送过来的,也可以是业务系统中的其他业务设备的业务请求消息(上报信息),确定接收的业务请求消息中的业务内容,将确定的业务内容按照类型分为不同类型的业务,将各个不同类型的业务分别发送至对应的线程进行处理。即将确定的业务内容分为计算类型和IO操作类型,将确定为计算类型的业务内容发送至计算线程进行处理,以对计算类型的业务内容进行数据求和等处理;将确定为IO操作类型的业务内容发送至IO操作线程进行处理,以对确定为IO操作类型的业务内容进行文件操作处理、Socket操作处理或数据库操作处理。所述将不同类型的业务发送至对应类型的线程进行处理的实现方式为在对业务进行编程时,给各个不同类型的业务编辑相对应的接口标识,并通过各个下发的业务类型所携带的接口标识调度至对应接口的线程进行计算或IO操作处理;将确定的业务内容分为计算类型和IO操作类型也是根据其携带的接口标识来识别并进行对应接口的调度,例如,为计算业务编程为“0”的标识,将IO操作业务编程为“1”的标识,通过将携带有“0”的标识的业务内容发送至计算线程进行处理,将携带有“1”标识的业务内容发送至IO操作线程进行处理,也还可以是其他适用的可以区分计算业务和IO操作业务的标识。为了进一步提高业务系统处理业务内容的效率,可以根据业务需要和本身业务系统的处理能力来配置不同类型线程的数量。计算线程和IO线程池大小的配置对技术水平要求比较高,可以考虑由具体的业务系统收集几种常用服务器的测试数据后,给出经验配置参数或者是开发一个自动进行配置的工具,例如,该业务需求和应用服务器的处理能力计算线程的数量为100,IO操作线程的数量500,为该应用服务器配置计算线程100个,IO操作线程500个,其中IO操作线程可以根据业务中文件操作类型、Socket操作类型及数据库操作类型进行细分,例如分别配置150、200、150个线程等,在此,线程的配置数量仅举例说明,并不将各个业务系统中配置的线程数量局限于此。
通过将接收的业务请求消息中的业务内容按类型分为不同类型的业务,将不同类型的业务内容发送至对应的不同线程进行处理,在大规模用户并发业务请求消息的情况下,降低业务请求消息在消息队列中等待的时间,进而降低业务请求的响应时间,提高业务系统的业务处理效率。
如图3所示,为本发明消息处理线程的控制方法的第二实施例的流程示意图。
基于上述第一实施例,所述业务类型包括计算类型和IO操作类型,步骤S12包括:
步骤S13,将确定的业务内容按照类型分为计算业务和IO操作业务,将IO操作业务按照操作类型分为不同操作类型的IO操作业务;
步骤S14,将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理。
具体的,将业务系统中用于处理IO操作的IO操作线程按照操作类型进行分类,各个分类后的IO操作线程只负责对应的IO操作类型的操作处理,而各个类型的IO操作线程根据业务需要进行配置。当接收到业务请求消息时,确定接收的业务请求消息中的业务内容,将确定的业务内容按照类型分为不同类型的业务,将各个不同类型的业务分别发送至对应的线程进行处理。即将确定的业务内容分为计算类型和IO操作类型,将确定为计算类型的业务内容发送至计算线程进行处理,以对计算类型的业务内容进行数据求和等处理;将确定为IO操作类型的业务内容按照操作类型分为不同操作类型的IO操作,例如,分为文件操作类型、Socket操作类型或数据库操作类型等,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理,即将各个不同类型的IO操作业务发送至对应类型的IO设备进行处理;以通过文件操作线程对确定为文件操作类型的IO业务内容进行文件操作处理、通过Socket操作线程对确定为Socket操作类型的IO业务内容进行Socket操作处理或通过数据库操作线程对确定为数据库操作类型的IO业务内容进行数据库操作处理。
本实施例通过对确定为IO操作类型的业务内容按照操作类型分为不同操作类型的IO操作,并将不同操作类型的IO操作分别发送至对应的IO操作线程进行对应的操作处理,有效避免因多个业务请求争用某种类型的IO设备而导致后续使用其他IO设备的业务请求得不到及时处理,进一步提高业务系统的业务处理效率。
如图4所示,为本发明消息处理线程的控制方法的第三实施例的流程示意图。
基于上述第二实施例,在步骤S14之后,该方法还包括:
步骤S15,在完成IO操作之后的业务内容需要进行计算业务时,将完成IO操作之后的业务内容发送至所述计算线程进行处理。
具体的,在业务请求消息包括的IO操作业务内容,在对应的IO操作线程中完成时,例如,文件操作线程对确定为文件操作类型的IO业务内容进行文件操作处理之后,构建文件操作业务的返回消息返回至所述计算线程,在该IO操作类型的线程的操作完成,将该IO操作类型的线程释放,供其他业务请求消息中的本类型的IO操作进行文件操作处理。在完成IO操作之后的业务内容需要进行计算业务时,将该构建的文件操作业务的返回消息发送至所述计算线程,该计算线程为该IO操作类型的业务对应的业务请求消息中,包括的计算业务类型进行计算处理的计算线程,即对于同一个业务请求消息中涉及的计算业务都通过一个计算线程进行处理,可以使得在业务编码过程中无须考虑线程同步的问题,提高业务系统的开发效率。在本发明其他实施例中,若业务内容涉及的计算业务非常大,需要多个计算线程来处理,用户在通过用户端发送业务请求消息时保证包括的计算业务为无状态特性,以确保多个计算线程能并发进行。
同样,在执行完步骤S14之后,还可以是在完成计算操作之后的业务内容需要进行IO操作业务时,将完成计算操作之后的业务内容发送至对应类型的IO操作线程进行处理。
在本发明其他实施例中,为了使得在业务编码过程中无须考虑线程同步的问题,提高业务系统的开发效率,当接收到多个业务请求消息时,将多个业务请求消息中的同一类型的计算业务发送至同一个计算线程进行处理。例如,多个业务请求消息中都包括告警类型的计算业务,将这些都为告警类型的计算业务发送至同一个计算线程进行处理。
下面以具体实例来说明业务系统对业务请求消息中的业务内容进行处理的过程:
该业务系统的应用服务器根据业务需求配置有消息循环A(消息队列A、计算线程A)、消息循环B(消息队列B、计算线程B)、消息循环C(消息队列C、计算线程C);配置有IO操作线程池,该IO操作线程池配置有文件操作队列及其对应的文件操作线程、Socket操作队列及其对应的Socket操作线程及数据库操作队列及其对应的数据库操作线程。当接收到客户端发送来的业务请求消息时,将该业务请求消息放入消息循环A的消息队列A中,消息循环A的计算线程A从消息队列中获取该业务请求消息的计算业务进行计算处理,当计算过程需要涉及到消息循环B时,构建新的业务请求消息发送至消息循环B,消息循环A中的该业务请求消息已经处理完成,可以进行下一条业务请求消息的处理,消息循环B中的消息队列B接收到消息循环A发送过来的业务请求消息,计算线程B对接收的业务请求消息进行计算处理,当计算过程需要读取文件内容时,构造文件访问业务,将该业务请求消息发送至文件操作队列,文件操作线程读取文件内容,文件内容读取完毕之后,构建返回消息发送至消息循环B,释放文件操作线程,供下一个文件操作类型的IO操作进行文件类型的操作;消息循环B中的消息队列B获取到文件操作完后的返回消息,当计算过程需要涉及到消息循环C时,构建一个新的业务请求消息,将构建的新的业务请求消息发送至消息循环C,消息循环B中的该业务请求消息已经处理完成,可以进行下一条业务请求消息的处理,计算线程C对接收的业务请求消息进行计算处理,当计算过程需要查询数据库时,构造数据库访问业务,将构造数据库访问业务的请求消息发送至数据库操作队列,数据库操作线程执行数据查询,数据查询完毕之后,构建返回消息发送至消息循环C,释放数据库操作线程,供下一个数据库操作类型的IO操作进行数据库操作类型的操作;消息队列C获取数据库查询业务的返回消息,调用计算线程C对该返回消息进行处理,构造返回消息,发送至消息循环B,消息队列B获取消息循环C发送来的返回消息,调用计算线程B对该返回消息进行处理,构造返回消息,发送至消息循环A,消息队列A获取消息循环B发送来的返回消息,调用计算线程A对该返回消息进行处理,经计算线程A处理之后转发出包,完成该业务消息请求的业务请求处理过程。在每一个计算线程或IO操作线程处理完一个计算业务后,释放该线程供下一个计算业务进行计算处理,在大规模用户并发业务请求消息的情况下,减少业务请求消息的等待时间。在本实施例中,该业务系统配置有3个消息循环,为了最大限度的利用CPU资源,也还可以是在一个消息循环即可满足所有的计算业务,配置一个消息循环。
通过将同一个业务请求消息中涉及的计算业务都通过一个计算线程进行处理,可以使得在业务编码过程中无须考虑线程同步的问题,提高业务系统的开发效率。
如图5所示,为本发明消息处理线程的控制装置的较佳实施例具体架构图。该装置包括处理模块10,数据接发模块20及配置模块30,
所述处理模块10,用于当接收到业务请求消息时,确定接收的业务请求消息中的业务内容;及
将确定的业务内容按照类型分为不同类型的业务;
所述数据接发模块20,用于将各个不同类型的业务分别发送至对应的线程进行处理。
具体的,在业务系统中,包括客户端和应用服务器等其他业务设备,应用服务器包括消息分发器和消息处理器,消息处理器包括消息队列及处理不同类型业务的线程,在本实施例中,所述业务类型优选为包括计算类型和IO操作类型,在本发明其他实施例还可以包括计算类型和IO操作类型等其他任意适用的业务类型,在此不作一一限定。所述计算类型可以是逻辑类运算,数据的求和等,所述IO操作可以是文件操作、Socket操作或数据库操作等。当数据接发模块20接收到业务请求消息时,所述业务请求消息可以是客户端发送过来的,也可以是业务系统中的其他业务设备的业务请求消息(上报信息),处理模块10确定接收的业务请求消息中的业务内容,将确定的业务内容按照类型分为不同类型的业务,将各个不同类型的业务分别发送至对应的线程进行处理。即处理模块10将确定的业务内容分为计算类型和IO操作类型,数据接发模块20将确定为计算类型的业务内容发送至计算线程进行处理,以对计算类型的业务内容进行数据求和等处理;数据接发模块20将确定为IO操作类型的业务内容发送至IO操作线程进行处理,以对确定为IO操作类型的业务内容进行文件操作处理、Socket操作处理或数据库操作处理。所述将不同类型的业务发送至对应类型的线程进行处理的实现方式为在对业务进行编程时,给各个不同类型的业务编辑相对应的接口标识,并通过各个下发的业务类型所携带的接口标识调度至对应接口的线程进行计算或IO操作处理;将确定的业务内容分为计算类型和IO操作类型也是根据其携带的接口标识来识别并进行对应接口的调度,例如,为计算业务编程为“0”的标识,将IO操作业务编程为“1”的标识,通过将携带有“0”的标识的业务内容发送至计算线程进行处理,将携带有“1”标识的业务内容发送至IO操作线程进行处理,也还可以是其他适用的可以区分计算业务和IO操作业务的标识。为了进一步提高业务系统处理业务内容的效率,配置模块30可以根据业务需要和本身业务系统的处理能力来配置不同类型线程的数量。计算线程和IO线程池大小的配置对技术水平要求比较高,可以考虑由具体的业务系统收集几种常用服务器的测试数据后,给出经验配置参数或者是开发一个自动进行配置的工具,例如,该业务需求和应用服务器的处理能力计算线程的数量为100,IO操作线程的数量500,配置模块30为该应用服务器配置计算线程100个,IO操作线程500个,其中IO操作线程可以根据业务中文件操作类型、Socket操作类型及数据库操作类型进行细分,例如分别配置150、200、150个线程等,在此,线程的配置数量仅举例说明,并不将各个业务系统中配置的线程数量局限于此。
通过处理模块10将数据接发模块20接收的业务请求消息中的业务内容按类型分为不同类型的业务,数据接发模块20将不同类型的业务内容发送至对应的不同线程进行处理,在大规模用户并发业务请求消息的情况下,降低业务请求消息在消息队列中等待的时间,进而降低业务请求的响应时间,提高业务系统的业务处理效率。
进一步地,所述业务类型包括计算类型和IO操作类型,
所述处理模块10,用于将确定的业务内容按照类型分为计算业务和IO操作业务,将IO操作业务按照操作类型分为不同操作类型的IO操作业务;
所述数据接发模块20,用于将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理。
具体的,将业务系统中用于处理IO操作的IO操作线程按照操作类型进行分类,各个分类后的IO操作线程只负责对应的IO操作类型的操作处理,而各个类型的IO操作线程根据业务需要进行配置。当数据接发模块20接收到客户端发送来的业务请求消息时,处理模块10确定接收的业务请求消息中的业务内容,将确定的业务内容按照类型分为不同类型的业务,数据接发模块20将各个不同类型的业务分别发送至对应的线程进行处理。即处理模块10将确定的业务内容分为计算类型和IO操作类型,数据接发模块20将确定为计算类型的业务内容发送至计算线程进行处理,以对计算类型的业务内容进行数据求和等处理;处理模块10将确定为IO操作类型的业务内容按照操作类型分为不同操作类型的IO操作,例如,分为文件操作类型、Socket操作类型或数据库操作类型等,数据接发模块20将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理,即将各个不同类型的IO操作业务发送至对应类型的IO设备进行处理;以通过文件操作线程对确定为文件操作类型的IO业务内容进行文件操作处理、通过Socket操作线程对确定为Socket操作类型的IO业务内容进行Socket操作处理或通过数据库操作线程对确定为数据库操作类型的IO业务内容进行数据库操作处理。
本实施例通过处理模块10对确定为IO操作类型的业务内容按照操作类型分为不同操作类型的IO操作,数据接发模块20将不同操作类型的IO操作分别发送至对应的IO操作线程进行对应的操作处理,有效避免因多个业务请求争用某种类型的IO设备而导致后续使用其他IO设备的业务请求得不到及时处理,进一步提高业务系统的业务处理效率。
进一步地,所述数据接发模块20,还用于在完成IO操作之后的业务内容需要进行计算业务时,将完成IO操作之后的业务内容发送至所述计算线程进行处理。
具体的,在业务请求消息包括的IO操作业务内容,在对应的IO操作线程中完成时,例如,文件操作线程对确定为文件操作类型的IO业务内容进行文件操作处理之后,构建文件操作业务的返回消息返回至所述计算线程,在该IO操作类型的线程的操作完成,将该IO操作类型的线程释放,供其他业务请求消息中的本类型的IO操作进行文件操作处理。在完成IO操作之后的业务内容需要进行计算业务时,将该构建的文件操作业务的返回消息发送至所述计算线程,该计算线程为该IO操作类型的业务对应的业务请求消息,包括的计算业务类型进行计算处理的计算线程,即对于同一个业务请求消息中涉及的计算业务都通过一个计算线程进行处理,可以使得在业务编码过程中无须考虑线程同步的问题,提高业务系统的开发效率。在本发明其他实施例中,若业务内容涉及的计算业务非常大,需要多个计算线程来处理,用户在通过用户端发送业务请求消息时保证包括的计算业务为无状态特性,以确保多个计算线程能并发进行。
所述数据接发模块20,还用于在完成计算操作之后的业务内容需要进行IO操作业务时,将完成计算操作之后的业务内容发送至对应类型的IO操作线程进行处理。
在本发明其他实施例中,为了使得在业务编码过程中无须考虑线程同步的问题,提高业务系统的开发效率,当接收到多个业务请求消息时,将多个业务请求消息中的同一类型的计算业务发送至同一个计算线程进行处理。例如,多个业务请求消息中都包括告警类型的计算业务,数据接发模块20将这些都为告警类型的计算业务发送至同一个计算线程进行处理。
下面以具体实例来说明业务系统对业务请求消息中的业务内容进行处理的过程:
该业务系统的应用服务器根据业务需求配置有消息循环A(消息队列A、计算线程A)、消息循环B(消息队列B、计算线程B)、消息循环C(消息队列C、计算线程C);配置有IO操作线程池,该IO操作线程池配置有文件操作队列及其对应的文件操作线程、Socket操作队列及其对应的Socket操作线程及数据库操作队列及其对应的数据库操作线程。当接收到客户端发送来的业务请求消息时,将该业务请求消息放入消息循环A的消息队列A中,消息循环A的计算线程A从消息队列中获取该业务请求消息的计算业务进行计算处理,当计算过程需要涉及到消息循环B时,构建新的业务请求消息发送至消息循环B,消息循环A中的该业务请求消息已经处理完成,可以进行下一条业务请求消息的处理,消息循环B中的消息队列B接收到消息循环A发送过来的业务请求消息,计算线程B对接收的业务请求消息进行计算处理,当计算过程需要读取文件内容时,构造文件访问业务,将该业务请求消息发送至文件操作队列,文件操作线程读取文件内容,文件内容读取完毕之后,构建返回消息发送至消息循环B,释放文件操作线程,供下一个文件操作类型的IO操作进行文件类型的操作;消息循环B中的消息队列B获取到文件操作完后的返回消息,当计算过程需要涉及到消息循环C时,构建一个新的业务请求消息,将构建的新的业务请求消息发送至消息循环C,消息循环B中的该业务请求消息已经处理完成,可以进行下一条业务请求消息的处理,计算线程C对接收的业务请求消息进行计算处理,当计算过程需要查询数据库时,构造数据库访问业务,将构造数据库访问业务的请求消息发送至数据库操作队列,数据库操作线程执行数据查询,数据查询完毕之后,构建返回消息发送至消息循环C,释放数据库操作线程,供下一个数据库操作类型的IO操作进行数据库操作类型的操作;消息队列C获取数据库查询业务的返回消息,调用计算线程C对该返回消息进行处理,构造返回消息,发送至消息循环B,消息队列B获取消息循环C发送来的返回消息,调用计算线程B对该返回消息进行处理,构造返回消息,发送至消息循环A,消息队列A获取消息循环B发送来的返回消息,调用计算线程A对该返回消息进行处理,经计算线程A处理之后转发出包,完成该业务消息请求的业务请求处理过程。在每一个计算线程或IO操作线程处理完一个计算业务后,释放该线程供下一个计算业务进行计算处理,在大规模用户并发业务请求消息的情况下,减少业务请求消息的等待时间。在本实施例中,该业务系统配置有3个消息循环,为了最大限度的利用CPU资源,也还可以是在一个消息循环即可满足所有的计算业务,配置一个消息循环。
通过将同一个业务请求消息中涉及的计算业务都通过一个计算线程进行处理,可以使得在业务编码过程中无须考虑线程同步的问题,提高业务系统的开发效率。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种消息处理线程的控制方法,其特征在于,该方法包括:
当接收到业务请求消息时,确定接收的业务请求消息中的业务内容;
将确定的业务内容按照类型分为不同类型的业务,将各个不同类型的业务分别发送至对应的线程进行处理。
2.根据权利要求1所述的消息处理线程的控制方法,其特征在于,所述业务类型包括计算类型和IO操作类型,所述将确定的业务内容按照类型分为不同类型的业务,将各个不同类型的业务分别发送至对应的线程进行处理的步骤包括:
将确定的业务内容按照类型分为计算业务和IO操作业务,将IO操作业务按照操作类型分为不同操作类型的IO操作业务;
将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理。
3.根据权利要求2所述的消息处理线程的控制方法,其特征在于,在所述将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理的步骤之后,该方法包括:
在完成IO操作之后的业务内容需要进行计算业务时,将所述完成IO操作之后的业务内容发送至所述计算线程进行处理。
4.根据权利要求2所述的消息处理线程的控制方法,其特征在于,在所述将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理的步骤之后,该方法还包括:
在完成计算操作之后的业务内容需要进行IO操作业务时,将所述完成计算操作之后的业务内容发送至对应类型的IO操作线程进行处理。
5.根据权利要求1所述的消息处理线程的控制方法,其特征在于,当接收到多个业务请求消息时,该方法还包括:
将多个业务请求消息中的同一类型的计算业务发送至同一个计算线程进行处理。
6.一种消息处理线程的控制装置,其特征在于,该装置包括:
处理模块,用于当接收到业务请求消息时,确定接收的业务请求消息中的业务内容;及
将确定的业务内容按照类型分为不同类型的业务;
数据接发模块,用于将各个不同类型的业务分别发送至对应的线程进行处理。
7.根据权利要求6所述的消息处理线程的控制装置,其特征在于,所述业务类型包括计算类型和IO操作类型,
所述处理模块,用于将确定的业务内容按照类型分为计算业务和IO操作业务,将IO操作业务按照操作类型分为不同操作类型的IO操作业务;
所述数据接发模块,用于将分类后的计算业务发送至计算线程进行处理,将各个不同操作类型的IO操作业务分别发送至对应类型的IO操作线程进行处理。
8.根据权利要求7所述的消息处理线程的控制装置,其特征在于,
所述数据接发模块,还用于在完成IO操作之后的业务内容需要进行计算业务时,将完成IO操作之后的业务内容发送至所述计算线程进行处理。
9.根据权利要求7所述的消息处理线程的控制装置,其特征在于,
所述数据接发模块,还用于在完成计算操作之后的业务内容需要进行IO操作业务时,将完成计算操作之后的业务内容发送至对应类型的IO操作线程进行处理。
10.根据权利要求6所述的消息处理线程的控制装置,其特征在于,当接收到多个业务请求消息时,
所述数据接发模块,还用于将多个业务请求消息中的同一类型的计算业务发送至同一个计算线程进行处理。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310474533.9A CN104572290A (zh) | 2013-10-11 | 2013-10-11 | 消息处理线程的控制方法及装置 |
PCT/CN2014/079636 WO2014187412A1 (zh) | 2013-10-11 | 2014-06-10 | 消息处理线程的控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310474533.9A CN104572290A (zh) | 2013-10-11 | 2013-10-11 | 消息处理线程的控制方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104572290A true CN104572290A (zh) | 2015-04-29 |
Family
ID=51932958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310474533.9A Pending CN104572290A (zh) | 2013-10-11 | 2013-10-11 | 消息处理线程的控制方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104572290A (zh) |
WO (1) | WO2014187412A1 (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159774A (zh) * | 2015-07-08 | 2015-12-16 | 清华大学 | 一种api请求保序处理方法及系统 |
CN105590253A (zh) * | 2016-01-12 | 2016-05-18 | 上海携程商务有限公司 | 基于多线程的并行财务流水生成方法及系统 |
CN106095546A (zh) * | 2016-06-01 | 2016-11-09 | 深圳市永兴元科技有限公司 | 云计算平台的任务管理方法及装置 |
CN106330769A (zh) * | 2016-11-15 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 一种业务处理方法及服务器 |
WO2017041398A1 (zh) * | 2015-09-08 | 2017-03-16 | 安一恒通(北京)科技有限公司 | 数据传输方法和装置 |
CN106533961A (zh) * | 2016-12-30 | 2017-03-22 | 中国农业银行股份有限公司 | 一种流量控制方法及装置 |
CN106790632A (zh) * | 2017-01-03 | 2017-05-31 | 北京奇虎科技有限公司 | 一种流数据的并发传输方法和装置 |
CN106909613A (zh) * | 2017-01-11 | 2017-06-30 | 华南理工大学 | 一种自适应均衡数据库访问服务的方法 |
CN106953857A (zh) * | 2017-03-16 | 2017-07-14 | 郑州云海信息技术有限公司 | 一种基于cs架构的服务器端多线程管理方法 |
CN107341056A (zh) * | 2017-07-05 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种基于网络文件系统的线程分配的方法及装置 |
CN107423085A (zh) * | 2017-04-24 | 2017-12-01 | 北京百度网讯科技有限公司 | 用于部署应用的方法和装置 |
CN108628636A (zh) * | 2017-03-24 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 系统业务隔离的方法、装置、电子设备和可读存储介质 |
CN108681481A (zh) * | 2018-03-13 | 2018-10-19 | 阿里巴巴集团控股有限公司 | 业务请求的处理方法及装置 |
CN109032452A (zh) * | 2018-08-14 | 2018-12-18 | 北京大米科技有限公司 | 页面操作内容同步系统及方法 |
CN105187519B (zh) * | 2015-08-26 | 2019-01-08 | 福建星网锐捷通讯股份有限公司 | 一种基于AIO的socket传输系统 |
CN109240831A (zh) * | 2018-09-21 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种操作请求处理方法、装置、设备及可读存储介质 |
CN109451035A (zh) * | 2018-12-04 | 2019-03-08 | 宁波耘瑞智能科技有限公司 | 一种分离式集群代理与服务的方法、装置及系统 |
CN109976891A (zh) * | 2019-03-28 | 2019-07-05 | 北京网聘咨询有限公司 | 基于任务线程配置的服务器任务处理方法 |
CN110351342A (zh) * | 2019-06-20 | 2019-10-18 | 平安科技(深圳)有限公司 | 业务指令处理方法、装置、计算机设备和存储介质 |
CN110413419A (zh) * | 2018-04-28 | 2019-11-05 | 北京京东尚科信息技术有限公司 | 一种规则执行的方法和装置 |
CN111737012A (zh) * | 2020-07-31 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 数据包的同步方法、装置、设备及存储介质 |
CN111866039A (zh) * | 2019-04-28 | 2020-10-30 | 中国移动通信集团上海有限公司 | 企业服务系统及请求处理方法 |
CN115396285A (zh) * | 2022-08-25 | 2022-11-25 | 中国工商银行股份有限公司 | 消息中间件的性能监控方法和系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107464088B (zh) * | 2016-06-02 | 2020-09-29 | 北京京东尚科信息技术有限公司 | 基于消息队列的业务处理系统及方法 |
CN118377635B (zh) * | 2024-06-24 | 2024-08-30 | 北京久佳信通科技有限公司 | 基于高并发场景下消息快速处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025649A (zh) * | 2010-06-04 | 2011-04-20 | 西本新干线股份有限公司 | 企业服务总线的消息处理方法 |
CN102447628A (zh) * | 2011-12-22 | 2012-05-09 | 苏州阔地网络科技有限公司 | 一种数据包传输处理方法及系统 |
CN102541653A (zh) * | 2010-12-24 | 2012-07-04 | 新奥特(北京)视频技术有限公司 | 一种多任务线程池调度方法和系统 |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
US8504691B1 (en) * | 2010-12-29 | 2013-08-06 | Amazon Technologies, Inc. | System and method for allocating resources for heterogeneous service requests |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102868600B (zh) * | 2012-09-10 | 2015-07-08 | 北京用友政务软件有限公司 | 一种多线程报文转发方法及系统 |
-
2013
- 2013-10-11 CN CN201310474533.9A patent/CN104572290A/zh active Pending
-
2014
- 2014-06-10 WO PCT/CN2014/079636 patent/WO2014187412A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025649A (zh) * | 2010-06-04 | 2011-04-20 | 西本新干线股份有限公司 | 企业服务总线的消息处理方法 |
CN102541653A (zh) * | 2010-12-24 | 2012-07-04 | 新奥特(北京)视频技术有限公司 | 一种多任务线程池调度方法和系统 |
US8504691B1 (en) * | 2010-12-29 | 2013-08-06 | Amazon Technologies, Inc. | System and method for allocating resources for heterogeneous service requests |
CN102447628A (zh) * | 2011-12-22 | 2012-05-09 | 苏州阔地网络科技有限公司 | 一种数据包传输处理方法及系统 |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159774B (zh) * | 2015-07-08 | 2018-06-12 | 清华大学 | 一种api请求保序处理方法及系统 |
CN105159774A (zh) * | 2015-07-08 | 2015-12-16 | 清华大学 | 一种api请求保序处理方法及系统 |
CN105187519B (zh) * | 2015-08-26 | 2019-01-08 | 福建星网锐捷通讯股份有限公司 | 一种基于AIO的socket传输系统 |
WO2017041398A1 (zh) * | 2015-09-08 | 2017-03-16 | 安一恒通(北京)科技有限公司 | 数据传输方法和装置 |
CN105590253A (zh) * | 2016-01-12 | 2016-05-18 | 上海携程商务有限公司 | 基于多线程的并行财务流水生成方法及系统 |
CN106095546A (zh) * | 2016-06-01 | 2016-11-09 | 深圳市永兴元科技有限公司 | 云计算平台的任务管理方法及装置 |
CN106330769B (zh) * | 2016-11-15 | 2022-03-08 | 腾讯科技(深圳)有限公司 | 一种业务处理方法及服务器 |
CN106330769A (zh) * | 2016-11-15 | 2017-01-11 | 腾讯科技(深圳)有限公司 | 一种业务处理方法及服务器 |
CN106533961B (zh) * | 2016-12-30 | 2020-08-28 | 中国农业银行股份有限公司 | 一种流量控制方法及装置 |
CN106533961A (zh) * | 2016-12-30 | 2017-03-22 | 中国农业银行股份有限公司 | 一种流量控制方法及装置 |
CN106790632B (zh) * | 2017-01-03 | 2020-07-14 | 北京奇虎科技有限公司 | 一种流数据的并发传输方法和装置 |
CN106790632A (zh) * | 2017-01-03 | 2017-05-31 | 北京奇虎科技有限公司 | 一种流数据的并发传输方法和装置 |
CN106909613A (zh) * | 2017-01-11 | 2017-06-30 | 华南理工大学 | 一种自适应均衡数据库访问服务的方法 |
CN106909613B (zh) * | 2017-01-11 | 2020-05-22 | 华南理工大学 | 一种自适应均衡数据库访问服务的方法 |
CN106953857A (zh) * | 2017-03-16 | 2017-07-14 | 郑州云海信息技术有限公司 | 一种基于cs架构的服务器端多线程管理方法 |
CN106953857B (zh) * | 2017-03-16 | 2020-03-10 | 郑州云海信息技术有限公司 | 一种基于cs架构的服务器端多线程管理方法 |
CN108628636A (zh) * | 2017-03-24 | 2018-10-09 | 北京京东尚科信息技术有限公司 | 系统业务隔离的方法、装置、电子设备和可读存储介质 |
CN107423085B (zh) * | 2017-04-24 | 2020-07-28 | 北京百度网讯科技有限公司 | 用于部署应用的方法和装置 |
CN107423085A (zh) * | 2017-04-24 | 2017-12-01 | 北京百度网讯科技有限公司 | 用于部署应用的方法和装置 |
CN107341056A (zh) * | 2017-07-05 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种基于网络文件系统的线程分配的方法及装置 |
CN108681481A (zh) * | 2018-03-13 | 2018-10-19 | 阿里巴巴集团控股有限公司 | 业务请求的处理方法及装置 |
CN108681481B (zh) * | 2018-03-13 | 2021-10-15 | 创新先进技术有限公司 | 业务请求的处理方法及装置 |
CN110413419A (zh) * | 2018-04-28 | 2019-11-05 | 北京京东尚科信息技术有限公司 | 一种规则执行的方法和装置 |
CN109032452A (zh) * | 2018-08-14 | 2018-12-18 | 北京大米科技有限公司 | 页面操作内容同步系统及方法 |
CN109240831A (zh) * | 2018-09-21 | 2019-01-18 | 郑州云海信息技术有限公司 | 一种操作请求处理方法、装置、设备及可读存储介质 |
CN109451035A (zh) * | 2018-12-04 | 2019-03-08 | 宁波耘瑞智能科技有限公司 | 一种分离式集群代理与服务的方法、装置及系统 |
CN109976891A (zh) * | 2019-03-28 | 2019-07-05 | 北京网聘咨询有限公司 | 基于任务线程配置的服务器任务处理方法 |
CN109976891B (zh) * | 2019-03-28 | 2020-11-03 | 北京网聘咨询有限公司 | 基于任务线程配置的服务器任务处理方法 |
CN111866039A (zh) * | 2019-04-28 | 2020-10-30 | 中国移动通信集团上海有限公司 | 企业服务系统及请求处理方法 |
CN110351342A (zh) * | 2019-06-20 | 2019-10-18 | 平安科技(深圳)有限公司 | 业务指令处理方法、装置、计算机设备和存储介质 |
CN111737012A (zh) * | 2020-07-31 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 数据包的同步方法、装置、设备及存储介质 |
WO2022022140A1 (zh) * | 2020-07-31 | 2022-02-03 | 腾讯科技(深圳)有限公司 | 数据包的同步方法、装置、设备及存储介质 |
CN115396285A (zh) * | 2022-08-25 | 2022-11-25 | 中国工商银行股份有限公司 | 消息中间件的性能监控方法和系统 |
CN115396285B (zh) * | 2022-08-25 | 2024-03-01 | 中国工商银行股份有限公司 | 消息中间件的性能监控方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2014187412A1 (zh) | 2014-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572290A (zh) | 消息处理线程的控制方法及装置 | |
US8589929B2 (en) | System to provide regular and green computing services | |
US10977076B2 (en) | Method and apparatus for processing a heterogeneous cluster-oriented task | |
CN104298550B (zh) | 一种面向Hadoop的动态调度方法 | |
CN112148455B (zh) | 一种任务处理方法、设备及介质 | |
CN107463434B (zh) | 一种分布式任务处理方法与设备 | |
CN106557369A (zh) | 一种多线程的管理方法及系统 | |
WO2014110702A1 (zh) | 协同并发式消息总线、主动构件组装模型及构件拆分方法 | |
CN105159769A (zh) | 一种适用于计算能力异构集群的分布式作业调度方法 | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
CN110795254A (zh) | 一种基于php处理高并发io的方法 | |
CN103593192A (zh) | 一种基于slurm调度的算法集成与评测平台及方法 | |
US9104488B2 (en) | Support server for redirecting task results to a wake-up server | |
CN104536819A (zh) | 基于web服务的任务调度方法 | |
CN112631800A (zh) | 面向kafka的数据传输方法、系统、计算机设备及存储介质 | |
EP3049959A1 (en) | Processing a hybrid flow associated with a service class | |
CN102455932B (zh) | 一种任务实例串行执行方法、装置及系统 | |
Shen et al. | Performance prediction of parallel computing models to analyze cloud-based big data applications | |
US12035156B2 (en) | Communication method and apparatus for plurality of administrative domains | |
Pan et al. | Sustainable serverless computing with cold-start optimization and automatic workflow resource scheduling | |
CN101495978B (zh) | 减少总线连接的消费者和产生者之间的消息流 | |
CN112948088A (zh) | 一种云计算平台中的云工作流智能管理与调度系统 | |
Zhang et al. | Efficient online surveillance video processing based on spark framework | |
CN110032455A (zh) | 通过运行时间合作进行高效通信重叠 | |
Dong et al. | A general analysis framework for soft real-time tasks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into 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: 20150429 |