[发明专利]服务端基于TCP的交互处理方法有效
申请号: | 201210013898.7 | 申请日: | 2012-01-17 |
公开(公告)号: | CN102546808A | 公开(公告)日: | 2012-07-04 |
发明(设计)人: | 梁文 | 申请(专利权)人: | 深圳天源迪科信息技术股份有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;G06F9/46 |
代理公司: | 深圳市德力知识产权代理事务所 44265 | 代理人: | 林才桂 |
地址: | 518000 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 服务端 基于 tcp 交互 处理 方法 | ||
技术领域
本发明涉及一种服务端基于TCP的交互处理方法,尤其涉及一种基于连接池、连接支持一次鉴权、支持不同通讯协议、异步的非阻塞式的高伸缩性网络I/O交互技术。
背景技术
现有基于TCP的通讯用的都是socket,通常是先建立连接交互完关掉连接,建立连接和关连接都很耗网络资源,导致性能低下。为了解决上述问题,于是采用了长连接,多个长连接就组成连接池,但每次与服务端开始交互时都占用一个长连接直到交互结束,在服务器处理业务功能过程中这个长连接是空闲的,会导致网络资源的浪费。并且在大并发或服务端的处理时间比较长时,我们需要大量的长连接才能满足要求,如果受限于网络资源和服务器的资源只能建立一定量的长连接,那么部分的并发请求就要等待。于是JDK1.5提供了NIO的socket,NIO解决了长连接存在的问题,性能也有很大了提高,在连续交互的状况下,差不多跟上长连接。但在超时的情况下,NIO的连接自动会关掉,没有办子实现长连接,很多基于长连接优先开发的功能没办子实现,比如:鉴权。在建立长连接时进行一下鉴权,如果鉴权通过,在后续的交互我们不用再鉴权,这种特征和会话相类同。如果是用NIO去做每次交互都要鉴权,就会带来很大的浪费。
发明内容
本发明的目的在于提供一种服务端基于TCP的交互处理方法,采用NIO和长连接两者的优点解决他们的不足,用少量的长连接解决大并发,交互很频繁性能和伸缩性差问题,大大提高了通讯技术效率。
为实现上述目的,本发明提供一种服务端基于TCP的交互处理方法,包括以下步骤:
步骤1、初始化,加载配置信息,所述配置信息一并加载到HashMap中;
步骤2、创建长连接,形成连接池,所述创建长连接的方式为心跳方式,所述长连接的发送和接收采用异步方式,长连接接收或发送的数据通过四位字节长度的ID和高效的细粒度数据建立关联;
步骤3、长连接均匀处理异步请求及同步请求,并往IO写数据包,如果所述长连接处理同步请求需要等待结果,则采用异步API的方式处理,发送并等待结果,如果所述长连接处理异步请求,则发送并结束。所述往IO写数据在开始和结束写一瞬间,用锁保证数据包完整写入IO中,且在每个数据包前面插入四位字节长度的ID;
步骤4、IO把数据包交给线程池,线程池起动线程,解释数据包,所述IO接收到数据包后交给线程池,该线程池异步、并发处理每个数据包,所述线程解释数据包,返回一个数据,把ID除以10得到余数,通过余数找到所在的区,从这个区找到HashMap,把ID作为key,返回的数据对象作为值放到HashMap中;
步骤5、线程通过ID找结果,若找到结果则发送并结束请求,若结果为空则等待,并再按通过ID找结果,直到找到或超时,结束请求,所述线程通过ID找结果过程采用细粒度的的数据块方式。
所述创建长连接时,如果加载的配置信息需要鉴权,则用用户名和密码到服务端鉴权通过后,才有效完成创建长连接,整个交互过程只需一次鉴权,后续交互不用再鉴权。
所述心跳方式为创建成功后的长连接没有数据发送状态下,每隔30秒发送一个心跳,测试连路,连路不通则重新创建连接。
步骤1所述细粒度数据包括:一容器及存放的数据,该容器包括第一层及第二层。
所述长连接等待有两种方式:一为等待一一通知方式;一为每隔一次的时间通过ID去找结果。
所述步骤5中细粒度的数据块方式为把第一数据块细分为数个第二数据块,采用数条进程同时访问该数个第二数据块,并对该数个第二数据块进行同步控制。
本发明的有益效果:本发明提供的一种服务端基于TCP的交互处理方法,该方法以心跳的方式创建长连接并形成连接池,每个长连接的发送和接收采用异步的方式完成,长连接接收及发送的数据包通过ID和高效的细粒度数据同步建立关联,服务端把IO接收到的数据包交给线程池异步、并发处理每个数据包,实现了NIO和长连接优点,用少量的长连接解决大并发、交互频繁和伸缩性差的问题,比采用传统实现的通讯技术,效率至少提高了10倍以上,且只用一个API和一些配置,支持同步和异步调用,并支持通过扩展,自己解释数据包,实现不同的通讯协议。
为了能更进一步了解本发明的特征以及技术内容,请参阅以下有关本发明的详细说明与附图,然而附图仅提供参考与说明用,并非用来对本发明加以限制。
附图说明
下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其它有益效果显而易见。
附图中,
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳天源迪科信息技术股份有限公司,未经深圳天源迪科信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210013898.7/2.html,转载请声明来源钻瓜专利网。