一种采用多线程处理业务会话应用的方法及装置的制作方法

文档序号:6578125阅读:101来源:国知局
专利名称:一种采用多线程处理业务会话应用的方法及装置的制作方法
技术领域
本发明涉及工程应用中采用多线程处理应用过程的技术,尤其涉及采用多线程处 理业务会话(Session)应用的方法和装置。
背景技术
多线程是一种允许在程序中并发执行多个指令流的机制,其中每个指令流都称为 一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制, 由操作系统负责调度。在工程应用中,多线程技术常被运用来提高软件系统的运行效率。随着硬件设备 的配置越来越趋向于高端化,即采用多CPU(中央处理器)、大内存等,故如何充分的利用系 统资源也随之成为一个课题。合理的多线程技术的运用,可以充分地利用系统资源,不同线 程指令流可以分布于不同的CPU上运行,实现多任务的并行操作,由此大大提高系统的运 行效率。当然,采用多线程技术必须考虑各个线程的同步和互斥,以保证线程安全。通常系 统会采用以下几种方式来实现多线程同步和互斥的机制(1)临界区通过对多线程的串行化来访问公共资源或一段代码,其速度快,适合 控制数据访问即在任意时刻只允许一个线程对共享数据资源进行访问。如果有多个线程试图同 时访问临界区,那么当有一个线程进入后,其它所有试图访问此临界区的线程将被挂起,并 一直持续到进入临界区的线程离开。只有在临界区被释放后,其它线程才可以继续抢占,并 以此达到多线程共享资源的目的。(2)互斥量为协调共同对一个共享资源的单独访问而设计互斥量与临界区很相似,只有拥有互斥对象的线程才具有访问资源的权限,由于 互斥对象只有一个,因此就决定了在任何情况下此共享资源都不会同时被多个线程所访 问。当前占据资源的线程在任务处理完后应将拥有的互斥对象权限交出,以便其它线程在 获得后得以访问资源。互斥量比临界区复杂。因为使用互斥不仅能够在同一应用程序不同线程中实现资 源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。(3)信号量为控制一个具有有限数量用户资源而设计与前面几种方法不同,这种方法允许多个线程在同一时刻访问同一资源,但需要 通过信号量限制在同一时刻访问该资源的线程最大数目。(4)事件用来通知线程有一些事件已发生,从而启动后继任务的开始事件对象也可以通过通知操作的方式来保持线程的同步,并且可以实现不同进程 中的线程同步操作。利用以上这几种方式来实现线程的同步和互斥,能确保线程的安全,但同时也增 加的系统处理的复杂性,并在一定程度上会降低系统运行的效率。

