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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章