Spring Cloud Eureka REST 介面
Eureka 作為註冊中心,其本質是儲存了每個客戶端的註冊資訊,Ribbon在轉發的時候會獲取註冊中心的服務列表,然後根據對應的路由規則來選擇一個服務給Feign來進行呼叫。
如果我們不是Spring Cloud技術選型,也想用Eureka可以嗎?完全可以
如果不是Spring Cloud技術棧個人推薦用zk之類的會方便些,當然用Eureka也是可以的
這樣的話就涉及到如何註冊資訊,獲取註冊的資訊等等操作了
其實Eureka也考慮到了這點,提供了很多REST介面來給我們呼叫
我們舉一個比較有用的案列來說明下
Nginx動態進行upstream的配置
在架構變成微服務之後,具體的微服務是沒有依賴的,可以獨立部署,埠也可以隨機分配,反正會註冊到註冊中心裡面,呼叫方也無需關心提供方的ip和port, 這些都可以從註冊中心拿到
但是有一個問題是API閘道器的部署能這樣嗎,API閘道器大部分會用Nginx做負載,那麼Nginx就必須知道API閘道器有哪幾個節點,這樣閘道器服務就不能隨便啟動了,需要固定好
當然閘道器是不會經常變動,也不會經常釋出的,這樣其實也沒什麼大問題,唯一不好的就是不能自動擴容了
其實利用Eureka提供的API我們可以獲取到某個服務的例項資訊,也就是說我們可以根據Eureka中的資料來動態配置Nginx的upstream
這樣就可以做到閘道器的自動部署和擴容了,網上也有很多的方案,結合Lua指令碼來做,或者自己寫Sheel指令碼也都可以
下面我們說明下怎麼獲取Eureka中註冊的資訊
具體的介面資訊請檢視我上面貼的官方文件
獲取某個服務的註冊資訊
fsh-house是你的應用名稱也就是spring.application.name
預設是返回xml格式的資料,如果你想返回json資料的格式,在請求頭中新增下面2個即可:
Content-Type:application/json
Accept:application/json
如果Eureka開啟了認證,記得新增認證資訊,使用者名稱和密碼必須是Base64編碼過的
Authorization:Basic 使用者名稱:密碼
其餘的介面就不做過多講解了,大家自己去試試