3.ping

一、简介

字如其名,ribbon采用IPing接口来探测server是否存活。

二、接口

接口很简单,代码如下:

public interface IPing {
    public boolean isAlive(Server server);
}

IPing有好多实现(但是大部分都没啥用),如下:
在这里插入图片描述

三、深入

这里如果使用eureka的话,其默认的实现为NIWSDiscoveryPing(可以从spring-cloud-netflix-eureka-client/META-INF/spring.factories中查找RibbonEurekaAutoConfiguration)

其实现也很简单,直接强转server为DiscoveryEnabledServer,获取其status,看看字段是否为UP。

另外,PingUrl,其使用发送http请求的方式来判断是否ping通。

四、辅助接口

通过IPing可以了解到,它的作用是ping某个server是否存活。那么对于服务列表如何检测呢?ribbon定义的接口为IPingStrategy:

public interface IPingStrategy {
    boolean[] pingServers(IPing ping, Server[] servers);
}

其实现很简单,就是轮询委托给IPing来ping,并存储结果,最后一并返回。

发布了62 篇原创文章 · 获赞 23 · 访问量 15万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章