一种心跳信息发送方法、服务器及终端转让专利

申请号 : CN201510751434.X

文献号 : CN106685748B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈宽陈阁

申请人 : 中移(杭州)信息技术有限公司中国移动通信集团公司

摘要 :

本发明实施例公开了一种心跳信息发送方法,用于服务器,包括:确定需要调整心跳信息发送时间的终端;向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间。进一步的,本发明实施例还公开了一种心跳信息发送方法,用于终端;本发明实施例还进一步公开了一种服务器,以及一种终端。

权利要求 :

1.一种心跳信息发送方法,其特征在于,用于服务器,包括:

确定需要调整心跳信息发送时间的终端;

向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间;

其中,所述心跳偏移量为心跳周期内某一参考时间段与某一随机整数之和;所述某一随机整数为0至心跳周期与所述参考时间段之差之间的随机整数;

所述方法还包括:在所述确定需要调整心跳信息发送时间的终端之前,判断参考时间段的瞬时心跳密度是否大于或等于所述服务器的最大并发数与参考系数的乘积;所述瞬时心跳密度为所述参考时间段内接收到的心跳信息数量与所述参考时间段的比值;所述参考系数大于0,小于或等于1;

所述确定需要调整心跳信息发送时间的终端包括:

当所述瞬时心跳密度大于或等于所述最大并发数与参考系数的乘积时,从所述参考时间段内发送心跳信息的终端中确定需要调整心跳信息发送时间的终端。

2.根据权利要求1所述的方法,其特征在于,在所述确定需要调整心跳信息发送时间的终端之前,所述方法还包括:确定需要调整心跳信息发送时间的终端的数量。

3.一种心跳信息发送方法,其特征在于,用于终端,包括:

接收服务器发送的第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量;所述心跳偏移量为心跳周期内某一参考时间段与某一随机整数之和;所述某一随机整数为0至心跳周期与所述参考时间段之差之间的随机整数;

根据所述心跳偏移量,调整下一次向服务器发送心跳信息的发送时间;

其中,在接收服务器发送的第一心跳反馈信息之前,服务器确定所述终端需要调整心跳信息发送时间,包括:判断参考时间段的瞬时心跳密度是否大于或等于所述服务器的最大并发数与参考系数的乘积;所述瞬时心跳密度为所述参考时间段内接收到的心跳信息数量与所述参考时间段的比值;所述参考系数大于0,小于或等于1;当所述瞬时心跳密度大于或等于所述最大并发数与参考系数的乘积时,从所述参考时间段内发送心跳信息的终端中确定所述终端需要调整心跳信息发送时间。

4.根据权利要求3所述的方法,其特征在于,在所述接收服务器发送的第一心跳反馈信息之前,所述方法还包括:与所述服务器建立连接关系之后,在一个心跳周期内的随机时间向服务器发送首次心跳信息。

5.根据权利要求4所述的方法,其特征在于,在一个心跳周期内的随机时间向服务器发送首次心跳信息之后,所述方法还包括:若第一预设时间内未收到所述服务器发送的所述第一心跳反馈信息或第二心跳反馈信息,所述第二心跳反馈信息中不包括所述心跳偏移量,等待随机时间后,向所述服务器发送连接请求。

6.一种服务器,其特征在于,包括:

确定单元,用于确定需要调整心跳信息发送时间的终端;

发送单元,用于向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间;其中,所述心跳偏移量为心跳周期内某一参考时间段与某一随机整数之和;所述某一随机整数为0至心跳周期与所述参考时间段之差之间的随机整数;

所述服务器还包括:

判断单元,用于判断参考时间段的瞬时心跳密度是否大于或等于所述服务器的最大并发数与参考系数的乘积;所述瞬时心跳密度为所述参考时间段内接收到的心跳信息数量与所述参考时间段的比值;所述参考系数大于0,小于或等于1;

所述确定单元具体用于:当所述瞬时心跳密度大于或等于所述最大并发数与参考系数的乘积时,从所述参考时间段内发送心跳信息的终端中确定需要调整心跳信息发送时间的终端。

7.根据权利要求6所述的服务器,其特征在于,所述确定单元还用于:确定需要调整心跳信息发送时间的终端的数量。

8.一种终端,其特征在于,包括:

接收单元,用于接收服务器发送的第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,其中,所述心跳偏移量为心跳周期内某一参考时间段与某一随机整数之和;所述某一随机整数为0至心跳周期与所述参考时间段之差之间的随机整数;所述第一心跳反馈信息由服务器确定所述终端需要调整心跳信息发送时间时发送给所述终端,其中,服务器确定所述终端需要调整心跳信息发送时间,包括:判断参考时间段的瞬时心跳密度是否大于或等于所述服务器的最大并发数与参考系数的乘积;所述瞬时心跳密度为所述参考时间段内接收到的心跳信息数量与所述参考时间段的比值;所述参考系数大于0,小于或等于

1;当所述瞬时心跳密度大于或等于所述最大并发数与参考系数的乘积时,从所述参考时间段内发送心跳信息的终端中确定所述终端需要调整心跳信息发送时间;

调整单元,用于根据所述心跳偏移量,调整下一次向服务器发送心跳信息的发送时间。

9.根据权利要求8所述的终端,其特征在于,所述终端还包括:

发送单元,用于与所述服务器建立连接关系之后,在一个心跳周期内的随机时间向服务器发送首次心跳信息。

