目錄
- 前言
- 1. 服務呼叫基礎知識
- 1.1 常見的負載均衡方案
- 1.2 Spring Cloud的 Netflix Ribbon 和 Feign 的區別
- 1.1 目前幾種流行的服務呼叫組件對比
- 2. Ribbon
- 3. Feign 與 OpenFeign
- 最后
前言
參考資料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服務原理與實戰》
《B站 尚硅谷 SpringCloud 框架開發教程 周陽》
服務呼叫是在注冊中心的基礎之上,解決應該呼叫哪個服務實體的問題;
1. 服務呼叫基礎知識
1.1 常見的負載均衡方案
- 正向代理:
- 正向代理是一個位于客戶端和原始服務器 (origin server) 之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容回傳給客戶端;
- 客戶端必須要進行一些特別的設定才能使用正向代理;
- 常用于:訪問原來無法訪問的資源;做快取加速訪問資源;對客戶端訪問授權,上網進行認證;記錄用戶訪問記錄(上網行為管理),對外隱藏用戶資訊等;
- 反向代理:
- 反向代理實際運行方式是指以代理服務器來接受 Internet 上的連接請求,然后將請求轉發給內部網路上的服務器,并將從服務器上得到的結果回傳給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器;
- 常用于:保證內網的安全,可以使用反向代理提供WAF功能,阻止 Web 攻擊; 大型網站,通常將反向代理作為公網訪問地址,Web 服務器是內網;負載均衡,通過反向代理服務器來優化網站的負載;
1.2 Spring Cloud的 Netflix Ribbon 和 Feign 的區別
- Ribbon 是一個基于 HTTP 和 TCP 客戶端的負載均衡器,它可以在客戶端配置 RibbonServerList(服務端串列),然后輪詢請求以實作均衡負載,它在聯合 Eureka 使用時 RibbonServerList 會被 DiscoveryEnabledNIWSServerList 重寫,擴展成從 Eureka 注冊中心獲取服務端串列同時,它也會用 NIWSDiscoveryPing 來取代 IPing,它將職責委托給 Eureka 來確定服務端是否已經啟動, 使用 HttpClient 或 RestTemplate 模擬 HTTP 請求,步驟相當繁瑣;
- Feign 是在 Ribbon 的基礎上進行了一次改進,是一個使用起來更加方便的 HTTP 客戶端,采用介面的方式, 只需要創建一個介面,面向介面,然后在上面添加注解即可 ,將需要呼叫的其他服務的方法定義成抽象方法即可, 不需要自己構建 HTTP 請求,然后就像是呼叫自身工程的方法呼叫,而感覺不到是呼叫遠程方法,使得撰寫客戶端變得非常容易,類似于 MyBatis 的 @Mapper 注解;
1.1 目前幾種流行的服務呼叫組件對比
| 名稱 | 廠商 | 特點(優點) | 缺點 |
|---|---|---|---|
| Ribbon | Netflix | 客戶端負載均衡 | 開發較為復雜 |
| Feign 與 OpenFeign | Spring Cloud | 對 Ribbon 進行封裝 |
2. Ribbon
Spring Cloud Ribbon 是基于 Netflix Ribbon 實作的一套客戶端負載均衡的工具;提供客戶端的軟體負載均衡演算法和服務呼叫;
- 點擊訪問:4.1 基于 Ribbon 的負載均衡詳解
3. Feign 與 OpenFeign
Feign 是一個宣告式的 Web 服務客戶端,讓撰寫 Web 服務客戶端變得非常容易,只需創建一個介面并在介面上添加注解即可;
- 點擊訪問:4.2 基于 Feign 與 OpenFeign 的服務介面呼叫
最后

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/421368.html
標籤:其他
