CN104679596A - 一种提高服务器端并发性能的消息处理方法及其*** - Google Patents
一种提高服务器端并发性能的消息处理方法及其*** Download PDFInfo
- Publication number
- CN104679596A CN104679596A CN201310632566.1A CN201310632566A CN104679596A CN 104679596 A CN104679596 A CN 104679596A CN 201310632566 A CN201310632566 A CN 201310632566A CN 104679596 A CN104679596 A CN 104679596A
- Authority
- CN
- China
- Prior art keywords
- message
- data
- thread
- queue
- message processing
- 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
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种提高服务器端并发性能的消息处理方法及***,所述方法包括:建立数据接收线程A、建立消息处理线程B及消息队列MQ;当数据接收线程A检测到数据可读时,读取相应数据,并将数据组织成一定格式的消息,将消息***消息队列MQ的尾部,消息处理线程B循环检测消息队列MQ是否为空,当消息队列MQ不为空时,取出消息队列MQ头部的消息,解析并保存加密无关数据。本发明的方法能达到高效的响应、高并发状态下的数据加密请求。
Description
技术领域
本发明涉及数据加密技术领域,特别涉及一种提高数据加密***服务器端并发性能的消息处理方法。
背景技术
集群式数据加密设备是一种用于准确记录并加密各种数据的***,***由数据服务器、数据加密设备集群组成,如图1所示。整个***采用C/S模式网络架构,其中数据服务器作为C/S模式中的服务器端,数据发送设备和数据加密设备则为C/S模式中的客户端。数据服务器处理来自客户端的消息,同时存储汇总数据,数据加密设备集群用于记录数据并对数据加密,生成并返回给数据发送端唯一标识一条数据的加密信息。
对于一次数据加密过程,数据服务器需要保存的数据包括数据加密相关和数据加密无关两类。其中数据加密相关的数据是指需要由数据服务器发送到加密设备进行计算获取加密信息的数据。数据加密无关的数据是指不需要发送到数据加密设备的其他一些相关数据。
***的工作过程如下:数据发送设备发送数据到数据服务器,数据服务器存储数据,同时将加密相关数据发送到数据加密设备集群中的某个数据加密设备,数据加密设备将生成的加密信息返回给数据服务器,数据服务器将加密信息返回给数据发送设备,同时更新数据库中该数据对应的加密信息。
该***的一种应用场景为商业零售企业的税源数据采集。在这种场景下,数据发送设备即为企业的POS前台开票端,数据加密设备内部存储电子***号码,数据加密信息为税控码、***代码、***号码等信息。所有的POS开票端通过网络并发的连接到数据服务器,每完成一笔交易记录,在打印小票或***前,将相关数据(商品明细、付款明细等)发送到数据服务器,数据服务器记录交易数据,并将合计金额等加密相关数据发送到数据加密设备获取税控信息。由于商超企业对数据处理的实时性有严格的要求,同时在高峰时段交易的并发性相对较高,因此,有必要设计一种方法,使得数据服务器能够实时高效的处理来自POS端的请求。
发明内容
本发明的主要目的是提供一种提高服务器端并发性能的消息处理方法及其***,以解决上述现有技术中所存在的问题,达到高效的响应、高并发状态下的数据加密请求。
为了达到上述目的,本发明提供一种提高服务器端并发性能的消息处理方法,其包括:建立数据接收线程A、建立消息处理线程B及消息队列MQ;当数据接收线程A检测到数据可读时,读取相应数据,并将数据组织成一定格式的消息,将消息***消息队列MQ的尾部,消息处理线程B循环检测消息队列MQ是否为空,当消息队列MQ不为空时,取出消息队列MQ头部的消息,解析并保存加密无关数据。
其中,通过IP+端口的组合,以使消息处理线程B能够确定消息源。
其中,所述的消息处理线程B取出位于队头的消息,提取消息的消息源、二进制数据、长度和CRC信息,根据这些信息检查消息是否合法,然后解析二进制数据,保存解析二进制数据结果到数据库,并根据实际处理结果组织响应数据,最后将响应数据返回值消息源。
其中,所述的数据接收线程A及所述的消息处理线程B为同步工作。
其中,通过创建一个互斥量CMutex,使所述的数据接收线程A及所述的消息处理线程B为同步工作。
为了达到上述目的,本发明还提供一种提高服务器端并发性能的消息处理***,其包括数据发送设备、数据服务器及数据加密设备集群,所述的数据加密设备集群是多个数据加密设备的集合,之间通过TCP网络与数据服务器进行通信,数据服务器采用线程池的方式,其包括数据接收线程A、消息处理线程B及消息队列MQ;当数据接收线程A检测到数据可读时,读取相应数据,并将数据组织成一定格式的消息,将消息***消息队列MQ的尾部,消息处理线程B循环检测消息队列MQ是否为空,当消息队列MQ不为空时,取出消息队列MQ头部的消息,解析并保存加密无关数据。
其中,所述的数据服务器采用queue数据结构来保存消息,所述的queue数据结构是STL中的一个特殊的线性表,能够在线性表的前端进行删除操作,而在线性表的后端进行***操作,最先***的消息总是最先被取出删除,最后***的消息将最后被取出删除。
其中,通过IP+端口的组合,以使消息处理线程B能够确定消息源。
其中,所述的数据接收线程A及所述的消息处理线程B为同步工作。
其中,通过创建一个互斥量CMutex,使所述的数据接收线程A及所述的消息处理线程B为同步工作。
与现有技术相比,本发明的优点在于:
数据发送设备等待加密信息延迟短:由于将数据保存的操作转移到了单独的线程内,使得数据服务器处理网络数据的性能得到了大幅提高,在局域网内延迟几乎可以忽略不计,这样数据加密的延迟基本等于数据加密设备硬件加密所需的时间,这样就将数据发送设备等待加密的时间降到了最低。
数据服务器利用率高:并发性能的提高使得同一台数据服务器能够管理更多的数据加密设备和数据发送设备,使得增加数据加密设备和数据发送设备的同时,数据服务器数量并未相应增加,有效的降低了企业的成本。
附图说明
图1为现有技术的集群式数据加密***示意图;
图2为本发明一个实施例的一种提高服务器端并发性能的消息处理方法的流程图;
图3为本发明一个实施例的一种提高服务器端并发性能的消息处理***的加密无关数据队列图。
具体实施方式
以下结合附图,对本发明上述的和另外的技术特征和优点作更详细的说明。
本发明的整个***采用TCP协议进行通信。数据服务器分别在两个不同端口监听来自数据发送设备和数据加密设备的连接,同时建立两个对应的线程,用以检查来自数据发送设备和数据加密设备上的数据交互。
以数据发送设备和数据服务器之间的数据交互为例,假设对应的接收数据的线程为线程A,线程A循环检测是否有来自数据发送设备的数据,当检测到有数据可读时,线程A接收数据、保存数据到数据库,然后发送数据到数据加密设备。
由于解析并保存数据到数据库的操作相对来说比较耗时,所以如果在线程A中进行保存数据到数据库的操作,当并发发送数据的设备较多时,这种消息处理的方法将严重影响数据服务器对数据的接收和处理,尤其是当数据发送端发送数据后的等待超时设置不当的话,如果等待超时后重新向数据服务器发送数据,这种情况下将导致数据服务器处理数据延迟的恶性循环。
本发明的方案是在线程A的基础上,增加一个相应的线程B及消息队列MQ。当线程A检测到数据可读时,读取相应数据,并将数据组织成一定格式的消息,将消息***队列MQ的尾部。线程B循环检测消息队列MQ是否为空,当MQ不为空时,取出MQ头部的消息,解析并保存加密无关数据。数据处理流程如图2所示。
图2为本发明实施例所提供的一种提高服务器端并发性能的消息处理方法流程图,本发明的消息处理方法是建立数据接收线程A、建立消息处理线程B及消息队列MQ;当数据接收线程A检测到数据可读时,读取相应数据,并将数据组织成一定格式的消息,将消息***消息队列MQ的尾部,消息处理线程B循环检测消息队列MQ是否为空,当消息队列MQ不为空时,取出消息队列MQ头部的消息,解析并保存加密无关数据。
本发明还提供一种提高服务器端并发性能的消息处理***,其包括数据发送设备、数据服务器及数据加密设备集群,所述的数据加密设备集群是多个数据加密设备的集合,之间通过TCP网络与数据服务器进行通信,每台数据加密设备都与数据服务器有一条TCP连接,因此,每台加密设备都会对应一个IP地址和端口的组合,并且相对于其他数据加密设备,该IP地址和端口的组合是唯一的。数据服务器程序将数据加密设备的IP、端口以及其他一些信息,保存在内存中的一个map结构内。
数据服务器采用线程池(ThreadPool)的方式,轮询各个TCP连接上是否有数据到来,当检测到有来自数据发送设备的数据时,接收数据,然后将接收到的数据封装为消息,将消息保存至消息队列的队尾。由于数据服务器处理消息后,需要将处理结果返回给数据发送设备,因此,消息处理线程需要能够确定消息的来源,而IP+端口的组合可以唯一确定消息源。(参阅表1)
表1消息格式:
参阅图3,为本发明实施例所提供的一种提高服务器端并发性能的消息处理***的加密无关数据队列图,数据服务器采用queue数据结构来保存消息。queue是STL中的一个特殊的线性表,它能够在线性表的前端进行删除操作,而在线性表的后端进行***操作。进行***操作的后端叫做队尾,进行删除操作的前端成为队头。最先***的消息总是最先被取出删除,最后***的消息将最后被取出删除。
消息处理线程首先检查消息队列是否为空,如果不为空,则取出位于队头的消息,提取消息的消息源、二进制数据、长度和CRC信息,根据这些信息检查消息是否合法,然后解析二进制数据,保存解析二进制数据结果到数据库,并根据实际处理结果组织响应数据,最后将响应数据返回值消息源。
由于数据接收线程(线程A)向消息队列MQ***消息,消息处理线程(线程B)从消息队列MQ取出消息,因此,两个线程之间需要做好同步工作,防止消息队列出现混乱。为此,创建一个互斥量CMutex,无论是消息***线程还是消息处理线程,在对消息队列操作前,需要首先获取到互斥量;操作完毕后,立即释放互斥量。获取和释放互斥量间的代码尽量做到最精简,也就是尽量减小每次操作对互斥量的占用时间。
由于可能存在掉电或服务器宕机等异常情况,为保证数据的完整性,采取了二进制文件保存数据与消息对列同步进行的策略。工作原理为:当税控服务器接收到待加密数据后,将加密相关数据发送到加密设备进行加密,同时将数据***消息队列队尾,并向二进制文件保存一份副本。当消息队列处理完一条消息后,相应的移动二进制文件的指针,并保存二进制文件的指针到另一文件中。如果出现掉电等异常情况,再次开机时,税控服务器读取出当前位置,并将二进制文件中尚未处理的数据读入消息队列,以进行处理。
综上所述,本发明具有如下优点:
数据发送设备等待加密信息延迟短:由于将数据保存的操作转移到了单独的线程内,使得数据服务器处理网络数据的性能得到了大幅提高,在局域网内延迟几乎可以忽略不计,这样数据加密的延迟基本等于数据加密设备硬件加密所需的时间,这样就将数据发送设备等待加密的时间降到了最低。
数据服务器利用率高:并发性能的提高使得同一台数据服务器能够管理更多的数据加密设备和数据发送设备,使得增加数据加密设备和数据发送设备的同时,数据服务器数量并未相应增加,有效的降低了企业的成本。
以上说明对本发明而言只是说明性的,而非限制性的,本领域普通技术人员理解,在不脱离权利要求所限定的精神和范围的情况下,可作出许多修改、变化或等效,但都将落入本发明的保护范围之内。
Claims (10)
1.一种提高服务器端并发性能的消息处理方法,其特征在于,其包括:建立数据接收线程A、建立消息处理线程B及消息队列MQ;当数据接收线程A检测到数据可读时,读取相应数据,并将数据组织成一定格式的消息,将消息***消息队列MQ的尾部,消息处理线程B循环检测消息队列MQ是否为空,当消息队列MQ不为空时,取出消息队列MQ头部的消息,解析并保存加密无关数据。
2.根据权利要求1所述的一种提高服务器端并发性能的消息处理方法,其特征在于,通过IP+端口的组合,以使消息处理线程B能够确定消息源。
3.根据权利要求1所述的一种提高服务器端并发性能的消息处理方法,其特征在于,所述的消息处理线程B取出位于队头的消息,提取消息的消息源、二进制数据、长度和CRC信息,根据这些信息检查消息是否合法,然后解析二进制数据,保存解析二进制数据结果到数据库,并根据实际处理结果组织响应数据,最后将响应数据返回值消息源。
4.根据权利要求1所述的一种提高服务器端并发性能的消息处理方法,其特征在于,所述的数据接收线程A及所述的消息处理线程B为同步工作。
5.根据权利要求4所述的一种提高服务器端并发性能的消息处理方法,其特征在于,通过创建一个互斥量CMutex,使所述的数据接收线程A及所述的消息处理线程B为同步工作。
6.一种提高服务器端并发性能的消息处理***,其特征在于,其包括数据发送设备、数据服务器及数据加密设备集群,所述的数据加密设备集群是多个数据加密设备的集合,之间通过TCP网络与数据服务器进行通信,数据服务器采用线程池的方式,其包括数据接收线程A、消息处理线程B及消息队列MQ;当数据接收线程A检测到数据可读时,读取相应数据,并将数据组织成一定格式的消息,将消息***消息队列MQ的尾部,消息处理线程B循环检测消息队列MQ是否为空,当消息队列MQ不为空时,取出消息队列MQ头部的消息,解析并保存加密无关数据。
7.根据权利要求6所述的一种提高服务器端并发性能的消息处理***,其特征在于,所述的数据服务器采用queue数据结构来保存消息,所述的queue数据结构是STL中的一个特殊的线性表,能够在线性表的前端进行删除操作,而在线性表的后端进行***操作,最先***的消息总是最先被取出删除,最后***的消息将最后被取出删除。
8.根据权利要求1所述的一种提高服务器端并发性能的消息处理方法,其特征在于,通过IP+端口的组合,以使消息处理线程B能够确定消息源。
9.根据权利要求6所述的一种提高服务器端并发性能的消息处理***,其特征在于,所述的数据接收线程A及所述的消息处理线程B为同步工作。
10.根据权利要求9所述的一种提高服务器端并发性能的消息处理方法,其特征在于,通过创建一个互斥量CMutex,使所述的数据接收线程A及所述的消息处理线程B为同步工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310632566.1A CN104679596A (zh) | 2013-12-02 | 2013-12-02 | 一种提高服务器端并发性能的消息处理方法及其*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310632566.1A CN104679596A (zh) | 2013-12-02 | 2013-12-02 | 一种提高服务器端并发性能的消息处理方法及其*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104679596A true CN104679596A (zh) | 2015-06-03 |
Family
ID=53314687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310632566.1A Pending CN104679596A (zh) | 2013-12-02 | 2013-12-02 | 一种提高服务器端并发性能的消息处理方法及其*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104679596A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105938438A (zh) * | 2015-11-24 | 2016-09-14 | 杭州迪普科技有限公司 | 一种数据报文处理方法及装置 |
CN107391657A (zh) * | 2017-07-18 | 2017-11-24 | 百望电子***数据服务有限公司 | 一种生成电子***版式文件的方法及*** |
CN107678856A (zh) * | 2017-09-20 | 2018-02-09 | 苏宁云商集团股份有限公司 | 一种处理业务实体中增量信息的方法及装置 |
CN107958398A (zh) * | 2016-10-14 | 2018-04-24 | 北京京东尚科信息技术有限公司 | 一种开具***的方法及*** |
CN108009005A (zh) * | 2016-10-31 | 2018-05-08 | 北京优朋普乐科技有限公司 | 一种线程池管理方法及装置 |
CN108243220A (zh) * | 2016-12-26 | 2018-07-03 | 航天信息股份有限公司 | 一种基于税控服务器的支持多类型***终端的***开具方法及*** |
CN108667725A (zh) * | 2018-04-25 | 2018-10-16 | 哈尔滨电气股份有限公司 | 一种基于多种接入及边缘计算的工业软网关以及实现方法 |
CN111737030A (zh) * | 2020-06-24 | 2020-10-02 | 广东浪潮大数据研究有限公司 | 一种控制指令处理方法、装置、设备及计算机存储介质 |
CN115118676A (zh) * | 2022-08-29 | 2022-09-27 | 科来网络技术股份有限公司 | 基于中心平台的异构***数据通信交互方法、***及终端 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030159083A1 (en) * | 2000-09-29 | 2003-08-21 | Fukuhara Keith T. | System, method and apparatus for data processing and storage to provide continuous operations independent of device failure or disaster |
CN1561043A (zh) * | 2004-02-20 | 2005-01-05 | 中兴通讯股份有限公司 | 一种多用户并发接入装置及其方法 |
CN101540780A (zh) * | 2004-12-29 | 2009-09-23 | 国家广播电影电视总局广播科学研究院 | 基于数据/视频服务***的数据请求消息处理方法 |
CN101567873A (zh) * | 2008-04-25 | 2009-10-28 | 凤凰微电子(中国)有限公司 | 一种多任务并行处理方法及*** |
CN102360307A (zh) * | 2011-08-17 | 2012-02-22 | 中兴通讯股份有限公司 | 设备驱动消息处理方法及装置 |
US20130041969A1 (en) * | 2011-05-16 | 2013-02-14 | Oracle International Corporation | System and method for providing a messaging application program interface |
-
2013
- 2013-12-02 CN CN201310632566.1A patent/CN104679596A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030159083A1 (en) * | 2000-09-29 | 2003-08-21 | Fukuhara Keith T. | System, method and apparatus for data processing and storage to provide continuous operations independent of device failure or disaster |
CN1561043A (zh) * | 2004-02-20 | 2005-01-05 | 中兴通讯股份有限公司 | 一种多用户并发接入装置及其方法 |
CN101540780A (zh) * | 2004-12-29 | 2009-09-23 | 国家广播电影电视总局广播科学研究院 | 基于数据/视频服务***的数据请求消息处理方法 |
CN101567873A (zh) * | 2008-04-25 | 2009-10-28 | 凤凰微电子(中国)有限公司 | 一种多任务并行处理方法及*** |
US20130041969A1 (en) * | 2011-05-16 | 2013-02-14 | Oracle International Corporation | System and method for providing a messaging application program interface |
CN102360307A (zh) * | 2011-08-17 | 2012-02-22 | 中兴通讯股份有限公司 | 设备驱动消息处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
单芳芳等: "面向集群的数据加密***", 《微计算机信息》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105938438A (zh) * | 2015-11-24 | 2016-09-14 | 杭州迪普科技有限公司 | 一种数据报文处理方法及装置 |
CN107958398A (zh) * | 2016-10-14 | 2018-04-24 | 北京京东尚科信息技术有限公司 | 一种开具***的方法及*** |
CN108009005A (zh) * | 2016-10-31 | 2018-05-08 | 北京优朋普乐科技有限公司 | 一种线程池管理方法及装置 |
CN108243220A (zh) * | 2016-12-26 | 2018-07-03 | 航天信息股份有限公司 | 一种基于税控服务器的支持多类型***终端的***开具方法及*** |
CN108243220B (zh) * | 2016-12-26 | 2021-04-16 | 航天信息股份有限公司 | 一种基于税控服务器的支持多类型***终端的***开具方法及*** |
CN107391657A (zh) * | 2017-07-18 | 2017-11-24 | 百望电子***数据服务有限公司 | 一种生成电子***版式文件的方法及*** |
CN107678856A (zh) * | 2017-09-20 | 2018-02-09 | 苏宁云商集团股份有限公司 | 一种处理业务实体中增量信息的方法及装置 |
CN108667725A (zh) * | 2018-04-25 | 2018-10-16 | 哈尔滨电气股份有限公司 | 一种基于多种接入及边缘计算的工业软网关以及实现方法 |
CN111737030A (zh) * | 2020-06-24 | 2020-10-02 | 广东浪潮大数据研究有限公司 | 一种控制指令处理方法、装置、设备及计算机存储介质 |
WO2021258750A1 (zh) * | 2020-06-24 | 2021-12-30 | 广东浪潮智慧计算技术有限公司 | 一种控制指令处理方法、装置、设备及计算机存储介质 |
CN115118676A (zh) * | 2022-08-29 | 2022-09-27 | 科来网络技术股份有限公司 | 基于中心平台的异构***数据通信交互方法、***及终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104679596A (zh) | 一种提高服务器端并发性能的消息处理方法及其*** | |
CN101873259B (zh) | Sctp报文识别方法和装置 | |
CN104092717A (zh) | 消息处理方法及***、消息目的端设备与分布式消息*** | |
US20200192718A1 (en) | Method and device for handling multi-tenant request | |
CN107798039B (zh) | 一种数据同步方法和装置 | |
CN106034113A (zh) | 数据处理方法及装置 | |
CN105162702A (zh) | 一种ac引流方法及装置 | |
CN104462562A (zh) | 一种基于数据仓库自动化的数据迁移***及方法 | |
CN106997394B (zh) | 一种数据乱序到达处理方法和*** | |
CN105657677A (zh) | 一种短信发送方法、短信网关及业务平台 | |
CN104243610A (zh) | 一种分布式文件传输服务方法 | |
CN102497297A (zh) | 基于多核多线程的深度报文检测技术的实现***和方法 | |
CN105302486A (zh) | 一种虚拟化离线桌面块设备存储同步方法 | |
CN110932393B (zh) | 一种变电站保信主站***及其数据初始化方法 | |
EP2690560A2 (en) | Method of benchmarking the behaviour of a replacement information system with the old system | |
CN101827068B (zh) | 一种业务场景还原方法与装置 | |
CN103488549B (zh) | 多镜像数据的回滚处理***和回滚处理方法 | |
CN106293996A (zh) | 数据同步方法、主设备、备份设备和*** | |
CN111367916B (zh) | 一种数据存储方法及装置 | |
CN104468569A (zh) | 分布式数据的完整性检测方法和装置 | |
CN104317906A (zh) | Gps监控车台上报数据大规模入库的处理方法 | |
CN115344633A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN113132273B (zh) | 一种数据转发方法及装置 | |
CN110288356B (zh) | 支付业务处理的方法、装置、电子设备、存储介质及*** | |
CN112235363A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150603 |