心跳机制

心跳机制及基本实现

什么是心跳机制

心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制。这种机制在分布式系统中十分常见,也是确保分布式系统中的主机是否存在的有效机制之一。

一般的实现机制

心跳机制一般会有两种,客户端实现和服务器端实现。

客户端实现

客户端通过本机与服务器端连接后获得的 Socket 对象,在一定时间间隔中,发送附加有效信息的心跳包给服务器端。服务器端正确接收后,在服务器端上以适当的形式保存该客户端发送心跳包时间,以便用于检测客户端在规定的超时间隔内依然是否存在。

服务器端实现

服务器端需要保留所有已连接的客户端 Socket 对象,并在一定时间间隔中,发送空载的心跳包给所有客户端,并在本机中维护一个发送时间计时器。客户端正确接收到心跳包后,回传给服务器端一个附加有效信息的心跳包,用于证明客户端依然存在。若服务器端在计时器超时之后,仍没有收到客户端发送来的心跳包,可视为客户端断开连接。

尝实现

自己觉得好玩就尝试去实现,放在了 github,代码比较粗糙

Github: https://github.com/jianpeng957/heartbeat