CN109788038A - 一种智能心跳方法 - Google Patents
一种智能心跳方法 Download PDFInfo
- Publication number
- CN109788038A CN109788038A CN201811595168.6A CN201811595168A CN109788038A CN 109788038 A CN109788038 A CN 109788038A CN 201811595168 A CN201811595168 A CN 201811595168A CN 109788038 A CN109788038 A CN 109788038A
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- client
- server
- data packet
- intelligent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种智能心跳方法,涉及移动通信领域。该方法在客户端引入短心跳机制和自适应心跳机制,通过客户向目标服务器按照递增且非固定的时间间隔发送心跳数据包,根据不同的网络情况,自动调整发送心跳的周期。由此来解决现有技术中固定周期的心跳给客户端带来过多功耗和流量的消耗以及给服务器端带来的巨大访问压力的问题。
Description
技术领域
本发明涉及移动通信技术,具体涉及通信过程中心跳控制方法。
背景技术
心跳多用于基于长连的通讯系统中,用于持续的通知后台服务器,客户端依旧存活。心跳包就是双方所定义的一种用来通知对方存活的数据通讯结构。
周期性的发心跳包给服务器主要有以下几个原因:
1.通知服务器,客户端存活状态,一旦服务器监测到在某段时间没有收到客户端发来的心跳包,服务器就会释放曾经为此客户端分配的所有资源,例如Socket连接;
2.定时的刷新NAT内外网IP映射表,以便防止NAT路由器移除映射表,导致客户端和服务器端的连接中断,特别是基于udp的服务,路由表更新非常频繁。
其中,最为简单的实现就是定期的给服务器发送心跳包,但是如何确定周期时间间隔为本技术中需要解决的问题。
由于不同网络拓扑结构在实现时,NA节点会分配到不同的网路路由当中,不同的NAT有不同的策略来处理映射表,一旦NAT发现某个映射表对应IP在某段时间内没有上行或下行数据,NAT就会移除此IP映射表,导致连接被中断。
由此可以额确定,以较短的时间间隔周期性地向服务器发送心跳包,会加大客户端尤其是移动设备的功耗和流量的消耗。
发明内容
针对现有通信过程中客户端与目标服务器之间心跳控制方案所存在的问题,需要一种新的通信心跳控制案。
为此,本发明的目的在于提供一种智能心跳方法,可根据不同的网络情况,自动调整发送心跳的周期。
为了达到上述目的,本发明提供的智能心跳方法,包括:
在客户端与目标服务器之间建立socket连接,并且使得客户端相应的连接地址缓存在服务器;
客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送预定次数的心跳数据包,如果预定次数的心跳交互都成功,则进入自适应心跳计算状态;
客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加步长作为下一次发送心跳数据包的时间间隔,并针对心跳周期如此递归增加其步长,直至心跳失败;
取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,即successHeart;
客户端以successHeart为周期发送心跳,进入稳定态。
进一步的,在客户端与目标服务器之间基于udp的socket连接。
进一步的,将目标服务器配置成支持两种回执数据包:正常的心跳确认数据包和nat变更数据包。
进一步的,将目标服务器配置成在收到心跳数据包后,将现有地址与已缓存的上个发送心跳数据包的地址作比较:如果地址改变,目标服务器立即做相应更新,并为客户端回复一个nat变更的数据包;如果标识未改变,则向客户端返回一个针对收到的心跳数据包的确认数据包。
进一步的,将客户端配置成处于稳定态以successHeart为周期发送心跳一段时间后,在successHeart基础上增加步长,继续探测心跳最大值,以适应nat超时时间变长的情况;
如果客户端收到来自服务器端的nat变更数据包,则客户端取最近一次successHeart周期一半的值作为基础,重新探测心跳周期最大值。
进一步的,如果客户端连续预定次数的心跳包都没有得到服务端的回执,则认为服务端已故障,客户端关闭socket连接。
本发明提供的方案通过客户端向目标服务器按照递增且非固定的时间间隔发送心跳数据包,可以根据不同的网络情况,自动调整发送心跳的周期,有效解决固定周期的心跳给客户端带来过多功耗和流量的消耗以及给服务器端带来的巨大访问压力的问题。
附图说明
以下结合附图和具体实施方式来进一步说明本发明。
图1为本发明实例中客户端与目标服务器之间进行智能心跳的原理图;
图2为本发明实例中客户端发向目标服务器的心跳数据结构示意图;
图3为本发明实例中目标服务器收到心跳数据后向客户端发送的回执数据示意图;
图4为本发明实例中客户端和服务端对心跳数据包处理的逻辑流程图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
在用户通过客户端与服务器建立网络通信连接过程中,在客户端断开与服务器的通信之前,客户端为了告知服务器其为在线状态,通过向目标服务器发送心跳数据包,以确保通信连接的有效性。
参见图2,客户端向目标服务器发送心跳数据包的目的在于与目标服务器保持长连接,至于心跳数据包中包含的具体内容没有特别的规定,不过,为了减轻目标服务器对心跳数据包的处理资源,心跳数据包一般都是很小的包,或者只包含包头的一个空包。本发明实施例对心跳数据包中包含的具体内容不作限定。
同时,目标服务器收到来自客户端的心跳包后,相应地向客户端回执一个数据包。目标服务器配置成支持两种回执数据包:正常的心跳确认数据包和nat变更数据包。如图3所示,如果服务端检测到端口号改变,则将Nat字段值置为1,否则将其置为0。
若,客户端每隔固定时间间隔会向服务器发送一次心跳数据包请求,这样会增大客户端的功耗,也会增加服务器的访问负荷,影响服务器的响应速度。
对此,本实例提供智能心跳方案,通过客户端向目标服务器按照递增且非固定的时间间隔发送心跳数据包,可以根据不同的网络情况,自动调整发送心跳的周期,能够降低客户端的功耗和流量消耗,同时也不会给服务器端带来的巨大访问压力。
参见图1,其所示为智能心跳方案的基本原理图。本智能心跳方案应用于客户端,在客户端将心跳数据包发送给目标服务器时,引入短心跳机制和自适应心跳机制,以控制客户端智能的向目标服务器发送心跳数据包。
参见图4,其所示为应用本智能心跳方案的客户端向目标服务器智能送心跳数据包的一种示例流程。
在实施智能送心跳数据包前,客户端与目标服务器之间首先需要建立基于udp的socket连接;同时在建立连接的过程中,服务器缓存相应客户端的连接地址。
由此,首先由客户端启动心跳线程,并向目标服务器发送心跳数据包。
在具体实施时,客户端先用预设短心跳周期发三次心跳,如果三次心跳交互都成功,则客户端进入自适应心跳状态,否则断开连接。
接着,进入自适应心跳状态,在该状态下基于自适应心跳机制探测心跳最大值。客户端在预设短心跳周期基础上增加步长作为下一次发送心跳数据包的时间间隔,并针对心跳周期递归增加其步长,直至收到来自服务器的nat变更数据包,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,即successHeart,然后客户端以successHeart为周期发送心跳,进入稳定态。
这里取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,能够有效规避临界值。
接着,处于稳定态的客户端将以successHeart为周期发送心跳,一段时间后,在successHeart基础上增加步长,继续探测心跳最大值,以适应nat超时时间变长的情况。
目标服务器收到心跳数据包后,将现有地址与已缓存的地址作比较:如果地址改变,目标服务器立即做相应更新,并为客户端回复一个nat变更的数据包;如果地址未改变,则向客户端返回一个针对该心跳数据包的确认数据包。
与此同时,如果客户端收到来自服务器端的nat变更数据包,则客户端取最近一次successHeart周期一半的值作为基础,重新探测心跳周期最大值。
如果客户端连续三个心跳包都没有得到服务端的回执,则认为服务端已故障,客户端关闭socket连接。
整个过程通过客户端向目标服务器按照递增且非固定的时间间隔发送心跳数据包,实现可以根据不同的网络情况,自动调整发送心跳的周期。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (6)
1.智能心跳方法,其特征在于,包括:
在客户端与目标服务器之间建立socket连接,并且使得客户端相应的连接地址缓存在服务器;
客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送预定次数的心跳数据包,如果预定次数的心跳交互都成功,则进入自适应心跳计算状态;
客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加步长作为下一次发送心跳数据包的时间间隔,并针对心跳周期如此递归增加其步长,直至心跳失败;
取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,即successHeart;
客户端以successHeart为周期发送心跳,进入稳定态。
2.根据权利要求1所述的智能心跳方法,其特征在于,在客户端与目标服务器之间基于udp的socket连接。
3.根据权利要求1所述的智能心跳方法,其特征在于,将目标服务器配置成支持两种回执数据包:正常的心跳确认数据包和nat变更数据包。
4.根据权利要求1所述的智能心跳方法,其特征在于,将目标服务器配置成在收到心跳数据包后,将现有地址与已缓存的上个发送心跳数据包的地址作比较:如果地址改变,目标服务器立即做相应更新,并为客户端回复一个nat变更的数据包;如果标识未改变,则向客户端返回一个针对收到的心跳数据包的确认数据包。
5.根据权利要求4所述的智能心跳方法,其特征在于,将客户端配置成处于稳定态以successHeart为周期发送心跳一段时间后,在successHeart基础上增加步长,继续探测心跳最大值,以适应nat超时时间变长的情况;
如果客户端收到来自服务器端的nat变更数据包,则客户端取最近一次successHeart周期一半的值作为基础,重新探测心跳周期最大值。
6.根据权利要求1所述的智能心跳方法,其特征在于,如果客户端连续预定次数的心跳包都没有得到服务端的回执,则认为服务端已故障,客户端关闭socket连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811595168.6A CN109788038A (zh) | 2018-12-25 | 2018-12-25 | 一种智能心跳方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811595168.6A CN109788038A (zh) | 2018-12-25 | 2018-12-25 | 一种智能心跳方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109788038A true CN109788038A (zh) | 2019-05-21 |
Family
ID=66498180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811595168.6A Pending CN109788038A (zh) | 2018-12-25 | 2018-12-25 | 一种智能心跳方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109788038A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422646A (zh) * | 2020-11-05 | 2021-02-26 | 杭州萤石软件有限公司 | 一种udp动态心跳的实现方法、装置及存储介质 |
CN112596985A (zh) * | 2020-12-30 | 2021-04-02 | 绿盟科技集团股份有限公司 | 一种it资产探测方法、装置、设备和介质 |
CN112671924A (zh) * | 2020-12-30 | 2021-04-16 | 成都中嵌自动化工程有限公司 | 一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106535A (zh) * | 2007-08-14 | 2008-01-16 | 华为技术有限公司 | 一种实现心跳机制的方法、服务器和系统 |
CN103685241A (zh) * | 2013-11-26 | 2014-03-26 | 中国科学院计算技术研究所 | 一种维持tcp长连接的自适应心跳方法及其系统 |
US20140143580A1 (en) * | 2012-11-16 | 2014-05-22 | Oracle International Corporation | Method and apparatus for synchronizing the time reference of a dynamically activated processor to the system time reference |
US20140297854A1 (en) * | 2011-12-13 | 2014-10-02 | Motorola Mobility, Inc. | Method and apparatus for adaptive network heartbeat message for tcp channel |
CN104144159A (zh) * | 2014-06-26 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 智能心跳保活方法及智能心跳保活系统 |
CN107197509A (zh) * | 2017-05-22 | 2017-09-22 | 深圳市沃特沃德股份有限公司 | 心跳连接方法和装置 |
CN107786383A (zh) * | 2016-08-30 | 2018-03-09 | 北京国双科技有限公司 | 心跳数据包的发送方法及装置 |
CN109547293A (zh) * | 2018-12-20 | 2019-03-29 | 上海数果科技有限公司 | 心跳数据包发送方法 |
-
2018
- 2018-12-25 CN CN201811595168.6A patent/CN109788038A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106535A (zh) * | 2007-08-14 | 2008-01-16 | 华为技术有限公司 | 一种实现心跳机制的方法、服务器和系统 |
US20140297854A1 (en) * | 2011-12-13 | 2014-10-02 | Motorola Mobility, Inc. | Method and apparatus for adaptive network heartbeat message for tcp channel |
US20140143580A1 (en) * | 2012-11-16 | 2014-05-22 | Oracle International Corporation | Method and apparatus for synchronizing the time reference of a dynamically activated processor to the system time reference |
CN103685241A (zh) * | 2013-11-26 | 2014-03-26 | 中国科学院计算技术研究所 | 一种维持tcp长连接的自适应心跳方法及其系统 |
CN104144159A (zh) * | 2014-06-26 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 智能心跳保活方法及智能心跳保活系统 |
CN107786383A (zh) * | 2016-08-30 | 2018-03-09 | 北京国双科技有限公司 | 心跳数据包的发送方法及装置 |
CN107197509A (zh) * | 2017-05-22 | 2017-09-22 | 深圳市沃特沃德股份有限公司 | 心跳连接方法和装置 |
CN109547293A (zh) * | 2018-12-20 | 2019-03-29 | 上海数果科技有限公司 | 心跳数据包发送方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112422646A (zh) * | 2020-11-05 | 2021-02-26 | 杭州萤石软件有限公司 | 一种udp动态心跳的实现方法、装置及存储介质 |
CN112422646B (zh) * | 2020-11-05 | 2023-04-18 | 杭州萤石软件有限公司 | 一种udp动态心跳的实现方法、装置及存储介质 |
CN112596985A (zh) * | 2020-12-30 | 2021-04-02 | 绿盟科技集团股份有限公司 | 一种it资产探测方法、装置、设备和介质 |
CN112671924A (zh) * | 2020-12-30 | 2021-04-16 | 成都中嵌自动化工程有限公司 | 一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质 |
CN112596985B (zh) * | 2020-12-30 | 2023-11-10 | 绿盟科技集团股份有限公司 | 一种it资产探测方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3082309B1 (en) | Sdn controller, data centre system and router connection method | |
CN102624584B (zh) | 链路检测方法及装置 | |
US8115617B2 (en) | Alarm reordering to handle alarm storms in large networks | |
EP2720418B1 (en) | Lacp link switching and data transmission method and device | |
CN109788038A (zh) | 一种智能心跳方法 | |
WO2016165463A1 (zh) | 一种基于软件定义网络的链路故障上报方法和转发设备 | |
EP2157746A1 (en) | Routing control system for L3VPN service network | |
CN109547293A (zh) | 心跳数据包发送方法 | |
CN105357046A (zh) | 一种用于软件定义网络sdn的网络信息探测的方法 | |
EP3036872A1 (en) | Controlling forwarding devices in software defined networks | |
CN104954281A (zh) | 通信方法、系统、资源池管理系统、交换机和控制装置 | |
CN102083136A (zh) | 无线网络的控制方法及无线控制器 | |
US20220329512A1 (en) | Method and Apparatus for Updating Route Information, Computer Device, and Storage Medium | |
KR20140106235A (ko) | 오픈플로우 스위치 및 그 패킷 처리 방법 | |
CN104980355A (zh) | 一种sdn环境下的源端可控组播数据传输方法及系统 | |
KR102686798B1 (ko) | 무선 네트워크를 위한 부모 노드 장치, 단말 장치, 및 그것의 데이터 전송 방법 | |
US7499436B2 (en) | Mobile communication system using resource reservation protocol | |
EP2439876A1 (en) | Method and device for requesting multicasting, processing multicasting requests and assisting in the aforementioned process | |
JP2004159112A (ja) | 通信制御システム、通信制御方法、これらに用いて好適なルーティング制御装置及びルータ装置 | |
CN107222883B (zh) | 无线控制器备份方法、备份切换方法、装置及系统 | |
CN107566143A (zh) | 一种纵向堆叠发现方法和装置 | |
CN104869113A (zh) | 基于最小化完成时间的网络传输方法及系统 | |
RU2612610C1 (ru) | Устройство управления, система связи, способ передачи управляющей информации и программа | |
JP5377399B2 (ja) | フレーム転送装置及びフレーム転送方法 | |
Wu et al. | RXstp: A topology discovery mechanism based on rapid spanning tree for SDN in-band control |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190521 |