dubbo相關

1. Dubbo簡介

Dubbo |db|是一個由阿里巴巴開源的、分佈式的RPC(Remote Procedure Call Protocol-遠程過程調用)和微服務框架,現爲Apache頂級項目。

Dubbo提供了三個關鍵功能:基於接口的遠程調用,容錯與負載均衡,服務自動註冊與發現。

Dubbo使得調用遠程服務就像調用本地java服務一樣簡單。

下圖爲Dubbo的結構圖:

 

關於Dubbo的使用可以參考官方文檔http://dubbo.apache.org ,本文不作贅述。

2. Dubbo服務暴露與消費過程

先來看下面問題:

1) Dubbo服務提供者發佈服務的流程

2) Dubbo服務消費者消費服務的流程

3) 什麼是本地暴露和遠程暴露,他們的區別

Dubbo服務提供者發佈服務過程:

先來看dubbo的啓動日誌:

圖中從上到下框起來的日誌分別是:

1) 暴露服務到本地

2) 暴露服務到遠程

3) 啓動netty服務

4) 連接zookeeper

5) 註冊服務到zookeeper

6) 監聽zookeeper中消費服務

關於這個過程的實現細節可以參考Dubbo官方文檔->實現細節->遠程調用細節->服務提供者暴露一個服務的詳細過程。截圖如下:

Dubbo服務消費者消費服務過程:

關於這個過程的實現細節可以參考Dubbo官方文檔->實現細節->遠程調用細節->服務消費者消費一個服務的詳細過程。截圖如下:

下面來看本地暴露於遠程暴露的區別:

本地暴露是暴露在本機JVM中,調用本地服務不需要網絡通信.

遠程暴露是將ip,端口等信息暴露給遠程客戶端,調用遠程服務時需要網絡通信.

3. Dubbo相關協議

Dubbo 允許配置多協議,在不同服務上支持不同協議或者同一服務上同時支持多種協議。

不同服務在性能上適用不同協議進行傳輸,比如大數據用短連接協議,小數據大併發用長連接協議。

Dubbo支持的協議主要有:

dubbo:

Dubbo 缺省協議是dubbo協議,採用單一長連接和 NIO 異步通訊,適合於小數據量大併發的服務調用,以及服務消費者機器數遠大於服務提供者機器數的情況。

反之,Dubbo 缺省協議不適合傳送大數據量的服務,比如傳文件,傳視頻等,除非請求量很低。rmi:

RMI協議採用阻塞式(同步)短連接和 JDK 標準序列化方式。適用範圍:傳入傳出參數數據包大小混合,消費者與提供者個數差不多,可傳文件。

hessian:

Hessian底層採用Http通訊(同步),採用Servlet暴露服務。適用於傳入傳出參數數據包較大,提供者比消費者個數多,提供者壓力較大,可傳文件。

dubbo還支持的其他協議有:http, webservice, thrift, memcached, redis

4. Dubbo相關配置

先看下面問題:

Dubbo主要的配置項有哪些,作用是什麼?

如果Dubbo的服務端未啓動,消費端能起來嗎?

Dubbo主要配置項:

配置應用信息:dubbo:application/

配置註冊中心相關信息:dubbo:registry/

配置服務協議:dubbo:protocol/

配置所有暴露服務缺省值:dubbo:provider/

配置暴露服務:dubbo:service/

配置所有引用服務缺省值:dubbo:consumer/

配置引用服務:dubbo:reference/

備註:其中reference的check默認=true,啓動時會檢查引用的服務是否已存在,不存在時報錯

註解配置:

com.alibaba.dubbo.config.annotation.Service 配置暴露服務

com.alibaba.dubbo.config.annotation.Reference配置引用服務

特點/特性:

(1) 連通性:

  • 註冊中心負責服務地址的註冊與查找,相當於目錄服務,服務提供者和消費者只在啓動時與註冊中心交互,註冊中心不轉發請求,壓力較小

  • 監控中心負責統計各服務調用次數,調用時間等,統計先在內存彙總後每分鐘一次發送到監控中心服務器,並以報表展示

  • 服務提供者向註冊中心註冊其提供的服務,並彙報調用時間到監控中心,此時間不包含網絡開銷

  • 服務消費者向註冊中心獲取服務提供者地址列表,並根據負載算法直接調用提供者,同時彙報調用時間到監控中心,此時間包含網絡開銷

  • 註冊中心,服務提供者,服務消費者三者之間均爲長連接,監控中心除外

  • 註冊中心通過長連接感知服務提供者的存在,服務提供者宕機,註冊中心將立即推送事件通知消費者

  • 註冊中心和監控中心全部宕機,不影響已運行的提供者和消費者,消費者在本地緩存了提供者列表

  • 註冊中心和監控中心都是可選的,服務消費者可以直連服務提供者

(2) 健狀性:

  • 監控中心宕掉不影響使用,只是丟失部分採樣數據

  • 數據庫宕掉後,註冊中心仍能通過緩存提供服務列表查詢,但不能註冊新服務

  • 註冊中心對等集羣,任意一臺宕掉後,將自動切換到另一臺

  • 註冊中心全部宕掉後,服務提供者和服務消費者仍能通過本地緩存通訊

  • 服務提供者無狀態,任意一臺宕掉後,不影響使用

  • 服務提供者全部宕掉後,服務消費者應用將無法使用,並無限次重連等待服務提供者恢復

(3) 伸縮性:

  • 註冊中心爲對等集羣,可動態增加機器部署實例,所有客戶端將自動發現新的註冊中心

  • 服務提供者無狀態,可動態增加機器部署實例,註冊中心將推送新的服務提供者信息給消費者

優點:

1.遠程通訊: 提供對多種基於長連接的NIO框架抽象封裝, 包括多種線程模型,序列化,以及“請求-響應”模式的信息交換方式。 

2.軟負載均衡及容錯機制: 提供基於接口方法的透明遠程過程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集羣支持。 

可在內網替代F5等硬件負載均衡器,降低成本,減少單點。 

3.服務自動註冊與發現: 基於註冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器 。

4.提供完善的管理控制檯dubbo-admin與簡單的控制中心dubbo-monitor 

5.Dubbo提供了伸縮性很好的插件模型,很方便進行擴展(ExtensionLoader) 

6.支持多協議 

7.Dubbo採用全spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基於Spring的Schema擴展進行加載。

轉自:http://baijiahao.baidu.com/s?id=1601781224676099887&wfr=spider&for=pc

轉自:https://blog.csdn.net/zsg88/article/details/77417811

發佈了14 篇原創文章 · 獲贊 37 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章