美文网首页
心跳保活

心跳保活

作者: Drew_MyINTYRE | 来源:发表于2021-07-03 10:32 被阅读0次

    长连接断开的原因

    • 长连接所在进程被杀死

    • NAT超时

    • 网络状态发生变化

    • 其他不可抗因素(网络状态差、DHCP的租期等等 )

    什么是 NAT 超时?

    NAT.png

    各运营商 & 地区的 NAT超时时间如下:

    timeout.png

    高效维持长连接的解决方案

    solution.png

    心跳机制 vs 轮询机制

    heart-keep-alive.png

    主流产品心跳机制分析对比

    compare.png

    对于心跳机制方案设计的要点在于

    • 心跳包的规格(内容 & 大小)

    心跳包 = 1个携带少量信息 & 大小在10字节内的信息包

    • 心跳发送的间隔时间

    每隔估计 x(< 5) 分钟发送心跳包1次

    • 断线重连机制 (核心 = 如何 判断长连接的有效性)

    若连续5次发送心跳后,服务器都无心跳应答,则视为长连接无效,确保当前网络的有效性 & 稳定性再开始长连接

    判断长连接是否有效的方案,仅供参考:

    long-live-isvalid.png

    TCP 协议自带 KeepAlive 的机制 是否 可替代心跳机制?

    无法替代,TCP KeepAlive机制 的作用 是检测连接的有无(死活),但无法检测连接是否有效。

    “连接有效”的定义 = 双方具备发送 & 接收消息的能力

    KeepAlive机制无法代替心跳机制,需要在应用层 自己实现心跳机制以检测长连接的有效性,从而高效维持长连接。

    KeepAlive 机制只是操作系统底层的一个被动机制,不应该被上层应用层使用,当系统关闭一个由KeepAlive 机制检查出来的死连接时,是不会主动通知上层应用的,只能通过调用相应IO操作的返回值中发现。

    总结

    2.png

    感谢

    相关文章

      网友评论

          本文标题:心跳保活

          本文链接:https://www.haomeiwen.com/subject/valeultx.html