https://blog.youkuaiyun.com/github_26672553/article/details/99764970
在上面实现了简单服务器健康检查机制。设置服务状态为up
或down
。
之前说了,不能一次检查没有通过就设为down
,所以需要有个计数器机制。
来简单粗暴的实现一下:
1、定期向url发送http请求,根据接口响应码和响应时间判断
2、每个server计数器为0
3、如果异常,计算器+1
。超过一定阀值后,则该节点状态改为down
4、异常节点恢复后,计算器-1
type HttpServer struct {
Host string
Weight int
Status string //状态。up正常,down宕机
FailCount int //计数器。默认0
}
健康检查类中
type HttpChecker struct {
Servers HttpServers
FailMax int //阀值
}
//创建Http服务检查对象
func NewHttpChecker(servers HttpServers) *HttpChecker