微服務 Dubbo與Spring Cloud

2021-09-13 01:35:53 字數 2116 閱讀 5707

模組註解

provider: 暴露服務的服務提供方。

consumer: 呼叫遠端服務的服務消費方。

registry: 服務註冊與發現的註冊中心。

monitor: 統計服務的呼叫次調和呼叫時間的監控中心。

container: 服務執行容器。

流程詳解

0 服務容器負責啟動,載入,執行服務提供者(standalone 容器)。

1 服務提供者在啟動時,向註冊中心註冊自己提供的服務(zookeeper/redis)。

2 服務消費者在啟動時,向註冊中心訂閱自己所需的服務。

3 註冊中心返回服務提供者位址列表給消費者,如果有變更,註冊中心將基於長連線推送變更資料給消費者。

4 服務消費者,從提供者位址列表中,基於軟負載均衡演算法,選一台提供者進行呼叫,如果呼叫失敗,再選另一台呼叫。

5 服務消費者和提供者,在記憶體中累計呼叫次數和呼叫時間,定時每分鐘傳送一次統計資料到監控中心(根據資料可以動態調整權重)。

流程

請求統一通過 api 閘道器(zuul)來訪問內部服務。

閘道器接收到請求後,從註冊中心(eureka)獲取可用服務。

由 ribbon 進行均衡負載後,分發到後端具體例項。

微服務之間通過 feign 進行通訊處理業務。

hystrix 負責處理服務超時熔斷。

turbine 監控服務間的呼叫和熔斷相關指標。

dubbo 基於 rpc 通訊

spring cloud 基於 http 的 rest 方式

這兩種方式各有優劣。雖然從一定程度上來說,後者犧牲了服務呼叫的效能,但也避免了上面提到的原生 rpc 帶來的問題。而且 rest 相比 rpc 更為靈活,服務提供方和呼叫方的依賴只依靠一紙契約,不存在**級別的強依賴,這在強調快速演化的微服務環境下,顯得更加合適。

rest:表徵狀態轉移(representational state transfer),採用web 服務使用標準的 http 方法 (get/put/post/delete) 將所有 web 系統的服務抽象為資源,rest從資源的角度來觀察整個網路,分布在各處的資源由uri確定,而客戶端的應用通過uri來獲取資源的表徵。http協議所抽象的get,post,put,delete就好比資料庫中最基本的增刪改查,而網際網路上的各種資源就好比資料庫中的記錄(可能這麼比喻不是很好),對於各種資源的操作最後總是能抽象成為這四種基本操作,在定義了定位資源的規則以後,對於資源的操作通過標準的http協議就可以實現,開發者也會受益於這種輕量級的協議。rest是一種軟體架構風格而非協議也非規範,是一種針對網路應用的開發方式,可以降低開發的複雜性,提高系統的可伸縮性。

rpc:遠端方法呼叫,就是像呼叫本地方法一樣呼叫遠端方法。

1、服務端如何確定客戶端要呼叫的函式;

在遠端呼叫中,客戶端和服務端分別維護乙個【id->函式】的對應表, id在所有程序中都是唯一確定的。客戶端在做遠端過程呼叫時,附上這個id,服務端通過查表,來確定客戶端需要呼叫的函式,然後執行相應函式的**。

2、如何進行序列化和反序列化;

客戶端和服務端互動時將引數或結果轉化為位元組流在網路中傳輸,那麼資料轉化為位元組流的或者將位元組流轉換成能讀取的固定格式時就需要進行序列化和反序列化,序列化和反序列化的速度也會影響遠端呼叫的效率。

3、如何進行網路傳輸(選擇何種網路協議);

多數rpc框架選擇tcp作為傳輸協議,也有部分選擇http。如grpc使用http2。不同的協議各有利弊。tcp更加高效,而http在實際應用中更加的靈活(http允許傳輸任意型別的資料物件。正在傳輸的型別由content-type加以標記。)。

比較項 規範

rest

rpc通訊協議

一般使用tcp效能低

高靈活度高低

參考

微服務之 Dubbo

使用dubbo進行遠端呼叫實現服務互動,它支援多種協議,如hessian http rmi memcached redis等等。由於dubbo將這些協議的實現進行了封裝了,無論是服務端 開發服務 還是客戶端 呼叫服務 都不需要關心協議的細節,只需要在配置中指定使用的協議即可,從而保證了服務提供方與服...

微服務框架dubbo

下面是dubbo框架的架構圖 首先解釋微服務架構中各個元件分別對應到上面這張圖中是如何實現。服務發布與引用 對應實現是圖里的 proxy 服務 層,proxy 根據客戶端和服務端的xml配置檔案中的 介面描述,生成介面對應的客戶端和服務端的 stub 存根 使得客戶端呼叫服務端就像本地調 用一樣。服...

利用Dubbo框架搭建微服務

dubbo微服務框架搭建 一 服務端環境搭建 a provider安裝 b consumer安裝 c 註冊中心安裝 d 監控中心安裝 e 管理控制台安裝 二 服務端開發 a provider開發 b consumer開發 c 協議選擇 d 註冊中心選擇 官方英文 1 dubbo微服務框架官方指導 開...