心跳报文发送方法及装置制造方法及图纸

技术编号:11418162 阅读:117 留言:0更新日期:2015-05-06 19:28
本发明专利技术公开了一种心跳报文发送方法及装置,属于通信领域。所述方法包括:获取当前时刻之前向服务器发送的N个心跳报文的网络延时;根据所述N个心跳报文的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2;根据协商超时时间T2向所述服务器发送后续的心跳报文。所述方法根据已发送的心跳报文的网络延时对当前使用的协商超时时间进行调整,使协商超时时间在能够满足故障检测的准确性的前提下,尽可能的缩短,避免平均故障检测时延过长,从而达到兼顾高故障检测的准确率和低故障检测的时延的效果。

【技术实现步骤摘要】

本专利技术涉及通信领域,特别涉及一种心跳报文发送方法及装置
技术介绍
Zookeeper作为一种有效的协调服务已经应用于很多领域的分布式系统。Zookeeper分为客户端部分和服务器部分,客户端的故障检测则是Zookeeper的应用中较为常用的一种。在现有技术中,Zookeeper的服务器与客户端之间采用静态故障检测算法。客户端与服务器预先约定一个协商超时时间(英文全称:Negotiated Session Timeout,缩写:NST),客户端以三分之一的NST为周期向服务器端发送心跳报文(Ping报文),服务器收到心跳报文后将该客户端与服务器之间的连接的超时时刻增加一个NST,并向客户端回复心跳报文(Pong报文)。如果服务器端在一个NST内未收到客户端发来的Ping报文,则认为客户端发生了故障。如果客户端在发送Ping报文之后的三分之二个NST内未收到服务器端发来的Pong报文,则客户端判定服务器端超时。在实现本专利技术的过程中,申请人发现现有技术至少存在以下缺点:现有技术中,若要保证故障检测的准确度,就需要将协商超时时间设置的较大,而这样又会使平均故障检测时延过长,将协商超时时间设置为固定值时,无法兼顾高故障检测的准确率和低故障检测的时延。
技术实现思路
为了解决现有技术中将协商超时时间设置为固定值,导致无法兼顾高故障检测的准确率和低故障检测的时延的问题,本专利技术实施例提供了一种心跳报文<br>发送方法及装置。所述技术方案如下:第一方面,提供了一种心跳报文发送方法,用于客户端中,所述方法包括:获取当前时刻之前向服务器发送的N个心跳报文的网络延时,所述网络延时为发送一个心跳报文到接收对应的响应报文之间的延时,N≥1,且N为整数;根据所述N个心跳报文的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2;将所述客户端的协商超时时间由T1更新为T2;根据更新后的协商超时时间T2向所述服务器发送后续的心跳报文。在第一方面的第一种可能实现方式中,对于所述N个心跳报文中的每一个心跳报文,所述心跳报文以及所述心跳报文对应的响应报文中包含有所述心跳报文被发送时,所述终端的系统时间t1;所述获取当前时刻之前向服务器发送的N个心跳报文的网络延时,包括:当接收到所述心跳报文对应的响应报文时,获取所述响应报文中包含的系统时间t1,以及所述响应报文被接收时所述终端的系统时间t2;确定所述心跳报文的网络延时δ=t2-t1;将所述心跳报文的网络延时δ添加入预先设置的,长度为N的环形队列。结合第一方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,所述根据所述N个心跳报文的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2,包括:当所述环形队列已满时,获取所述环形队列中的N个网络延时的平均值;检测所述N个网络延时的平均值是否大于x*T1,x>0;若检测结果为所述N个网络延时的平均值大于x*T1,则确定T2=(1+X)T1;X>0。结合第一方面的第一种可能实现方式,在第一方面的第三种可能实现方式中,所述根据所述N个心跳报文的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2,包括:当所述环形队列已满时,获取所述环形队列中的N个网络延时的最大值;检测所述N个网络延时的最大值是否大于y*T1,y>0;若检测结果为所述N个网络延时的最大值大于y*T1,则确定T2=(1+Y)T1;Y>0。结合第一方面的第一种可能实现方式,在第一方面的第四种可能实现方式中,所述根据所述N个心跳报文的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2,包括:当所述环形队列已满时,获取所述环形队列中的N个网络延时的平均值;检测所述N个网络延时的平均值是否小于z*T1,z>0;若检测结果为所述N个网络延时的平均值小于z*T1,则确定T2=(1-Z)T1;0<Z<1。在第一方面的第五种可能实现方式中,所述方法还包括:将所述更新后的协商超时时间T2发送给所述服务器。第二方面,提供一种心跳报文发送装置,用于客户端中,所述装置包括:延时获取模块,用于获取当前时刻之前向服务器发送的N个心跳报文的网络延时,所述网络延时为发送一个心跳报文到接收对应的响应报文之间的延时,N≥1,且N为整数;协商超时时间确定模块,用于根据所述N个心跳报文的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2;协商超时时间更新模块,用于将所述客户端的协商超时时间由T1更新为T2;报文发送模块,用于根据更新后的协商超时时间T2向所述服务器发送后续的心跳报文。在第二方面的第一种可能实现方式中,所述延时获取模块,用于对于所述N个心跳报文中的每一个心跳报文,当接收到所述心跳报文对应的响应报文时,获取所述响应报文中包含的系统时间t1,以及所述响应报文被接收时所述终端的系统时间t2;确定所述心跳报文的网络延时δ=t2-t1;将所述心跳报文的网络延时δ添加入预先设置的,长度为N的环形队列;其中,所述心跳报文以及所述心跳报文对应的响应报文中包含有所述心跳报文被发送时,所述终端的系统时间t1。结合第二方面的第一种可能实现方式,在第一方面的第二种可能实现方式中,所述协商超时时间确定模块,用于当所述环形队列已满时,获取所述环形队列中的N个网络延时的平均值,检测所述N个网络延时的平均值是否大于x*T1,x>0,若检测结果为所述N个网络延时的平均值大于x*T1,则确定T2=(1+X)T1;X>0。结合第二方面的第一种可能实现方式,在第一方面的第三种可能实现方式中,所述协商超时时间确定模块,用于当所述环形队列已满时,获取所述环形队列中的N个网络延时的最大值,检测所述N个网络延时的最大值是否大于y*T1,y>0,若检测结果为所述N个网络延时的最大值大于y*T1,则确定T2=(1+Y)T1;Y>0。结合第二方面的第一种可能实现方式,在第一方面的第四种可能实现方式中,所述协商超时时间确定模块,用于当所述环形队列已满时,获取所述环形队列中的N个网络延时的平均值,检测所述N个网络延时的平均值是否小于z*T1,z>0,若检测结果为所述N个网络延时的平均值小于z*T1,则确定T2=(1-Z)T1;0<Z<1。在第二方面的第五种可能实现方式中,所述装置还包括:协商超时时间发送模块,用于将所述更新后的协商超时时间T2发送给所述服务器。本专利技术本文档来自技高网...

