Dubbo的服務治理和核心功能

什麼是 Dubbo

Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、輕量級的開源 Java RPC 分佈式服務框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。她最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地鬆耦合)。從服務模型的角度來看,Dubbo 採用的是一種非常簡單的模型,要麼是提供方提供服務,要麼是消費方消費服務,所以基於這一點可以抽象出服務提供方(Provider)和服務消費方(Consumer)兩個角色。

Dubbo 的服務治理

在這裏插入圖片描述

特性 描述
透明遠程調用 就像調用本地方法一樣調用遠程方法;只需簡單配置,沒有任何 API 侵入
負載均衡機制 Client 端 LB,可在內網替代 F5 等硬件負載均衡器
容錯重試機制 服務 Mock 數據,重試次數、超時機制等
自動註冊發現 註冊中心基於接口名查詢服務提 供者的 IP 地址,並且能夠平滑添加或刪除服務提供者
性能日誌監控 Monitor 統計服務的調用次調和調用時間的監控中心
服務治理中心 路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡,等手動配置
自動治理中心 無,比如:熔斷限流機制、自動權重調整等(因此可以搭配SpringCloud的熔斷機制等進行開發)

Dubbo 的核心功能

  • Remoting:遠程通訊,提供對多種 NIO 框架抽象封裝,包括“同步轉異步”和“請求-響應”模式的信息交換方式。
  • Cluster:服務框架,提供基於接口方法的透明遠程過程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集羣支持。
  • Registry:服務註冊中心,服務自動發現: 基於註冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器。

Dubbo 的組件角色

在這裏插入圖片描述

組件角色 說明
Provider 暴露服務的服務提供方
Consumer 調用遠程服務的服務消費方
Registry 服務註冊與發現的註冊中心
Monitor 統計服務的調用次調和調用時間的監控中心
Container 服務運行容器

調用關係說明:

  • 服務容器 Container 負責啓動,加載,運行服務提供者。
  • 服務提供者Provider在啓動時,向註冊中心註冊自己提供的服務。
  • 服務消費者Consumer在啓動時,向註冊中心訂閱自己所需的服務。
  • 註冊中心Registry返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。
  • 服務消費者Consumer,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
  • 服務消費者 Consumer和提供者 Provider,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心Monitor

Dubbo Admin 管理控制檯

管理控制檯爲內部裁剪版本,開源部分主要包含:路由規則,動態配置,服務降級,訪問控制,權重調整,負載均衡,等管理功能。
GitHub:https://github.com/apache/incubator-dubbo-ops
在這裏插入圖片描述

# 打包
mvn clean package

# 運行
mvn --projects dubbo-admin-backend spring-boot:run

# 瀏覽
http://localhost:8080

遇到的問題處理

NodeJS

  • 現象:使用 mvn clean package 構建 DubboAdmin 控制檯時會出現 npm install操作
  • 解決:新版控制檯已改爲前後分離模式,前端採用 Vue.js 開發,故需要 NodeJS 支持,請自行安裝(運行到此處時會自動下載安裝)。官網地址:http://nodejs.cn/
  • 其他:配置淘寶鏡像加速。官網地址:http://npm.taobao.org/
# 安裝 cnpm 命令行工具
npm install -g cnpm --registry=https://registry.npm.taobao.org

# 安裝模塊
cnpm install [name]

Will not attempt to authenticate using SASL (unknown error)

  • 現象:使用 mvn --projects dubbo-admin-backend spring-boot:run 啓動 DubboAdmin 控制檯時,控制檯日誌中出現Will not attempt to authenticate using SASL (unknown error)提示
  • 解決:修改C:\Windows\System32\drivers\etc\hosts文件,增加192.168.10.131 ubuntu16即可解決
  • 注意: 此處的192.168.10.131爲 Zookeeper 地址

兩處 npm WARN

  • 現象:使用mvn clean package構建 DubboAdmin 控制檯時會出現 npm install 操作,此時還會出現兩處警告,分別爲
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents) npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
  • 解決:從警告說明中可以看出,fsevents 模塊用於{"os":"darwin","arch":"any"}Mac 系統,當前系統爲 (current: {“os”:“win32”,“arch”:“x64”}) Windows 系統,不予理會即可
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章