美文网首页
心跳相关

心跳相关

作者: 7d972d5e05e8 | 来源:发表于2020-03-29 13:14 被阅读0次

一、TCP中已有SO_KEEPALIVE选项,为什么还要在应用层加入心跳包机制?

参考文章:https://blog.csdn.net/gettogetto/article/details/76736371?utm_source=blogxgwz9

其中有两点说的很好:
因为TCP协议中的SO_KEEPALIVE有几个致命的缺陷:

  1. keepalive只能检测连接是否存活,不能检测连接是否可用。比如服务器因为负载过高导致无法响应请求但是连接仍然存在,此时keepalive无法判断连接是否可用。
  2. 如果TCP连接中的另一方因为停电突然断网,我们并不知道连接断开,此时发送数据失败会进行重传,由于重传包的优先级要高于keepalive的数据包,因此keepalive的数据包无法发送出去。只有在长时间的重传失败之后我们才能判断此连接断开了。

我的理解:tcp的keepalive是传输层上的心跳检测,心跳在操作系统层面就返回了,数据包不会到达应用层,更不会由应用层处理了。对于这种包,应用层无法感知到,更谈何检测应用程序的心跳呢!所以,应用层的心跳必须要在应用层来设计,你既然要关心应用是否还在存活,就只能让心跳包达到该应用。举例:同一个物理机上有多个不同的应用跑着,你需要关注每个应用的存活,就必须对每个应用设计相应的心跳包。心跳包怎么设计,数据结构是什么样子的,每个应用可以各不相同,取决于你的心跳包协议,约定好了就OK。

相关文章

  • 心跳相关

    一、TCP中已有SO_KEEPALIVE选项,为什么还要在应用层加入心跳包机制? 参考文章:https://blo...

  • SOFABolt 源码分析17 - Heartbeat 心跳机制

    如上图所示,SOFABolt 中与心跳机制相关的为绿色的类。 类组成 心跳命令HeartbeatCommand:心...

  • 正确理解IM长连接的心跳及重连机制,并动手实现(有完整IM源码)

    1、引言 说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的。顾名思义就是证明是否还活着...

  • 长连接的心跳及重连设计

    前言 说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的。 顾名思义就是证明是否还活着的...

  • Xlearning Container

    Container相关逻辑 Heartbeat 心跳就是一个线程类。继承Thread。采用的协议为Applicat...

  • 心跳

    文/安澜 我撑着伞 走过一条人潮汹涌的街道 一朵春寒料峭的花 轻轻落在我的肩头 于是 ...

  • 心跳

    上班都是玩的心跳 从早上赶公交 挤公交 到中午吃饭叫餐 38 39 40 42 43 44 和同事一起叫的号...

  • 心跳

    夜里静静听着—— 我的心跳, 扑通、扑通、扑通, 有节奏、力度,又很弱小。 扑通、扑通、扑通, 像大大地喘着气, ...

  • 心跳

    感受几声心跳 头脑中的噗通 揣摩细胞频率 手随机械牵引 缓慢向前挪动 终究无力停留 唯有一段音韵 唤醒时间知觉 偶...

  • 心跳

    停电的下午 雨声淅淅沥沥 窗口的光打在书上 忽明忽暗 文字在跳跃 我开始摇晃 听 这是心跳的声音 听,心跳在拨弄身...

网友评论

      本文标题:心跳相关

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