一种基于网络连接池化的网络通信方法及系统的制作方法

文档序号:10572816阅读:331来源:国知局
一种基于网络连接池化的网络通信方法及系统的制作方法
【专利摘要】本发明公开了一种基于网络连接池化的网络通信方法及系统,所述的方法包括:创建一Hash表,并根据预定需求初始化N个网络连接;采用Hash运算对每一个网络连接创建对应的key值,并根据key值将每一个网络连接一一对应存储于Hash表中;当客户端访问服务器端时,根据客户端标识作Hash运算后得到对应的key值;根据对应的key值从Hash表中获取对应的网络连接,客户端通过该网络连接与服务器端进行网络通信。通过本发明的方法,将网络连接进行池化形成网络连接资源池,实现网络连接资源的可控性,按需将资源池中的网络连接分配给客户端,提高整个系统的吞吐量,资源池中的网络连接可以复用,不会出现网络连接资源耗尽的问题。
【专利说明】
一种基于网络连接池化的网络通信方法及系统
技术领域
[0001]本发明涉及网络通信技术领域,具体涉及一种基于网络连接池化的网络通信方法及系统。
【背景技术】
[0002]基于TCP/IP协议的阻塞式I/O网络应用程序,采用网络套接字进行通信,如果服务器端处理速度缓慢,在高并发的情况下会出现客户端网络套接字资源耗尽的情况。例如:在I秒内有100个用户通过客户端程序访问服务器端,服务器端程序处理请求并做出响应需要3秒钟,客户端在3秒内就会产生300个客户端套接字与服务器端建立连接,如果客户端没有设置快速回收套接字策略,客户端就会存在很多处于TIME_WAIT状态的连接,在这种场景下,客户端的套接字资源就会耗尽,最终导致程序运行错误。
[0003]网络套接字属于系统资源,网络套接字耗尽后会影响整个系统的负载量,导致大量处于等待的客户端产生,使得整个系统的性能下降。

【发明内容】

