心跳机制详解

来源:互联网 发布:废铁战士的时光机 知乎 编辑:程序博客网 时间:2024/05/21 11:34

什么是心跳机制?

  发送方按照一定规则(周期性发送、空闲发送等等)向接收方发送固定格式的消息,接受方收到消息后回复一个固定格式的消息,如果长时间没有收到,比如心跳周期的3倍,则认为当前连接失效,将其断开。
注:发送方可以是客户端或者服务端,根据实际情况而定,常见是客户端作为发送方。

应用场景

  判断长连接是否存活:当长连接没有流量时,无法判断是通信异常引起还是通信正常没有业务流量引起,通过发送心跳包进行判断。

实现技术

方式一:应用层实现心跳机制(推荐)

优点:实现策略灵活,能及时检测到连接状态;
缺点:每个应用都需要有一套,无法底层共用;

方式二:利用TCP的KeepAlive机制

  TCP协议本身提供了心跳机制,需要通过SO_KEEPALIVE开启。默认情况下,当连接空闲2小时后,每隔75s发送一次心跳包,如果连续9次没有收到响应则关闭连接。
优点:不需要二次开发,简单配置参数即可;
缺点:网络环境的复杂性使得KeepAlive机制容易失效;

原创粉丝点击