CN101882089B - 一种采用多线程处理业务会话应用的方法及装置 - Google Patents
一种采用多线程处理业务会话应用的方法及装置 Download PDFInfo
- Publication number
- CN101882089B CN101882089B CN 200910138374 CN200910138374A CN101882089B CN 101882089 B CN101882089 B CN 101882089B CN 200910138374 CN200910138374 CN 200910138374 CN 200910138374 A CN200910138374 A CN 200910138374A CN 101882089 B CN101882089 B CN 101882089B
- Authority
- CN
- China
- Prior art keywords
- message
- service conversation
- data
- thread
- node
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明披露了一种采用多线程处理业务会话应用的方法及装置,方法包括:业务会话应用程序预先创建并激活消息分发线程和多个数据处理线程,并为每一数据处理线程分配与之唯一关联的一数据区;消息分发线程从外部消息实体接收到消息时,将该消息中的业务会话与一数据处理线程唯一关联,并将该消息分发到该数据处理线程;数据处理线程接收到消息分发线程分发的消息时,在相应的数据区内根据该消息的状态进行相应的处理,并将处理结果反馈给外部消息实体。本发明避免了同步和互斥机制的弊端,在确保***安全、高效运行的同时,大大降低了***处理的复杂性。
Description
技术领域
本发明涉及工程应用中采用多线程处理应用过程的技术,尤其涉及采用多线程处理业务会话(Session)应用的方法和装置。
背景技术
多线程是一种允许在程序中并发执行多个指令流的机制,其中每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作***负责调度。
在工程应用中,多线程技术常被运用来提高软件***的运行效率。随着硬件设备的配置越来越趋向于高端化,即采用多CPU(中央处理器)、大内存等,故如何充分的利用***资源也随之成为一个课题。合理的多线程技术的运用,可以充分地利用***资源,不同线程指令流可以分布于不同的CPU上运行,实现多任务的并行操作,由此大大提高***的运行效率。
当然,采用多线程技术必须考虑各个线程的同步和互斥,以保证线程安全。通常***会采用以下几种方式来实现多线程同步和互斥的机制:
(1)临界区:通过对多线程的串行化来访问公共资源或一段代码,其速度快,适合控制数据访问
即在任意时刻只允许一个线程对共享数据资源进行访问。如果有多个线程试图同时访问临界区,那么当有一个线程进入后,其它所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。只有在临界区被释放后,其它线程才可以继续抢占,并以此达到多线程共享资源的目的。
(2)互斥量:为协调共同对一个共享资源的单独访问而设计
互斥量与临界区很相似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了在任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象权限交出,以便其它线程在获得后得以访问资源。
互斥量比临界区复杂。因为使用互斥不仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。
(3)信号量:为控制一个具有有限数量用户资源而设计
与前面几种方法不同,这种方法允许多个线程在同一时刻访问同一资源,但需要通过信号量限制在同一时刻访问该资源的线程最大数目。
(4)事件:用来通知线程有一些事件已发生,从而启动后继任务的开始
事件对象也可以通过通知操作的方式来保持线程的同步,并且可以实现不同进程中的线程同步操作。
利用以上这几种方式来实现线程的同步和互斥,能确保线程的安全,但同时也增加的***处理的复杂性,并在一定程度上会降低***运行的效率。
发明内容
本发明所要解决的技术问题在于提供一种采用多线程处理业务会话应用的方法及装置,能够在确保***安全、高效运行的同时,降低***处理的复杂性。
为解决上述技术问题,本发明提供一种采用多线程处理业务会话应用的方法,包括:
业务会话应用程序预先创建并激活消息分发线程和多个数据处理线程,并为每一个数据处理线程分配与之唯一关联的一个数据区;
消息分发线程从外部消息实体接收到消息时,将该消息中的业务会话与一个数据处理线程唯一关联,并将该消息分发到该数据处理线程;
数据处理线程接收到消息分发线程分发的消息时,在相应的数据区内根据该消息的状态进行相应的处理,并将处理结果反馈给外部消息实体。
进一步地,
业务会话应用程序为每一个数据处理线程分配与之唯一关联的一个数据区是指:该业务会话应用程序通过线程序号标识各数据处理线程,并通过线程序号将数据处理线程与分配的数据区唯一关联;
数据处理线程定期对相应的数据区进行扫描,以将超时存放数据的业务会话的节点的数据及时清理迁移到数据库。
进一步地,消息分发线程将消息中的业务会话与一个数据处理线程唯一关联是指:该消息分发线程解析消息内容中的特征字段,该特征字段用于唯一标识业务会话,对该特征字段进行运算处理得到唯一的线程序号,通过该线程序号将业务会话与数据处理线程唯一关联。
进一步地,对特征字段进行运算处理得到唯一的线程序号是指:该特征字段至少包括***时间,将该***时间用数据处理线程的个数进行取模运算,运算的结果即线程序号。
进一步地,数据处理线程接收到消息分发线程分发的消息时,在相应的数据区内根据该消息的状态进行相应的处理,并将处理结果反馈给外部消息实体,即:
数据处理线程对接收到的消息进行校验、解析,获取业务会话的操作码及特征字段,根据该操作码作为消息的状态标识来确定所述业务会话的节点的处理操作:
当该操作码标识为新建业务会话时,在相应的数据区队列中创建该业务会话的节点,以特征字段为该节点唯一标识,同时保存业务会话的信息,并将成功信息返回给外部消息实体;
或者,当操作码标识为查询业务会话时,根据该特征字段在相应的数据区队列中查找业务会话的节点,并从数据区获取该业务会话的信息,同时将该业务会话的信息和成功信息返回给外部消息实体;
或者,当操作码标识为更新业务会话时,根据该特征字段在相应的数据区队列中查找业务会话的节点,并更新数据区内该业务会话的信息,同时将成功信息返回给外部消息实体;
或者,当操作码标识为删除业务会话时,根据该特征字段在相应的数据区队列中查找业务会话的节点,并删除该节点,同时将成功信息返回给外部消息实体,标志业务会话结束。
为解决上述技术问题,本发明提供一种采用多线程处理业务会话应用的装置,包括依次连接的线程创建模块、消息分发模块、消息处理模块,还包括与所述消息分发模块连接的数据通讯模块;其中:
线程创建模块,用于应用预先创建消息分发线程和多个数据处理线程,并为每一个数据处理线程分配与之唯一关联的一个数据区;并将创建、激活的消息分发线程输出给消息分发模块,将创建、激活的多个数据处理线程及其数据区输出给消息处理模块;
数据通讯模块,用于所述装置与外部消息实体之间的通信连接;
消息分发模块,用于通过数据通讯模块接收外部消息实体发送的消息,将该消息中的业务会话与一个数据处理线程唯一关联,并将该消息分发到该数据处理线程;
消息处理模块,用于通过各数据处理线程在相应的数据区内对输入的消息根据其状态进行相应的处理,并将处理结果通过数据通讯模块反馈给外部消息实体。
进一步地,消息分发模块包括依次连接的消息适配器、会话-线程关联模块以及消息组包模块,其中:
消息适配器,用于将接收的消息进行识别、校验后,输出给会话-线程关联模块;
会话-线程关联模块,用于对输入的消息进行解析后,将解析的消息中唯一标识业务会话的特征字段,对由消息处理模块获知的数据处理线程的个数进行取模运算,根据运算的结果得到唯一的线程序号,将该线程序号与所述消息与一起输出给消息组包模块;
消息组包模块,与所述消息处理模块连接,用于根据输入的线程序号将所述消息封装成消息组包,并将该线程序号和该消息组包分发给消息处理模块。
进一步地,消息处理模块包括依次连接的消息适配器、数据处理器以及消息组包模块;其中:
消息适配器,用于将数据处理线程的个数通知会话-线程关联模块,将从消息组包模块分发的消息组包进行校验,解析后,根据线程序号将业务会话的特征字段及操作码字段输出给数据处理器内相应的数据处理线程;
数据处理器,用于通过相应的数据处理线程根据输入的操作码字段作为业务会话的状态标识来确定业务会话的节点的处理操作,并在进行相应的处理结束后,将相应的处理结果输出给消息组包模块;
消息组包模块,用于将输入的处理结果封装成组包,通过数据通讯模块发送给外部消息实体。
进一步地,相应的数据处理线程根据操作码字段来确定业务会话的节点的处理操作,并在进行相应的处理结束后将相应的处理结果输出给消息组包模块,即:
当操作码标识为新建业务会话时,在相应的数据区队列中创建该业务会话的节点,以特征字段为该节点唯一标识,同时保存该业务会话的信息,并将成功信息输出给给消息组包模块;
或者,当操作码标识为查询业务会话时,根据该特征字段在相应的数据区队列中查找该业务会话的节点,并从数据区获取该业务会话的信息,同时将该业务会话的信息和成功信息输出给消息组包模块;
或者,当操作码标识为更新业务会话时,根据该特征字段在相应的数据区队列中查找该业务会话的节点,并更新数据区内该业务会话的信息,同时将成功信息输出给消息组包模块;
或者,当操作码标识为删除业务会话时,根据该特征字段在相应的数据区队列中查找该业务会话的节点,并删除该节点,同时将成功信息输出给消息组包模块,标志业务会话结束。
进一步地,所述装置还包括数据库,消息处理模块包括与数据处理器连接的数据迁移器,其中:
数据处理器,还用于定期对相应的数据区进行扫描,以将超时存放数据的业务会话的节点的数据随特征字段一起输出给数据迁移器,并清空该节点的数据区;
数据迁移器,用于以特征字段为索引将输入的会话消息数据迁移到数据库中保存。
与现有技术相比较,本发明毋须采用复杂的多线程同步互斥技术,而是通过各线程独立的数据区来处理业务会话,实现线程之间的独立运行和业务会话的一致性,避免了同步和互斥机制的弊端,在确保***安全、高效运行的同时,大大降低了***处理的复杂性。
附图说明
图1是本发明的采用多线程处理业务会话的方法应用模型示意图;
图2是本发明采用多线程处理业务会话的的装置实施例的结构框图;
图3是本发明采用多线程处理业务会话的方法流程图;
图4是图3所示方法中步骤300的具体步骤流程图;
图5是图3所示方法中步骤400的具体步骤流程图;
图6是图3所示方法中步骤500的具体步骤流程图;
图7是数据处理线程定期清理各数据区的流程图。
具体实施方式
本发明提供的一种采用多线程处理业务会话应用的方法及装置,其发明构思是,业务会话应用程序预先在线程池中创建消息分发线程和多个数据处理线程,并为每一个数据处理线程分配与之唯一关联的一个数据区;消息分发线程从外部消息实体接收到消息时,将消息中的业务会话与一个数据处理线程唯一关联,并将该消息分发到该数据处理线程;数据处理线程在相应的数据区根据接收消息的状态进行相应的处理,并将处理结果反馈给外部消息实体;同时,各数据处理线程定期对相应的数据区进行扫描,以将超时存放数据的业务会话的节点的数据及时清理迁移到数据库。
以下结合附图和优选实施例,对本发明的上述发明构思展开叙述,以详细、清楚地揭示出本发明的技术方案。
通过图1,可了解到本发明的应用模型。本发明首先在线程池中创建线程,其中至少包括一个消息分发线程和多个数据处理线程(1~n);由消息分发线程通过TCP连接从外部消息实体接收各业务会话的消息,并将各消息分发到与业务会话唯一关联的数据处理线程中;由相应的数据处理线程在相应的数据区(1~n)内对消息进行各类处理,并将处理结果反馈给外部消息实体。
如图2所示,为本发明提供的采用多线程处理业务会话应用的装置一实施例,该装置20包括依次线程创建模块21、消息分发模块23、消息处理模块24、数据库(DB)25,还包括与消息分发模块连接的数据通讯模块22;其中:
线程创建模块21,用于创建至少一个消息分发线程和多个数据处理线程,并为每一个数据处理线程分配与之关联的一个数据区;将激活的消息分发线程及激活的数据处理线程的个数输出给消息分发模块23,将激活的多个数据处理线程及其数据区输出给消息处理模块24;
在此,创建数据处理线程的个数根据工程应用需求以及***设备的性能指标来确定,即以最大满足实际需求和充分、合理利用***资源为限度。
为各个数据处理线程分配的数据区,通过线程序号(比如1,2等等),标识各数据处理线程(比如数据处理线程1,数据处理线程2等等),并通过该线程序号,将各数据处理线程和相应的数据区(比如数据区1,数据区2等等)进行关联,形成一一对应的关系。
数据通讯模块22,用于本装置与所述外部消息实体之间的通信连接;
消息分发模块23,用于通过数据通讯模块22接收外部消息实体发送过来各业务会话的消息,并将每一消息进行识别、校验及解析后,分发到消息处理模块24内与消息中的业务会话唯一关联的数据处理线程中;
对消息内容中特征字段进行解析处理,该特征字段用于唯一标识消息中的业务会话,即在同一会话处理过程中的特征字段保持不变。
根据对该特征字段进行运算,使所有会话消息均匀分布于各个数据处理线程,以充分利用多线程,提高***运行效率。当然,只要使所有会话消息分布于不同的数据处理线程,也能一般地起到利用多线程提高***运行效率的作用,只是不如均匀分布的效果更好。
消息处理模块24,用于通过各个数据处理线程将输入的消息进行校验、解析后,根据消息的状态对相应的数据区进行数据操作,并将处理结果通过数据通讯模块22反馈给外部消息实体;同时,通过各数据处理线程定期扫描各自的数据区,将超时存放数据的业务会话的节点的数据及时迁移到数据库DB中,并清空该节点的数据区;
数据库25,作为物理数据库,用于存放消息处理模块24中数据处理线程的超时数据区的数据。
外部实体一旦在内存的数据区中查找不到会话信息,可以到数据库25中进行查询并操作。
图2中的消息分发模块23,进一步包括依次连接的消息适配器231、会话-线程关联模块232以及消息组包模块233,其中:
消息适配器231,用于将接收的会话消息进行识别、校验后,输出给会话-线程关联模块232;
比如,一条消息中标识业务会话的特征字段是MsgID,其构成是:业务类型+...+***时间(相对时间,以毫秒为单位计数)。
会话-线程关联模块232,用于对输入的会话消息进行解析后,对消息中标识业务会话的特征字段进行运算,根据运算结果确定要分发的数据处理线程的线程序号,并将线程序号随会话消息一起输出给消息组包模块233,通过该线程序号将消息中的业务会话与该数据处理线程唯一关联;
譬如,对特征字段MsgID的***时间用数据处理线程的个数(由消息处理模块获知)取模,其运算结果即分发的数据处理线程的线程序号。由于每个会话由唯一的特征字段来标识,这样就保证同一会话消息仅由同一数据处理线程来处理,从而保证了数据的一致性、安全性。
消息组包模块233,用于根据输入的线程序号将会话消息封装成组包,并将线程序号和消息组包分发给消息处理模块24。
图2中的消息处理模块24进一步包括依次连接的消息适配器241、数据处理器242以及消息组包模块243;其中:
消息适配器241,用于将数据处理线程的个数通知所述消息分发模块23中的会话-线程关联模块232,将从消息分发模块23分发的消息组包进行校验,解析,根据线程序号,将业务会话的特征字段及操作码字段输出给数据处理器内相应的数据处理线程;
数据处理器242,用于通过相应的数据处理线程根据输入的会话操作码作为会话状态标识来确定会话节点的处理操作,并在操作结束后将操作结果输出给消息组包模块243;
当有一个以上多个会话指定给同一个数据处理线程来处理时,每个数据处理线程的数据区通过队列对多个会话进行处理,即每个会话成为队列中的一个节点,每一会话节点由特征字段为唯一索引。新的会话来了,会在队列尾部追加节点,由此保证新的会话不会覆盖原有的会话。数据处理线程处理时会从队列中依次取出会话节点进行处理,并释放处理完毕的节点,以对队列中的下一个节点进行处理。
当会话操作码标识为新建会话时,在相应的数据区中创建业务会话节点,该节点以特征字段为唯一标识,同时保存会话信息,并返回成功信息。
当会话操作码标识为查询会话时,根据特征字段查找会话节点,并从相应的数据区获取会话信息,同时返回获取的会话信息和成功信息。
当会话操作码标识为更新会话时,根据特征字段查找会话节点,并更新相应数据区的会话信息,同时返回成功信息。
当会话操作码标识为删除会话时,根据特征字段查找会话节点,并删除相应的节点,同时返回成功信息。
消息组包模块243,用于将由数据处理器242输入的操作结果封装成组包,通过数据通讯模块22发送给外部消息实体。
消息处理模块24进一步包括与数据处理器242连接的数据迁移器244,其中:
数据处理器242,还用于定期扫描各会话节点的数据区,一旦发现有超时存放数据的节点,则将其数据区内保存的会话消息数据随特征字段一起输出给数据迁移器244,并清空该数据区;
数据迁移器244,用于以特征字段为索引将输入的会话消息数据迁移到数据库25中保存。
对每一节点数据区中保存的会话消息,由于其占驻内存的时间有限,一旦限定的时间到期,会话节点相应数据区内的数据将被迁移到物理数据库中,以保证***内存不被无限制地占用。
如图3所示,为本发明采用多线程处理业务会话应用的方法流程,包括如下步骤:
300:业务会话应用程序创建线程池中各线程,创建的线程至少包括消息分发线程和多个数据处理线程,分别为每一数据处理线程分配一独立的数据区;
400:通过消息分发线程接收来自外部消息实体的会话消息,将消息中的业务会话与唯一的数据处理线程相关联,并向该数据处理线程分发该会话消息;
500:通过数据处理线程在相应的数据区对接收到的消息根据其状态进行相应的处理操作,并将处理结果反馈给外部消息实体。
另外,通过数据处理线程定期扫描相应的数据区,将数据区超时存放数据的业务会话的节点数据及时清理迁移到物理数据库保存。
图4表示的是图3中步骤300的具体流程,包括如下步骤:
310:业务会话应用程序在线程池中创建一个消息分发线程和多个数据处理线程;
创建数据处理线程的个数根据工程应用需求以及***设备的性能指标来确定,即以最大满足实际需求和充分、合理利用***资源为限度。
320:为每一个数据处理线程分配与之唯一关联的一个数据区;
为各个数据处理线程分配的数据区,通过线程序号标识各数据处理线程,并通过该线程序号建立数据处理线程与数据区唯一的关联关系。
330:激活创建的各个线程。
数据处理线程通过消息分发线程的驱动,将一直处于激活状态。
图5表示的是图3中步骤400的具体流程,包括如下步骤:
410:接收到会话消息后,对该消息进行识别、校验和解析;
对消息内容中的特征字段进行解析处理,该特征字段用于唯一标识一次业务会话,即在同一会话处理过程中的特征字段保持不变。
譬如特征字段是MsgID,其构成是:业务类型+...+***时间(相对时间,以毫秒为单位计数)。或者,用唯一的一个流水号作为特征字段MsgID等等。
420:通过对特征字段进行运算处理得到唯一的线程序号,通过该线程序号将该会话与一个数据处理线程唯一关联;
譬如,对特征字段MsgID的***时间用数据处理线程的个数取模,其运算结果即分发的数据处理线程的线程序号。由于每个会话由唯一的特征字段来标识,这样就保证同一会话消息仅由同一数据处理线程来处理,从而保证了数据的一致性、安全性。或者,将具有唯一流水号的特征字段MsgID用数据处理线程的个数相除,取得的整数作为数据处理线程的序号,等等。
只要使每个会话消息分布于不同的数据处理线程,也能一般地起到利用多线程提高***运行效率的作用,只是不如均匀分布的效果更好。
430:根据计算得到的线程序号,将会话消息发送给相应的数据处理线程。
图6表示了图3中步骤500的具体流程,包括如下步骤:
501:从消息分发线程接收到会话消息后,对消息进行校验、解析,获取业务会话的操作码及特征字段;
当有一个以上多个会话指定给同一个数据处理线程来处理时,每个数据处理线程的数据区通过队列对多个会话进行处理,即每个会话成为队列中的一个节点,每一会话节点由特征字段为唯一索引。新的会话来了,会在队列尾部追加节点,由此保证新的会话不会出现覆盖原有的会话。数据处理线程处理时会从队列中依次取出会话节点进行处理,并释放处理完毕的节点,以对队列中的下一个节点进行处理。
502~510:根据该会话的操作码作为会话状态标识来确定会话节点的处理操作,并在操作结束后将操作结果返回给外部消息实体。
当会话操作码标识为新建会话时,在相应的数据区队列中创建业务会话节点,该节点以特征字段为唯一标识,同时保存会话信息,并返回成功信息。
当会话操作码标识为查询会话时,根据特征字段在数据区队列中查找会话节点,并从相应的数据区获取会话信息,同时返回获取的会话信息和成功信息。
当会话操作码标识为更新会话时,根据特征字段在数据区队列中查找会话节点,并更新相应数据区的会话信息,同时返回成功信息。
当会话操作码标识为删除会话时,根据特征字段在数据区队列中查找会话节点,并删除相应的节点,同时返回成功信息,标志会话结束。
数据处理线程由消息分发线程消息驱动,一直处于激活状态。
图7表示了数据处理线程定期清理相应节点数据区数据的流程,包括如下步骤:
520:定期对各节点数据区进行扫描;
530~540:若判断有业务会话的节点其数据区内存放数据的时间超过***设定时长,则将该节点数据迁移至数据库保存,并清空该节点的数据区。
本发明提供的方法及装置,在保持业务会话的过程中,为了快速的对会话进行寻址,采用多线程独立数据区技术实现海量数据的高速读取,修改和删除操作,完成业务会话的维护。独立数据区的使用避免了复杂的多线程同步互斥机制,保证了数据安全和会话数据的一致性。同时,利用独立数据区在内存中保存业务会话信息,尽量避免直接数据库访问,提高***的工作效率。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (9)
1.一种采用多线程处理业务会话应用的方法,包括:
业务会话应用程序预先创建并激活消息分发线程和多个数据处理线程,并为每一个数据处理线程分配与之唯一关联的一个数据区;
所述消息分发线程从外部消息实体接收到消息时,将所述消息中的业务会话与一个数据处理线程唯一关联,并将所述消息分发到该数据处理线程;
所述数据处理线程接收到消息分发线程分发的消息时,在相应的数据区内根据该消息的状态进行相应的处理,并将处理结果反馈给所述外部消息实体;
其中,所述数据处理线程接收到消息分发线程分发的消息时,在相应的数据区内根据该消息的状态进行相应的处理,并将处理结果反馈给所述外部消息实体,即:
所述数据处理线程对接收到的所述消息进行校验、解析,获取业务会话的操作码及特征字段,根据所述操作码作为所述消息的状态标识来确定所述业务会话的节点的处理操作:
当所述操作码标识为新建业务会话时,在相应的数据区队列中创建该业务会话的节点,以所述特征字段为该节点唯一标识,同时保存所述业务会话的信息,并将成功信息返回给所述外部消息实体;
或者,当所述操作码标识为查询业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并从所述数据区获取所述业务会话的信息,同时将所述业务会话的信息和成功信息返回给所述外部消息实体;
或者,当所述操作码标识为更新业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并更新所述数据区内所述业务会话的信息,同时将成功信息返回给所述外部消息实体;
或者,当所述操作码标识为删除业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并删除该节点,同时将成功信息返回给所述外部消息实体,标志所述业务会话结束。
2.按照权利要求1所述的方法,其特征在于,
所述业务会话应用程序为每一个数据处理线程分配与之唯一关联的一个数据区是指:所述业务会话应用程序通过线程序号标识各数据处理线程,并通过所述线程序号将所述数据处理线程与分配的所述数据区唯一关联;
所述数据处理线程定期对相应的数据区进行扫描,以将超时存放数据的所述业务会话的节点的数据及时清理迁移到数据库。
3.按照权利要求2所述的方法,其特征在于,所述消息分发线程将所述消息中的业务会话与一个数据处理线程唯一关联是指:所述消息分发线程解析所述消息内容中的特征字段,该特征字段用于唯一标识所述业务会话,对所述特征字段进行运算处理得到唯一的所述线程序号,通过该线程序号将所述业务会话与所述数据处理线程唯一关联。
4.按照权利要求3所述的方法,其特征在于,对所述特征字段进行运算处理得到唯一的所述线程序号是指:所述特征字段至少包括***时间,将所述***时间用数据处理线程的个数进行取模运算,所述运算的结果即所述线程序号。
5.一种采用多线程处理业务会话应用的装置,包括依次连接的线程创建模块、消息分发模块、消息处理模块,还包括与所述消息分发模块连接的数据通讯模块;其中:
所述线程创建模块,用于应用预先创建消息分发线程和多个数据处理线程,并为每一个数据处理线程分配与之唯一关联的一个数据区;并将创建、激活的所述消息分发线程输出给所述消息分发模块,将创建、激活的所述多个数据处理线程及其数据区输出给所述消息处理模块;
所述数据通讯模块,用于所述装置与外部消息实体之间的通信连接;
所述消息分发模块,用于通过所述数据通讯模块接收所述外部消息实体发送的消息,将所述消息中的业务会话与一个数据处理线程唯一关联,并将所述消息分发到该数据处理线程;
所述消息处理模块,用于通过各数据处理线程在相应的数据区内对输入的所述消息根据其状态进行相应的处理,并将处理结果通过所述数据通讯模块反馈给所述外部消息实体;
所述各数据处理线程根据操作码字段来确定所述业务会话的节点的处理操作,并在进行相应的处理结束后将相应的处理结果反馈输出,即:
当所述操作码标识为新建业务会话时,在相应的数据区队列中创建该业务会话的节点,以特征字段为该节点唯一标识,同时保存所述业务会话的信息,并将成功信息输出;
或者,当所述操作码标识为查询业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并从所述数据区获取所述业务会话的信息,同时将所述业务会话的信息和成功信息输出;
或者,当所述操作码标识为更新业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并更新所述数据区内所述业务会话的信息,同时将成功信息输出;
或者,当所述操作码标识为删除业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并删除该节点,同时将成功信息输出。
6.按照权利要求5所述的装置,其特征在于,所述消息分发模块包括依次连接的消息适配器、会话-线程关联模块以及消息组包模块,其中:
所述消息适配器,用于将接收的所述消息进行识别、校验后,输出给所述会话-线程关联模块;
所述会话-线程关联模块,用于对输入的所述消息进行解析后,将解析的所述消息中唯一标识业务会话的特征字段,对由所述消息处理模块获知的所述数据处理线程的个数进行取模运算,根据所述运算的结果得到唯一的线程序号,将所述线程序号与所述消息与一起输出给所述消息组包模块;
所述消息组包模块,与所述消息处理模块连接,用于根据输入的所述线程序号将所述消息封装成消息组包,并将所述线程序号和所述消息组包分发给所述消息处理模块。
7.按照权利要求6所述的装置,其特征在于,所述消息处理模块包括依次连接的消息适配器、数据处理器以及消息组包模块;其中:
所述消息适配器,用于将所述数据处理线程的个数通知所述会话-线程关联模块,将从所述消息组包模块分发的所述消息组包进行校验,解析后,根据所述线程序号将所述业务会话的特征字段及操作码字段输出给所述数据处理器内相应的数据处理线程;
所述数据处理器,用于通过相应的数据处理线程根据输入的操作码字段作为所述业务会话的状态标识来确定所述业务会话的节点的处理操作,并在进行相应的处理结束后,将相应的处理结果输出给所述消息组包模块;
所述消息组包模块,用于将输入的所述处理结果封装成组包,通过所述数据通讯模块发送给所述外部消息实体。
8.按照权利要求7所述的装置,其特征在于,所述相应的数据处理线程根据所述操作码字段来确定所述业务会话的节点的处理操作,并在进行相应的处理结束后将相应的处理结果输出给所述消息组包模块,即:
当所述操作码标识为新建业务会话时,在相应的数据区队列中创建该业务会话的节点,以所述特征字段为该节点唯一标识,同时保存所述业务会话的信息,并将成功信息输出给给所述消息组包模块;
或者,当所述操作码标识为查询业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并从所述数据区获取所述业务会话的信息,同时将所述业务会话的信息和成功信息输出给所述消息组包模块;
或者,当所述操作码标识为更新业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并更新所述数据区内所述业务会话的信息,同时将成功信息输出给所述消息组包模块;
或者,当所述操作码标识为删除业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并删除该节点,同时将成功信息输出给所述消息组包模块,标志所述业务会话结束。
9.按照权利要求8所述的装置,其特征在于,所述装置还包括数据库,所述消息处理模块包括与所述数据处理器连接的数据迁移器,其中:
所述数据处理器,还用于定期对相应的数据区进行扫描,以将超时存放数据的所述业务会话的节点的数据随特征字段一起输出给所述数据迁移器,并清空该节点的数据区;
所述数据迁移器,用于以特征字段为索引将输入的会话消息数据迁移到所述数据库中保存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910138374 CN101882089B (zh) | 2009-05-07 | 2009-05-07 | 一种采用多线程处理业务会话应用的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910138374 CN101882089B (zh) | 2009-05-07 | 2009-05-07 | 一种采用多线程处理业务会话应用的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101882089A CN101882089A (zh) | 2010-11-10 |
CN101882089B true CN101882089B (zh) | 2013-05-08 |
Family
ID=43054109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910138374 Expired - Fee Related CN101882089B (zh) | 2009-05-07 | 2009-05-07 | 一种采用多线程处理业务会话应用的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101882089B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9432321B2 (en) * | 2011-12-19 | 2016-08-30 | Alcatel Lucent | Method and apparatus for messaging in the cloud |
CN102831017B (zh) * | 2012-08-31 | 2014-09-10 | 河海大学 | 一种高效分布式并行鉴权*** |
CN103905484B (zh) * | 2012-12-26 | 2017-08-01 | 北京新媒传信科技有限公司 | 处理超文本传输协议请求的方法及装置 |
CN104426964B (zh) * | 2013-08-29 | 2018-07-27 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置及终端、计算机存储介质 |
CN104243212A (zh) * | 2014-09-24 | 2014-12-24 | 杭州华三通信技术有限公司 | 会话维护方法及装置 |
CN105610730B (zh) * | 2014-11-19 | 2020-03-13 | 中兴通讯股份有限公司 | Cpu与网络设备之间的消息交互方法及*** |
CN105843820B (zh) * | 2015-01-16 | 2019-10-08 | 阿里巴巴集团控股有限公司 | 数据迁移方法及装置 |
CN106528065B (zh) * | 2015-09-14 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 一种线程获取方法及设备 |
CN105204950B (zh) * | 2015-09-25 | 2019-01-11 | 深圳怡化电脑股份有限公司 | 一种任务间队列通信方法及装置 |
CN105391968B (zh) * | 2015-11-03 | 2019-05-24 | 浙江大华技术股份有限公司 | 一种视频会话分配方法及装置 |
CN106708895B (zh) * | 2015-11-17 | 2020-06-02 | 腾讯科技(深圳)有限公司 | 移动社交应用中展示消息的方法和装置 |
CN105528254B (zh) * | 2015-12-07 | 2019-02-22 | 贵阳朗玛信息技术股份有限公司 | 一种业务处理方法及装置 |
CN107957910A (zh) * | 2016-10-18 | 2018-04-24 | 北京京东尚科信息技术有限公司 | 消息处理方法以及消息处理装置 |
CN108462682A (zh) * | 2017-02-22 | 2018-08-28 | 成都鼎桥通信技术有限公司 | 初始对话协议sip消息的分发方法和装置 |
CN107678856B (zh) * | 2017-09-20 | 2022-04-05 | 苏宁易购集团股份有限公司 | 一种处理业务实体中增量信息的方法及装置 |
CN110018911B (zh) * | 2018-01-09 | 2024-01-23 | 斑马智行网络(香港)有限公司 | 进程管理及进程间通信方法、装置、计算设备及存储介质 |
CN108446183A (zh) * | 2018-04-13 | 2018-08-24 | 广东亿迅科技有限公司 | 基于消息分发的处理方法及装置 |
CN109413489B (zh) * | 2018-09-29 | 2021-02-02 | 武汉斗鱼网络科技有限公司 | 串行式的多线程弹幕分发方法、装置、设备和存储介质 |
CN109379605B (zh) * | 2018-09-29 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 基于弹幕顺序的弹幕分发方法、装置、设备和存储介质 |
CN111817979A (zh) * | 2020-06-23 | 2020-10-23 | 成都深思科技有限公司 | 一种基于嗅探模式的多维度流量关联的数据包处理方法 |
CN111835770B (zh) * | 2020-07-14 | 2021-01-29 | 全时云商务服务股份有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
CN114363395A (zh) * | 2021-12-31 | 2022-04-15 | 深圳金蝶账无忧网络科技有限公司 | 会话处理方法、装置及计算机可读存储介质 |
CN116107725B (zh) * | 2023-04-12 | 2023-07-14 | 中国人民解放军63921部队 | 雷达数据处理***及方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1584842A (zh) * | 2004-06-09 | 2005-02-23 | 中兴通讯股份有限公司 | 一种实现计算机***应用服务器的方法 |
CN1605987A (zh) * | 2004-11-17 | 2005-04-13 | 中兴通讯股份有限公司 | 一种多线程***中实现实时监控各线程状态的方法 |
CN1614555A (zh) * | 2003-11-06 | 2005-05-11 | 国际商业机器公司 | 用于自主硬件辅助的线程栈跟踪的装置与方法 |
CN1874538A (zh) * | 2005-07-20 | 2006-12-06 | 华为技术有限公司 | 一种呼叫事件并发处理方法 |
CN101299194A (zh) * | 2008-06-26 | 2008-11-05 | 上海交通大学 | 基于可配置处理器的异构多核***线程级动态调度方法 |
CN101409877A (zh) * | 2008-11-28 | 2009-04-15 | 中兴通讯股份有限公司 | 一种话单的生成方法 |
-
2009
- 2009-05-07 CN CN 200910138374 patent/CN101882089B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1614555A (zh) * | 2003-11-06 | 2005-05-11 | 国际商业机器公司 | 用于自主硬件辅助的线程栈跟踪的装置与方法 |
CN1584842A (zh) * | 2004-06-09 | 2005-02-23 | 中兴通讯股份有限公司 | 一种实现计算机***应用服务器的方法 |
CN1605987A (zh) * | 2004-11-17 | 2005-04-13 | 中兴通讯股份有限公司 | 一种多线程***中实现实时监控各线程状态的方法 |
CN1874538A (zh) * | 2005-07-20 | 2006-12-06 | 华为技术有限公司 | 一种呼叫事件并发处理方法 |
CN101299194A (zh) * | 2008-06-26 | 2008-11-05 | 上海交通大学 | 基于可配置处理器的异构多核***线程级动态调度方法 |
CN101409877A (zh) * | 2008-11-28 | 2009-04-15 | 中兴通讯股份有限公司 | 一种话单的生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101882089A (zh) | 2010-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101882089B (zh) | 一种采用多线程处理业务会话应用的方法及装置 | |
US20100122268A1 (en) | Communicator-based token/buffer management for eager protocol support in collective communication operations | |
CN109445944A (zh) | 一种基于dpdk的网络数据采集处理***及其方法 | |
CN103873587B (zh) | 一种基于云平台实现调度的方法及装置 | |
CN103645909A (zh) | 定时任务的处理方法及装置 | |
CN107621973A (zh) | 一种跨集群的任务调度方法及装置 | |
CN105912402B (zh) | 一种基于Actor模型的调度方法及装置 | |
CN112148455A (zh) | 一种任务处理方法、设备及介质 | |
CN108809994A (zh) | 基于事件和规则管理的统一消息推送方法和*** | |
CN111104188B (zh) | 漏洞扫描器的调度方法及装置 | |
CN101645148A (zh) | 一种应用于运营支撑***中的施工单管理方法及管理*** | |
CN110058940B (zh) | 一种多线程环境下的数据处理方法及装置 | |
GB2320594A (en) | Dispatching client method calls to parallel execution threads within a server | |
CN105589751A (zh) | 一种物理资源调度方法及装置 | |
CN111078436A (zh) | 数据处理的方法、装置、设备及存储介质 | |
CN102904961A (zh) | 一种云计算资源调度方法及*** | |
CN101179553A (zh) | 用于并行消息的有效保序传递的方法和装置 | |
US20150195229A1 (en) | Listening for externally initiated requests | |
CN110471774A (zh) | 一种基于统一任务调度的数据处理方法及装置 | |
CN102629220A (zh) | 一种动态任务分配管理方法 | |
CN107623731A (zh) | 一种任务调度方法、客户端、服务集群及*** | |
CN109347918A (zh) | 调用方法、调用装置、服务器、终端及计算机可读存储介质 | |
US10135944B2 (en) | Processing a unit of work | |
CN101216780B (zh) | 在对称多处理体系下实现多实例线程通信的方法及装置 | |
CN110221914B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130508 Termination date: 20190507 |