CN103347075B - 一种数据多级缓存处理方法 - Google Patents
一种数据多级缓存处理方法 Download PDFInfo
- Publication number
- CN103347075B CN103347075B CN201310275193.7A CN201310275193A CN103347075B CN 103347075 B CN103347075 B CN 103347075B CN 201310275193 A CN201310275193 A CN 201310275193A CN 103347075 B CN103347075 B CN 103347075B
- Authority
- CN
- China
- Prior art keywords
- data
- buffer zone
- data buffer
- processing
- target data
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及数据缓存领域,尤其涉及一种数据多级缓存处理方法,其特征在于,包括以下步骤:第一数据缓冲区接收客户端发送的整块大数据并进行缓存;计算目标数据的长度,并按目标数掘的长度从第一数据缓冲区取出目标数据,目标数据经两步解析后构成完整的数据包,完整的数据包存储到第二数据缓冲区,重复前述操作取出目标数据,直至第一数据缓冲区中剩下的数据不足以构成一个完整的数据包,并将剩下的数据移到第一数据缓冲区的头部;第二数据缓冲区头部的完整的数据包进入第三数据缓冲区进行业务处理,处理完成后进入第四数据缓冲区等待发送。本发明在保证数据不会错乱和丢失的前提下,数据能够准确、高效的到达数据缓冲区,并进行提取和处理。
Description
技术领域
本发明涉及数据缓存领域,尤其涉及一种数据多级缓存处理方法。
背景技术
在cs架构的服务端通信中,往往要处理大量客户端发过来的数据,这些数据包的大小不一,而且经过网络的传输,很多数据会出现粘包和分包的情况,直接提取的数据可能不是一个完整的数据包,直接解析导致数据错乱和丢失,影响数据的后续处理。
发明内容
针对上述技术问题,本发明设计开发了一种数据多级缓存处理方法,目的在于保证数据能够准确、高效的到达数据缓冲区,并进行提取和处理。
本发明提供的技术方案为:
一种数据多级缓存处理方法,包括以下步骤:
步骤一、第一数据缓冲区接收客户端发送的整块大数据并进行缓存;
步骤二、计算目标数据的长度,并按目标数据的长度从第一数据缓冲区取出目标数据,所述目标数据经两步解析后构成完整的数据包,所述完整的数据包存储到第二数据缓冲区,重复前述操作取出目标数据,直至第一数据缓冲区中剩下的数据不足以构成一个完整的数据包,并将剩下的数据移到第一数据缓冲区的头部;
步骤三、第二数据缓冲区头部的完整的数据包进入第三数据缓冲区进行业务处理,处理完成后进入第四数据缓冲区等待发送。
优选的是,所述的数据多级缓存处理方法中,所述步骤二中,计算所述目标数据中目标数据头的长度,并按所述目标数据头的长度取出目标数据头数据,将所述目标数据头数据解析并序列化到一个键值对存储结构中,根据所述目标数据和目标数据头数据的长度差取出完整的数据包的剩余主体部分数据并解析,解析后的目标数据头数据和剩余主体部分数据构成完整的数据包。
优选的是,所述的数据多级缓存处理方法中,所述目标数据和目标数据头数据的长度均用4个字节存储。
优选的是,所述的数据多级缓存处理方法中,第一数据缓冲区包括源数据和空区域两部分,客户端发送的整块大数据依次存储到所述第一数据缓冲区中,并和己有的数据一起构成源数据,第一数据缓冲区中剩下的没有存放数据的部分为空区域。
优选的是,所述的数据多级缓存处理方法中,当空区域不足以存储客户端发送的整块大数据时,所述空区域自动扩展两倍大小的存储区域进行存储。
优选的是,所述的数据多级缓存处理方法中,第二数据缓冲区的完整的数据包经过数据包乱序控制,同一客户端的完整的数据包有且只有一个能够依次从第二数据缓冲区进入第三数据缓冲区。
优选的是,所述的数据多级缓存处理方法中,所述目标数据头数据的存储格式为<key=value>组成的字符串,key和value值由用户确定。
优选的是,所述的数据多级缓存处理方法中,所述完整的数据包的剩余主体部分数据是一整块数据,可以存储字符串、语音或视频。
本发明所述的数据多级缓存处理方法具有以下有益效果:所述目标数据分为目标数据头数据和剩余主体部分数据两部分,两部分分别解析后构成一个完整的数据包,避免了多个目标数据在传输过程中出现的粘包情况,保证数据高效、准确的到达数据缓存区,采用数据包乱序控制方法使单个完整的数据包单独进行业务处理,保证了数据不会错乱和丢失。
附图说明
图1是本发明所述的数据多级缓存处理方法的流程图;
图2是本发明的一个实施例的示意图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
如图1所示,本发明提供一种数据多级缓存处理方法,包括以下步骤:
步骤一、当服务启动成功后,***会创建第二数据缓冲区和第三数据缓冲区,同时启动数据包乱序控制线程和数据业务处理线程,处于等待状态,当有客户端连接成功服务并握手成功后,服务创建第一数据缓冲区和第四数据缓冲区,当有客户端继续连接服务时,服务继续创建各自的缓冲区,这样,第一数据缓冲区和第四数据缓冲区分别构成了缓冲区集群,当客户端连续发送多个数据包时,多个数据包经过网络传输到达服务,此时,多个数据包组成整块大数据,第一数据缓冲区接收客户端发送的整块大数据并进行缓存;
步骤二、由于多个目标数据在网络传输过程中可能粘在一起,因此需要单独提取目标数据,计算目标数据的长度,并按目标数据的长度从第一数据缓冲区取出目标数据,所述目标数据经两步解析后构成完整的数据包,所述完整的数据包存储到第二数据缓冲区,遍历第一数据缓冲区,重复前述操作取出目标数据,直至第一数据缓冲区中剩下的数据不足以构成一个完整的数据包,并将剩下的数据移到第一数据缓冲区的头部,取走数掘的部分成为空区域,用来存储新的数据;
步骤三、第二数据缓冲区头部的完整的数据包进入第三数据缓冲区进行业务处理,第三数据缓冲区每次只存储一个客户端的一个完整的数据包,不存储该客户端的第二个完整的数据包,防止完整的数据包处理顺序混乱,处理完成后进入第四数据缓冲区等待发送。
所述的数据多级缓存处理方法中,所述步骤二中,目标数据包括目标数据头数据和剩余主体部分数据,这两部分数据需要分别提取,计算所述目标数据中目标数据头的长度,并按所述目标数据头的长度取出目标数据头数据,将所述目标数据头数据解析并序列化到一个键值对存储结构中,根据所述目标数据和目标数据头数据的长度差取出完整的数据包的剩余主体部分数据并解析,解析后的目标数据头数据和剩余主体部分数据构成完整的数据包。
所述的数据多级缓存处理方法中,所述目标数据和目标数据头数据的长度均用4个字节存储。
所述的数据多级缓存处理方法中,第一数据缓冲区包括源数据和空区域两部分,客户端发送的整块大数据依次存储到所述第一数据缓冲区中,并和己有的数据一起构成源数据,第一数据缓冲区中剩下的没有存放数据的部分为空区域。
所述的数据多级缓存处理方法中,当空区域不足以存储客户端发送的整块大数据时,所述空区域自动扩展两倍大小的存储区域进行存储。
所述的数据多级缓存处理方法中,第二数据缓冲区的完整的数据包经过数据包乱序控制,同一客户端的完整的数据包有且只有一个能够依次从第二数据缓冲区进入第三数据缓冲区。
所述的数据多级缓存处理方法中,所述目标数据头数据的存储格式为<key=value>组成的字符串,key和value值由用户确定,此结构可以无限扩展。
所述的数据多级缓存处理方法中,所述完整的数据包的剩余主体部分数据是一整块数据,可以存储字符串、语音或视频。
如图2所示,本发明的实施例为张三和李四间的聊天对话,张三的用户id为112,李四的用户id为l15,张三发送的消息为:什么时候有时间,一起吃个饭吧!李四回复的消息为:好的,晚上8点怎么样?这两条消息即为两个完整的数据包,张三发给李四的消息标记为目标数据1,李四回复给张三的消息标记为目标数据2。目标数据1的长度为90,目标数据l头header内容为<fromuname=张三><fromuid=l12><touname=李四><touid=l15>,目标数据1头的长度为55,计算得出目标数据1剩余主体部分body的长度为35,提取内容为:什么时候有时间,一起吃个饭吧!目标数据2的长度为80,目标数据2头header内容为<fromuname=李四><fromuid=l15><touname=张三><touid=l12>,目标数据2头的长度为55,目标数据2剩余主体部分body的长度为25,提取内容为:好的,晚上8点怎么样?由此得到张三和李四间聊天对话的内容。
尽管本发明的实施方案己公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
Claims (8)
1.一种数据多级缓存处理方法,其特征在于,包括以下步骤:
步骤一、第一数据缓冲区接收客户端发送的整块大数据并进行缓存;
步骤二、计算目标数据的长度,并按目标数据的长度从第一数据缓冲区取出目标数据,所述目标数据经两步解析后构成完整的数据包,所述完整的数据包存储到第二数据缓冲区,重复前述操作取出目标数据,直至第一数据缓冲区中剩下的数据不足以构成一个完整的数据包,并将剩下的数据移到第一数据缓冲区的头部;
步骤三、第二数据缓冲区头部的完整的数据包进入第三数据缓冲区进行业务处理,处理完成后进入第四数据缓冲区等待发送。
2.如权利要求1所述的数据多级缓存处理方法,其特征在于,所述步骤二中,计算所述目标数据中目标数据头的长度,并按所述目标数据头的长度取出目标数据头数据,将所述目标数据头数据解析并序列化到一个键值对存储结构中,根据所述目标数据和目标数据头数据的长度差取出完整的数据包的剩余主体部分数据并解析,解析后的目标数据头数据和剩余主体部分数据构成完整的数据包。
3.如权利要求2所述的数据多级缓存处理方法,其特征在于,所述目标数据和目标数据头数据的长度均用4个字节存储。
4.如权利要求2所述的数据多级缓存处理方法,其特征在于,第一数据缓冲区包括源数据和空区域两部分,客户端发送的整块大数据依次存储到所述第一数据缓冲区中,并和已有的数据一起构成源数据,第一数据缓冲区中剩下的没有存放数据的部分为空区域。
5.如权利要求4所述的数据多级缓存处理方法,其特征在于,当空区域不足以存储客户端发送的整块大数据时,所述空区域自动扩展两倍大小的存储区域进行存储。
6.如权利要求2所述的数据多级缓存处理方法,其特征在于,第二数据缓冲区的完整的数据包经过数据包乱序控制,同一客户端的完整的数据包有且只有一个能够依次从第二数据缓冲区进入第三数据缓冲区。
7.如权利要求2所述的数据多级缓存处理方法,其特征在于,所述目标数据头数据的存储格式为<key=value>组成的字符串,key和value值由用户确定。
8.如权利要求7所述的数据多级缓存处理方法,其特征在于,所述完整的数据包的剩余主体部分数据是一整块数据,可以存储字符串、语音或视频。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310275193.7A CN103347075B (zh) | 2013-07-02 | 2013-07-02 | 一种数据多级缓存处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310275193.7A CN103347075B (zh) | 2013-07-02 | 2013-07-02 | 一种数据多级缓存处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103347075A CN103347075A (zh) | 2013-10-09 |
CN103347075B true CN103347075B (zh) | 2016-06-08 |
Family
ID=49281849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310275193.7A Active CN103347075B (zh) | 2013-07-02 | 2013-07-02 | 一种数据多级缓存处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103347075B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107026713B (zh) * | 2017-03-17 | 2018-04-10 | 广东蜂助手网络技术股份有限公司 | 一种在网络通讯包粘连的情况下提高网络速度的方法 |
CN108833301A (zh) * | 2018-05-30 | 2018-11-16 | 杭州迪普科技股份有限公司 | 一种报文处理方法和装置 |
CN109062507A (zh) * | 2018-07-18 | 2018-12-21 | 武汉中旗生物医疗电子有限公司 | 心电数据的处理储存方法及装置 |
CN111372277B (zh) * | 2018-12-26 | 2023-07-14 | 南京中兴新软件有限责任公司 | 数据分发方法、装置及存储介质 |
CN111915763A (zh) * | 2020-07-24 | 2020-11-10 | 东风汽车有限公司 | 一种汽车高级驾驶辅助功能异常信息采集方法及电子设备 |
CN114125081B (zh) * | 2021-10-27 | 2023-09-22 | 桂林长海发展有限责任公司 | 一种接收数据的处理方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852318A (zh) * | 2006-04-19 | 2006-10-25 | 华中科技大学 | 适用于对象网络存储的分布式多级缓存*** |
CN102238436A (zh) * | 2010-04-23 | 2011-11-09 | 中兴通讯股份有限公司 | 一种光传输中数据处理的方法和装置 |
CN103051977A (zh) * | 2013-01-11 | 2013-04-17 | 乐视网信息技术(北京)股份有限公司 | 一种处理p2p缓存数据的方法 |
CN103078811A (zh) * | 2013-01-31 | 2013-05-01 | 北京金和软件股份有限公司 | 一种基于多线程环境网络数据包乱序控制方法 |
-
2013
- 2013-07-02 CN CN201310275193.7A patent/CN103347075B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852318A (zh) * | 2006-04-19 | 2006-10-25 | 华中科技大学 | 适用于对象网络存储的分布式多级缓存*** |
CN102238436A (zh) * | 2010-04-23 | 2011-11-09 | 中兴通讯股份有限公司 | 一种光传输中数据处理的方法和装置 |
CN103051977A (zh) * | 2013-01-11 | 2013-04-17 | 乐视网信息技术(北京)股份有限公司 | 一种处理p2p缓存数据的方法 |
CN103078811A (zh) * | 2013-01-31 | 2013-05-01 | 北京金和软件股份有限公司 | 一种基于多线程环境网络数据包乱序控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103347075A (zh) | 2013-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103347075B (zh) | 一种数据多级缓存处理方法 | |
CN104601468B (zh) | 报文转发方法和设备 | |
EP2890133A2 (en) | System and method for distributing live broadcast content | |
CN102833337A (zh) | 一种ftp文件上传、下载方法及装置 | |
WO2012092602A3 (en) | Methods and systems for caching data communications over computer networks | |
CA2671666A1 (en) | Method, communications node, and memory for dynamic dictionary updating and optimization for compression and decompression of messages | |
CN102195874A (zh) | 数据分组的预提取 | |
CN104394096A (zh) | 一种基于多核处理器的报文处理方法及多核处理器 | |
CN105099918B (zh) | 一种数据查找匹配的方法和装置 | |
JP2015535410A (ja) | データ通信ネットワークにおいてメッセージを修正及び転送する方法及び装置 | |
US9591528B2 (en) | Data forwarding method, device, and base station | |
US20140237063A1 (en) | System and method for transmitting and receiving peer-to-peer messages using a media key, and managing the media key | |
CN104065588A (zh) | 一种数据包调度和缓存的装置及方法 | |
KR20120113744A (ko) | 시간 스탬핑 및 중앙 제어기를 사용한 복수의 어댑터들에 의한 데이터 프레임들의 분산 처리 | |
CN106790347A (zh) | 一种基于netty的大规模并发数据转发方法 | |
CN105591872B (zh) | 一种实现多数据中心互联的方法和装置 | |
CN104866528A (zh) | 多平台数据采集方法及*** | |
CN104536816A (zh) | 提高虚拟机迁移效率的方法 | |
CN104965810B (zh) | 多核模式下快速处理数据报文的方法及装置 | |
EP2533499A1 (en) | Method and system for service message transmission based on matching rule | |
CN104753813A (zh) | Dma传送报文的方法 | |
CN108521611B (zh) | 一种抗抖动视频数据存取方法以及计算机设备 | |
CN104936006B (zh) | 一种节目信息表的发送方法、装置及*** | |
CN105471758B (zh) | 一种基于网络堵塞的标注方法、装置及*** | |
CN112685358B (zh) | 一种基于fpga的ddr3分组读写方法 |
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 |