CN117118876B - 心跳连接检测方法、装置、电子设备及存储介质 - Google Patents
心跳连接检测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117118876B CN117118876B CN202311361185.4A CN202311361185A CN117118876B CN 117118876 B CN117118876 B CN 117118876B CN 202311361185 A CN202311361185 A CN 202311361185A CN 117118876 B CN117118876 B CN 117118876B
- Authority
- CN
- China
- Prior art keywords
- linked list
- identification information
- list structure
- terminal equipment
- doubly linked
- 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.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 102
- 238000000034 method Methods 0.000 claims description 27
- 230000007717 exclusion Effects 0.000 claims description 25
- 230000004083 survival effect Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 abstract description 12
- 238000004891 communication Methods 0.000 abstract description 7
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000003780 insertion Methods 0.000 description 6
- 230000037431 insertion Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及通信技术领域,具体涉及一种心跳连接检测方法、装置、电子设备及存储介质,该心跳连接检测方法包括:确定当前进行心跳连接检测的终端设备的数量N;从双向链表结构队列的尾部获取N个终端设备的标识信息;根据N个终端设备的标识信息对N个终端设备进行心跳连接检测,并将N个终端设备的标识信息从双向链表结构队列中移除;对N个终端设备进行心跳连接检测后,获取N个终端设备中保持网络连接的目标终端设备的目标标识信息,并将目标标识信息插入所述双向链表结构队列的头部。本发明能够有计划性、有序性的对终端设备的网络连接进行管理,以提高心跳包发送的实时性、有效性、准确率,从而减少心跳包发送过程中的资源开销。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种心跳连接检测方法、装置、电子设备及计算机可读存储介质。
背景技术
即时通讯技术是一种基于计算机和互联网的通信技术,这种技术可在不同设备和平台之间实现实时的点对点或多方通信,具有即时性、交互性和实时性的特点。
基于即时通讯系统实时性要求,软件应用后台的服务器需要对每一个需要通讯的客户端保持一个独立专用的网络“连接”通道来进行数据双向发送。而这种专用网络“连接”通道对于后台服务端来说是宝贵的资源。每个客户端如果无法接收数据包,或关机或网络断开时,服务器均需要及时回收这些资源,以留给新的客户端终端设备通讯使用。而为实现这一目标,常用的手段是通过网络“连接”进行心跳包管理,即:服务器与客户端之间通过定期心跳数据包的发送和回复,进行彼此是否存活确认,如心跳包发送失败,或者在约定的时间范围内得不到预期的回复,则“连接”通道都会关闭,这是心跳包的工作机制和意义。
然而,在网络通讯的实际场景中,当客户端为可移动的终端设备时,因终端设备的功耗波动(电源耗尽关机)、所处的位置的环境因素(对无线信号的隔离)、操作人对终端设备的处理方式(关闭应用)等,都会对终端设备的网络连接健康性造成影响。因此,终端设备与服务器的连接会随机性断开,这使得服务器对所有客户端的连接的计划性、有序性的管理造成了障碍,使心跳包发送的实时性、有效性、准确率都打了折扣,加大了心跳包发送过程中的资源开销。因此,亟待一种心跳连接检测方法,能够有计划性、有序性的对终端设备的网络连接进行管理,以提高心跳包发送的实时性、有效性、准确率,从而减少心跳包发送过程中的资源开销。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的在于提出一种心跳连接检测方法,具有有计划性、有序性的对客户端段的网络连接进行管理,以提高心跳包发送的实时性、有效性、准确率,从而减少心跳包发送过程中的资源开销的优点。
根据本发明实施例的第一方面,提供一种心跳连接检测方法,包括:
确定当前进行心跳连接检测的终端设备的数量N,N为大于1的整数;
从双向链表结构队列的尾部获取N个终端设备的标识信息;
根据N个终端设备的标识信息对所述N个终端设备进行心跳连接检测,并将所述N个终端设备的标识信息从所述双向链表结构队列中移除;
对所述N个终端设备进行心跳连接检测后,获取所述N个终端设备中保持网络连接的目标终端设备的目标标识信息,并将所述目标标识信息插入所述双向链表结构队列的头部。
在本发明的一种示例性实施例中,所述确定当前进行心跳连接检测的终端设备的数量N包括:
获取当前所述双向链表结构队列中能够进行心跳连接检测的终端设备的当前总数量;
获取当前所述双向链表结构队列的分组数量;
获取当前速度因子;
基于所述总数量、所述分组数量以及所述当前速度因子计算当前进行心跳连接检测的终端设备的数量N。
在本发明的一种示例性实施例中,所述获取所述双向链表结构队列中分组的分组数量包括:
计算网络连接的存活有效时长与心跳包发送周期的第一比值;
基于所述第一比值确定分组数量。
在本发明的一种示例性实施例中,所述获取当前速度因子包括:
获取上次所述双向链表结构队列中能够进行心跳连接检测的终端设备的上一总数量;
计算所述当前总数量与上一总数量的第二比值;
基于所述第二比值确定所述当前速度因子。
在本发明的一种示例性实施例中,所述方法还包括:
在接收到第一终端设备的网络连接请求时,将第一终端设备的第一标识信息插入双向链表结构队列的头部,所述网络连接请求包括所述第一标识信息。
在本发明的一种示例性实施例中,所述将第一终端设备的第一标识信息插入双向链表结构队列的头部包括:
确定位于所述双向链表结构队列的头部的第三终端设备;
将所述双向链表结构队列的头部的下一指针以及所述第三终端设备的上一指针指向所述第一终端设备;
将所述第一终端设备的上一指针指向所述双向链表结构队列的头部,并将所述第一终端设备的下一指针指向所述第三终端设备。
在本发明的一种示例性实施例中,所述在接收到第一终端设备的网络连接请求后,所述方法还包括:
启动互斥锁;
在确定所述第一标识信息插入双向链表结构队列的头部后,解除所述互斥锁。
在本发明的一种示例性实施例中,所述方法还包括:
在确定与第二终端设备断开网络连接时,将所述第二终端设备的第二标识信息从所述双向链表结构队列中删除。
在本发明的一种示例性实施例中,所述将所述第二终端设备的第二标识信息从所述双向链表结构队列中删除包括:
确定所述第二终端设备的上一指针指向的第四终端设备;
确定所述第二终端设备的下一指针指向的第五终端设备;
将所述第四终端设备的下一指针指向所述第五终端设备,并将所述第五终端设备的上一指针指向所述第四终端设备。
在本发明的一种示例性实施例中,所述在确定与第二终端设备断开网络连接后,所述方法还包括:
启动互斥锁;
在确定所述第二标识信息从所述双向链表结构队列中删除后,解除所述互斥锁。
根据本发明的第二方面,提供一种心跳连接检测装置,包括:
设备数量获取模块,用于确定当前进行心跳连接检测的终端设备的数量N,N为大于1的整数;
标识信息获取模块,用于从双向链表结构队列的队尾处获取N个终端设备的标识信息;
心跳连接检测模块,用于根据N个终端设备的标识信息对所述N个终端设备进行心跳连接检测,并将所述N个终端设备的标识信息从所述双向链表结构队列中移除;
目标终端设备插入模块,用于对所述N个终端设备进行心跳连接检测后,将所述N个终端设备中保持网络连接的目标终端设备的标识信息插入所述双向链表结构队列的头部。
根据本发明的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如第一方面中任一项所述的心跳连接检测方法。
根据本发明的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面中任一项所述的心跳连接检测方法。
综上所述,本发明实施例的心跳连接检测方法,确定当前进行心跳连接检测的终端设备的数量N,N为大于1的整数;从双向链表结构队列的尾部获取N个终端设备的标识信息;根据N个终端设备的标识信息对所述N个终端设备进行心跳连接检测,并将所述N个终端设备的标识信息从所述双向链表结构队列中移除;对所述N个终端设备进行心跳连接检测后,获取所述N个终端设备中保持网络连接的目标终端设备的目标标识信息,并将所述目标标识信息插入所述双向链表结构队列的头部,能够有计划性、有序性的对终端设备的网络连接进行管理,以提高心跳包发送的实时性、有效性、准确率,从而减少心跳包发送过程中的资源开销。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
图1是根据一示例性实施例提供的一种心跳连接检测方法的流程图;
图2是根据一示例性实施例提供的一种心跳连接检测过程的示意图;
图3是根据一示例性实施例提供的一种终端设备插入过程的示意图;
图4是根据一示例性实施例提供的一种终端设备删除过程的示意图;
图5是根据一示例性实施例提供的一种心跳连接检测装置的方框图;
图6是根据一示例性实施例提供的一种存储介质的示意图;
图7是根据一示例性实施例提供的一种电子设备的方框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的心跳连接检测方法进行说明。参考图1所示,上述的心跳连接检测方法可以包括以下步骤:
S1、确定当前进行心跳连接检测的终端设备的数量N,N为大于1的整数;
S2、从双向链表结构队列的尾部获取N个终端设备的标识信息;
S3、根据N个终端设备的标识信息对所述N个终端设备进行心跳连接检测,并将所述N个终端设备的标识信息从所述双向链表结构队列中移除;
S4、对所述N个终端设备进行心跳连接检测后,获取所述N个终端设备中保持网络连接的目标终端设备的目标标识信息,并将所述目标标识信息插入所述双向链表结构队列的头部。
综上所述,本发明实施例的心跳连接检测方法,确定当前进行心跳连接检测的终端设备的数量N,N为大于1的整数;从双向链表结构队列的尾部获取N个终端设备的标识信息;根据N个终端设备的标识信息对所述N个终端设备进行心跳连接检测,并将所述N个终端设备的标识信息从所述双向链表结构队列中移除;对所述N个终端设备进行心跳连接检测后,获取所述N个终端设备中保持网络连接的目标终端设备的目标标识信息,并将所述目标标识信息插入所述双向链表结构队列的头部,能够有计划性、有序性的对终端设备的网络连接进行管理,以提高心跳包发送的实时性、有效性、准确率,从而减少心跳包发送过程中的资源开销。
下面,将结合附图及实施例对本示例实施方式中的心跳连接检测方法中各个步骤进行更详细的说明。
在步骤S1中,确定当前进行心跳连接检测的终端设备的数量N,N为大于1的整数。在本发明的一种示例性实施例中,所述获取当前进行心跳连接检测的终端设备的数量N包括:
S11、获取当前所述双向链表结构队列中能够进行心跳连接检测的终端设备的当前总数量。
在本发明的一种示例性实施例中,在初始化时,创建一个只有头部(Head)、尾部(Tail)两个元素的双向链表数据结构,第一个终端设备A接入网络时,将A的标识信息插入双向链表数据结构中,双向链表数据结构的Head的Next下一指针和Tail的Prev上一指针指向A,A的上一指针指向Head,A的Next下一指针指向Tail,完成将A插入双向链表数据结构。进一步地,如果有新的终端设备B接入网络时,将B的标识信息插入双向链表数据结构中,双向链表数据结构的Head的Next下一指针和A的Prev指针指向B,B的Prev上一指针指向Head,B的Next 指向 A,完成将B插入双向链表数据结构。如此循环执行上述步骤,将所有接入网络的终端设备插入双向链表数据结构,形成双向链表结构队列。
在本发明的一种示例性实施例中,双向链表结构队列为软件应用后台的服务器进行网络连接管理的队列,该双向链表结构队列存储有服务器能够进行心跳连接检测的所有终端设备的标识信息,该标识信息表示信息可以为终端设备的网络协议(InternetProtocol,IP)地址以及端口信息等标识信息,可以从该双向链表结构队列获取服务器当前能够进行心跳连接检测的终端设备的当前总数量。
在双向链表结构队列中插入和删除一个元素仅需要修改当前元素的指针,时间复杂度为O(1),不需要移动其他元素。而在数组中,插入和删除元素时需要移动其他元素来保持顺序,时间复杂度为O(n),其中n是元素个数。因此,使用双向链表结构队列,在队列中插入元素和删除元素时,能够大大提高效率,进而提高心跳检测效率。另一方面,双向链表结构队列的顺序可以随机变动,无需像数组一样保持连续的内存空间来实现排序。对于需要频繁排序的情况,使用双向链表结构队列可以避免重复移动元素的开销,能够灵活的对队列中的元素进行排序,进而能够有效的节约排序时间。在本公开的一种示例性实施例中,用同样的硬件条件和程序开发语言进行实验测试(例如对1000个元素进行随机插入和多次排序)结果证明:使用数组形式存储时,对元素排序所占的时间占比为30%;而使用双向链表结构队列形式存储时,对元素排序所占的时间占比为10%。
此外,双向链表结构队列存储元素时,队列中每个元素的节点只需额外存储两个指针。而数组在数据初始化时,需要预留一整块连续的内存空间来存储元素,对于连续的内存空间长度需要有精准的预估,否则,元素个数比总的申请空间少会造成内存浪费。另外,采用数组存储时,元素个数比所申请空间多时需要重新申请新的符合长度的内存空间,且需要对已保存元素进行移动,使得采用数组存储时,内存占用较大,且需要占用大量运算资源。而且在实际的心跳连接管理场景中,由于网络连接状态的实时变化,使得心跳连接管理场景明显不具备精准预估准确长度的条件。因此,双向链表结构队列相对于数组更适用于心跳连接管理场景,并且可以节省一定的内存空间,且无需对已保存元素进行移动,进而实现内存优化。
S12、获取当前所述双向链表结构队列的分组数量;
基于上述内容,在本发明的一种示例性实施例中,上述获取当前所述双向链表结构队列的分组数量包括:
S121、计算网络连接的存活有效时长与心跳包发送周期的第一比值;
S122、基于所述第一比值确定分组数量。
在本发明的一种示例性实施例中,可以按照双向链表结构队列从队尾到对头的顺序对双向链表结构队列存储的终端设备进行分组,分组的数量可以采用如下公式计算:
groupNum = tcpTimeout / sendFreq – 1;(1)
其中,groupNum为分组数量,tcpTimeout为预先设置的网络连接的存活有效时长,sendFreq为心跳包发送周期,tcpTimeout / sendFreq即为该第一比值。
通过计算的分组数量对双向链表结构队列中的终端设备进行分组,能够分组对终端设备进行网络连接管理,节约服务器的内存和中央处理器(Central Processing Unit,CPU)时间分片,提高网络连接管理效率。
S13、获取当前速度因子。
基于上述内容,在本发明的一种示例性实施例中,上述获取当前速度因子包括:
S131、获取上次所述双向链表结构队列中能够进行心跳连接检测的终端设备的上一总数量;
S132、计算所述当前总数量与上一总数量的第二比值;
S133、基于所述第二比值确定所述当前速度因子。
在本发明的一种示例性实施例中,可以采用如下公式计算当前速度因子:
speed = int(round (connNum / sendLast));(2)
其中,connNum表示该当前总数量,sendLast该上一总数量,connNum / sendLast表示该第二比值,round (connNum / sendLast)表示对该第二比值进行四舍五入运算,int(round (connNum / sendLast))表示对该四舍五入运算结果进行取整运算,即当前速度因子为该四舍五入运算结果的取整结果。
S14、基于所述总数量、所述分组数量以及所述当前速度因子计算当前进行心跳连接检测的终端设备的数量N。
在本发明的一种示例性实施例中,可以采用如下公式计算当前进行心跳连接检测的终端设备的数量N:
N= (1 + connNum / groupNum)* speed;(3)
通过在进行心跳连接检测时,分批进行对终端设备心跳连接检测,并按照一定算法确定每次需要进行心跳连接检测的终端设备的数量,能够对终端设备进行分组,并且批量地心跳包发送,避免了算力过度集中造成硬件资源波动,提高了运算效率,并且提高资源利用率。
在步骤S2中,从双向链表结构队列的尾部获取N个终端设备的标识信息。
在本发明的一种示例性实施例中,该双向链表结构队列中尾部的网络连接始终有效期最长,往前逐渐递减,头部最短。这样能够保障最急需的进行心跳连接检测的终端设备排在尾部最后一个,以使最急需的进行心跳连接检测的终端设备最先得到处理。因此,每次进行心跳连接检测时,从双向链表结构队列的尾部获取N个终端设备的标识信息。
在步骤S3中,根据N个终端设备的标识信息对所述N个终端设备进行心跳连接检测,并将所述N个终端设备的标识信息从所述双向链表结构队列中移除。
在本发明的一种示例性实施例中,可以根据该N个终端设备的IP地址以及端口信息分别向该N个终端设备发送心跳包,以对该N个终端设备的标识信息对所述N个终端设备进行心跳连接检测。
进一步地,向该N个终端设备发送心跳包后,将该N个终端设备的IP地址以及端口信息等表示新从该双向链表结构队列中移除,以对该双向链表结构队列进行动态调整。
在步骤S4中,对所述N个终端设备进行心跳连接检测后,获取所述N个终端设备中保持网络连接的目标终端设备的目标标识信息,并将所述目标标识信息插入所述双向链表结构队列的头部。
在本发明的一种示例性实施例中,向该N个终端设备发送心跳包,若在预设时长内接收到该N个终端设备中目标终端设备的应答消息,则确定该目标终端设备保持网络连接,从该应答消息中获取该目标终端设备的目标标识信息,并将该目标标识信息插入所述双向链表结构队列的头部。由于双向链表结构队列尾部的N个终端设备刚刚进行心跳连接检测,该N个终端设备的连接有效期可以从新开始,因此N个终端设备的连接有效期最长,进而可以将该N个终端设备中保持网络连接的目标终端设备的标识信息插入到该双向链表结构队列的头部。
此处需要说明的是,可以预先为该双向链表数据结构队列中所有终端设备设置有效期。若在获取该N个终端设备的标识信息之前,例如图2所示,若位于双向链表结构队列尾部的终端设备A的连接有效期临近,还可以单独对A发生心跳包,以对A进行心跳连接检测。若确定A保持网络连接,则将A的标识信息插入到双向链表结构队列的头部。进一步地,将A的标识信息插入到双向链表结构队列的后,再获取当前进行心跳连接检测的终端设备的数量N。例如图2所示,如果确定的N为3,则向当前双向链表结构队列尾部的三个终端设备D、C以及B发生心跳包,以对D、C以及B进行心跳连接检测。
进一步地,对D、C以及B进行心跳连接检测后,将对D、C以及B从双向链表结构队列中移除,此时Z…F以及E位于双向链表结构队列的尾部。然后继续获取此刻进行心跳连接检测的终端设备的数量N,然后对该N个终端设备进行心跳连接检测。如此循环执行上述步骤,对双向链表结构队列中的所有终端设备进行心跳连接检测。
基于上述内容,在本发明的一种示例性实施例中,上述方法还包括:
S15、在接收到第一终端设备的网络连接请求时,将第一终端设备的第一标识信息插入双向链表结构队列的头部,所述网络连接请求包括所述第一标识信息。
在本发明的一种示例性实施例中,服务器在接收到第一终端设备的网络连接请求时,可以根据该网络连接请求中的第一标识信息建立与该第一终端设备的网络连接,并将该将第一终端设备的第一标识信息插入双向链表结构队列的头部。由于服务器刚刚与该第一终端设备建立网络连接。因此,第一终端设备的连接有效期刚刚开始,因此此刻第一终端设备的连接有效期最长,进而可以将该第一终端设备的第一标识信息插入到该双向链表结构队列的头部。
基于上述内容,所述将第一终端设备的第一标识信息插入双向链表结构队列的头部包括:
S151、确定位于所述双向链表结构队列的头部的第三终端设备;
S152、将所述双向链表结构队列的头部的下一指针以及所述第三终端设备的上一指针指向所述第一终端设备;
S153、将所述第一终端设备的上一指针指向所述双向链表结构队列的头部,并将所述第一终端设备的下一指针指向所述第三终端设备。
在本发明的一种示例性实施例中,如图3所示,双向链表结构队列中从头部Head到尾部Tail的终端设备分别为A、B以及C,则A位于双向链表结构队列的头部,若此时第一终端设备Z与服务器新建立网络连接,则将双向链表结构队列的头部的下一指针以及A的上一指针指向第一终端设备Z,将第一终端设备Z的上一指针指向双向链表结构队列的头部,并将第一终端设备Z的下一指针指向A。
基于上述内容,在本发明的一种示例性实施例中,上述在接收到第一终端设备的网络连接请求后,上述方法还包括:
S154、启动互斥锁;
S155、在确定所述第一标识信息插入双向链表结构队列的头部后,解除所述互斥锁。
在本发明的一种示例性实施例,服务器在接收到第一终端设备的网络连接请求,并根据网络连接请求中的第一终端设备的第一标识信息建立与第一终端设备的连接后,启动互斥锁,然后采用上述方式将第一标识信息插入双向链表结构队列的头部。确定该第一标识信息插入双向链表结构队列的头部后,解除该互斥锁。
通过在启动互斥锁后,将第一标识信息插入双向链表结构队列的头部,并在确定该第一标识信息插入双向链表结构队列的头部后,解除该互斥锁,确保同一时刻只存在一个数据读写入口,避免了在同一时刻存在终端设备与服务器新建立连接时,需要将其他终端设备的标识信息插入双向链表结构队列的头部,而导致的该第一标识信息被覆盖导致的数据丢失的问题,能够保障数据操作的安全性。
在本发明的一种示例性实施例中,基于上述内容,在本发明的一种示例性实施例中,上述方法还包括:
S16、在确定与第二终端设备断开网络连接时,将所述第二终端设备的第二标识信息从所述双向链表结构队列中删除。
在本发明的一种示例性实施例中,若用户关闭第二终端设备上运行的应用导致服务器与第二终端设备断开网络连接,则将该第二终端设备的第二标识信息从所述双向链表结构队列中删除。在本发明的一种示例性实施例中,若服务器向第二终端设备发送第一应用数据后,服务器在预设时长内未接收到第二终端设备根据该第一应用数据返回的数据,则确定与第二终端设备断开网络连接。
基于上述内容,在本发明的一种示例性实施例中,上述将所述第二终端设备的第二标识信息从所述双向链表结构队列中删除包括:
S161、确定所述第二终端设备的上一指针指向的第四终端设备;
S162、确定所述第二终端设备的下一指针指向的第五终端设备;
S163、将所述第四终端设备的下一指针指向所述第五终端设备,并将所述第五终端设备的上一指针指向所述第四终端设备。
在本发明的一种示例性实施例中,如图4所示,双向链表结构队列中从头部Head到尾部Tail的终端设备分别为A、B、E以及C,则若此时第二终端设备E断开网络连接,第二终端设备E的上一指针指向的第四终端设备为B,第二终端设备E的下一指针指向的第四终端设备为C。则将B的下一指针指向C,并将C的上一指针指向B,完成将第二终端设备E从双向链表结构队列中删除。
此处需要说明的是,如图2所示,若服务器对位于双向链表结构队列尾部的连接有效期临近的终端设备A进行心跳连接检测时,确定与A断开网络连接,A的上一指针指向的终端设备为B,则将B的下一指针指向双向链表结构队列的尾部,将双向链表结构队列的尾部的上一指针指向B,完成将A从双向链表结构队列中删除。
基于上述内容,在本发明的一种示例性实施例中,上述在确定与第二终端设备断开网络连接后,上述方法还包括:
S163、启动互斥锁;
S164、在确定所述第二标识信息从所述双向链表结构队列中删除后,解除所述互斥锁。
在本发明的一种示例性实施例,服务器在确定与第二终端设备断开网络连接后,启动互斥锁,然后采用上述方式将第二标识信息从所述双向链表结构队列中删除。确定第二标识信息从所述双向链表结构队列中删除后,解除该互斥锁。
通过在启动互斥锁后,将第二标识信息从所述双向链表结构队列中删除,并在第二标识信息从所述双向链表结构队列中删除后,解除该互斥锁,确保同一时刻只存在一个数据读写入口,避免了在同一时刻存在终端设备与服务器断开网络连接时,需要将其他终端设备的标识信息从双向链表结构队列中删除,而导致的第二标识信息未能从该双向结构队列中删除的问题,能够保障数据操作的准确性。
综上所述,本发明的心跳连接检测方法,一方面,通过采用双向链表的数据结构来存储心跳连接检测终端设备的标识信息,能够保障了队列元素的剔除和队列的修复效率足够高,能够适应队列中元素频繁删除和变动,进而随时调整各个终端设备的网络连接状态,提高网络连接管理效率;另一方面,将新建立网络连接的终端设备置于队列的最前面,即可符合网络连接的有效期在整体中最长的事实,能够稳定操作速度;第三方面,通过使用互斥锁,确保同一时刻只存在一个数据读写入口,大大提高了数据操作的安全性和准确度;此外,通过在进行心跳连接检测时,分批进行对终端设备心跳连接检测,并按照一定算法确定每次需要进行心跳连接检测的终端设备的数量,能够对终端设备进行分组,并且批量地心跳包发送,避免了算力过度集中造成硬件资源波动,提高了运算效率,并且提高资源利用率。
在介绍了本发明示例性实施方式的心跳连接检测方法之后,接下来,参考图5对本发明示例性实施方式的心跳连接检测装置进行描述。
参考图5所示,本发明示例性实施方式的心跳链接检测装置50可以包括:设备数量获取模块501、标识信息获取模块502、心跳连接检测模块503以及目标终端设备插入模块504;其中,
设备数量获取模块501,用于确定当前进行心跳连接检测的终端设备的数量N,N为大于1的整数;
标识信息获取模块502,用于从双向链表结构队列的队尾处获取N个终端设备的标识信息;
心跳连接检测模块503,用于根据N个终端设备的标识信息对所述N个终端设备进行心跳连接检测,并将所述N个终端设备的标识信息从所述双向链表结构队列中移除;
目标终端设备插入模块504,用于对所述N个终端设备进行心跳连接检测后,将所述N个终端设备中保持网络连接的目标终端设备的标识信息插入所述双向链表结构队列的头部。
在本发明的一种示例性实施例中,所述设备数量获取模块包括:
当前总数量获取单元,用于获取当前所述双向链表结构队列中能够进行心跳连接检测的终端设备的当前总数量;
分组数量获取单元,用于获取当前所述双向链表结构队列的分组数量;
当前速度因子获取单元,用于获取当前速度因子;
设备数量获取单元,用于基于所述总数量、所述分组数量以及所述当前速度因子计算当前进行心跳连接检测的终端设备的数量N。
在本发明的一种示例性实施例中,所述分组数量获取单元包括:
第一比值计算单元,用于计算网络连接的存活有效时长与心跳包发送周期的第一比值;
分组数量获取子单元,用于基于所述第一比值确定分组数量。
在本发明的一种示例性实施例中,所述当前速度因子获取单元包括:
上一总数量获取单元,用于获取上次所述双向链表结构队列中能够进行心跳连接检测的终端设备的上一总数量;
第二比值计算单元,用于计算所述当前总数量与上一总数量的第二比值;
当前速度因子获取子单元,用于基于所述第二比值确定所述当前速度因子。
在本发明的一种示例性实施例中,所述装置还包括:
第一标识信息插入模块,用于:
在接收到第一终端设备的网络连接请求时,将第一终端设备的第一标识信息插入双向链表结构队列的头部,所述网络连接请求包括所述第一标识信息。
在本发明的一种示例性实施例中,所述第一标识信息插入模块包括:
第三终端设备确定模块,用于确定位于所述双向链表结构队列的头部的第三终端设备;
第一终端设备指向单元,用于将所述双向链表结构队列的头部的下一指针以及所述第三终端设备的上一指针指向所述第一终端设备;
第三终端设备指向单元,用于将所述第一终端设备的上一指针指向所述双向链表结构队列的头部,并将所述第一终端设备的下一指针指向所述第三终端设备。
在本发明的一种示例性实施例中,所述装置还包括:
第一互斥锁启动模块,用于:
在接收到第一终端设备的网络连接请求后,启动互斥锁;
在确定所述第一标识信息插入双向链表结构队列的头部后,解除所述互斥锁。
在本发明的一种示例性实施例中,所述装置还包括:
第二标识信息删除模块,用于:
在确定与第二终端设备断开网络连接时,将所述第二终端设备的第二标识信息从所述双向链表结构队列中删除。
在本发明的一种示例性实施例中,所述
第二标识信息删除模块,用于:
第四终端设备确定模块,用于确定所述第二终端设备的上一指针指向的第四终端设备;
第五终端设备确定模块,用于确定所述第二终端设备的下一指针指向的第五终端设备;
第二标识信息删除单元,用于将所述第四终端设备的下一指针指向所述第五终端设备,并将所述第五终端设备的上一指针指向所述第四终端设备。
在本发明的一种示例性实施例中,所述装置还包括:
第二互斥锁启动模块,用于:
在确定与第二终端设备断开网络连接后,启动互斥锁;
在确定所述第二标识信息从所述双向链表结构队列中删除后,解除所述互斥锁。
由于本发明实施方式的心跳连接检测装置的各个功能模块与上述心跳连接检测方法发明实施方式中相同,因此在此不再赘述。
在介绍了本发明示例性实施方式的心跳连接检测方法、心跳连接检测装置之后,接下来,参考图6对本发明示例性实施方式的存储介质进行说明。参考图6所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品600,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、C++等,还包括常规的过程式程序设计语言-诸如"C"语言或类似的程序设计语言。程序代码可以完全地在用户计算终端设备上执行、部分在用户计算终端设备上部分在远程计算终端设备上执行、或者完全在远程计算终端设备或服务器上执行。在涉及远程计算终端设备的情形中,远程计算终端设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算终端设备,或者,可以连接到外部计算终端设备(例如利用因特网服务提供商来通过因特网连接)。
在介绍了本发明示例性实施方式的存储介质之后,接下来,参考图7对本发明示例性实施方式的电子设备进行说明。
图7显示的电子设备70仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,电子设备70以通用计算终端设备的形式表现。电子设备70的组件可以包括但不限于:至少一个处理单元710、至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730、显示单元740。其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元710执行,使得所述处理单元710执行本说明书上述"示例性方法"部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元710可以执行如图1中所示的步骤S1至步骤S4。
存储单元720可以包括易失性存储单元,例如随机存取存储单元(RAM)7201和/或高速缓存存储单元7202,还可以进一步包括只读存储单元(ROM)7203。存储单元720还可以包括具有一组(至少一个)程序模块7205的程序/实用工具7204,这样的程序模块7205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以包括数据总线、地址总线和控制总线。
电子设备70也可以与一个或多个外部设备80(例如键盘、指向终端设备、蓝牙终端设备等)通信,这种通信可以通过输入/输出(I/O)接口750进行。电子设备70还包括显示单元740,其连接到输入/输出(I/O)接口750,用于进行显示。并且,电子设备70还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备70的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备70使用其它硬件和/或软件模块,包括但不限于:微代码、终端设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。应当注意,尽管在上文详细描述中提及了速率控制装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (13)
1.一种心跳连接检测方法,其特征在于,包括:
确定当前进行心跳连接检测的终端设备的数量N,N为大于1的整数;
从双向链表结构队列的尾部获取N个终端设备的标识信息;
根据N个终端设备的标识信息对所述N个终端设备进行心跳连接检测,并将所述N个终端设备的标识信息从所述双向链表结构队列中移除;
对所述N个终端设备进行心跳连接检测后,获取所述N个终端设备中保持网络连接的目标终端设备的目标标识信息,并将所述目标标识信息插入所述双向链表结构队列的头部。
2.根据权利要求1所述的方法,其特征在于,所述确定当前进行心跳连接检测的终端设备的数量N包括:
获取当前所述双向链表结构队列中能够进行心跳连接检测的终端设备的当前总数量;
获取当前所述双向链表结构队列的分组数量;
获取当前速度因子;
基于所述总数量、所述分组数量以及所述当前速度因子计算当前进行心跳连接检测的终端设备的数量N。
3.根据权利要求2所述的方法,其特征在于,所述获取所述双向链表结构队列中分组的分组数量包括:
计算网络连接的存活有效时长与心跳包发送周期的第一比值;
基于所述第一比值确定分组数量。
4.根据权利要求2所述的方法,其特征在于,所述获取当前速度因子包括:
获取上次所述双向链表结构队列中能够进行心跳连接检测的终端设备的上一总数量;
计算所述当前总数量与上一总数量的第二比值;
基于所述第二比值确定所述当前速度因子。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到第一终端设备的网络连接请求时,将第一终端设备的第一标识信息插入双向链表结构队列的头部,所述网络连接请求包括所述第一标识信息。
6.根据权利要求5所述的方法,其特征在于,所述将第一终端设备的第一标识信息插入双向链表结构队列的头部包括:
确定位于所述双向链表结构队列的头部的第三终端设备;
将所述双向链表结构队列的头部的下一指针以及所述第三终端设备的上一指针指向所述第一终端设备;
将所述第一终端设备的上一指针指向所述双向链表结构队列的头部,并将所述第一终端设备的下一指针指向所述第三终端设备。
7.根据权利要求5所述的方法,其特征在于,所述在接收到第一终端设备的网络连接请求后,所述方法还包括:
启动互斥锁;
在确定所述第一标识信息插入双向链表结构队列的头部后,解除所述互斥锁。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定与第二终端设备断开网络连接时,将所述第二终端设备的第二标识信息从所述双向链表结构队列中删除。
9.根据权利要求8所述的方法,其特征在于,所述将所述第二终端设备的第二标识信息从所述双向链表结构队列中删除包括:
确定所述第二终端设备的上一指针指向的第四终端设备;
确定所述第二终端设备的下一指针指向的第五终端设备;
将所述第四终端设备的下一指针指向所述第五终端设备,并将所述第五终端设备的上一指针指向所述第四终端设备。
10.根据权利要求8所述的方法,其特征在于,所述在确定与第二终端设备断开网络连接后,所述方法还包括:
启动互斥锁;
在确定所述第二标识信息从所述双向链表结构队列中删除后,解除所述互斥锁。
11.一种心跳连接检测装置,其特征在于,包括:
设备数量获取模块,用于确定当前进行心跳连接检测的终端设备的数量N,N为大于1的整数;
标识信息获取模块,用于从双向链表结构队列的队尾处获取N个终端设备的标识信息;
心跳连接检测模块,用于根据N个终端设备的标识信息对所述N个终端设备进行心跳连接检测,并将所述N个终端设备的标识信息从所述双向链表结构队列中移除;
目标终端设备插入模块,用于对所述N个终端设备进行心跳连接检测后,将所述N个终端设备中保持网络连接的目标终端设备的标识信息插入所述双向链表结构队列的头部。
12.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至10中任一项所述的心跳连接检测方法。
13.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1至10中任一项所述的心跳连接检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311361185.4A CN117118876B (zh) | 2023-10-20 | 2023-10-20 | 心跳连接检测方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311361185.4A CN117118876B (zh) | 2023-10-20 | 2023-10-20 | 心跳连接检测方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117118876A CN117118876A (zh) | 2023-11-24 |
CN117118876B true CN117118876B (zh) | 2024-03-08 |
Family
ID=88796921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311361185.4A Active CN117118876B (zh) | 2023-10-20 | 2023-10-20 | 心跳连接检测方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117118876B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254179A (zh) * | 2016-08-05 | 2016-12-21 | 深圳先进技术研究院 | 一种心跳包异步控制方法及装置 |
CN106506253A (zh) * | 2016-09-08 | 2017-03-15 | 深圳先进技术研究院 | 一种基于tcp/ip通信协议的在线客户端数量的统计系统及方法 |
CN111343218A (zh) * | 2018-12-18 | 2020-06-26 | 杭州光启人工智能研究院 | 基于心跳报文数据发送和接收方法、存储介质及处理器 |
CN112394886A (zh) * | 2021-01-21 | 2021-02-23 | 全时云商务服务股份有限公司 | 客户端心跳续约与过期检测方法、装置及计算机可读介质 |
CN113596619A (zh) * | 2021-06-22 | 2021-11-02 | 深圳市泛海数据科技有限公司 | 消防物联网多设备状态判断方法、装置、设备及存储介质 |
CN115665016A (zh) * | 2022-09-27 | 2023-01-31 | 北京二六三企业通信有限公司 | 心跳监听的方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7412454B2 (en) * | 2003-09-03 | 2008-08-12 | International Business Machines Corporation | Data structure supporting random delete and timer function |
-
2023
- 2023-10-20 CN CN202311361185.4A patent/CN117118876B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254179A (zh) * | 2016-08-05 | 2016-12-21 | 深圳先进技术研究院 | 一种心跳包异步控制方法及装置 |
CN106506253A (zh) * | 2016-09-08 | 2017-03-15 | 深圳先进技术研究院 | 一种基于tcp/ip通信协议的在线客户端数量的统计系统及方法 |
CN111343218A (zh) * | 2018-12-18 | 2020-06-26 | 杭州光启人工智能研究院 | 基于心跳报文数据发送和接收方法、存储介质及处理器 |
CN112394886A (zh) * | 2021-01-21 | 2021-02-23 | 全时云商务服务股份有限公司 | 客户端心跳续约与过期检测方法、装置及计算机可读介质 |
CN113596619A (zh) * | 2021-06-22 | 2021-11-02 | 深圳市泛海数据科技有限公司 | 消防物联网多设备状态判断方法、装置、设备及存储介质 |
CN115665016A (zh) * | 2022-09-27 | 2023-01-31 | 北京二六三企业通信有限公司 | 心跳监听的方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于心跳行为分析的木马快速检测方法;孟磊;刘胜利;刘龙;陈嘉勇;孙海涛;;计算机工程(14);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117118876A (zh) | 2023-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7454662B2 (ja) | 情報送信方法、装置、読み取り可能な記憶媒体及び電子装置 | |
US10318467B2 (en) | Preventing input/output (I/O) traffic overloading of an interconnect channel in a distributed data storage system | |
CN109710615B (zh) | 数据库的访问管理方法、系统、电子设备和存储介质 | |
US9167455B2 (en) | Virtualized wireless communication system and establishing method thereof | |
CN114500633B (zh) | 数据转发方法、相关装置、程序产品及数据传输系统 | |
CN108337301A (zh) | 应用程序的网络请求处理方法、装置、服务器及存储介质 | |
CN117118876B (zh) | 心跳连接检测方法、装置、电子设备及存储介质 | |
CN118400303A (zh) | 一种网络探测的方法、装置、电子设备及存储介质 | |
US10628242B1 (en) | Message stream processor microbatching | |
CN114900477B (zh) | 报文处理方法、服务器、电子设备及存储介质 | |
US11662927B2 (en) | Redirecting access requests between access engines of respective disk management devices | |
CN110677463B (zh) | 并行数据传输方法、装置、介质及电子设备 | |
US10819622B2 (en) | Batch checkpointing for inter-stream messaging system | |
CN110798398A (zh) | 群组消息管理方法、装置、设备和介质 | |
CN110908886A (zh) | 一种数据发送方法、装置、电子设备和存储介质 | |
CN111210505A (zh) | 3d模型加载方法、服务器、存储介质、处理器 | |
CN113315809B (zh) | 一种医疗设备的高速数据传输延迟容忍方法及系统 | |
CN111865675B (zh) | 容器的收发限速方法、装置及系统 | |
CN106060158B (zh) | 一种判断目标设备的状态的方法和装置 | |
US20230236795A1 (en) | Data processing method implemented at edge switch, electronic device, and program product | |
CN114064362B (zh) | 用于分布式存储中的数据恢复方法、系统及计算机可读存储介质 | |
CN113127222B (zh) | 数据发送方法、装置、设备和介质 | |
CN108519912B (zh) | 数据清洗方法、装置、计算机可读存储介质及电子设备 | |
CN111367875B (zh) | 一种话单文件处理方法、系统、设备及介质 | |
CN118590480A (zh) | 一种文件传输方法、装置、设备和存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |