背景
微服务架构,为了保证所有服务可用,当服务发生问题时能及时摘除有问题的服务需要定期检测服务可用性,即健康检查。通常健康健康检查包括TCP与HTTP两种。即定时发送TCP或HTTP请求,根据响应来确定服务是否可用。
Http健康检查
一般通过TCP定期请求来判定网络层是否正常,而通过Http请求判断应用层是否正常。
Http健康检查检查通常涉及如下几个方面
检测接口
服务要配置好请求接口,检测服务定期向指定的接口发送http请求,并根据接口响应码和响应时间判断。这个响应时间一般根据业务特性来配置。
检测周期
发起检测时每隔一定周期就需要检测一次。可以是几百毫秒或几秒,实际情况根据业务来确定。当连续几个周期内响应异常,那么尝试标记节点状态为异常,并临时摘除。当后续检测正常后再加入的可用节点集合中。
超时时间
为接口设定一个超时时间,每个周期检测时超过这个时间说明有异常。
状态码
实际检测过程过关心的是节点是否可用,因此关注的是响应状态,具体响应内容并不关心。可以通过Http响应码来判断状态。对于Http检测接口来说2xx和3xx可视为检查正常。其它状态码认为节点异常。
异常情况
当出现Http连接异常等问题,那么就直接可断定节点不可用。
总结
通过Http健康检查保证及时发现应用层问题,及时摘除异常节点,保证服务正常运行。