首页> 中国专利> 一种基于TCP长连接的提高数据传输效率的方法

一种基于TCP长连接的提高数据传输效率的方法

摘要

本发明提供一种基于TCP长连接的提高数据传输效率的方法,是客户端和服务端之间采用TCP长连接进行数据通信,客户端和服务端的接收和处理采用异步方式并行处理,通信数据包采用编号机制保证数据可靠性和处理一致性,通过心跳检测和失效重连机制保证通信可靠性,使用连接池提高并行传输效率,通过客户端和服务端对多队列,多线程的处理,提高数据处理的并行性,提高处理效率。

著录项

  • 公开/公告号CN102957627A

    专利类型发明专利

  • 公开/公告日2013-03-06

    原文格式PDF

  • 申请/专利权人 浪潮电子信息产业股份有限公司;

    申请/专利号CN201210465303.1

  • 发明设计人 王倩;张在理;

    申请日2012-11-19

  • 分类号H04L12/861(20130101);H04L1/18(20060101);H04L29/06(20060101);

  • 代理机构

  • 代理人

  • 地址 250014 山东省济南市高新区舜雅路1036号

  • 入库时间 2024-02-19 17:42:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-10-25

    专利权的转移 IPC(主分类):H04L12/861 专利号:ZL2012104653031 登记生效日:20221013 变更事项:专利权人 变更前权利人:浪潮云信息技术股份公司 变更后权利人:重庆浪潮政务云管理运营有限公司 变更事项:地址 变更前权利人:250100 山东省济南市高新区浪潮路1036号浪潮科技园S01号楼 变更后权利人:400722 重庆市北碚区水土高新技术产业园云汉大道5号附398

    专利申请权、专利权的转移

  • 2020-08-28

    专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L12/861 变更前: 变更后: 申请日:20121119

    专利权人的姓名或者名称、地址的变更

  • 2018-09-04

    专利权的转移 IPC(主分类):H04L12/861 登记生效日:20180816 变更前: 变更后: 申请日:20121119

    专利申请权、专利权的转移

  • 2016-06-08

    授权

    授权

  • 2014-04-09

    实质审查的生效 IPC(主分类):H04L12/861 申请日:20121119

    实质审查的生效

  • 2013-03-06

    公开

    公开

查看全部

说明书

技术领域

本发明涉及网络传播中数据的传输,分析和处理,尤其专用网络或者类似网络中数据包的传输,分析和处理,具体地说是一种基于TCP长连接的提高数据传输效率的方法。

背景技术

计算机网络中传输数据分为两种,一种是无连接的不可靠传输,采用UDP协议,一种是确保数据可靠、面向连接的TCP协议。对于无连接的UDP连接,  提供面向事务的简单不可靠信息传送服务,因此,对通信可靠性有一定要求的通信设计,一般不会采用UDP连接。TCP是一种面向连接(连接导向)的、可靠的、基于字节流的传输层通信协议,鉴于通信可靠性要求,大多采用TCP作为通信协议。

传统的通信设计方式,若采用TCP长连接,一般采用阻塞分析TCP数据包的方法,具体过程是在收到TCP数据包后,对数据包的内容进行分析,通过相应的分析流程,处理流程处理完毕后,该数据包的接收才结束,从而继续接收下一个数据包。这种方式,对于分析,处理过程需要较长时间的情况,无疑会造成系统瓶颈。随着网络通信技术的进步,网络流量的不断增大,网络带宽已经不是通信处理的瓶颈,必须通过提高分析,处理速度来提高通信速度。

发明内容

本发明的目的是提供一种基于TCP长连接的提高数据传输效率的方法。

本发明的目的是按以下方式实现的,客户端和服务端之间采用TCP长连接进行数据通信,客户端和服务端的接收和处理采用异步方式并行处理,通信数据包采用编号机制保证数据可靠性和处理一致性,通过心跳检测和失效重连机制保证通信可靠性,使用连接池提高并行传输效率,通过客户端和服务端对多队列,多线程的处理,提高数据处理的并行性,提高处理效率;其中:

