【网络技术】心跳机制(入门讲解)

简介: 【网络技术】心跳机制(入门讲解)


👉博__主👈:米码收割机

👉技__能👈:C++/Python语言

👉公众号👈:测试开发自动化【获取源码+商业合作】

👉荣__誉👈:阿里云博客专家博主、51CTO技术博主

👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。



1. 原理

客户端每隔N秒向服务端发送一个心跳消息,服务端收到心跳消息后,回复同样的心跳消息给客户端。如果服务端或客户端在M秒(M>N)内都没有收到包括心跳消息在内的任何消息,即心跳超时,就认为目标TCP连接已经断开。


2. 作用

通知服务器,客户端存活状态,一旦服务器监测到在某段时间没有收到客户端发来的心跳包,服务器就会释放曾经为此客户端分配的所有资源,例如Socket连接


3. 实现方案

3.1 方案一:服务器主动发送心跳包

服务器建立定时器,定时发送心跳包给到客户端,客户端收到心跳包后,立即发送心跳包给到服务器,服务器收到客户端发来的心跳包后确认客户端的连接可用,不执行释放socket相关的操作。

如果服务器端没规定的时间间隔内没有收到客户端响应的心跳包,服务器端就认为客户端的连接不可用,执行释放socket相关的操作。


优势:对于那些需要管理和监控大量客户端连接的服务器来说,服务器可以更加主动地控制和释放不活跃的连接,及时回收资源。

劣势:当客户端数量非常大时,服务器可能需要频繁地发送大量心跳包,这可能会导致不必要的网络和服务器负载。对服务器的要求比较高。

3.2 方案二:客服端主动发送心跳包

客户端定时主动的发送心跳包给到服务器端,服务器端收到心跳包后对相关的socket进行加标识,然后服务器端发送响应心跳包给到客户端。客户端收到心跳包认为连接可用。

如果服务器端超过一段时间没有收到心跳包,相关的socket的标识符回进行降权,直至失效,然后服务器端会释放这个socket相关的资源。这个对服务器的性能要求不那么高。


优势:服务器不需要主动检查每一个连接的状态,而是由客户端主动报告其状态,这样可以减轻服务器的负担。

劣势:客户端需要实现心跳逻辑,并确保在连接期间定期发送心跳。对于电池供电的移动设备来说,频繁的心跳可能会消耗更多的电量。


相关文章
|
监控 网络协议 Linux
心跳机制方案
心跳机制方案
770 1
|
存储 程序员 芯片
虚拟地址和物理地址之间的区别
【4月更文挑战第12天】
2175 2
虚拟地址和物理地址之间的区别
|
监控 物联网 Java
打造高可用系统:深入了解心跳检测机制
本文介绍了分布式系统中**心跳检测**的重要机制,用于监测系统节点的健康状态和通信畅通。心跳检测通过定期发送信号,若节点在预定期限内未响应则视为可能失效。处理机制包括重试、报警和自动修复。文章还提到了**周期检测**和**累计失效检测**两种策略,并给出Java代码示例展示心跳检测实现。此外,列举了心跳检测在分布式数据库、微服务和物联网等场景的应用,以及优化策略如动态调整心跳频率和优化超时机制。最后,强调了心跳检测对系统稳定性和高可用性的关键作用。
2982 2
|
网络协议 安全 网络性能优化
OSI 七层模型详解
本文介绍了 OSI 七层模型各层的功能与常见协议。物理层负责比特流传输,涉及信号编码与接口标准;数据链路层组织帧并实现差错控制;网络层处理路由与寻址;传输层提供端到端数据传输服务;会话层管理会话连接;表示层处理数据编码与加密;应用层直接为用户提供服务。文中还列举了各层的典型协议,如 IP、TCP、HTTP 等,详细解析其作用与应用场景。
4514 3
|
JavaScript 前端开发 调度
事件驱动模型
【10月更文挑战第7天】事件驱动模型
890 7
关于 VS调试时出现“当前不会命中断点。还没有为该文将加载任何符号。” 的解决方法
关于 VS调试时出现“当前不会命中断点。还没有为该文将加载任何符号。” 的解决方法
关于 VS调试时出现“当前不会命中断点。还没有为该文将加载任何符号。” 的解决方法
|
人工智能 JavaScript 前端开发
​​大模型开发从入门到部署
本内容系统讲解大语言模型技术,涵盖BERT、GPT等主流架构,深入Transformer原理与自注意力机制,结合PyTorch实战,详解张量操作、自动求导与模型训练,并介绍RAG、Agent等典型应用场景,助你掌握AI核心技术。
1519 0
|
边缘计算 网络协议 网络架构
DoIP看这篇就够了,吐血整理
DoIP看这篇就够了,吐血整理
DoIP看这篇就够了,吐血整理
|
Kubernetes 前端开发 分布式数据库
工作中常见的软件系统部署架构
在实际应用中,会根据项目的具体需求、规模、性能要求等因素选择合适的部署架构,或者综合使用多种架构模式来构建稳定、高效、可扩展的系统。
2072 2
|
安全 开发工具 git
如何回滚Git中的提交?
如何回滚Git中的提交?
3341 0

热门文章

最新文章