10.根据权利要求9所述的终端,其特征在于,所述发送单元还用于:若第一预设时间内未收到所述服务器发送的所述第一心跳反馈信息或第二心跳反馈信息,所述第二心跳反馈信息中不包括所述心跳偏移量,等待随机时间后,向所述服务器发送连接请求。

说明书 :

一种心跳信息发送方法、服务器及终端

技术领域

[0001] 本发明涉及通信领域的连接技术,尤其涉及一种心跳信息发送方法、服务器及终端。

背景技术

[0002] 随着移动互联网技术的不断发展,安装在终端的应用种类也越来越多,以移动终端为例,如手机QQ,微博,微信等。由于部分应用属于即时通信类的应用,因此需要移动终端长时间稳定的与网络侧的各种服务器保持连接,以便于进行各种业务数据的交互,因此移动终端永远在线(always online)业务应运而生。
[0003] 在always online这种方式中,为了维持移动终端的永远在线状态,互联的双方需要通过心跳机制来检测在暂时没有通讯的情况下是否都还在线。若服务器侧检测到某一终端当前已掉线,就需要释放该终端占用的资源,以便于其他终端进行使用,若移动终端检测到服务器当前已掉线,就需要重新进行连接。
[0004] 现有的心跳机制可以参考图1所示:
[0005] 步骤101、当网络侧服务器接收到移动终端发送的连接请求后,启动第一超时定时器。
[0006] 步骤102、当移动终端连接服务器成功后,设置一个心跳发送循环定时器,超时时间为心跳周期T。
[0007] 步骤103、在移动终端的心跳发送循环定时器记录时间超过心跳周期T后,移动终端向服务器发送一个心跳信息,并设置一个第二超时定时器。
[0008] 步骤104、服务器接收到心跳信息后,重置服务器侧的第一超时定时器,并回应一个心跳反馈信息给移动终端。
[0009] 步骤105、若服务器长时间未收到心跳信息,导致第一超时定时器超时,说明移动终端掉线,需要释放该移动终端占用的资源。
[0010] 步骤106、若移动终端收到服务器的心跳反馈信息,说明服务器正常在线,删除超时定时器。
[0011] 步骤107、若移动终端长时间未收到心跳反馈信息,导致第二超时定时器超时,说明服务器出现问题,移动终端需要重新发起连接请求。
[0012] 步骤108、若移动终端重连请求失败,等待预设时间后,再重新发起请求。
[0013] 步骤109、移动终端重连成功,返回步骤102。
[0014] 由此可知,移动终端是按预设的时间间隔向服务器发送心跳信息来维持永远在线状态的。但是在实际应用中可能会出现由于服务器进行重启,或者网络异常,导致大量移动终端同时掉线的情况,如果当前掉线的移动终端数量较多,由于每个移动终端掉线后进行重连的等待时间相同,所以导致同一时间段内会有大量移动终端进行重连,容易造成服务器瞬时压力过大,进而造成服务器死机或再次重启;同时当掉线的移动终端重新连接成功后,由于每个移动终端的心跳周期相同,所以也会导致大量移动终端在短时间内同时发送心跳信息,不但会增加服务器压力,而且还会造成网络数据周期性拥塞,进而影响其他网络业务。

发明内容

[0015] 为解决上述技术问题,本发明实施例期望提供一种心跳信息发送方法、服务器及终端,能够防止大量终端在短时间内同时向服务器发送心跳信息,进而减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0016] 本发明的技术方案是这样实现的:
[0017] 第一方面,本发明实施例提供一种心跳信息发送方法,用于服务器,包括:
[0018] 确定需要调整心跳信息发送时间的终端;
[0019] 向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间。
[0020] 可选的,在所述确定需要调整心跳信息发送时间的终端之前,所述方法还包括:
[0021] 判断参考时间段的瞬时心跳密度是否大于或等于所述服务器的最大并发数与参考系数的乘积;所述瞬时心跳密度为所述参考时间段内接收到的心跳信息数量与所述参考时间段的比值;所述参考系数大于0,小于或等于1;
[0022] 所述确定需要调整心跳信息发送时间的终端包括:
[0023] 当所述瞬时心跳密度大于或等于所述最大并发数与参考系数的乘积时,确定需要调整心跳信息发送时间的终端。
[0024] 可选的,在所述确定需要调整心跳信息发送时间的终端之前,所述方法还包括:
[0025] 确定需要调整心跳信息发送时间的终端的数量。
[0026] 第二方面,本发明实施例提供一种心跳信息发送方法,用于终端,包括:
[0027] 接收服务器发送的第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量;
[0028] 根据所述心跳偏移量,调整下一次向服务器发送心跳信息的发送时间。
[0029] 可选的,在所述接收服务器发送的第一心跳反馈信息之前,所述方法还包括:
[0030] 与所述服务器建立连接关系之后,在一个心跳周期内的随机时间向服务器发送首次心跳信息。
[0031] 可选的,在一个心跳周期内的随机时间向服务器发送首次心跳信息之后,所述方法还包括:
[0032] 若第一预设时间内未收到所述服务器发送的所述第一心跳反馈信息或第二心跳反馈信息,所述第二心跳反馈信息中不包括所述心跳偏移量,等待随机时间后,向所述服务器发送连接请求。
[0033] 第三方面,本发明实施例提供一种服务器,包括:
[0034] 确定单元,用于确定需要调整心跳信息发送时间的终端;
[0035] 发送单元,用于向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间。
[0036] 可选的,所述服务器还包括:
[0037] 判断单元,用于判断参考时间段的瞬时心跳密度是否大于或等于所述服务器的最大并发数与参考系数的乘积;所述瞬时心跳密度为所述参考时间段内接收到的心跳信息数量与所述参考时间段的比值;所述参考系数大于0,小于或等于1;
[0038] 所述确定单元具体用于:当所述瞬时心跳密度大于或等于所述最大并发数与参考系数的乘积时,确定需要调整心跳信息发送时间的终端。
[0039] 可选的,所述确定单元还用于:
[0040] 确定需要调整心跳信息发送时间的终端的数量。
[0041] 第四方面,本发明实施例提供一种终端,包括:
[0042] 接收单元,用于接收服务器发送的第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量;
[0043] 调整单元,用于根据所述心跳偏移量,调整下一次向服务器发送心跳信息的发送时间。
[0044] 可选的,所述终端还包括:
[0045] 发送单元,用于与所述服务器建立连接关系之后,在一个心跳周期内的随机时间向服务器发送首次心跳信息。
[0046] 可选的,所述发送单元还用于:
[0047] 若第一预设时间内未收到所述服务器发送的所述第一心跳反馈信息或第二心跳反馈信息,所述第二心跳反馈信息中不包括所述心跳偏移量,等待随机时间后,向所述服务器发送连接请求。
[0048] 本发明实施例提供了一种心跳信息发送方法、服务器及终端,其中用于服务器的所述心跳信息发送方法包括:确定需要调整心跳信息发送时间的终端;向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间。相较于现有技术,如果服务器在短时间内接收到较多的心跳信息,可以通过心跳偏移量调整终端下一次发送心跳信息的时间,通过对终端心跳信息发送时间的调整,使得一个心跳周期内服务器接收到的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。

