原理
隔固定时间客户端发送固定请求给服务端,服务端收到后回复固定信息,如果服务端在某时间范围内没收到心跳包可视客户端断开
作用
1.定时检查连接是否正常,能及时发现连接中断回收资源
2.用于连接保活,防火墙一般设置了自动把一定时间内没有数据交互的连接中断
常用场景
1.网络游戏:保证长连接
2.分布式服务:及时检测到失效节点并删除
常见实现方式
设置TCP选项
无论客户端还是服务端开启TCP选项的KeepAlive参数后,都会自动在规定时间内向对方发送心跳包,另一方也会自动回复.
业务层自己实现
服务端提供用于定时接受请求的心跳接口,客户端定时向心跳接口发送请求
方案对比
业务系统自己实现心跳机制可以定制更加完善的心跳包,tcp选项心跳一般仅仅只能用来保活,而定制的话还可以定制检查自己的各业务模块的功能,比如检查一些定时任务有没有在正常运行