(1)客户端和服务端是人为指定;节点间或各为客户端和服务端;节点间或互为客户端和服务端;

(2)客户端包括以下线程:

1)发送线程,负责执行发送动作;

2)接收线程,负责执行接收动作;

3)发送包处理线程,负责将请求转化为通信包,加入待发送队列;

4)接收包处理线程,负责处理已返回的请求;

5)连接线程,负责与服务端的心跳检测与失效重连;

6)超时扫描线程,负责检测命令超时和重发处理;

(3)客户端包括以下队列:

1)新任务队列,存放新收到的请求;

2)待发送包队列,存放即将被发送的通信包;

3)已接收包队列,存放收到的通信包;

4)待完成任务队列,新任务被发送后,存放在该队列中,等待任务完成后,从该队列中删除;

(4)服务端包括以下线程:

1)接收线程,负责从客户端接收通信包;

2)发送线程,负责将通信包发送到客户端;

3)接收包处理线程,负责将接收到的通信包包转化为请求;

4)发送包处理线程,负责将恢复转化为即将发送的通信包;

5)工作线程,负责实际的处理工作,允许有多个工作线程;

(5)服务端包括以下队列:

1)接收包队列,存放收到的通信包;

2)未完成请求队列,存放还未进行的处理的请求;

3)已完成请求队列,存放经过工作线程处理完成的请求;

4)发送包队列,存放要发送的通信包;

(6)包编号机制包括:

1)客户端向同一个服务端发送的命令是编号的,服务端根据包的编号来判断是同一个命令的包;

2)由于一条命令包含多个通信包,只有接收到的包的数量达到该命令的包个数时,该命令才接收完整;

3)每一个数据包都对应一个索引,代表该数据包在相应命令所有数据包中的序号;

(7)心跳检测和失效重连机制包括:

1)定时检测连接是否畅通;

2)发现连接失效时进行重连;

3)对于超时命令进行重发;

4)重发次数达到上限的命令,返回处理失败;

(8)使用连接池包括:

1)客户端和通信端可以有多个TCP长连接,组成连接池;

2)客户端和服务端进行发送和接收时,从连接池中选择连接;

(9)客户端和服务端处理流程如下:

1)其他模块通过“内部命令”的方式向本模块提交命令,在客户端,该命令被加入到新任务队列;

2)客户端的命令转换处理线程,从新任务队列中取出一个新的命令,转换为发送包后,从连接池中选择一个连接,将发送包加入到连接的待发送包队列,并将该命令从新任务队列移到待完成任务队列中;

3)客户端的发送线程从连接的待发送包队列中取出待发送的包,发送到服务端;

4)服务端接收线程接收包,通过转换处理线程将包转换为新请求加入新请求队列;

5)判断服务端是否接收了一个新请求的所有包,若是,将该请求从新请求队列中移至待处理请求队列;

6)服务端工作线程从待处理请求队列中获取一个请求并执行,完成后将该请求从待处理请求队列移至已完成请求队列;

7)服务端发送处理线程从已完成请求队列中取出一个已完成请求,转换为发送包,加入待发送包队列;

8)服务端发送线程遍历各连接,从待发送包队列中取出通信包,发送;

9)客户端接收线程接收通信包,返回包处理线程将通信包加入已接收包队列中;

10)命令对应的通信包全部接收完成后,从待完成队列中找到该请求,并删除。

本发明的有益效果是:客户端和服务端之间采用TCP长连接进行数据通信,客户端和服务端的接收和处理采用异步方式并行处理,通信数据包采用编号机制保证数据可靠性和处理一致性,通过心跳检测和失效重连机制保证通信可靠性,使用连接池提高并行传输效率,通过客户端和服务端对多队列,多线程的处理,提高数据处理的并行性,提高处理效率。

附图说明

图1是本发明组成结构图;

图2是本发明中客户端处理流程图;

图3 是本发明中远端写流程图。

具体实施方式

参照说明书附图对本发明的方法作以下详细地说明。

本发明的方法是节点间通过TCP长连接进行数据通信,客户端和服务端的接收和处理采用异步方式并行处理,通信数据包采用编号机制保证数据可靠性和处理一致性,通过心跳检测和失效重连机制保证通信可靠性,使用连接池提高并行传输效率。