附图说明

[0049] 图1为现有技术中心跳信息发送方法的流程图;
[0050] 图2为本发明实施例提供的一种心跳信息发送方法的流程图;
[0051] 图3为本发明实施例提供的另一种心跳信息发送方法的流程图;
[0052] 图4为本发明实施例提供的又一种心跳信息发送方法的流程图;
[0053] 图5为本发明实施例提供的一种服务器的结构示意图;
[0054] 图6为本发明实施例提供的另一种服务器的结构示意图;
[0055] 图7为本发明实施例提供的又一种服务器的结构示意图;
[0056] 图8为本发明实施例提供的一种终端的结构示意图;
[0057] 图9为本发明实施例提供的另一种终端的结构示意图;
[0058] 图10为本发明实施例提供的又一种终端的结构示意图;
[0059] 图11为本发明实施例提供的一种心跳信息发送系统的结构示意图。

具体实施方式

[0060] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
[0061] 本发明实施例提供一种心跳信息发送方法,如图2所示,用于服务器,包括:
[0062] 步骤201、确定需要调整心跳信息发送时间的终端。
[0063] 示例的,服务器可以将一个心跳周期划分为多个时间段,统计每个时间段接收到的心跳信息的数量,当某个时间段内接收到的心跳信息的数量较多时,可以将该时间段内接收到的心跳信息对应的终端作为需要调整心跳信息发送时间的终端。其中,所述终端不仅仅包括移动终端,还可以包括物联网,车联网中的应用客户端,或者可穿戴设备,个人电脑等所有应用高并发在线业务的终端。
[0064] 可选的,以参考时间段为例进行说明,所述参考时间段为所述多个时间段中的任意一个。首先服务器可以分别获取参考时间段的瞬时心跳密度和该心跳周期的平均心跳密度,然后判断瞬时心跳密度是否超过平均心跳密度N倍,当所述瞬时心跳密度超过所述平均心跳密度N倍时,说明参考时间段内接收到的心跳信息的数量较多,需要对终端的心跳信息的发送时间进行调整,因此可以从参考时间段内发送心跳信息的终端中确定为需要调整心跳信息发送时间的终端;当瞬时心跳密度未超过所述平均心跳密度N倍时,说明参考时间段内接收到的心跳信息的数量较少,可以不进行调整。其中,所述N大于1,优选的N可以等于2;所述瞬时心跳密度为所述参考时间段内接收到的心跳信息数量与所述参考时间段的比值;
所述平均心跳密度为所述心跳周期内接收到的心跳信息数量与所述心跳周期的比值。具体的,假设参考时间段为Ts,Ts秒内收到的心跳信息个数为M,则参考时间段内心跳信息发送密度P为:P=M/Ts;假设当前与服务器保持连接状态的终端个数为G,则一个心跳周期内的心跳信息发送密度P平=G/T;若P超过P平两倍时,说明该参考时间段内的心跳信息过密,需要对参考时间段内向服务器发送心跳信息的终端的心跳信息发送时间进行调整。
[0065] 可选的,由于服务器的处理速度有限,使得服务器存在最大并发数的限制,因此为了避免服务器的瞬时压力过大,也需要参考时间段的瞬时心跳密度至少小于最大并发数。较佳的,服务器也可以首先获取参考时间段的瞬时心跳密度,然后判断瞬时心跳密度是否大于或等于J*E,其中E为服务器对应的最大并发数,J为小于或等于1的系数,当所述瞬时心跳密度大于或等于J*E时,说明参考时间段内接收到的心跳信息的数量较多,需要对终端的心跳信息的发送时间进行调整,因此可以从参考时间段内发送心跳信息的终端中确定为需要调整心跳信息发送时间的终端;当瞬时心跳密度小于J*E时,说明参考时间段内接收到的心跳信息的数量较少,可以不进行调整。
[0066] 实际应用中,也可以为每个时间段预先设置数量阈值,首先服务器可以获取参考时间段内接收到的心跳信息的数量,然后判断该数量是否大于或等于参考时间段对应的预设数量阈值,当该数量大于或等于参考时间段对应的预设数量阈值时,说明参考时间段内接收到的心跳信息的数量较多,需要对终端的心跳信息的发送时间进行调整,因此可以从参考时间段内发送心跳信息的终端中确定需要调整心跳信息发送时间的终端;当该数量小于参考时间段对应的预设数量阈值时,说明参考时间段内接收到的心跳信息的数量较少,可以不进行调整。优选的,参考时间段对应的预设数量阈值可以为E*Ts*J,其中,E为服务器对应的最大并发数,J为小于或等于1的系数,Ts为参考时间段。实际应用中,每个时间段对应的数量阈值可以根据具体情况进行设定,本发明对此不做限定。
[0067] 步骤202、向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间。
[0068] 当确定需要调整心跳信息发送时间的终端之后,可以向该终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,当终端接收到该第一心跳反馈信息时,获取心跳偏移量,然后根据该移动偏移量调整下一次向服务器发送心跳信息的时间。
[0069] 示例的,可以根据公式(2)计算所述心跳偏移量W,其中,公式(2)为W=Ts+H,所述H为0至(T-Ts)之间的随机整数。通过公式(2)计算的心跳偏移量对终端的心跳信息的发送时间进行调整,可以使得一个心跳周期内接收到的心跳信息的分布趋于均匀。
[0070] 这样一来,如果服务器在短时间内接收到较多的心跳信息,可以通过心跳偏移量调整终端下一次发送心跳信息的时间,通过对终端心跳信息发送时间的调整,使得一个心跳周期内服务器接收到的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0071] 可选的,在所述确定需要调整心跳信息发送时间的终端之前,还可以确定需要调整心跳信息发送时间的终端的数量。
[0072] 服务器在参考时间段内接收到的心跳信息的数量可能较多,并不是每个终端的心跳信息的发送时间都需要进行调整,一般情况下仅需要调整少数终端的心跳信息的发送时间就可以使得参考时间段内接收到的心跳信息的数量较少到合适的水平,因此首先可以确定需要调整心跳信息发送时间的终端的数量。示例的,可以根据公式(1)确定需要调整心跳信息发送时间的终端的数量Q,所述公式(1)为Q=(Ts*P-Ts*P平)*100/(Ts*P)*M,其中,所述Ts为所述参考时间段;所述P为参考时间段的瞬时心跳密度;所述P平为心跳周期的平均心跳密度;所述M为所述参考时间段内接收到的心跳信息的数量。
[0073] 本发明实施例提供了一种心跳信息发送方法,所述方法包括:确定需要调整心跳信息发送时间的终端;向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间。相较于现有技术,如果服务器在短时间内接收到较多的心跳信息,可以通过心跳偏移量调整终端下一次发送心跳信息的时间,通过对终端心跳信息发送时间的调整,使得一个心跳周期内服务器接收到的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0074] 本发明实施例提供另一种心跳信息发送方法,用于终端,所述终端包括移动终端,还包括物联网,车联网中的应用客户端,或者还包括可穿戴设备,个人电脑等所有可以应用高并发在线业务的终端。如图3所示,所述心跳信息发送方法包括:
[0075] 步骤301、接收服务器发送的第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量。
[0076] 当服务器确定该终端为需要调整心跳信息的发送时间的终端时,会向该终端发送第一心跳反馈信息,该第一心跳反馈信息中包括心跳偏移量。
[0077] 步骤302、根据所述心跳偏移量,调整下一次向服务器发送心跳信息的发送时间。
[0078] 示例的,假设动终端接收到的第一心跳反馈信息中包括的心跳偏移量为W,本次终端发送心跳信息的时间为这一个心跳周期T内的T1时刻,则下一次终端发送心跳信息的时间为T1+W,即下一次终端发送心跳信息的时间为下一个心跳周期的T内的T2,所示T2时刻为T2=T1+W。
[0079] 这样一来,如果服务器在短时间内接收到较多的心跳信息,终端可以根据服务器发送的第一心跳反馈信息中包括的心跳偏移量调整下一次发送心跳信息的时间,通过对心跳信息发送时间的调整,使得一个心跳周期内向服务器发送的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0080] 可选的,在所述接收服务器发送的第一心跳反馈信息之前,所述方法还包括:与所述服务器建立连接关系之后,在一个心跳周期内的随机时间向服务器发送首次心跳信息。
[0081] 示例的,如果服务器由于技术原因进行了重启,则大量终端会同时与服务器建立连接关系,因此也会同时向服务器发送心跳信息,因此会导致服务器的瞬时压力过大,严重时还会再次导致服务器进行重启,使得服务器陷入由于瞬时压力过大而不停重启的恶性循环中,因此,当终端与服务器建立连接关系之后,首次向服务器发送心跳信息的时间可以是随机数间。具体的,在终端与所述服务器建立连接关系之后,可以在一个心跳周期内的随机时间向服务器发送首次心跳信息。这样由于每个终端向服务器发送首次发送心跳信息的时间均不同,因此可以避免服务器的瞬时功率过大。
[0082] 可选的,在一个心跳周期内的随机时间向服务器发送首次心跳信息之后,若第一预设时间内未收到所述服务器发送的所述第一心跳反馈信息或第二心跳反馈信息,所述第二心跳反馈信息中不包括所述心跳偏移量,等待随机时间后,向所述服务器发送连接请求。
[0083] 通常的,服务器在接收到终端发送的心跳信息之后,需要向终端发送心跳反馈信息,该心跳反馈信息可以是包括心跳偏移量的第一心跳反馈信息,也可以是不包括心跳偏移量的第二心跳反馈信息。因此实际应用中,终端在向服务器发送心跳信息之后,可以确定是否在第一预设时间内收到所述服务器发送的所述第一心跳反馈信息或第二心跳反馈信息,如果在第一预设时间内终端未收到服务器发送的所述第一心跳反馈信息或第二心跳反馈信息,则说明服务器掉线,无法维持终端永远在线的状态,因此终端需要与服务器重新进行连接,
[0084] 但是,如果服务器是因为技术重启导致的掉线,会造成与该服务器连接的所有终端同时需要与服务器重新进行连接,服务器可能会在短时间内接收到大量连接请求,这样容易导致服务器瞬时压力较大,因此在终端确定需要与服务器进行重新连接时,可以等待随机事件后,再向服务器发送连接请求。这样一来,由于每个终端向服务器发送连接请求的时间不同,避免了服务器短时间内接收到大量连接请求的情况,防止服务器瞬时压力过大。
[0085] 可选的,可以根据公式(3)计算所述随机时间X,公式(3)为X=A+B,所述A为固定时间;所述B为0至(S/(R*J))中的随机整数;所述S为所述服务器的最大用户数量;所述R为所述服务器每秒能处理的连接请求数,所述J为大于0,小于或等于1的系数。其中,A可以是服务器的重启时间,也就是说所有终端均在服务器重启后向服务器发送连接请求,以免终端在服务器重启时由于检测到服务器掉线,而不断向服务器发送连接请求,这样可以避免资源的浪费。S/R表示了服务器每秒针对每个终端能够处理的连接请求的次数,由于服务器每秒能够处理的心跳信息的数量可能小于能够处理的连接请求的数量,因此可以给R乘以一个小于1的系数,通过(S/(R*J))表示服务器每秒针对每个终端能够处理的心跳信息的次数。通过该方法设置随机等待时间,有效的避免了因大量客户端瞬时重连而导致网络及服务器压力过大,提高系统稳定性。
[0086] 本发明实施例提供另一种心跳信息发送方法,包括:接收服务器发送的第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,然后根据所述心跳偏移量,调整下一次向服务器发送心跳信息的发送时间。相较于现有技术,如果服务器在短时间内接收到较多的心跳信息,终端可以根据服务器发送的第一心跳反馈信息中包括的心跳偏移量调整下一次发送心跳信息的时间,通过对心跳信息发送时间的调整,使得一个心跳周期内向服务器发送的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0087] 本发明实施例提供一种心跳信息发送方法,如图4所示,包括:
[0088] 步骤401、终端与服务器建立连接关系之后,在一个心跳周期内的随机时间向服务器发送心跳信息。
[0089] 通常的,终端需要首先与服务器建立连接关系,具体的,终端向服务器发送连接请求,服务器在接收到所述连接请求之后,向终端发送连接反馈,若终端接收到服务器发送的连接反馈,说明终端与服务器之间已经建立了连接关系。
[0090] 当终端与服务器建立连接关系之后,为了维持永远在线状态,需要向服务器发送心跳信息。可选的,终端在接收到服务器发送的连接反馈之后,可以设置首次心跳发送定时器,定时为一个心跳周期T中的随机时间,设置该首次心跳发送定时器时立即开始计时,当该定时器的计时达到或超过所述定时,终端首次向服务器发送首次心跳信息。例如,假设首次心跳发送定时器的定时为T0,即终端在接收到服务器发送的连接反馈之后,相隔T0时,向服务器发送首次心跳信息,T0可以通过公式T0=rand()%(T+1)计算得出,其中,rand()为均匀分布的随机函数,能够产生0~RAND_MAX之间的整数,因此rand()%(T+1)能够产生0至T内的随机整数。
[0091] 步骤402、在终端与服务器建立连接关系之后,服务器判断是否在第二预设时间内收到终端发送的心跳信息;若在第二预设时间内收到终端发送的心跳信息,执行步骤403;若未在第二预设时间内收到终端发送的心跳信息,执行步骤414。
[0092] 服务器在向终端发送连接反馈之后,服务器等待接收终端的心跳信息,但是由于服务器在等待终端的心跳信息时需要为该终端预留资源,所以服务器并不是无限制的等待,而是等待第二预设时间,若服务器在第二预设时间内没有收到终端发送的心跳信息,则说明终端当前已经掉线,服务器可以释放该终端占用的资源。
[0093] 示例的,服务器在向终端发送链接反馈之后,会设置一个连接超时定时器,该连接超时定时器的定时为第二预设时间,如果服务器没有在第二预设时间之内接收到心跳信息,说明终端掉线,服务器可以释放该终端占用的资源,例如删除为该终端设置的连接超时定时器;如果服务器在第二预设时间之内接收到心跳信息,连接超时定时器删除,重新开始计时。
[0094] 步骤403、服务器根据所述心跳信息生成第二心跳反馈信息,并将所述第二心跳反馈信息发送给终端。
[0095] 服务器在接收到终端发送的心跳信息之后,可以根据该心跳信息生成第二心跳反馈信息,由于此时终端才刚刚与服务器建立连接关系,服务器还不能确定是否需要对终端发送心跳信息的时间进行调整,所以服务器向终端发送的是不包括心跳偏移量的第二心跳反馈信息。服务器将所述第二心跳反馈信息发送给终端,用于通知终端当前服务器在线,永远在线状态正在保持。
[0096] 步骤404、终端判断是否在第一预设时间内收到服务器发送的第二心跳反馈信息;若在第一预设时间内收到服务器发送的第二心跳反馈信息,执行步骤405;若未在第一预设时间内收到服务器发送的第二心跳反馈信息,执行步骤415。
[0097] 终端向服务器发送心跳信息是通知服务器当前终端处于在线状态,在发送心跳信息之后,终端还需要确定服务器当前是否处于在线状态。示例的,终端可以确定是否在发送心跳信息之后的第一预设时间内收到服务器发送的第二心跳反馈信息。具体的,在发送心跳信息之后,终端可以设置反馈超时定时器,该反馈超时定时器的定时为第一预设时间,在终端发送心跳信息之后开始计时,若在反馈超时定时器的定时内收到服务器发送的第二心跳反馈信息,说明服务器当前在线,反馈超时定时器删除;若超过反馈超时定时器的定时还未收到服务器发送的第二心跳反馈信息,说明服务器当前已经掉线,终端需要进行重新连接。
[0098] 步骤405、终端按照心跳周期向服务器发送心跳信息,执行步骤406。
[0099] 若终端在第一预设时间内收到服务器发送的心跳反馈信息,说明服务器在线,终端与服务器之间的连接关系一直存在,为了保证终端的常期在线状态,终端需要按照心跳周期T向服务器发送心跳信息,由于终端的首次心跳信息是随机发出的,因此即便之后每个终端均按照心跳周期T向服务器周期性的发送心跳信息,也不会造成短时间内服务器收到多个心跳信息的情况,避免了服务器瞬时压力过大。
[0100] 步骤406、服务器检测参考时间段的瞬时心跳密度是否大于或等于所述服务器的最大并发数与参考系数的乘积;当参考时间段的瞬时心跳密度大于或等于所述服务器的最大并发数与参考系数的乘积时,执行步骤407;当参考时间段的瞬时心跳密度小于所述服务器的最大并发数与参考系数的乘积时,执行步骤413。
[0101] 实际应用中,可以将一个心跳周期划分为多个时间段,由于与服务器连接的终端数量较多,可能出现某一时间段内服务器收到的心跳信息较多的情况,但是服务器的处理速度有限,存在最大并发数的限制,如果服务器的瞬时心跳密度较大,可能会导致服务器瞬时压力过大,进而导致服务器重启或死机的情况。因此服务器可以首先获取参考时间段的瞬时心跳密度,然后判断瞬时心跳密度是否大于或等于J*E,其中E为服务器对应的最大并发数,J为大于0,小于或等于1的系数,当所述瞬时心跳密度大于或等于J*E时,说明参考时间段内接收到的心跳信息的数量较多,需要对终端的心跳信息的发送时间进行调整,因此可以从参考时间段内发送心跳信息的终端中确定为需要调整心跳信息发送时间的终端;当瞬时心跳密度小于J*E时,说明参考时间段内接收到的心跳信息的数量较少,可以不进行调整。所述瞬时心跳密度为所述参考时间段内接收到的心跳信息数量与所述参考时间段的比值。本发明实施例已参考时间段为例进行说明,所述参考时间段为多个时间段中的任意一个。
[0102] 步骤407、服务器确定需要进行心跳调整的终端的数量,执行步骤408。
[0103] 若服务器在参考时间段内接收到的心跳信息的数量较大,说明需要对参考时间段内向服务器发送心跳信息的终端的心跳信息发送时间进行调整,进而减小参考时间段内接收到的心跳信息的数量。首先服务器确定需要进行心跳信息发送时间调整的终端的数量,示例的,终端的选取参数的计算方法为,K=(Ts*P-Ts*P平)*100/(Ts*P),计算出终端的选取参数之后,可以确定需要进行心跳信息发送时间调整的终端的数量Q为:Q=K%*M,所述K%表示百分之K,为终端的选取比例,所述M为参考时间段内接收到的心跳信息的数量。
[0104] 步骤408、服务器选定需要进行心跳调整的终端,执行步骤409.
[0105] 在确定了需要进行调整的终端的数量之后,服务器还需要选定具体哪一个终端是需要进行心跳调整的终端,因为如果随意将参考时间段内收到的前M*K%个终端的心跳信息发送时间进行调整或者将参考时间段内收到的后M*K%个终端的心跳信息发送时间进行调整,仍然会使得参考时间段的后半段收到的心跳信息的密度较大,或者参考时间段的前半段收到的心跳信息的密度较大,还是容易造成服务器瞬时压力较大,因此需要在参考时间段内随机选取需要进行调整的终端。
[0106] 示例的,可以通过简单的随机算法确定当前接收的心跳信息对应的终端是否是需要进行调整的终端。具体的,以参考终端为例进行说明,当参考时间段内服务器收到参考终端发送的心跳信息后,计算rand()%100的值,如果该值小于K,则将参考终端确定为需要进行调整的终端,否则将参考终端确定为不需要进行调整的终端,其中,rand()%100能够产生0至99之间的随机整数。
[0107] 步骤409、当服务器收到需要进行心跳调整的终端发送的心跳信息后,向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括所述终端的心跳偏移量,执行步骤410。
[0108] 示例的,由于确定了参考终端是需要进行调整的终端,因此当服务器收到参考终端发送的心跳信息之后,根据该心跳信息生成的第一心跳反馈信息,该第一心跳反馈信息中包括参考终端的心跳偏移量,其中,心跳偏移量可以根据具体情况提前进行设置,例如,心跳偏移量W可以通过公式(2)W=Ts+rand()%(T-Ts+1)计算得出,通过该算法计算的心跳偏移量调整终端发送心跳信息的时间,可以使得一个心跳周期内的心跳信息的分布趋于均匀。
[0109] 步骤410、需要进行心跳调整的终端收到服务器发送到的第一心跳反馈信息之后,获取所述第一心跳反馈信息中的心跳偏移量,执行步骤411。
[0110] 示例的,在参考终端接收到包括心跳偏移量的第一心跳反馈信息之后,可以获取该心跳偏移量,具体的,参考终端解析该第一心跳反馈信息,根据该第一心跳反馈信息的标识确定该第一心跳反馈信息中是否包括心跳偏移量,如果确定该第一心跳反馈信息中包括心跳偏移量时,获取该第一心跳反馈信息中包括的心跳偏移量。
[0111] 步骤411、终端根据所述心跳偏移量,调整下一次发送心跳信息的时间,执行步骤412。
[0112] 示例的,参考终端接收到的第一心跳反馈信息中包括心跳偏移量W,假设本次参考终端发送心跳信息的时间为这一个心跳周期T内的T1时刻,则下一次参考终端发送心跳信息的时间为T1+W,即下一次参考终端发送心跳信息的时间为下一个心跳周期的T内的T2时刻为T2=T1+W,同时可以将心跳信息对应的序列号设置为1。
[0113] 步骤412、终端按照调整之后的时间向服务器发送下一个心跳信息,结束本流程步骤。
[0114] 示例的,参考终端在下一个心跳周期,按照调整之后的心跳信息的发送时间向服务器发送心跳信息,具体的,参考终端可以在等待T1+W后,向服务器发送下一个心跳信息。
[0115] 步骤413、服务器为接收到的每一个心跳信息生成第二心跳反馈信息,并将所述心跳反馈信息发送给对应的终端,结束本流程步骤。
[0116] 当服务器在参考时间段内接收到的心跳信息的数量小于参考阈值,说明参考时间段内服务器接收到的心跳信息的数量不多,不需要对终端进行调整,因此服务器可以正常的针对每一个终端发送的心跳信息发送第二心跳反馈信息,该第二心跳反馈信息中不包括心跳偏移量。
[0117] 步骤414、终端等待随机时间后向服务器发送重连请求,执行步骤401。
[0118] 如果终端未在第一预设时间内收到服务器发送的第二心跳反馈信息,说明当前服务器已经掉线,如果终端还需要与服务器建立连接关系,并保持常期在线状态,则需要向服务器发送重连请求。但是如果是由于服务器重启或断电等原因,造成大量终端同时掉线的情况,为了保证大量终端不会同时向服务器发起连接请求,所述终端可以等待随机时间后向服务器发送重连请求。
[0119] 示例的,可以根据公式(3)计算所述随机时间X,公式(3)为X=A+B,所述A为固定时间;所述B为0至(S/(R*J))中的随机整数;所述S为所述服务器的最大用户数量;所述R为所述服务器每秒能处理的连接请求数,J为大于0,小于或等于1的系数。其中,A可以是服务器的重启时间,也就是说所有终端均在服务器重启后向服务器发送连接请求,以免终端在服务器重启时由于检测到服务器掉线,而不断向服务器发送连接请求,这样可以避免资源的浪费。通过该方法设置随机等待时间,有效的避免了因大量客户端瞬时重连而导致网络及服务器压力过大,提高系统稳定性。
[0120] 步骤415、服务器释放所述终端占用的资源,结束本流程步骤。
[0121] 如果服务器未在第二预设时间内收到终端发送的心跳信息,说明该终端当前已经掉线,即该终端当前不会再与服务器进行数据交互,因此服务器可以释放改终端占用的资源,以便于其他终端使用。
[0122] 本发明实施例提供另一种心跳信息发送方法,如果服务器在短时间内接收到较多的心跳信息,终端可以根据服务器发送的第一心跳反馈信息中包括的心跳偏移量调整下一次发送心跳信息的时间,通过对心跳信息发送时间的调整,使得一个心跳周期内向服务器发送的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0123] 本发明实施例提供一种服务器50,如图5所示,包括:
[0124] 确定单元501,用于确定需要调整心跳信息发送时间的终端。
[0125] 发送单元502,用于向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间。
[0126] 这样一来,如果服务器在短时间内接收到较多的心跳信息,可以通过心跳偏移量调整终端下一次发送心跳信息的时间,通过对终端心跳信息发送时间的调整,使得一个心跳周期内服务器接收到的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0127] 可选的,如图6所示,所述服务器50还包括:判断单元503,用于判断参考时间段的瞬时心跳密度是否大于或等于所述服务器的最大并发数与参考系数的乘积;所述瞬时心跳密度为所述参考时间段内接收到的心跳信息数量与所述参考时间段的比值;所述参考系数大于0,小于或等于1。所述确定单元501具体用于:当所述瞬时心跳密度大于或等于所述最大并发数与参考系数的乘积时,确定需要调整心跳信息发送时间的终端。
[0128] 可选的,所述确定单元501还用于:确定需要调整心跳信息发送时间的终端的数量。
[0129] 可选的,所述确定单元501具体用于:根据公式(1)确定需要调整心跳信息发送时间的终端的数量Q,所述公式(1)为Q=(Ts*P-Ts*P平)*100/(Ts*P)*M,其中,所述Ts为所述参考时间段;所述P为参考时间段的瞬时心跳密度;所述P平为心跳周期的平均心跳密度;所述M为所述参考时间段内接收到的心跳信息的数量。
[0130] 可选的,如图7所示,所述服务器50还包括:计算单元504,用于根据公式(2)计算所述心跳偏移量W,所述公式(1)为W=Ts+H。其中,所述H为0至(T-Ts)之间的随机整数。
[0131] 本发明实施例提供了一种服务器,包括:确定单元,用于确定需要调整心跳信息发送时间的终端。发送单元,用于向所述终端发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端根据所述心跳偏移量调整下一次心跳信息的发送时间。相较于现有技术,如果服务器在短时间内接收到较多的心跳信息,可以通过向终端发送心跳偏移量,使得终端调整下一次发送心跳信息的时间,通过对终端心跳信息发送时间的调整,使得一个心跳周期内服务器接收到的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0132] 本发明实施例提供一种终端80,如图8所示,包括:
[0133] 接收单元801,用于接收服务器发送的第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量。
[0134] 调整单元802,用于根据所述心跳偏移量,调整下一次向服务器发送心跳信息的发送时间。
[0135] 这样一来,如果服务器在短时间内接收到较多的心跳信息,终端可以根据服务器发送的第一心跳反馈信息中包括的心跳偏移量调整下一次发送心跳信息的时间,通过对心跳信息发送时间的调整,使得一个心跳周期内向服务器发送的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0136] 可选的,如图9所示,所述终端80还包括:发送单元803,用于与所述服务器建立连接关系之后,在一个心跳周期内的随机时间向服务器发送首次心跳信息。
[0137] 可选的,所述发送单元803还用于:若第一预设时间内未收到所述服务器发送的所述第一心跳反馈信息或第二心跳反馈信息,所述第二心跳反馈信息中不包括所述心跳偏移量,等待随机时间后,向所述服务器发送连接请求。
[0138] 可选的,如图10所示,所述终端80还包括:计算单元804,用于根据公式(3)计算所述随机时间,所述公式(3)为X=A+B,其中,所述A为固定时间;所述B为0至(S/(R*J))中的随机整数;所述S为所述服务器的最大用户数量;所述R为所述服务器每秒能处理的连接请求数。
[0139] 本发明实施例提供一种终端,包括:接收单元,用于接收服务器发送的第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量。调整单元,用于根据所述心跳偏移量,调整下一次向服务器发送心跳信息的发送时间。相较于现有技术,如果服务器在短时间内接收到较多的心跳信息,终端可以根据服务器发送的第一心跳反馈信息中包括的心跳偏移量调整下一次发送心跳信息的时间,通过对心跳信息发送时间的调整,使得一个心跳周期内向服务器发送的心跳信息的分布趋于均匀,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0140] 本发明实施例一种心跳信息发送系统110,如图11所示,包括服务器110A与终端110B,所述终端110B以手机为例进行说明。
[0141] 所述服务器110A用于确定需要调整心跳信息发送时间的终端110B;向所述终端110B发送第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量,以便于所述终端
110B根据所述心跳偏移量调整下一次心跳信息的发送时间;
[0142] 所述终端110B用于接收服务器110A发送的第一心跳反馈信息,所述第一心跳反馈信息中包括心跳偏移量;根据所述心跳偏移量,调整下一次向服务器110A发送心跳信息的发送时间;还用于在与所述服务器110A建立连接关系之后,在一个心跳周期内的随机时间向服务器110A发送首次心跳信息;还用于若第一预设时间内未收到所述服务器110A发送的所述第一心跳反馈信息或第二心跳反馈信息,所述第二心跳反馈信息中不包括所述心跳偏移量,等待随机时间后,向所述服务器110A发送连接请求。
[0143] 这样一来,如果服务器在短时间内接收到较多的心跳信息,终端可以根据服务器发送的第一心跳反馈信息中包括的心跳偏移量调整下一次发送心跳信息的时间,通过对心跳信息发送时间的调整,使得一个心跳周期内向服务器发送的心跳信息的分布趋于均匀,同时由于终端首次发送心跳信息的时间和重新发送连接请求的时间均为随机时间,因此可以防止大量终端在短时间内同时向服务器发送心跳信息的情况,减小了服务器的瞬时压力,避免了网络数据周期性拥塞。
[0144] 需要说明的是,第一,本发明实施例提供的心跳信息发送方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
[0145] 第二,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0146] 第三,另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0147] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。