Eureka Client啓動源碼分析(2)
上篇文章主要分析了Eureka Client啓動的啓動流程
最終都是調用EurekaHttpClient接口的方法。
可以理解爲Eureka Client爲Server層,調用EurekaHttpClient(dao層的方法),進行發送HTTP請求。
下面來分析EurekaHttpClient的實現細節
EurekaHttpClient
public interface EurekaHttpClient {
EurekaHttpResponse<Void> register(InstanceInfo info);
EurekaHttpResponse<Void> cancel(String appName, String id);
EurekaHttpResponse<InstanceInfo> sendHeartBeat(String appName, String id, InstanceInfo info, InstanceStatus overriddenStatus);
EurekaHttpResponse<Void> statusUpdate(String appName, String id, InstanceStatus newStatus, InstanceInfo info);
EurekaHttpResponse<Void> deleteStatusOverride(String appName, String id, InstanceInfo info);
EurekaHttpResponse<Applications> getApplications(String... regions);
EurekaHttpResponse<Applications> getDelta(String... regions);
EurekaHttpResponse<Applications> getVip(String vipAddress, String... regions);
EurekaHttpResponse<Applications> getSecureVip(String secureVipAddress, String... regions);
EurekaHttpResponse<Application> getApplication(String appName);
EurekaHttpResponse<InstanceInfo> getInstance(String appName, String id);
EurekaHttpResponse<InstanceInfo> getInstance(String id);
void shutdown();
}
這裏使用了裝飾模式和匿名類,進行執行者的切換
實現類 | 描述 |
---|---|
SessionedEurekaHttpClient | 定期強制重新連接(會話),防止客戶機永遠堅持特定的Eureka服務器實例。保證了在集羣拓撲結構發生變化時負載分佈均勻。 |
RetryableEurekaHttpClient | 維護隔離列表,所有通信失敗的服務器都被列入隔離列表。第一次成功執行清除此列表,使這些服務器有資格服務未來的請求。一旦所有可用服務器用完,也會清除該列表 |
RedirectingEurekaHttpClient | 在重定向鏈接之後,對最終解析的端點執行請求。 如果必須單獨處理註冊和查詢請求,則應創建兩個不同的實例。 |
MetricsCollectingEurekaHttpClient | 實現請求響應狀態指標採集的Eureka遠程通訊客戶端裝飾器,爲EurekaHttpClient添加響應狀態指標採集向功能 |