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

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

***************************git

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

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

eurekaclient_outline

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

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

spring_cloud_eureka_client

能夠看到比netflix原生的接口簡單了不少,其實現類是org.springframework.cloud.netflix.eureka.EurekaDiscoveryClient,裏面全部的操做都是對netflix 原生的接口的封裝,能夠認爲這是eureka 客戶端須要向外提供的功能。數據結構

主要提供的服務以下:app

1. 獲取服務名爲serviceId的全部服務實例。實現就是調用netflix的eurekaClient來獲取。eclipse

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

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 服務註冊發現接口

相關文章
相關標籤/搜索