文章目錄
什麼是 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 系統,不予理會即可