Spring-cloud & Netflix 源碼解析:Eureka 服務注冊發現接口 ****


http://www.idouba.net/spring-cloud-source-eureka-client-api/?utm_source=tuicool&utm_medium=referral

***************************

 先關注下netflix eureka server 原生提供的接口。https://github.com/Netflix/eureka/wiki/Eureka-REST-operations 這是對非java的服務使用eureka時可以使用的rest接口。對於java應用,直接使用java的接口就可以

Netxflix 提供的主要操作定義在com.netflix.discovery.EurekaClient中。主要操作有:

eurekaclient_outline

其實現類是 com.netflix.discovery.DiscoveryClient。

Spring cloud中對其進行了封裝,定義在org.springframework.cloud.client.discovery.DiscoveryClient中,

spring_cloud_eureka_client

可以看到比netflix原生的接口簡單了很多,其實現類是org.springframework.cloud.netflix.eureka.EurekaDiscoveryClient,里面所有的操作都是對netflix 原生的接口的封裝,可以認為這是eureka 客戶端需要向外提供的功能。

主要提供的服務如下:

1. 獲取服務名為serviceId的所有服務實例。實現就是調用netflix的eurekaClient來獲取。

2. 獲取本地發服務實例。解析EurekaInstanceConfig類型的服務實例配置,是自己當前服務的配置,本來這個對象就是在client中要注冊到服務端的。

3. 獲取所有的服務。不同於netflix的的eurekaClient需要得到一個Applications的復雜對象,只是得到用戶關心的服務名即可。

spring cloud 前面接口中涉及的主要數據結構是ServiceInstance

serviceInstance_outline

其實現類org.springframework.cloud.netflix.eureka.EurekaDiscoveryClient.EurekaServiceInstance,定義在spring-cloud-netflix-eureka-client 包中,是EurekaDiscoveryClient的一個內部靜態類,可以看到是對netflix原生的com.netflix.appinfo.InstanceInfo的一種封裝。

看到實現的接口 org.springframework.cloud.client.ServiceInstance,定義在spring-cloud-commons中。也體現了spring clound的一種設計哲學,在common中只是規定(定義)行為,而實現在其他包中。

org.springframework.cloud.client.discovery.DiscoveryClient 也是定義在common中,而其實現類org.springframework.cloud.netflix.eureka.EurekaDiscoveryClient定義在spring-cloud-netflix-eureka-client中,即spring cloud需要有服務發現功能,eureka只是其中的一種選擇。

完。

 

原創文章。為了維護文章的版本一致、最新、可追溯,轉載請注明: 轉載自idouba

本文鏈接地址: Netflix源碼解析之Eureka:Eureka 服務注冊發現接口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM