java Spring Cloud企業快速開發架構之SpringCloud-Eureka的REST API及API擴充套件
本節我們講解了一些經常用到的配置資訊及 Eureka 的 REST API,通過 API 可以做一些擴充套件。
Eureka REST API
Eureka 作為註冊中心,其本質是儲存了每個客戶端的註冊資訊,Ribbon 在轉發的時候會獲取註冊中心的服務列表,然後根據對應的路由規則來選擇一個服務給 Feign 來進行呼叫。如果我們不是 Spring Cloud 技術選型,也想用 Eureka,可以嗎?完全可以。
如果不是 Spring Cloud 技術棧,筆者推薦用 Zookeeper,這樣會方便些,當然用 Eureka 也是可以的,這樣的話就會涉及如何註冊資訊、如何獲取註冊資訊等操作。其實 Eureka 也考慮到了這點,提供了很多 REST 介面來給我們呼叫。
我們舉一個比較有用的案例來說明,比如對 Nginx 動態進行 upstream 的配置。
推薦分散式架構原始碼
在架構變成微服務之後,微服務是沒有依賴的,可以獨立部署,埠也可以隨機分配,反正會註冊到註冊中心裡面,呼叫方也無須關心提供方的 IP 和 Port,這些都可以從註冊中心拿到。
但是有一個問題:API 閘道器的部署能這樣嗎?API 閘道器大部分會用 Nginx 作為負載,那麼 Nginx 就必須知道 API 閘道器有哪幾個節點,這樣閘道器服務就不能隨便啟動了,需要固定。
當然閘道器是不會經常變動的,也不會經常釋出,這樣其實也沒什麼大問題,唯一不好的就是不能自動擴容了。
其實利用 Eureka 提供的 API 我們可以獲取某個服務的例項資訊,也就是說我們可以根據 Eureka 中的資料來動態配置 Nginx 的 upstream。
這樣就可以做到閘道器的自動部署和擴容了。網上也有很多的方案,結合 Lua 指令碼來做,或者自己寫 Sheel 指令碼都可以。
下面舉例說明如何獲取 Eureka 中註冊的資訊。具體的介面資訊請檢視官方文件““。
獲取某個服務的註冊資訊,可以直接 GET 請求::8761/eureka/apps/eureka-client-user-service。其中,eureka-client-user-service 是應用名稱,也就是 spring.application.name。
在瀏覽器中,資料的顯示格式預設是 XML 格式的,如圖 1 所示。
如果想返回 Json資料的格式,可以用一些介面測試工具來請求,比如 Postman,在請求頭中新增下面兩行程式碼即可。
如果 Eureka 開啟了認證,記得新增認證資訊,使用者名稱和密碼必須是 Base64 編碼過的 Authorization:Basic 使用者名稱:密碼,其餘的介面就不做過多講解了,大家可以自己去嘗試。Postman 直接支援了 Basic 認證,將選項從 Headers 切換到 Authorization,選擇認證方式為 Basic Auth 就可以填寫使用者資訊了。
填寫完之後,直接發起請求就可以了。我們切換到 Headers 選項中,就可以看到請求頭中已經多了一個 Authorization 頭。
後設資料使用
Eureka 的後設資料有兩種型別,分別是框架定好了的標準後設資料和使用者自定義後設資料。標準後設資料指的是主機名、IP 地址、埠號、狀態頁和健康檢查等資訊,這些資訊都會被髮布在服務登錄檔中,用於服務之間的呼叫。自定義後設資料可以使用 eureka.instance.metadataMap 進行配置。
自定義後設資料說得通俗點就是自定義配置,我們可以為每個 Eureka Client 定義一些屬於自己的配置,這個配置不會影響 Eureka 的功能。
自定義後設資料可以用來做一些擴充套件資訊,比如灰度釋出之類的功能,可以用後設資料來儲存灰度釋出的狀態資料,Ribbon 轉發的時候就可以根據服務的後設資料來做一些處理。當不需要灰度釋出的時候可以呼叫 Eureka 提供的 REST API 將後設資料清除掉。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994808/viewspace-2851236/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- (16) SpringCloud-Eureka的REST API及API擴充套件SpringGCCloudRESTAPI套件
- java Spring Cloud企業快速開發架構之SpringCloud-Spring Cloud EurekaJavaSpringCloud架構GC
- java Spring Cloud企業快速開發架構之Spring Boot Starter的介紹及使用JavaCloud架構Spring Boot
- (2)java Spring Cloud+Spring boot企業快速開發架構之Spring Cloud版本介紹JavaCloudSpring Boot架構
- java Spring Cloud企業快速開發架構之Ribbon結合RestTemplate實現負載均衡JavaSpringCloud架構REST負載
- (44)java Spring Cloud企業快速開發架構之Gateway實戰案例限流、熔斷、跨JavaSpringCloud架構Gateway
- BurpSuite 擴充套件開發[1]-API與HelloWoldUI套件API
- (41)java Spring Cloud企業快速開發架構之SpringCloud-Gateway的常用路由斷言工廠JavaSpringCloud架構GCGateway路由
- (20)java Spring Cloud企業快速開發架構之SpringCloud-Ribbon自定義負載均衡策略JavaSpringCloud架構GC負載
- 使用aggregation API擴充套件你的kubernetes APIAPI套件
- 11.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 磁碟管理SpringCloud分散式微服務架構Linux
- 如何擴充套件Kubernetes API?套件API
- 重構 - 設計API的擴充套件機制API套件
- HTML5新增API之DOM 擴充套件HTMLAPI套件
- API閘道器,企業級閘道器可擴充套件API套件
- 7.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 遠端登入SpringCloud分散式微服務架構Linux
- C 擴充套件庫 – mysql API套件MySqlAPI
- 8.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 檔案基本屬性SpringCloud分散式微服務架構Linux
- (1)java Spring Cloud+mybatis企業快速開發架構之微服務是什麼?它的優缺點有哪些?JavaSpringCloudMyBatis架構微服務
- 【擴充套件分享】多多客 API SDK套件API
- [擴充套件分享] 多多客 API SDK套件API
- 在 easywechat 包上擴充套件 API 介面套件API
- 9.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 檔案與目錄管理SpringCloud分散式微服務架構Linux
- UiPath收購Cloud Elements 擴充套件基於API的自動化功能UICloud套件API
- 10.Spring Cloud 分散式、微服務、雲架構企業快速開發架構之Linux 使用者和使用者組SpringCloud分散式微服務架構Linux
- Spring Cloud Alibaba 多租戶 saas 設計的企業開發架構SpringCloud架構
- [開發效率]Kotlin之擴充套件Kotlin套件
- burpsuite擴充套件開發之PythonUI套件Python
- 使用JBang構建Spring Boot Rest API教程Spring BootRESTAPI
- Spring Cloud Gateway 擴充套件支援動態限流SpringCloudGateway套件
- chrome擴充套件應用開發快速科普Chrome套件
- Laravel-admin 快速開發擴充套件(一)Laravel套件
- 微服務架構擴充套件FreeStyle微服務架構套件
- 如何在呼叫Marketing Cloud contact建立API時增加對擴充套件欄位的支援CloudAPI套件
- Spring Cloud 中自定義外部化擴充套件機制原理及實戰SpringCloud套件
- 企業快速開發平臺Spring Cloud+Spring Boot+Mybatis之Highcharts 基本餅圖CloudSpring BootMyBatis
- 企業快速開發平臺Spring Cloud+Spring Boot+Mybatis+ElementUICloudSpring BootMyBatisUI
- JMeter 擴充套件開發:自定義 Java SamplerJMeter套件Java