【技术保护点】
一种心跳报文发送方法,用于客户端中,其特征在于,所述方法包括:获取当前时刻之前向服务器发送的N个心跳报文的网络延时,所述网络延时为发送一个心跳报文到接收对应的响应报文之间的延时,N≥1,且N为整数;根据所述N个心跳报文的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2;将所述客户端的协商超时时间由T1更新为T2;根据更新后的协商超时时间T2向所述服务器发送后续的心跳报文。

【技术特征摘要】
1.一种心跳报文发送方法,用于客户端中,其特征在于,所述方法包括:
获取当前时刻之前向服务器发送的N个心跳报文的网络延时,所述网络延
时为发送一个心跳报文到接收对应的响应报文之间的延时,N≥1,且N为整数;
根据所述N个心跳报文的网络延时以及所述客户端的协商超时时间T1确定
新的协商超时时间T2;
将所述客户端的协商超时时间由T1更新为T2;
根据更新后的协商超时时间T2向所述服务器发送后续的心跳报文。
2.根据权利要求1所述的方法,其特征在于,对于所述N个心跳报文中的
每一个心跳报文,所述心跳报文以及所述心跳报文对应的响应报文中包含有所
述心跳报文被发送时,所述终端的系统时间t1;所述获取当前时刻之前向服务器
发送的N个心跳报文的网络延时,包括:
当接收到所述心跳报文对应的响应报文时,获取所述响应报文中包含的系统
时间t1,以及所述响应报文被接收时所述终端的系统时间t2;
确定所述心跳报文的网络延时δ=t2-t1;
将所述心跳报文的网络延时δ添加入预先设置的,长度为N的环形队列。
3.根据权利要求2所述的方法,其特征在于,所述根据所述N个心跳报文
的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2,包括:
当所述环形队列已满时,获取所述环形队列中的N个网络延时的平均值;
检测所述N个网络延时的平均值是否大于x*T1,x>0;
若检测结果为所述N个网络延时的平均值大于x*T1,则确定T2=(1+X)
T1;X>0。
4.根据权利要求2所述的方法,其特征在于,所述根据所述N个心跳报文
的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2,包括:
当所述环形队列已满时,获取所述环形队列中的N个网络延时的最大值;
检测所述N个网络延时的最大值是否大于y*T1,y>0;
若检测结果为所述N个网络延时的最大值大于y*T1,则确定T2=(1+Y)
T1;Y>0。
5.根据权利要求2所述的方法,其特征在于,所述根据所述N个心跳报文
的网络延时以及所述客户端的协商超时时间T1确定新的协商超时时间T2,包括:
当所述环形队列已满时,获取所述环形队列中的N个网络延时的平均值;
检测所述N个网络延时的平均值是否小于z*T1,z>0;
若检测结果为所述N个网络延时的平均值小于z*T1,则确定T2=(1-Z)T1;
0<Z<1。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括...

【专利技术属性】
技术研发人员:李德果朱明明阮利
申请(专利权)人:北京华为数字技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1