[0004]本发明所要解决的技术问题是提供一种基于网络连接池化的网络通信方法及系统,能够解决现有技术的不足。
[0005]本发明解决上述技术问题的技术方案如下:
[0006]—方面,本发明提供了一种基于网络连接池化的网络通信方法,包括:
[0007]S1、创建一Hash表,并根据预定需求初始化N个网络连接,其中,N为正整数;
[0008]S2、采用Hash运算每一个网络连接创建对应的key值,根据创建的key值将每一个网络连接——对应存储于Hash表中,形成网络连接资源池;
[0009]S3、当客户端访问服务器端时,根据客户端标识作Hash运算后得到对应的key值;
[0010]S4、根据对应的key值从Hash表中获取与客户端对应的网络连接,客户端通过该网络连接与服务器端进行网络通信。
[0011]另一方面,本发明提供了一种基于网络连接池化的网络通信系统,包括:
[0012]Hash表创建单元,用于创建一Hash表;
[0013]初始化单元,用于根据预定需求初始化N个网络连接,其中,N为正整数;
[0014]存储单元,用于采用Hash运算为每一个网络连接创建对应的key值,并根据创建的key值将每一个网络连接一一对应存储于Hash表中,形成网络连接资源池;
[0015]key值获取单元,用于当客户端访问服务器端时,根据客户端标识作Hash运算后得到对应的key值;
[0016]网络连接获取单元,用于根据对应的key值从Hash表中获取与客户端对应的网络连接;
[0017]网络连接单元,用于通过获取的所述网络连接与服务器端进行网络通信。
[0018]本发明提供的一种基于网络连接池化的网络通信方法及系统,将网络连接进行池化形成网络连接资源池,实现网络连接资源的可控性,按需将资源池中的网络连接分配给客户端,用以通过网络连接与服务器端建立网络通信连接,提高整个系统的吞吐量,资源池中的网络连接可以复用,不会出现网络连接资源耗尽的问题。
【附图说明】
[0019]图1为本发明实施例一的一种基于网络连接池化的网络通信方法流程图;
[0020]图2为建立的网络连接资源池示意图;
[0021]图3为本发明实施例二的一种基于网络连接池化的网络通信系统示意图。
【具体实施方式】
[0022]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0023]实施例一、一种基于网络连接池化的网络通信方法。下面结合图1和图2对本实施例提供的方法进行说明。
[0024]参见图1,本实施例提供的方法包括:S1、创建一Hash表,并根据预定需求初始化N个网络连接。
[0025]S2、采用Hash运算为每一个网络连接创建对应的key值,根据创建的key值将每一个网络连接——对应存储于Hash表中,形成网络连接资源池。
[0026]具体的,首先创建一张Hash表,然后根据预定需求初始化N个网络套接字,其中,N为正整数。创建的Hash表用来存放初始化后的网络连接,初始化的网络连接的个数N的取值可由客户端的数量来配置,其中,一个客户端对应一个网络连接,客户端上的一个网络套接字与服务器端上的一个网络套接字共同构成一个网络连接,即客户端通过一条网络连接与服务器端建立网络通信连接。其中,网络连接与服务器端的主机之间具有对应关系,可以为一对一的对应关系,也可以为多对一的对应关系。
[0027]初始化N个网络套接字后,采用Hash运算为每一个网络连接创建对应的key值,由于网络连接与服务器端的主机之间具有对应关系,因此,本实施例根据网络连接对应的主机标识,并做Hash运算,得到该网络连接对应的key值。将创建的key值作为网络连接在Hash表中的存放地址,将每一个网络连接对应的存储于Hash表中,形成网络连接资源池。其中,网络连接属于系统资源,因此一个网络连接资源池中的最大网络连接数量是有限的。当客户端的数量增加时,可以动态在网络连接资源池中增加网络连接的数量。
[0028]S3、当客户端访问服务器端时,根据客户端标识作Hash运算后得到对应的key值。
[0029]S4、根据对应的key值从Hash表中获取与客户端对应的网络连接与服务器端建立网络连接。
[0030]具体的,当客户端需要访问服务器端时,根据客户端标识作Hash运算后得到对应的key值,比如,当多个手机需要访问服务器端时,可根据手机号码做Hash运算得到各个手机号码对应的key值,并根据客户端对应的key值从Hah表中获取与客户端对应的网络连接,根据对应的网络连接,客户端通过该网络连接与服务器端建立网络通信连接,可参见图2。
[0031]在将网络连接存储于Hash表中后,按照预定时间间隔对Hash表中所有的网络连接的连接状态进行检测,当检测到网络连接的连接状态处于未连接状态时,激活该网络连接使其处于连接状态。另外,对从Hash表中获取的与客户端对应的网络连接进行连接状态的检测,当客户端通过该网络连接与对应的服务器端建立连接失败时,客户端继续通过该网络连接与对应的服务器端重新建立连接。其中,当客户端通过对应的网络连接与服务器端建立连接失败时,客户端使用其继续通过该网络连接与服务器端重新建立连接预定次数。
[0032]需要说明的是,多个手机号码做Hash运算后得到的key值可能相同,比如,手机号A和手机号B作Hash运算后得到同一个key值,该key值对应同一个网络连接,因此,在不同时间,手机号A对应的手机和手机号B对应的手机均可以通过同一个网络连接与服务器端建立网络通信连接,实现网络连接资源池中的网络连接的复用,避免出现网络连接资源耗尽的问题。
[0033]另外,服务器端很多时候会包含多个主机,比如,一个服务器端包括主机M、主机L和主机W,网络连接a和网络连接b均可连接至主机A,客户端G可通过网络连接a与主机A建立网络连接,客户端H可通过网络连接b与主机A建立网络连接,也就是说,在同一时间,客户端G和客户端H均能与主机A建立网络连接,实现并行数据传输的功能,相比现有技术的串行数据传输,提高了数据传输的速度。
[0034]实施例二、一种基于网络连接池化的网络通信系统。下面结合图3对本实施例提供的系统进行描述。
[0035]参见图3,本实施例提供的系统包括Hash表创建单元31、初始化单元32、存储单元33、key值获取单元34、连接状态检测单元35、激活单元36、网络连接获取单元37和网络连接单元38。
[0036]其中,Hash表创建单元31,用于创建一Hash表。
[0037]初始化单元32,用于根据预定需求初始化N个网络连接,其中,根据客户端的数量确定N的取值。
[0038]存储单元33,用于采用Hash运算为每一个网络连接创建对应的key值,并根据创建的key值将每一个网络连接对应存储于Hash表中,形成网络连接资源池。
[0039]key获取单元34,用于当客户端访问服务器端时,根据客户端标识作Hash运算后得到对应的key值。
[0040]网络连接获取单元35,用于根据对应的key值从Hash表中获取与客户端对应的网络连接。
[0041]网络连接单元38,用于通过获取的所述网络连接与服务器端建立网络通信连接。
[0042]本实施例提供的系统还包括连接状态检测单元35和激活单元36,所述连接状态检测单元35,用于按照预定时间间隔对Hash表中所有的网络连接的连接状态进行检测。所述激活单元36,用于当连接状态检测单元35检测到网络连接的连接状态处于未连接状态时,激活该网络连接使其处于连接状态。
[0043]所述连接状态检测单元35还用于:
[0044]对从Hash表中获取的与客户端对应的网络连接进行连接状态的检测;
[0045]当客户端通过该网络连接与对应的服务器端建立连接失败时,客户端继续通过该网络连接与对应的服务器端重新建立连接。
[0046]所述网络连接单元38还用于:
[0047]当客户端通过对应的网络连接与服务器端建立连接失败时,以供客户端使用其继续通过该网络连接与服务器端重新建立连接预定次数。本发明提供的一种基于网络连接池化的网络通信方法及系统,根据客户端数量创建N个网络连接,将网络连接存储于Hash表中进行池化形成网络连接资源池,实现网络连接资源的可控性,对网络连接的数量进行控制,且将网络连接资源池中的网络连接按需分配给客户端,以供客户端通过网络连接与服务器端建立网络通信连接,提高整个系统的吞吐量;多个客户端可通过同一个网络连接与服务器端建立网络通信,实现网络连接资源池中的网络连接的复用,避免出现网络连接资源耗尽的问题;多个客户端能同时与服务器端建立通信连接,实现并行数据传输的功能,相比现有技术的串行数据传输,提高了数据传输的速度。
[0048]在本说明书的描述中,参考术语“实施例一”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体方法、装置或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、方法、装置或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0049]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于网络连接池化的网络通信方法,其特征在于,包括: 51、创建一Hash表,并根据预定需求初始化N个网络连接,其中,1^为正整数; 52、采用Hash运算为每一个网络连接创建对应的key值,根据创建的key值将每一个网络连接——对应存储于Hash表中,形成网络连接资源池; 53、当客户端访问服务器端时,根据客户端标识作Hash运算后得到对应的key值; 54、根据对应的key值从Hash表中获取与客户端对应的网络连接,客户端通过该网络连接与服务器端进行网络通信。2.如权利要求1所述的基于网络连接池化的网络通信方法,其特征在于,根据客户端的数量确定N的取值。3.如权利要求1所述的基于网络连接池化的网络通信方法,其特征在于,还包括: 按照预定时间间隔对Hash表中所有的网络连接的连接状态进行检测,当检测到网络连接的连接状态处于未连接状态时,激活该网络连接使其处于连接状态。4.如权利要求3所述的基于网络连接池化的网络通信方法,其特征在于,所述步骤S4还包括: 对从Hash表中获取的与客户端对应的网络连接的连接状态进行检测,当客户端通过该网络连接与对应的服务器端建立连接失败时,客户端继续通过该网络连接与对应的服务器端重新建立连接。5.如权利要求4所述的基于网络连接池化的网络通信方法,其特征在于,当客户端通过对应的网络连接与服务器端建立连接失败时,客户端继续通过该网络连接与服务器端重新建立网络连接预定次数。6.一种基于网络连接池化的网络通信系统,其特征在于,包括: Hash表创建单元,用于创建一 Hash表; 初始化单元,用于根据预定需求初始化N个网络连接,其中,N为正整数; 存储单元,用于采用Hash运算为每一个网络连接创建对应的key值,并根据创建的key值将每一个网络连接一一对应存储于Hash表中,形成网络连接资源池; key值获取单元,用于当客户端访问服务器端时,根据客户端标识作Hash运算后得到对应的key值; 网络连接获取单元,用于根据对应的key值从Hash表中获取与客户端对应的网络连接; 网络连接单元,用于通过获取的所述网络连接与服务器端进行网络通信。7.如权利要求6所述的基于网络连接池化的网络通信系统,其特征在于,根据客户端的数量确定N的取值。8.如权利要求6所述的基于网络连接池化的网络通信系统,其特征在于,还包括: 连接状态检测单元,用于按照预定时间间隔对Hash表中所有的网络连接的连接状态进行检测; 激活单元,用于当检测到网络连接的连接状态处于未连接状态时,激活该网络连接使其处于连接状态。9.如权利要求8所述的基于网络连接池化的网络通信系统,其特征在于,所述连接状态检测单元还用于: 对从Hash表中获取的与客户端对应的网络连接的连接状态进行检测; 当客户端通过该网络连接与对应的服务器端建立连接失败时,客户端继续通过该网络连接与对应的服务器端重新建立连接。10.如权利要求9所述的基于网络连接池化的网络通信系统,其特征在于,所述网络连接单元还用于: 当客户端通过对应的网络连接与服务器端建立连接失败时,以供客户端使用其继续通过该网络连接与服务器端重新建立连接预定次数。
【文档编号】H04L29/12GK105933464SQ201610228328
【公开日】2016年9月7日
【申请日】2016年4月13日
【发明人】梁蕤
【申请人】北京思特奇信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1