CN112671924A - 一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质 - Google Patents
一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质 Download PDFInfo
- Publication number
- CN112671924A CN112671924A CN202011609528.0A CN202011609528A CN112671924A CN 112671924 A CN112671924 A CN 112671924A CN 202011609528 A CN202011609528 A CN 202011609528A CN 112671924 A CN112671924 A CN 112671924A
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- sending time
- service data
- heartbeat packet
- client
- 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.)
- Withdrawn
Links
Images
Landscapes
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种动态调整心跳机制时间间隔的方法,客户端运行心跳包处理线程或进程,发送心跳包,并记录当前心跳包发送时间,同时启动客户端和服务器端的业务数据通信程序;在心跳包发送时间间隔到达之前,若客户端已发送数据包至服务器端,则根据业务数据包发送时间更新当前心跳包发送时间,并等待下一心跳包发送时间间隔到来;若客户端未发送业务数据包至服务器端,则在心跳包发送时间间隔到达时直接发送下一次心跳包。本发明提出的方案动态调整了实际承担心跳包任务的时间间隔,让心跳包和业务数据包有机结合起来共同实现客户端和服务器端的心跳机制,客观上避免了多余的心跳包的发送,实现了高效率、低能耗的通信设备间保活功能。
Description
技术领域
本发明涉及数据通信领域,特别涉及一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质。
背景技术
在常规的网络数据通信中,通常为保证数据传输的稳定和完整性,需要通信双方始终保持连接状态,考虑到通信环境中网络连通性的不确定因素,在大多数的通信系统中,客户端和服务器间采用心跳包来进行连接的保活操作。心跳包的意义在于它像心跳一样每隔固定时间让客户端和服务器端完成一次通信。心跳包不但可以保持通信两端的长连接,还可以及时检测出网络端点间的死链。
心跳包的实现上通常有两种技术:
1)TCP的KeepAlive保活机制
事实上,TCP/IP协议层内置KeepAlive功能,可以通过它以系统底层通信协议的形式来实现心跳包功能。在开启了KeepAlive功能后,通信的一端会自动在规定时间内向另一端发送心跳包,并等待其在收到心跳包后的自动回复信号。这种机制使得通信双方可以在规定的间隔时间内自动进行对方是否在线的确认操作,实现起来很方便。
2)应用层心跳包
由应用程序自己发送心跳包来检测连接是否正常,一般由客户端通过一个独立运行的线程或者进程,实现定时、主动地给服务器端发送心跳包,服务器端处于接收状态并及时做心跳检测,返回给客户端相应的心跳应答。
两者相比较而言,KeepAlive机制在应用中并不普遍,主要基于如下理由:KeepAlive机制的开启需要消耗额外的宽带和流量;KeepAlive机制着眼于检测死链,但对于网络连接正常但应用层因为超高负荷已经无法提供服务的情况无能为力。相反,应用层心跳包可以方便应对死链和应用层失效问题,且在心跳检测时机,定时间隔和处理流程的实现上具有很大的灵活性。所以,在大多数通信系统中,应用层心跳包是首选的实现方法。
应用层心跳包通常很小或者只是仅有包头而无实际内容的空包,客户端每一次发送心跳包后,应该在规定的时间内收到服务器端的心跳应答,时间大小会根据具体的应用场景来设置。客户端通常会启动一个超时定时器,如果及时收到了服务器端的心跳应答则该定时器失效,等待下次客户端发送完心跳包后再启动;如果定时器超时了仍然没有收到服务器端的心跳应答,则可以判断当前通信线路出现链接故障或者服务器端应用程序已经失效了。
在目前的应用系统中,客户端会以固定的时间间隔(固定频率)进行心跳包的发送,到底设定多大的频率取决于具体的应用场景,通常在几秒到几十秒之间。时间间隔过大或者过小都可能对通信系统产生不利的影响:过大则可能无法实现对通信链路的保活,过小则发送频繁可能导致带宽过多消耗。正因为如此,目前大多数应用系统的时间间隔设定方式根据经验值,尽可能达到链路保活和带宽消耗间的平衡。但经验值本身存在不可靠的风险,且如果通信参与端均按照同一个预设时间间隔发送心跳包,必然将产生额外的带宽消耗;同时一些依靠电池供电的设备更希望减少心跳包的发送以节约自身能耗。
发明内容
针对现有技术中存在的问题,提供了一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质,动态调整了实际承担心跳包任务的时间间隔,让心跳包和业务数据包有机结合起来共同实现客户端和服务器端的心跳机制,客观上避免了多余的心跳包的发送。
本发明采用的技术方案如下:一种动态调整心跳机制时间间隔的方法,客户端运行心跳包处理线程或进程,发送心跳包,并记录当前心跳包发送时间,同时启动客户端和服务器端的业务数据通信程序;在心跳包发送时间间隔到达之前,若客户端已发送数据包至服务器端,则根据业务数据包发送时间更新当前心跳包发送时间,并等待下一心跳包发送时间间隔到来;若客户端未发送业务数据包至服务器端,则在心跳包发送时间间隔到达时直接发送下一次心跳包。其中,初始的发送时间间隔依据具体应用场景按照需求设定。
进一步的,所述业务数据通信程序工作过程为:当通信双方开始业务数据通信时,客户端在每次发送业务数据后,记录所发送业务数据包发送时间Tb。
进一步的,所述更新当前心跳包发送时间的具体方法为:在心跳包发送时间间隔到达之前,客户端比较最新记录的心跳包发送时间Th与最新记录的业务数据包发送时间Tb,若心跳包发送时间Th早于业务数据包发送时间Tb,则将最新记录的心跳包发送时间设置为最新记录的业务数据包发送时间,即Th=Tb,并等待下一心跳包发送时间间隔到来;若心跳包发送时间Th晚于业务数据包发送时间Tb,则在时间间隔到达时直接发送心跳包,并记录最新的心跳包发送时间Th。
本发明还提供了一种动态调整心跳机制时间间隔的系统,包括客户端与服务器端,客户端与服务器端相互通信;
客户端,用于运行心跳包处理线程或进程,发送心跳包,并记录当前心跳包发送时间,同时启动客户端和服务器端的业务数据通信程序;在心跳包发送时间间隔到达之前,若客户端已发送数据包至服务器端,则根据业务数据包发送时间更新当前心跳包发送时间,并等待下一心跳包发送时间间隔到来;若客户端未发送业务数据包至服务器端,则在心跳包发送时间间隔到达时直接发送下一次心跳包;
服务器端,用于对客户端发送的心跳包进行正常的回复;同时完成和客户端的业务数据包的正常收发。
进一步的,所述业务数据通信程序工作过程为:当通信双方开始业务数据通信时,客户端在每次发送业务数据后,记录所发送业务数据包发送时间Tb。
进一步的,所述更新当前心跳包发送时间的具体过程为:在心跳包发送时间间隔到达之前,客户端比较最新记录的心跳包发送时间Th与最新记录的业务数据包发送时间Tb,若心跳包发送时间Th早于业务数据包发送时间Tb,则将最新记录的心跳包发送时间设置为最新记录的业务数据包发送时间,即Th=Tb,并等待下一心跳包发送时间间隔到来;若心跳包发送时间Th晚于业务数据包发送时间Tb,则在时间间隔到达时直接发送心跳包,并记录最新的心跳包发送时间Th。
本发明还提供了一种计算程序,其包括有计算机程序指令,其中,所述程序指令被处理器执行时用于上述的动态调整心跳机制时间间隔的方法对应的过程。
本发明还提供了一种存储介质,其上存储有计算机程序指令,其中,所述程序指令被处理器执行时用于上述的动态调整心跳机制时间间隔的方法对应的过程。
与现有技术相比,采用上述技术方案的有益效果为:本发明提出的方案中业务数据包可承担部分心跳包的作用,对最新记录的心跳包发送时间Th和最新记录的业务数据包发送时间Tb的比较处理,动态调整了实际承担心跳包任务的时间间隔,让心跳包和业务数据包有机结合起来共同实现客户端和服务器端的心跳机制,客观上避免了多余的心跳包的发送,实现了一种高效率、低能耗的通信设备间保活方法。
附图说明
图1是本发明提出的动态调整心跳机制时间间隔的方法流程图。
图2是本发明提出的业务数据包处理流程图。
具体实施方式
下面结合附图对本发明做进一步描述。
实施例1
考虑心跳包本质上仍然是一个协议数据包(很小或者是空包),只是客户端依据定时器产生时间间隔定时发送它,但如果通信双方本身就存在业务数据包的交互,且交互的时间间隔小于心跳包的时间间隔,那么此时的心跳包是不需要发送的,因为业务数据包实际上充当了心跳包的角色。因此,如图1所示,提出了一种动态调整心跳机制时间间隔的方法,具体方案如下:
一种动态调整心跳机制时间间隔的方法,客户端运行心跳包处理线程或进程,发送心跳包,并记录当前心跳包发送时间,同时启动客户端和服务器端的业务数据通信程序;在心跳包发送时间间隔到达之前,若客户端已发送数据包至服务器端,则根据业务数据包发送时间更新当前心跳包发送时间,并等待下一心跳包发送时间间隔到来;若客户端未发送业务数据包至服务器端,则在心跳包发送时间间隔到达时直接发送下一次心跳包。其中,初始的发送时间间隔依据具体应用场景按照需求设定。
其中,如图2所示,业务数据通信程序工作过程为:当通信双方开始业务数据通信时,客户端在每次发送业务数据后,记录所发送业务数据包发送时间Tb。
具体的,更新当前心跳包发送时间的具体方法为:在心跳包发送时间间隔到达之前,客户端比较最新记录的心跳包发送时间Th与最新记录的业务数据包发送时间Tb,
若心跳包发送时间Th早于业务数据包发送时间Tb,则表示在心跳包的时间间隔内有业务数据包发送,可以认为此业务数据包代替了心跳包的功能,当前心跳包不用发送以节约带宽,将最新记录的心跳包发送时间设置为最新记录的业务数据包发送时间,即Th=Tb,并等待下一心跳包发送时间间隔到来;
若心跳包发送时间Th晚于业务数据包发送时间Tb,则示在心跳包的时间按间隔内没有业务数据包发送,需要发送心跳包,因此,在时间间隔到达时直接发送心跳包,并记录最新的心跳包发送时间Th。
实施例2
本实施例提供了一种动态调整心跳机制时间间隔的系统,包括客户端与服务器端,客户端与服务器端相互通信;
客户端,用于运行心跳包处理线程或进程,发送心跳包,并记录当前心跳包发送时间,同时启动客户端和服务器端的业务数据通信程序;在心跳包发送时间间隔到达之前,若客户端已发送数据包至服务器端,则根据业务数据包发送时间更新当前心跳包发送时间,并等待下一心跳包发送时间间隔到来;若客户端未发送业务数据包至服务器端,则在心跳包发送时间间隔到达时直接发送下一次心跳包;其中,初始的发送时间间隔依据具体应用场景按照需求设定;
服务器端,用于对客户端发送的心跳包进行正常的回复;同时完成和客户端的业务数据包的正常收发。
其中,业务数据通信程序工作过程为:当通信双方开始业务数据通信时,客户端在每次发送业务数据后,记录所发送业务数据包发送时间Tb。
具体的所述更新当前心跳包发送时间的具体过程为:在心跳包发送时间间隔到达之前,客户端比较最新记录的心跳包发送时间Th与最新记录的业务数据包发送时间Tb,若心跳包发送时间Th早于业务数据包发送时间Tb,则将最新记录的心跳包发送时间设置为最新记录的业务数据包发送时间,即Th=Tb,并等待下一心跳包发送时间间隔到来;若心跳包发送时间Th晚于业务数据包发送时间Tb,则在时间间隔到达时直接发送心跳包,并记录最新的心跳包发送时间Th。
对客户端而言,通过上述心跳包和业务数据包相结合的方式共同完成保活的操作,但心跳机制的逻辑处理仍然由心跳包处理线程(进程)来完成,即在该线程(进程)中,如果在规定的时间内无法收到服务器端的心跳包回复信号,可以认为当前通信线路出现链接故障或者服务器端应用程序已经失效;
对于服务器端而言,其不主动判断客户端是否离线,只是对客户端发送的心跳包进行正常的回复;同时完成和客户端的业务数据包的正常收发。
实施例3
在实施例1的基础上,本实施例还提供了一种计算程序,其包括有计算机程序指令,其中,所述程序指令被处理器执行时用于上述的动态调整心跳机制时间间隔的方法对应的过程。
实施例4
在实施例1的基础上,本实施例还提供了一种存储介质,其上存储有计算机程序指令,其中,所述程序指令被处理器执行时用于上述的动态调整心跳机制时间间隔的方法对应的过程。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权利要求保护的范围。
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
Claims (8)
1.一种动态调整心跳机制时间间隔的方法,其特征在于,客户端运行心跳包处理线程或进程,发送心跳包,并记录当前心跳包发送时间,同时启动客户端和服务器端的业务数据通信程序;在心跳包发送时间间隔到达之前,若客户端已发送数据包至服务器端,则根据业务数据包发送时间更新当前心跳包发送时间,并等待下一心跳包发送时间间隔到来;若客户端未发送业务数据包至服务器端,则在心跳包发送时间间隔到达时直接发送下一次心跳包。
2.根据权利要求1所述的动态调整心跳机制时间间隔的方法,其特征在于,所述业务数据通信程序工作过程为:当通信双方开始业务数据通信时,客户端在每次发送业务数据后,记录所发送业务数据包发送时间Tb。
3.根据权利要求2所述的动态调整心跳机制时间间隔的方法,其特征在于,所述更新当前心跳包发送时间的具体方法为:在心跳包发送时间间隔到达之前,客户端比较最新记录的心跳包发送时间Th与最新记录的业务数据包发送时间Tb,若心跳包发送时间Th早于业务数据包发送时间Tb,则将最新记录的心跳包发送时间设置为最新记录的业务数据包发送时间,即Th=Tb,并等待下一心跳包发送时间间隔到来;若心跳包发送时间Th晚于业务数据包发送时间Tb,则在时间间隔到达时直接发送心跳包,并记录最新的心跳包发送时间Th。
4.一种动态调整心跳机制时间间隔的系统,其特征在于,包括客户端与服务器端,客户端与服务器端相互通信;
客户端,用于运行心跳包处理线程或进程,发送心跳包,并记录当前心跳包发送时间,同时启动客户端和服务器端的业务数据通信程序;在心跳包发送时间间隔到达之前,若客户端已发送数据包至服务器端,则根据业务数据包发送时间更新当前心跳包发送时间,并等待下一心跳包发送时间间隔到来;若客户端未发送业务数据包至服务器端,则在心跳包发送时间间隔到达时直接发送下一次心跳包;
服务器端,用于对客户端发送的心跳包进行正常的回复;同时完成和客户端的业务数据包的正常收发。
5.根据权利要求4所述的动态调整心跳机制时间间隔的系统,其特征在于,所述业务数据通信程序工作过程为:当通信双方开始业务数据通信时,客户端在每次发送业务数据后,记录所发送业务数据包发送时间Tb。
6.根据权利要求5所述的动态调整心跳机制时间间隔的系统,其特征在于,所述更新当前心跳包发送时间的具体过程为:在心跳包发送时间间隔到达之前,客户端比较最新记录的心跳包发送时间Th与最新记录的业务数据包发送时间Tb,若心跳包发送时间Th早于业务数据包发送时间Tb,则将最新记录的心跳包发送时间设置为最新记录的业务数据包发送时间,即Th=Tb,并等待下一心跳包发送时间间隔到来;若心跳包发送时间Th晚于业务数据包发送时间Tb,则在时间间隔到达时直接发送心跳包,并记录最新的心跳包发送时间Th。
7.一种计算程序,其包括有计算机程序指令,其中,所述程序指令被处理器执行时用于实现权利要求1-3中任一项所述的动态调整心跳机制时间间隔的方法对应的过程。
8.一种存储介质,其上存储有计算机程序指令,其中,所述程序指令被处理器执行时用于实现权利要求1-3中任一项所述的动态调整心跳机制时间间隔的方法对应的过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011609528.0A CN112671924A (zh) | 2020-12-30 | 2020-12-30 | 一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011609528.0A CN112671924A (zh) | 2020-12-30 | 2020-12-30 | 一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112671924A true CN112671924A (zh) | 2021-04-16 |
Family
ID=75411163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011609528.0A Withdrawn CN112671924A (zh) | 2020-12-30 | 2020-12-30 | 一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671924A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102684949A (zh) * | 2012-06-04 | 2012-09-19 | 北京神州泰岳软件股份有限公司 | 一种长连接下心跳数据包的处理方法、装置和客户端 |
CN107360020A (zh) * | 2017-06-07 | 2017-11-17 | 上海斐讯数据通信技术有限公司 | 一种大容量数据业务单元保活系统及其使用方法 |
CN109788038A (zh) * | 2018-12-25 | 2019-05-21 | 上海数果科技有限公司 | 一种智能心跳方法 |
-
2020
- 2020-12-30 CN CN202011609528.0A patent/CN112671924A/zh not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102684949A (zh) * | 2012-06-04 | 2012-09-19 | 北京神州泰岳软件股份有限公司 | 一种长连接下心跳数据包的处理方法、装置和客户端 |
CN107360020A (zh) * | 2017-06-07 | 2017-11-17 | 上海斐讯数据通信技术有限公司 | 一种大容量数据业务单元保活系统及其使用方法 |
CN109788038A (zh) * | 2018-12-25 | 2019-05-21 | 上海数果科技有限公司 | 一种智能心跳方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113472606B (zh) | 一种心跳超时检测方法、服务器及电子设备 | |
US6507562B1 (en) | Dynamic optimization for receivers using distance between a repair head and a member station in a repair group for receivers having a closely knit topological arrangement to locate repair heads near the member stations which they serve in tree based repair in reliable multicast protocol | |
US6415331B1 (en) | Method of updating accumulated data with middleware and server system performing the same | |
US20100166006A1 (en) | Method, media gateway and system for controlling redundant data packet transmission | |
KR20070015405A (ko) | 세션 개시 프로토콜 재전송 방법 | |
WO2010108144A1 (en) | Systems and methods for improved wireless interface aggregation | |
US8341272B2 (en) | Method for improving a TCP data transmission in case the physical transmission medium is disconnected | |
US6563822B1 (en) | Data Transferring method | |
US20220303744A1 (en) | Communication method for wireless device, device and computer readable storage media | |
US6970476B1 (en) | Efficient header compression context update in packet communications | |
CN112688869A (zh) | 一种弱网环境下基于动态路由算法的数据可靠传递方法 | |
US20180227332A1 (en) | A method and computer program products for probing the status of an ip-based communication connection in order to receive an incoming communication | |
EP2351313B1 (en) | Refresh requests in soft-state signalling | |
CN108173851B (zh) | 一种用于空间信息网络的高效多媒体传输方法 | |
CN104618007A (zh) | 一种同步卫星tcp协议分段连接优化方法 | |
US9491268B2 (en) | Method and devices for session timeout management | |
US8943362B2 (en) | Control and monitoring for fast millimeter-wave link using out-of-band wireless channel | |
KR101470638B1 (ko) | 이동통신 시스템에서의 무선자원 향상 방법, 상태정보 보고방법 및 수신장치 | |
US8300620B1 (en) | Dynamically tuning a timer mechanism according to radio frequency conditions | |
CN109088828A (zh) | 服务器过载控制方法及系统 | |
CN112671924A (zh) | 一种动态调整心跳机制时间间隔的方法、系统、计算机程序及存储介质 | |
US20100306311A1 (en) | Method of Downloading Large Size Data to a Large Number of Networked Client Machines from a Single Server | |
Natani et al. | TCP For wireless networks | |
US20070005741A1 (en) | Facilitating radio communications in a mobile device | |
US20060251076A1 (en) | Real-time and reliable method for transporting data |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210416 |
|
WW01 | Invention patent application withdrawn after publication |