发明内容
本发明所要解决的技术问题在于提供一种采用多线程处理业务会话应用的方法 及装置,能够在确保系统安全、高效运行的同时,降低系统处理的复杂性。为解决上述技术问题,本发明提供一种采用多线程处理业务会话应用的方法,包 括业务会话应用程序预先创建并激活消息分发线程和多个数据处理线程,并为每一 个数据处理线程分配与之唯一关联的一个数据区;消息分发线程从外部消息实体接收到消息时,将该消息中的业务会话与一个数据 处理线程唯一关联,并将该消息分发到该数据处理线程;数据处理线程接收到消息分发线程分发的消息时,在相应的数据区内根据该消息 的状态进行相应的处理,并将处理结果反馈给外部消息实体。进一步地,业务会话应用程序为每一个数据处理线程分配与之唯一关联的一个数据区是指 该业务会话应用程序通过线程序号标识各数据处理线程,并通过线程序号将数据处理线程 与分配的数据区唯一关联;数据处理线程定期对相应的数据区进行扫描,以将超时存放数据的业务会话的节 点的数据及时清理迁移到数据库。进一步地,消息分发线程将消息中的业务会话与一个数据处理线程唯一关联是 指该消息分发线程解析消息内容中的特征字段,该特征字段用于唯一标识业务会话,对该 特征字段进行运算处理得到唯一的线程序号,通过该线程序号将业务会话与数据处理线程 唯一关联。进一步地,对特征字段进行运算处理得到唯一的线程序号是指该特征字段至少 包括系统时间,将该系统时间用数据处理线程的个数进行取模运算,运算的结果即线程序号。进一步地,数据处理线程接收到消息分发线程分发的消息时,在相应的数据区内 根据该消息的状态进行相应的处理,并将处理结果反馈给外部消息实体,即数据处理线程对接收到的消息进行校验、解析,获取业务会话的操作码及特征字 段,根据该操作码作为消息的状态标识来确定所述业务会话的节点的处理操作当该操作码标识为新建业务会话时,在相应的数据区队列中创建该业务会话的节 点,以特征字段为该节点唯一标识,同时保存业务会话的信息,并将成功信息返回给外部消 息实体;或者,当操作码标识为查询业务会话时,根据该特征字段在相应的数据区队列中 查找业务会话的节点,并从数据区获取该业务会话的信息,同时将该业务会话的信息和成 功信息返回给外部消息实体;或者,当操作码标识为更新业务会话时,根据该特征字段在相应的数据区队列中 查找业务会话的节点,并更新数据区内该业务会话的信息,同时将成功信息返回给外部消 息实体;或者,当操作码标识为删除业务会话时,根据该特征字段在相应的数据区队列中
6查找业务会话的节点,并删除该节点,同时将成功信息返回给外部消息实体,标志业务会话结束。为解决上述技术问题,本发明提供一种采用多线程处理业务会话应用的装置,包 括依次连接的线程创建模块、消息分发模块、消息处理模块,还包括与所述消息分发模块连 接的数据通讯模块;其中线程创建模块,用于应用预先创建消息分发线程和多个数据处理线程,并为每一 个数据处理线程分配与之唯一关联的一个数据区;并将创建、激活的消息分发线程输出给 消息分发模块,将创建、激活的多个数据处理线程及其数据区输出给消息处理模块;数据通讯模块,用于所述装置与外部消息实体之间的通信连接;消息分发模块,用于通过数据通讯模块接收外部消息实体发送的消息,将该消息 中的业务会话与一个数据处理线程唯一关联,并将该消息分发到该数据处理线程;消息处理模块,用于通过各数据处理线程在相应的数据区内对输入的消息根据其 状态进行相应的处理,并将处理结果通过数据通讯模块反馈给外部消息实体。进一步地,消息分发模块包括依次连接的消息适配器、会话_线程关联模块以及 消息组包模块,其中消息适配器,用于将接收的消息进行识别、校验后,输出给会话_线程关联模块;会话-线程关联模块,用于对输入的消息进行解析后,将解析的消息中唯一标识 业务会话的特征字段,对由消息处理模块获知的数据处理线程的个数进行取模运算,根据 运算的结果得到唯一的线程序号,将该线程序号与所述消息与一起输出给消息组包模块;消息组包模块,与所述消息处理模块连接,用于根据输入的线程序号将所述消息 封装成消息组包,并将该线程序号和该消息组包分发给消息处理模块。进一步地,消息处理模块包括依次连接的消息适配器、数据处理器以及消息组包 模块;其中消息适配器,用于将数据处理线程的个数通知会话_线程关联模块,将从消息组 包模块分发的消息组包进行校验,解析后,根据线程序号将业务会话的特征字段及操作码 字段输出给数据处理器内相应的数据处理线程;数据处理器,用于通过相应的数据处理线程根据输入的操作码字段作为业务会话 的状态标识来确定业务会话的节点的处理操作,并在进行相应的处理结束后,将相应的处 理结果输出给消息组包模块;消息组包模块,用于将输入的处理结果封装成组包,通过数据通讯模块发送给外 部消息实体。进一步地,相应的数据处理线程根据操作码字段来确定业务会话的节点的处理操 作,并在进行相应的处理结束后将相应的处理结果输出给消息组包模块,即当操作码标识为新建业务会话时,在相应的数据区队列中创建该业务会话的节 点,以特征字段为该节点唯一标识,同时保存该业务会话的信息,并将成功信息输出给给消 息组包模块;或者,当操作码标识为查询业务会话时,根据该特征字段在相应的数据区队列中 查找该业务会话的节点,并从数据区获取该业务会话的信息,同时将该业务会话的信息和 成功信息输出给消息组包模块;
7
或者,当操作码标识为更新业务会话时,根据该特征字段在相应的数据区队列中 查找该业务会话的节点,并更新数据区内该业务会话的信息,同时将成功信息输出给消息 组包模块;或者,当操作码标识为删除业务会话时,根据该特征字段在相应的数据区队列中 查找该业务会话的节点,并删除该节点,同时将成功信息输出给消息组包模块,标志业务会 话结束。进一步地,所述装置还包括数据库,消息处理模块包括与数据处理器连接的数据 迁移器,其中数据处理器,还用于定期对相应的数据区进行扫描,以将超时存放数据的业务会 话的节点的数据随特征字段一起输出给数据迁移器,并清空该节点的数据区;数据迁移器,用于以特征字段为索引将输入的会话消息数据迁移到数据库中保存。与现有技术相比较,本发明毋须采用复杂的多线程同步互斥技术,而是通过各线 程独立的数据区来处理业务会话,实现线程之间的独立运行和业务会话的一致性,避免了 同步和互斥机制的弊端,在确保系统安全、高效运行的同时,大大降低了系统处理的复杂 性。


