微服務理論與實踐 五 微服務之間的互動

2021-07-29 10:09:56 字數 2087 閱讀 9546

microservice架構模式中的「開」是各個服務的內部實現,而其中的「閉」則是各個服務之間相互溝通的方式

微服務必須使用程序間通訊機制來互動。微服務架構有兩類ipc機制可選,非同步訊息機制和同步請求/響應機制。當設計服務的通訊模式時,需要考慮幾個問題:服務如何互動,每個服務如何標識api,如何公升級api,以及如何處理部分失敗。

1. api gateway 模式

1.1 背景

當決定將應用當作成一組微服務時,需要決定應用客戶端如何與服務端互動。方式有兩種:

(1)客戶端與服務端直接通訊

(2)採用api gateway,客戶端與api gateway互動,api gateway封裝具體的服務細節,並提供api給各個客戶端。

乙個客戶端可以直接給多個微服務中的任何乙個發起請求。每乙個微服務都會有乙個對外服務端。這個url可能會對映到微服務的負載均衡上,它再**請求道具體的節點上。

缺點:l  客戶端的需求量與微服務暴露的細粒度的api數量不匹配,客戶端需要發起多個請求才能獲取需與的完整資料。

l  客戶端請求的微服務的協議可能不是web友好型的,例如微服務是rpc或amqp協議的,他們都不是web友好型的

l  很難重構微服務

1.3 api gateway

apigateway是乙個伺服器,也是進入系統的唯一節點。api gateway封裝系統內部的架構,對每個客戶端提供api。

1.3.1 api gateway的目標

支援api介面動態發布及運營,包括但不限於:

(1)安全認證

a. 應用申請審核通過後生成公鑰,開放平台需提供支援分布式系統的金鑰管理

服務可設定為兩個安全等級:需授權訪問和無需授權訪問(後者即任意客戶端都可以發起呼叫),預設所有api都需授權訪問。

b. 非正常狀態(禁用、停用、黑名單等)的應用直接拋異常不允許訪問——熔斷機制

c. 呼叫次數、呼叫頻率、併發數可執行時控制,避免某請求量過大影響其他應用的呼叫。

d. 可對某個應用某個api設定強制熔斷,所有請求無視閥值直接丟擲異常。

(2)api管理

所有api可後台查詢管理,包括動態發布、引數對映配置、後端服務介面配置、api禁用、啟用,多版本、分組、分級別等。

(3)應用管理

後台管理開放平台接入的應用(第三方應用),包括查詢、禁用、啟用、審核。

(4)計費收費

a. api的呼叫統計,每筆請求時間,響應時間,響應狀態。

b. api的計費計算,按照請求量和請求資源計費,實現多種計費模型。(預付費,後收費。按量,按時間週期。)

(5)       熔斷

(6)       流量統計及限流

l  支援現有子系統rpc協議的api動態發布及運營,外部請求透傳。

l  支援json、xml響應報文,可以請求時選取所需報文格式。

l  支援動態直接將後端soa服務暴露為api。

l  支援動態將普通web介面暴露為api。

l  支援動態將mq服務暴露為api。

l  支援多個服務組合編排後暴露為api。

l  請求的**、合成和協議轉換

l  給客戶端提供乙個定製化的api

1.3.2 api gateway模式的優缺點

(1)優點:

l  特定的api。使客戶端只需跟gateway打交道,減少客戶端與服務端的通訊次數,也簡化了客戶端的**。

l  去報客戶端不需要受服例項位置的影響

l  為每套客戶端提供最優的api

l  降低請求/往返次數

(2)缺點

l  api gateway是乙個高可用的元件,必須要開發、部署和管理。開發者必須要更新api gateway來提供新服務提供點來支援新暴露的微服務。

l  api gateway會造成多餘的網路跳轉

2.3 api 版本管理

微服務理論與實踐 六 服務註冊與發現

l 服務的客戶端 包括api閘道器或者其他服務 如何獲取服務端例項的位置 l 每個服務端例項都會在特定的位置 主機及埠 通過http rest或者thrift等方式發布乙個遠端api l 服務端例項的具體數量和位置會發生動態變化 l 虛擬機器與容器通常會被分配動態ip位址 向某一服務傳送請求時,客戶...

五 微服務之間的互動

microservice架構模式中的 開 是各個服務的內部實現,而其中的 閉 則是各個服務之間相互溝通的方式 微服務必須使用程序間通訊機制來互動。微服務架構有兩類ipc機制可選,非同步訊息機制和同步請求 響應機制。當設計服務的通訊模式時,需要考慮幾個問題 服務如何互動,每個服務如何標識api,如何公...

微服務與微服務架構

微服務 微服務強調的是服務的大小,它關注的是某乙個點,是具體解決某乙個問題 提供落地對應服務的乙個服務應用,狹意的看,可以看作eclipse裡面的乙個個微服務工程 或者module。例如 訂單服務 支付服務 微服務架構 馬丁.福勒 martin fowler 微服務架構介紹 微服務架構是 種架構模式...