基于TCP长链接的海量用户接入方法及系统与流程

文档序号:14574538发布日期:2018-06-02 01:10阅读:341来源:国知局
基于TCP长链接的海量用户接入方法及系统与流程

本发明涉及通讯技术领域,尤其涉及一种基于TCP长链接的海量用户接入方法及系统。



背景技术:

目前,很多网络均为用户提供服务器的系统,很多都存在一个用户数量,以及同时并发的在线用户数量的问题,特别是基于TCP长链接的系统,当并发的用户数量过多时,就会出现系统响应过慢,或整个系统无法正常提示业务的瓶颈。

很多系统设计之初,没有考虑并发的问题,导致后续随着并发用户数量的增加,整个系统所受的压力很大,往往没有很好的方案来解决后续用户增加所带来的一些问题。

这样,传统的系统方案在后期会给系统带来非常大的,难以解决的并发问题,以很难通过扩展服务器去支撑所有的业务,系统面临最大的并发用户瓶颈,无法突破,这就会导致用户在使用上的感觉明显变化,从而流失用户。

目前海量用户接入系统,大部分都是使用UDP无链接的方式,由于UDP是无链接的,该方案需要解决各个命令的丢失,重发,以及时序的问题。虽然UDP方式没有单台服务器的socket链接量问题,但是对于大系统而言,单台服务器还存在着网络通信流量问题,大并发肯定会带来单台服务器的网络瓶颈,因此UDP方式也不解决大并发的需要。

HTTP方式,此方式不需要服务器维持TCP的长链接,只需要在需要提供服务器时,再与服务建立通信,其他时间将断开与服务器的链接,释放服务器的端口,从而单台服务器也能提供高并发数。并且可以通过虚IP技术来提高网络的瓶颈。但是此方案也存在一个致命的问题,就是服务器很多时候,无法及时通知用户事件。因此,此方案只是适合一些实时性要求不高的单通要求场合。



技术实现要素:

为解决上述至少一技术问题,本发明的主要目的是提供一种基于TCP长链接的海量用户接入系统。

为实现上述目的,本发明采用的一个技术方案为:提供一种基于TCP长链接的海量用户接入系统,包括:

多个客户端,多个所述客户端用于并行发送多个TCP长链接请求,以及接收分配信息并登录指定TCP服务器;

多个TCP服务器,多个所述TCP服务器用于分别以设定周期间隔向外推送各自的运行信息,以及在客户端登录时根据客户端的帐号信息寻址对应的内存数据库;

资源管理分配服务器,所述资源管理分配服务器用于接收多个TCP长链接请求,并根据TCP服务器的运行信息发送分配信息;

内存数据库,所述内存数据库用于对客户端输入的实时数据进行读和/或写操作。

优选地,所述TCP服务器,具体用于:在客户端登录时根据与客户端的帐号信息对应的唯一key值,定位对应的内存数据库。

优选地,所述TCP服务器,还用于:

判断key值为纯数字类型还是包含有字符类型,

如果key值为纯数字类型,则根据取模算法对key值取模,并根据取模结果定位对应的内存数据库;

如果key值为包含有字符类型,则计算key值的MD5值,根据取模算法对MD5值取模,并根据取模结果定位对应的内存数据库。

优选地,所述基于TCP长链接的海量用户接入系统,还包括:

固化数据库,所述固化数据库用于在内存数据库不存在客户端的用户数据时,从固化数据库中查找,并将用户数据加载到内存数据库中。

为实现上述目的,本发明采用的另一个技术方案为:提供一种基于TCP长链接的海量用户接入方法,包括如下步骤:

在客户端,并行发送多个TCP长链接请求,以及接收分配信息并登录指定TCP服务器;

在TCP服务器端,以设定周期间隔向外推送各自的运行信息,以及在客户端登录时根据客户端的帐号信息寻址对应的内存数据库;

在资源管理分配服务器端,接收多个TCP长链接请求,并根据TCP服务器的运行信息发送分配信息;

在内存数据库端,对客户端输入的实时数据进行读和/或写操作。

优选地,所述在客户端登录时根据客户端的帐号信息寻址对应的内存数据库的步骤,具体包括:在客户端登录时根据与客户端的帐号信息对应的唯一key值,定位对应的内存数据库。

优选地,所述在客户端登录时根据客户端的帐号信息寻址对应的内存数据库的步骤,还包括:

判断key值为纯数字类型还是包含有字符类型,

如果key值为纯数字类型,则根据取模算法对key值取模,并根据取模结果定位对应的内存数据库;

如果key值为包含有字符类型,则计算key值的MD5值,根据取模算法对MD5值取模,并根据取模结果定位对应的内存数据库。

优选地,所述基于TCP长链接的海量用户接入方法,还包括:

在内存数据库端不存在客户端的用户数据时,从固化数据库中查找,并将用户数据加载到内存数据库中。

本发明的技术方案通过资源管理分配服务器,可以接收客户端发送的多个TCP长链接请求,并根据TCP服务器的运行信息向客户端返回分配信息,以使客户端登录指定TCP服务器,进而寻址对应的内存数据库,可实现客户端的用户数据的实时读和/或写操作,具有至少如下优点:

1、由于服务器采用分布式,动态地分配有效的TCP服务器,解决系统的TCP长连接的数量问题;只要增加TCP服务器的数量,就能同时并发更多的用户接入数;

2、采用分布式的内存数据库,防止由单台数据库出现数量,以及访问的瓶颈;

3、分布式系统,接入的TCP服务器出现故障后,可以其它的TCP服务器接管,防止出现系统不可访问的情况。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本发明一实施例基于TCP长链接的海量用户接入系统的组网图;

图2为图1的数据流向图;

图3为本发明一实施例基于TCP长链接的海量用户接入方法的流程图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明,本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

请参照图1和图2,在本发明实施例中,该基于TCP长链接的海量用户接入系统,包括:

多个客户端10,多个所述客户端10用于并行发送多个TCP长链接请求,以及接收分配信息并登录指定TCP服务器;

多个TCP服务器30,多个所述TCP服务器30用于分别以设定周期间隔向外推送各自的运行信息,以及在客户端10登录时根据客户端10的帐号信息寻址对应的内存数据库;

资源管理分配服务器20,所述资源管理分配服务器20用于接收多个TCP长链接请求,并根据TCP服务器30的运行信息发送分配信息;

内存数据库40,所述内存数据库40用于对客户端10输入的实时数据进行读和/或写操作。

本实施例中,TCP服务器30推送的运行信息包括运行状态、运行速度、性能等数据。该运行信息可作为资源管理分配服务器20分配TCP服务器30给客户端10的依据。客户端10登录TCP服务器30建立TCP长链接,按照客户端10对应的帐号信息寻址内存数据库40,在登录验证通过后,可在内存数据库40中进行读和/或写操作。

本发明的技术方案通过资源管理分配服务器20,可以接收客户端10发送的多个TCP长链接请求,并根据TCP服务器30的运行信息向客户端10返回分配信息,以使客户端10登录指定TCP服务器30,进而寻址对应的内存数据库40,可实现客户端10的用户数据的实时读和/或写操作,具有至少如下优点:

1、由于服务器采用分布式,动态地分配有效的TCP服务器30,解决系统的TCP长连接的数量问题;只要增加TCP服务器30的数量,就能同时并发更多的用户接入数;

2、采用分布式的内存数据库40,防止由单台数据库出现数量,以及访问的瓶颈;

3、分布式系统,接入的TCP服务器30出现故障后,可以其它的TCP服务器30接管,防止出现系统不可访问的情况。

请参照图1和图2,在一具体的实施例中,所述TCP服务器30,具体用于:在客户端10登录时根据与客户端10的帐号信息对应的唯一key值,定位对应的内存数据库40。

本实施例中,帐号信息可为纯数字类型或数字和字符串的组合类型或字符串类型,每个帐号均对应唯一的key值,如此,通过算法可以计算并定位对应的内存数据库40。

进一步的,所述TCP服务器30,还用于:

判断key值为纯数字类型还是包含有字符类型,

如果key值为纯数字类型,则根据取模算法对key值取模,并根据取模结果定位对应的内存数据库40;

如果key值为包含有字符类型,则计算key值的MD5值,根据取模算法对MD5值取模,并根据取模结果定位对应的内存数据库40。

