[0033] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0034] 为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
[0035] 图1为本发明一种通信方法的主要步骤示意图。作为本发明的一个具体实施例,如图1所示,一种移动终端100控制路由器400的方法,包括:S10移动终端100发送多条并行的请求信息至中转服务器200;S20中转服务器200查询数据库500得到与路由器400对应的长连接服务器300;S30中转服务器200将所述多条并行的请求信息按照预设规则逐条发送至长连接服务器300;S40长连接服务器300转发所述请求信息至路由器400;S50长连接服务器300接收路由器400发送的多条串行的响应消息并转发至中转服务器200;S60中转服务器
200接收并处理所述响应消息,将所述串行的多条响应消息按照预设规则转换成并行的响应消息并发送并转发至移动终端100。
[0036] 具体的,同一个移动终端100可能会向同一台路由器400同时发出多个请求,而长连接通道只有一个,但是却要处理并发的请求,本发明在中转服务器200中增加了“并行消息串行化”的处理机制。所谓的“并行消息串行化”就是将并行的请求消息按照一定的预设规则进入一个控制器,然后一条条发往长连接服务器300,等前面的消息得到处理结果后,后面的消息再发往长连接服务器300。
[0037] 图2是本发明通信方法的串/并行消息并/串行化处理的流程图,从图3中可见,移动终端100发出的并行消息经过串行化处理分别形成串行的1、2、3信息发送到长连接服务器300,长连接服务器300逐条响应返回。同理,中转服务器200接收长连接服务器300返回的响应消息,并将串行的响应消息经过并行化处理形成并行的1、2、3信息发送至移动终端100。对与移动终端100而言,无需关注服务器端的处理过程。
[0038] 本发明采用并行消息串行化和串行消息并行化的处理机制,将并行的请求信息按照预设规则逐条发送至长连接服务器300进行处理,并将长连接服务器300返回的串行的响应信息按照预设规则转换成并行的响应消息发送至移动终端100,有效解决了现有技术中并发请求时信息拥堵的难题,提高了信号传输效率。
[0039] 优选的,数据库存储每个路由器400与对应的长连接服务器300的连接信息,同时为每个长连接服务器300分配一个缓存数据库;每个缓存数据库中存储有长连接服务器300的MAC地址以及所述MAC地址的哈希值。本发明通过采用哈希算法将MAC地址计算成哈希值并存储在缓存数据库中,压缩了数据量,能够实现快速读取、查询和删除相应的连接信息,提高长连接服务器300工作效率。
[0040] 对上述实施例进行改进,得到另一种通信方法,包括:S10移动终端发送多条并行的请求信息至中转服务器务器200;S20中转服务器200查询数据库500获得与路由器400对应的长连接服务器300;S30中转服务器200将所述多条并行的请求信息按照预设规则逐条发送至长连接服务器300;S40长连接服务器300转发所述请求信息至路由器400;S50长连接服务器300接收路由器400发送的多条串行的响应消息并转发至中转服务器200;S60中转服务器200接收并处理所述响应消息,将所述串行的多条响应消息按照预设规则转换成并行的响应消息并发送至移动终端100;S05当检测到当前的长连接服务器300宕机时,计算所述长连接服务器300的MAC地址的哈希值;在缓存数据库中查询是否存在所述哈希值;若不存在,则清除缓存数据库中当前长连接服务器300的连接信息。
[0041] 具体的,如何处理海量的连接信息也是本发明的重点。在处理长连接时,本发明的缓存数据库具有以下两点有益效果:
[0042] 1.快速地读写。
[0043] 2.如果某台长连接服务器300宕机了,则该长连接服务器300的存储信息是无效的,该长连接服务器300所有的连接信息被立刻从缓存数据库中清除。
[0044] 图3是本发明通信方法的长连接存储方案示意图,本方案中,以Redis缓存数据库为具体实例。如图3所示,本发明采取了多个数据库的存储方式,即每台长连接服务器300占用一个Redis缓存数据库,图2中长连接服务器1、长连接服务器2以及长连接服务器3分别占用Db1、Db2和Db3三个缓存数据库,数据存储的格式为。并且,每个Redis缓存数据库也存储了长连接服务器300MAC地址的哈希值,中转服务器200根据MAC地址进行查询时,先计算出该MAC地址的哈希值,然后根据哈希值到对应的数据库500中进行查询,如果该数据库500中没有该哈希值,则可以很快地判断出,该MAC地址的信息不在该数据库500中,可以提高查询速度。
[0045] 当某台长连接服务器300宕机时,由于本方案采用的是每台服务器有自己独立的缓存数据库,可以立刻请求缓存数据库来清除无效的信息。本发明通过计算哈希值查询缓存数据库中是否存在无效的存储信息,有效提高了查询和处理无效信息的效率。
[0046] 对上述实施例进行改进,得到另一种移动终端100控制路由器400的方法,包括:S10移动终端100发送多条并行的请求信息至中转服务器200;S15中转服务器200根据所述请求信息生成多条服务线程;所述中转服务器200为每个服务线程分配生命周期T;超过当前所述服务线程的生命周期时,清除当前服务线程;所述生命周期T=T0+T1*(1-n/N),其中T0为预设第一时间,T1为预设第二时间,n为当前服务线程数,N为最大服务线程数;S20中转服务器200查询数据库500获得与路由器400对应的长连接服务器300;S30中转服务器200将所述多条并行的请求信息按照预设规则逐条发送至长连接服务器300;S40长连接服务器
300转发所述请求信息至路由器400;S50长连接服务器300接收路由器400发送的多条串行的响应消息并转发至中转服务器200;S60中转服务器200接收并处理所述响应消息,将所述串行的多条响应消息按照预设规则转换成并行的响应消息并发送至移动终端100。
[0047] 具体的,在同一时刻,会有大量的路由器400与中转服务器200相连,并且有大量的并行的请求消息要转发,如何很好地控制服务质量是一个很重要的技术点。
[0048] 由于移动终端100发出的请求消息一般都是基于HTTP的同步请求,所以每次请求都会在中转服务器200端产生一个服务线程,每个服务线程都会产生一段开销。一般而言,每个服务线程都会有自己的生命周期,这个生命周期就等于消息处理时间。也就是说,如果路由器400消息能够很快地返回,那么创建的服务线程就会很快地销毁,这样中转服务器200可以把资源用于处理新的请求。但如果路由器400没有及时地响应消息,那么这个服务线程就会生存很长时间,直到请求消息超时才会被销毁。
[0049] 对于以上问题,本发明采用了一种动态调节服务线程生命周期的方法,其基本思想是,一般路由器400消息会在T0秒时间内返回,为了增加可靠性,中转服务器200会将等待时间提高到T0+T1秒,增加了T1秒一定程度上提高了消息的可靠度,但确增加了中转服务器200的开销,降低了中转服务器200的性能。因此,本发明的基本思想是,在中转服务器200性能未达到瓶颈的情况下,中转服务器200等待T0+T1秒,当中转服务器200的性能接近瓶颈时,减小T1等待时间,但T1最小为0,也就是说,等待时间最小为T0。可以用一个公式来表示以上关系:
[0050] T=T0+T1*(1-n/N),其中,设最大服务线程数为N,当前服务线程数为n,T为消息等待时间。
[0051] 通过以上方法,可以更好地利用中转服务器200资源。
[0052] 图4为本发明一种通信系统的组成示意图,作为本发明的一个具体实施例,如图4所示,一种移动终端100控制路由器400的系统,包括:移动终端100、中转服务器200、长连接服务器300、数据库500以及路由器400;所述移动终端100将并行的请求信息发送至所述中转服务器200;所述中转服务器200查询数据库500得到与所述路由器400对应的所述长连接服务器300并将所述多条并行的请求信息按照预设规则逐条发送至长连接服务器300;所述长连接服务器300转发所述请求信息至所述路由器400;以及,接收所述路由器400发送的多条串行的响应消息并转发至中转服务器200;所述中转服务器200接收并处理所述响应消息,将所述串行的多条响应消息按照预设规则转换成并行的响应消息并发送至所述移动终端100。
[0053] 具体的,如图4所示,其中长连接服务器300为多个,分别连接一个路由器400。由于路由器400通常不一定有公网IP地址,所以移动终端100在路由器400没有公网IP地址的情况下,无法与路由器400直接建立连接,而是移动终端100将报文发送给中转服务器200,中转服务器200从数据库500中查询得到该路由器400的连接信息,也就是该路由器400与哪台长连接服务器300是处于连接状态。然后将报文发送给该长连接服务器300,长连接服务器300最后将报文发送给路由器400。路由器400将消息返回给长连接服务器300,长连接服务器300将消息返回给中转服务器200,中转服务器200将消息返回给移动终端100。
[0054] 优选的,所述数据库500存储有每个路由器400与对应的长连接服务器300的连接信息;所述数据库500为每个长连接服务器300分配一个缓存数据库;每个缓存数据库存储长连接服务器300的MAC地址以及所述MAC地址的哈希值。
[0055] 优选的,还包括清除模块,用于当检测到当前的长连接服务器300宕机时,计算所述长连接服务器300的MAC地址的哈希值;在缓存数据库中查询是否存在所述哈希值;若不存在,则清除缓存数据库中当前长连接服务器300的连接信息。
[0056] 本发明通过采用哈希算法将MAC地址计算成哈希值并存储在缓存数据库中,压缩了数据量,能够实现快速读取、查询和删除相应的连接信息,提高长连接服务器300工作效率。
[0057] 对上述实施例进行改进,得到另一种一种通信系统,包括:移动终端100、中转服务器200、长连接服务器300、数据库500以及路由器400;所述移动终端100将并行的请求信息发送至所述中转服务器200;所述中转服务器200查询所述数据库500获得与所述路由器400对应的所述长连接服务器300并将所述多条并行的请求信息按照预设规则逐条发送至长连接服务器300;所述长连接服务器300转发所述请求信息至所述路由器400;以及,接收所述路由器400发送的多条串行的响应消息并转发至中转服务器200;所述中转服务器200接收并处理所述响应消息,将所述串行的多条响应消息按照预设规则转换成并行的响应消息并发送至所述移动终端100;所述中转服务器200具体包括:线程控制模块,用于根据所述请求信息生成多条服务线程;以及用于为每个服务线程分配生命周期T;超过当前所述服务线程的生命周期时,清除当前服务线程所述生命周期T=T0+T1*(1-n/N),其中T0为预设第一时间,T1为预设第二时间,n为当前服务线程数,N为最大服务线程数。
[0058] 应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。