通信数据包采用编号机制保证数据可靠性和处理一致性。客户端和服务端的通信任务以命令的形式进行,一个命令可以通过一个,或者两个以上的包进行发送,例如,需要传送数据的命令,可以分为命令包和数据包分别发送。包编号机制,即客户端向同一个服务端发送的命令是编号的,服务端根据包的编号来判断是同一个命令的包。同时,由于一条命令可以包含多个通信包,只有接收到的包的数量达到该命令的包个数是该命令才接收完整。每一个数据包都对应一个索引,代表该数据包在相应命令所有数据包中的序号。

本发明中所述客户端和服务端是人为指定的,例如两个节点,可以分别作为客户端和服务端,也可以互为客户端和服务端。客户端用于发送请求命令,处理返回的应答。服务端负责接收客户端的命令、执行和应答。

本发明中客户端采用新任务队列,待发送包队列,待完成任务队列,已接收包队列来实现异步通信和处理。服务端采用已接收包队列,待处理请求队列,已完成请求队列,待发送包队列实现实现异步通信和处理。

客户端包括处理线程(发送包处理线程和接收包处理线程)、连接线程、发送线程、接收线程,超时扫描线程,处理线程用于将各种远程命令和任务转化为通信包传递给发送线程,并分析接收线程接收的数据包,应答各种命令。超时扫描线程会定时扫描待完成任务队列,将超时的命令进行重发或失败处理。

服务端分为连接线程、发送线程、接收线程、处理线程(发送包处理线程和接收包处理线程)和工作线程(若干个),其中工作线程启动多个,并发处理从客户端接收的命令。

一条命令的处理需要通过以下流程:

1)其他模块通过“内部命令”的方式向本模块提交命令,在客户端,该命令被加入到新任务队列

2)客户端的发送包处理线程  从新任务队列中取出一个新的命令,转换为发送包后,从连接池中选择一个连接,将发送包加入到连接的待发送包队列,并将该命令从新任务队列移到待完成任务队列中

3)客户端的发送线程从连接的待发送包队列中取出待发送的包,发送到服务端

4)服务端接收线程接收包,通过接收包处理线程将包转换为新请求加入新请求队列;

5)判断服务端是否接收了一个新请求的所有包,若是,将该请求从新请求队列中移至待处理请求队列

6)服务端工作线程从待处理请求队列中获取一个请求并执行,完成后将该请求从待处理请求队列移至已完成请求队列

7)服务端发送包处理线程从已完成请求队列中取出一个已完成请求,转换为发送包,加入待发送包队列

8)服务端发送线程遍历各连接,从待发送包队列中取出通信包,发送

9)客户端接收线程接收通信包,接收包处理线程将通信包加入已接收包队列中

10)命令对应的通信包全部接收完成后,从待完成队列中找到该请求,并删除

本发明中,客户端和服务端的连接线程用来执行心跳检测和失效重连。客户端和服务端建立TCP长连接后,通过连接线程进行一定时间间隔的通信检测,确定两段通信畅通。若发现通信链路失效,则使用失效重连机制尝试连接对端。

本发明中,使用连接池管理TCP连接,即可以同时建立多个TCP  连接,客户端和通信段的发送接收线程从连接池中选择连接进行发送和接收。

实施例

 图1是本发明的组成结构图。本发明中客户端和服务端可以创建多个连接,组成连接池,客户端和服务端通过各自的发送线程和接收线程进行通信,通过处理线程进行任务处理,通过连接线程进行心跳检测和失效重连,客户端通过超时扫描线程进行任务的超时重发。

图2是本发明中客户端处理流程的流程图。客户端通过发送线程,接收线程,处理线程对新任务队列,待发送包队列,待完成任务队列,已接收包队列完成异步操作

图3是本发明中服务端处理流程的流程图。服务端通过发送线程,接收线程,处理线程对已接收包队列,待处理请求队列,已完成请求队列,待发送包队列的异步操作完成处理。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号