本实施例中,取模算法为:key%n=m,其中,%为取模符号,n,m为系统在启动时候所配置的值,n为内存数据库40的数量,m为某台具体的内存数据库40。根据m值,可以定位到指定的内存数据库40,(由于key值不变,如果系统的配置文件不变化,则所算出来的m值也不会变,即根据key值可固定账号所处的内存数据库40);如果key值为包含其它的字符类型,则可以先算出key值的MD5值,然后再按算法定位到内存数据库40上。按照此算法,将能找到固定的内存数据库40,将用户数据定向到同一台内存数据库40上,并对内存数据库40进行对此用户的实时数据进行读写等操作。

请参照图1和图2,在一具体的实施例中,所述基于TCP长链接的海量用户接入系统,还包括:

固化数据库50,所述固化数据库50用于在内存数据库40不存在客户端10的用户数据时,从固化数据库50中查找,并将用户数据加载到内存数据库40中。

本实施例中,实时数据由内存数据库40进行保存,读写操作,某些需要固化的数据写到固化数据库50中,由于大部分时是对内存数据库40进行操作,减轻了固化数据库50的访问压力,能够提高数据的处理能力。

请参照图3,本发明的实施例中,基于TCP长链接的海量用户接入方法,包括如下步骤:

在客户端,并行发送多个TCP长链接请求,以及接收分配信息并登录指定TCP服务器;

在TCP服务器端,以设定周期间隔向外推送各自的运行信息,以及在客户端登录时根据客户端的帐号信息寻址对应的内存数据库;

在资源管理分配服务器端,接收多个TCP长链接请求,并根据TCP服务器的运行信息发送分配信息;

在内存数据库端,对客户端输入的实时数据进行读和/或写操作。

本实施例中,先由TCP服务器端以设定周期间隔向外推送各自的运行信息,以及在客户端并行发送多个TCP长链接请求后,由资源管理分配服务器端接收多个TCP长链接请求,并根据TCP服务器的运行信息发送分配信息,如此,客户端接收分配信息建立TCP链接并登录指定TCP服务器,然后在客户端登录时根据客户端的帐号信息寻址对应的内存数据库,如此通过内存数据库实现用户数据的读和/或写操作,并返回结果至客户端,实现客户端与内存数据库的业务操作。通过上述的方法,解决了单台服务器的SOCKET数量限制,以及网络带宽的限制,从而可以提供海量用户实时访问的系统。另外,本实施例中,在一客户端访问以TCP服务器后,通过另一端TCP服务器通知另一客户端,并由另一客户端返回结果,如此,可以实现分布式接入操作。

在一具体的实施例中,所述在客户端登录时根据客户端的帐号信息寻址对应的内存数据库的步骤,具体包括:在客户端登录时根据与客户端的帐号信息对应的唯一key值,定位对应的内存数据库。

本实施例中,帐号信息可为纯数字类型或数字和字符串的组合类型或字符串类型,每个帐号均对应唯一的key值,如此,通过算法可以计算并定位对应的内存数据库。

进一步的,所述在客户端登录时根据客户端的帐号信息寻址对应的内存数据库的步骤,还包括:

判断key值为纯数字类型还是包含有字符类型,

如果key值为纯数字类型,则根据取模算法对key值取模,并根据取模结果定位对应的内存数据库;

如果key值为包含有字符类型,则计算key值的MD5值,根据取模算法对MD5值取模,并根据取模结果定位对应的内存数据库。

本实施例中,取模算法为:key%n=m,其中,%为取模符号,n,m为系统在启动时候所配置的值,n为内存数据库的数量,m为某台具体的内存数据库。根据m值,可以定位到指定的内存数据库,(由于key值不变,如果系统的配置文件不变化,则所算出来的m值也不会变,即根据key值可固定账号所处的内存数据库);如果key值为包含其它的字符类型,则可以先算出key值的MD5值,然后再按算法定位到内存数据库上。按照此算法,将能找到固定的内存数据库,将用户数据定向到同一台内存数据库上,并对内存数据库进行对此用户的实时数据进行读、写等操作。

在一具体的实施例中,所述基于TCP长链接的海量用户接入方法,还包括:

在固化数据库端,在内存数据库端不存在客户端的用户数据时,从固化数据库中查找,并将用户数据加载到内存数据库中。

本实施例中,实时数据在内存数据库端进行处理,如读和/或写操作,某些需要固化的数据写到固化数据库中,由于大部分时是对内存数据库进行操作,减轻了固化数据库的访问压力,能够提高数据的处理能力。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1