图1是本发明的采用多线程处理业务会话的方法应用模型示意图;图2是本发明采用多线程处理业务会话的的装置实施例的结构框图;图3是本发明采用多线程处理业务会话的方法流程图;图4是图3所示方法中步骤300的具体步骤流程图;图5是图3所示方法中步骤400的具体步骤流程图;图6是图3所示方法中步骤500的具体步骤流程图;图7是数据处理线程定期清理各数据区的流程图。
具体实施例方式本发明提供的一种采用多线程处理业务会话应用的方法及装置,其发明构思是, 业务会话应用程序预先在线程池中创建消息分发线程和多个数据处理线程,并为每一个数 据处理线程分配与之唯一关联的一个数据区;消息分发线程从外部消息实体接收到消息 时,将消息中的业务会话与一个数据处理线程唯一关联,并将该消息分发到该数据处理线 程;数据处理线程在相应的数据区根据接收消息的状态进行相应的处理,并将处理结果反 馈给外部消息实体;同时,各数据处理线程定期对相应的数据区进行扫描,以将超时存放数 据的业务会话的节点的数据及时清理迁移到数据库。以下结合附图和优选实施例,对本发明的上述发明构思展开叙述,以详细、清楚地 揭示出本发明的技术方案。通过图1,可了解到本发明的应用模型。本发明首先在线程池中创建线程,其中至 少包括一个消息分发线程和多个数据处理线程(1 η);由消息分发线程通过TCP连接从 外部消息实体接收各业务会话的消息,并将各消息分发到与业务会话唯一关联的数据处理
8线程中;由相应的数据处理线程在相应的数据区(1 η)内对消息进行各类处理,并将处理 结果反馈给外部消息实体。如图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,用于对输入的会话消息进行解析后,对消息中标识业务 会话的特征字段进行运算,根据运算结果确定要分发的数据处理线程的线程序号,并将线
9程序号随会话消息一起输出给消息组包模块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 中保存。对每一节点数据区中保存的会话消息,由于其占驻内存的时间有限,一旦限定的 时间到期,会话节点相应数据区内的数据将被迁移到物理数据库中,以保证系统内存不被
10无限制地占用。如图3所示,为本发明采用多线程处理业务会话应用的方法流程,包括如下步骤300:业务会话应用程序创建线程池中各线程,创建的线程至少包括消息分发线程 和多个数据处理线程,分别为每一数据处理线程分配一独立的数据区;400:通过消息分发线程接收来自外部消息实体的会话消息,将消息中的业务会话 与唯一的数据处理线程相关联,并向该数据处理线程分发该会话消息;500:通过数据处理线程在相应的数据区对接收到的消息根据其状态进行相应的 处理操作,并将处理结果反馈给外部消息实体。另外,通过数据处理线程定期扫描相应的数据区,将数据区超时存放数据的业务 会话的节点数据及时清理迁移到物理数据库保存。图4表示的是图3中步骤300的具体流程,包括如下步骤310:业务会话应用程序在线程池中创建一个消息分发线程和多个数据处理线 程;创建数据处理线程的个数根据工程应用需求以及系统设备的性能指标来确定,即 以最大满足实际需求和充分、合理利用系统资源为限度。320 为每一个数据处理线程分配与之唯一关联的一个数据区;为各个数据处理线程分配的数据区,通过线程序号标识各数据处理线程,并通过 该线程序号建立数据处理线程与数据区唯一的关联关系。330 激活创建的各个线程。数据处理线程通过消息分发线程的驱动,将一直处于激活状态。图5表示的是图3中步骤400的具体流程,包括如下步骤410 接收到会话消息后,对该消息进行识别、校验和解析;对消息内容中的特征字段进行解析处理,该特征字段用于唯一标识一次业务会 话,即在同一会话处理过程中的特征字段保持不变。譬如特征字段是MsgID,其构成是业务类型+. . . +系统时间(相对时间,以毫秒 为单位计数)。或者,用唯一的一个流水号作为特征字段MsgID等等。420:通过对特征字段进行运算处理得到唯一的线程序号,通过该线程序号将该会 话与一个数据处理线程唯一关联;譬如,对特征字段MsgID的系统时间用数据处理线程的个数取模,其运算结果即 分发的数据处理线程的线程序号。由于每个会话由唯一的特征字段来标识,这样就保证同 一会话消息仅由同一数据处理线程来处理,从而保证了数据的一致性、安全性。或者,将具 有唯一流水号的特征字段MsgID用数据处理线程的个数相除,取得的整数作为数据处理线 程的序号,等等。只要使每个会话消息分布于不同的数据处理线程,也能一般地起到利用多线程提 高系统运行效率的作用,只是不如均勻分布的效果更好。430:根据计算得到的线程序号,将会话消息发送给相应的数据处理线程。图6表示了图3中步骤500的具体流程,包括如下步骤501 从消息分发线程接收到会话消息后,对消息进行校验、解析,获取业务会话的 操作码及特征字段;
11
当有一个以上多个会话指定给同一个数据处理线程来处理时,每个数据处理线程 的数据区通过队列对多个会话进行处理,即每个会话成为队列中的一个节点,每一会话节 点由特征字段为唯一索引。新的会话来了,会在队列尾部追加节点,由此保证新的会话不会 出现覆盖原有的会话。数据处理线程处理时会从队列中依次取出会话节点进行处理,并释 放处理完毕的节点,以对队列中的下一个节点进行处理。502 510 根据该会话的操作码作为会话状态标识来确定会话节点的处理操作, 并在操作结束后将操作结果返回给外部消息实体。当会话操作码标识为新建会话时,在相应的数据区队列中创建业务会话节点,该 节点以特征字段为唯一标识,同时保存会话信息,并返回成功信息。当会话操作码标识为查询会话时,根据特征字段在数据区队列中查找会话节点, 并从相应的数据区获取会话信息,同时返回获取的会话信息和成功信息。当会话操作码标识为更新会话时,根据特征字段在数据区队列中查找会话节点, 并更新相应数据区的会话信息,同时返回成功信息。当会话操作码标识为删除会话时,根据特征字段在数据区队列中查找会话节点, 并删除相应的节点,同时返回成功信息,标志会话结束。数据处理线程由消息分发线程消息驱动,一直处于激活状态。图7表示了数据处理线程定期清理相应节点数据区数据的流程,包括如下步骤520 定期对各节点数据区进行扫描;530 540 若判断有业务会话的节点其数据区内存放数据的时间超过系统设定 时长,则将该节点数据迁移至数据库保存,并清空该节点的数据区。本发明提供的方法及装置,在保持业务会话的过程中,为了快速的对会话进行寻 址,采用多线程独立数据区技术实现海量数据的高速读取,修改和删除操作,完成业务会话 的维护。独立数据区的使用避免了复杂的多线程同步互斥机制,保证了数据安全和会话数 据的一致性。同时,利用独立数据区在内存中保存业务会话信息,尽量避免直接数据库访 问,提高系统的工作效率。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟 悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变 形都应属于本发明所附的权利要求的保护范围。
1权利要求
一种采用多线程处理业务会话应用的方法,包括业务会话应用程序预先创建并激活消息分发线程和多个数据处理线程,并为每一个数据处理线程分配与之唯一关联的一个数据区;所述消息分发线程从外部消息实体接收到消息时,将所述消息中的业务会话与一个数据处理线程唯一关联,并将所述消息分发到该数据处理线程;所述数据处理线程接收到消息分发线程分发的消息时,在相应的数据区内根据该消息的状态进行相应的处理,并将处理结果反馈给所述外部消息实体。
2.按照权利要求1所述的方法,其特征在于,所述业务会话应用程序为每一个数据处理线程分配与之唯一关联的一个数据区是指 所述业务会话应用程序通过线程序号标识各数据处理线程,并通过所述线程序号将所述数 据处理线程与分配的所述数据区唯一关联;所述数据处理线程定期对相应的数据区进行扫描,以将超时存放数据的所述业务会话 的节点的数据及时清理迁移到数据库。
3.按照权利要求2所述的方法,其特征在于,所述消息分发线程将所述消息中的业务 会话与一个数据处理线程唯一关联是指所述消息分发线程解析所述消息内容中的特征字 段,该特征字段用于唯一标识所述业务会话,对所述特征字段进行运算处理得到唯一的所 述线程序号,通过该线程序号将所述业务会话与所述数据处理线程唯一关联。
4.按照权利要求3所述的方法,其特征在于,对所述特征字段进行运算处理得到唯一 的所述线程序号是指所述特征字段至少包括系统时间,将所述系统时间用数据处理线程 的个数进行取模运算,所述运算的结果即所述线程序号。
5.按照权利要求3或4所述的方法,其特征在于,所述数据处理线程接收到消息分发线 程分发的消息时,在相应的数据区内根据该消息的状态进行相应的处理,并将处理结果反 馈给所述外部消息实体,即所述数据处理线程对接收到的所述消息进行校验、解析,获取业务会话的操作码及特 征字段,根据所述操作码作为所述消息的状态标识来确定所述业务会话的节点的处理操 作当所述操作码标识为新建业务会话时,在相应的数据区队列中创建该业务会话的节 点,以所述特征字段为该节点唯一标识,同时保存所述业务会话的信息,并将成功信息返回 给所述外部消息实体;或者,当所述操作码标识为查询业务会话时,根据所述特征字段在相应的数据区队列 中查找所述业务会话的节点,并从所述数据区获取所述业务会话的信息,同时将所述业务 会话的信息和成功信息返回给所述外部消息实体;或者,当所述操作码标识为更新业务会话时,根据所述特征字段在相应的数据区队列 中查找所述业务会话的节点,并更新所述数据区内所述业务会话的信息,同时将成功信息 返回给所述外部消息实体;或者,当所述操作码标识为删除业务会话时,根据所述特征字段在相应的数据区队列 中查找所述业务会话的节点,并删除该节点,同时将成功信息返回给所述外部消息实体,标 志所述业务会话结束。
6.一种采用多线程处理业务会话应用的装置,包括依次连接的线程创建模块、消息分发模块、消息处理模块,还包括与所述消息分发模块连接的数据通讯模块;其中所述线程创建模块,用于应用预先创建消息分发线程和多个数据处理线程,并为每一 个数据处理线程分配与之唯一关联的一个数据区;并将创建、激活的所述消息分发线程输 出给所述消息分发模块,将创建、激活的所述多个数据处理线程及其数据区输出给所述消 息处理模块;所述数据通讯模块,用于所述装置与外部消息实体之间的通信连接;所述消息分发模块,用于通过所述数据通讯模块接收所述外部消息实体发送的消息, 将所述消息中的业务会话与一个数据处理线程唯一关联,并将所述消息分发到该数据处理 线程;所述消息处理模块,用于通过各数据处理线程在相应的数据区内对输入的所述消息 根据其状态进行相应的处理,并将处理结果通过所述数据通讯模块反馈给所述外部消息实 体。
7.按照权利要求6所述的装置,其特征在于,所述消息分发模块包括依次连接的消息 适配器、会话-线程关联模块以及消息组包模块,其中所述消息适配器,用于将接收的所述消息进行识别、校验后,输出给所述会话_线程关 联模块;所述会话-线程关联模块,用于对输入的所述消息进行解析后,将解析的所述消息中 唯一标识业务会话的特征字段,对由所述消息处理模块获知的所述数据处理线程的个数进 行取模运算,根据所述运算的结果得到唯一的线程序号,将所述线程序号与所述消息与一 起输出给所述消息组包模块;所述消息组包模块,与所述消息处理模块连接,用于根据输入的所述线程序号将所述 消息封装成消息组包,并将所述线程序号和所述消息组包分发给所述消息处理模块。
8.按照权利要求7所述的装置,其特征在于,所述消息处理模块包括依次连接的消息 适配器、数据处理器以及消息组包模块;其中所述消息适配器,用于将所述数据处理线程的个数通知所述会话_线程关联模块,将 从所述消息组包模块分发的所述消息组包进行校验,解析后,根据所述线程序号将所述业 务会话的特征字段及操作码字段输出给所述数据处理器内相应的数据处理线程;所述数据处理器,用于通过相应的数据处理线程根据输入的操作码字段作为所述业务 会话的状态标识来确定所述业务会话的节点的处理操作,并在进行相应的处理结束后,将 相应的处理结果输出给所述消息组包模块;所述消息组包模块,用于将输入的所述处理结果封装成组包,通过所述数据通讯模块 发送给所述外部消息实体。
9.按照权利要求8所述的装置,其特征在于,所述相应的数据处理线程根据所述操作 码字段来确定所述业务会话的节点的处理操作,并在进行相应的处理结束后将相应的处理 结果输出给所述消息组包模块,即当所述操作码标识为新建业务会话时,在相应的数据区队列中创建该业务会话的节 点,以所述特征字段为该节点唯一标识,同时保存所述业务会话的信息,并将成功信息输出 给给所述消息组包模块;或者,当所述操作码标识为查询业务会话时,根据所述特征字段在相应的数据区队列中查找所述业务会话的节点,并从所述数据区获取所述业务会话的信息,同时将所述业务 会话的信息和成功信息输出给所述消息组包模块;或者,当所述操作码标识为更新业务会话时,根据所述特征字段在相应的数据区队列 中查找所述业务会话的节点,并更新所述数据区内所述业务会话的信息,同时将成功信息 输出给所述消息组包模块;或者,当所述操作码标识为删除业务会话时,根据所述特征字段在相应的数据区队列 中查找所述业务会话的节点,并删除该节点,同时将成功信息输出给所述消息组包模块,标 志所述业务会话结束。
10.按照权利要求9所述的装置,其特征在于,所述装置还包括数据库,所述消息处理 模块包括与所述数据处理器连接的数据迁移器,其中所述数据处理器,还用于定期对相应的数据区进行扫描,以将超时存放数据的所述业 务会话的节点的数据随特征字段一起输出给所述数据迁移器,并清空该节点的数据区;所述数据迁移器,用于以特征字段为索引将输入的会话消息数据迁移到所述数据库中 保存。
全文摘要
本发明披露了一种采用多线程处理业务会话应用的方法及装置,方法包括业务会话应用程序预先创建并激活消息分发线程和多个数据处理线程,并为每一数据处理线程分配与之唯一关联的一数据区;消息分发线程从外部消息实体接收到消息时,将该消息中的业务会话与一数据处理线程唯一关联,并将该消息分发到该数据处理线程;数据处理线程接收到消息分发线程分发的消息时,在相应的数据区内根据该消息的状态进行相应的处理,并将处理结果反馈给外部消息实体。本发明避免了同步和互斥机制的弊端,在确保系统安全、高效运行的同时,大大降低了系统处理的复杂性。
文档编号G06F9/46GK101882089SQ20091013837
公开日2010年11月10日 申请日期2009年5月7日 优先权日2009年5月7日
发明者吴豫宁, 田贞朗, 钱建阳 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1