dubbo admin 2.8.3版本使用


博客轉載:http://www.iocoder.cn/Dubbo/Admin/

摘要: 原創出處 http://www.iocoder.cn/Dubbo/Admin/ 「芋道源碼」歡迎轉載,保留摘要,謝謝!



1. 概述

Dubbo Admin 是 Dubbo 的管理控制台,主要三部分功能:

界面

  • 服務查詢
  • 服務治理(包括 Dubbo 2.7 版本新增的治理規則)
  • 服務測試

Dubbo Admin 采用前端后分離的方式開發:

項目結構

既可以按照標准的 Maven 方式進行打包與部署,也可以采用前后端分離的部署方式,方便開發。

2. 快速入門

本小節,我們來部署一個 Dubbo Admin 控制台,並對 Dubbo 服務進行管理。

友情提示:如果胖友想要使用 Docker 部署 Dubbo Admin 控制台,可以看看 https://hub.docker.com/r/apache/dubbo-admin

2.1 部署 Dubbo Admin

因為 Dubbo Admin 並未提供已經編譯好的 jar 包,所以我們需要自己動手。

① 執行 git clone https://github.com/apache/dubbo-admin.git 命令,將項目下載到本地。

友情提示:如果網絡比較“差”,可能需要一些時間哈。

② 修改 dubbo-admin-server/src/main/resources/application.properties 配置文件,主要是指定配置中心。內容如下:

 

# Dubbo 各種中心的配置
# centers in dubbo2.7
admin.registry.address=zookeeper://127.0.0.1:2181
admin.config-center=zookeeper://127.0.0.1:2181
admin.metadata-report.address=zookeeper://127.0.0.1:2181

# Dubbo Admin 管理員配置
admin.root.user.name=root
admin.root.user.password=root

# Dubbo 分組相關配置
admin.registry.group=dubbo
admin.config-center.group=dubbo
admin.metadata-report.group=dubbo

admin.apollo.token=e16e5cd903fd0c97a116c873b448544b9d086de9
admin.apollo.appId=test
admin.apollo.env=dev
admin.apollo.cluster=default
admin.apollo.namespace=dubbo

 

這里我們使用本地的 ZooKeeper 做為注冊中心,所以無需更改。如果胖友使用遠程的 ZooKeeper 服務,需要修改如下三個配置項:

  • admin.registry.address,注冊中心地址。
  • admin.config-center,配置中心地址。
  • admin.metadata-report.address,元數據中心地址。

友情提示:建議胖友參考《芋道 ZooKeeper 極簡入門》文章,安裝一個本地的 ZooKeeper 服務,和本文更加搭配。

另外,考慮到安全性,建議修改 admin.root.user.name 和 admin.root.user.password 配置項,設置成自己想要的管理員賬號與密碼。

③ 執行 mvn clean package -Dmaven.test.skip=true 命令,開始構建 Dubbo Admin 項目。

友情提示:如果網絡比較“差”,可能需要一些時間哈。

另外,添加 -Dmaven.test.skip=true 參數的原因是,貌似當前版本單元測試有點問題,老報連接不上 ZooKeeper 服務。

④ 執行如下命令,啟動 Dubbo Admin 控制台。

 

# 進入構建輸出目錄
$ cd dubbo-admin-distribution/target/

# 啟動 Dubbo Admin 控制台
# 注意,-0.2.0-SNAPSHOT 是根據版本來的,胖友記得看看噢。
$ java -jar dubbo-admin-0.2.0-SNAPSHOT.jar

 

⑤ 使用瀏覽器,訪問 http://127.0.0.1:8080/#/login 地址,進入 Dubbo Admin 登錄界面。如下圖所示:

Dubbo Admin 登錄界面

使用默認的「root/root」賬號密碼進行登錄。登錄成功后,進入 Dubbo Admin 首頁。如下圖所示:

Dubbo Admin 首頁

2.2 啟動 Dubbo 服務

《芋道 Spring Boot Dubbo 入門》「3. 注解配置」小節,我們搭建了一個 Dubbo 示例項目 lab-30-dubbo-annotations-demo。如下圖所示:

Dubbo 示例項目

下面,我們使用 Dubbo Admin 將該 Dubbo 示例項目進行管理。

① 執行 ProviderApplication 啟動服務提供者,執行 ConsumerApplication 啟動服務消費者。

② 點擊 Dubbo Admin 的「服務查詢」菜單,可以查看到 UserRpcService 服務。如下圖所示:

服務查詢 - 列表

點擊 UserRpcService 的「詳情」按鈕,可以看到 UserRpcService 服務的基礎信息、服務信息(提供者 + 消費者列表)、元數據。如下圖所示:

服務查詢 - 詳情

③ 點擊 Dubbo Admin 的「服務統計 -> 服務關系」菜單,可以看到服務之間的調用關系。如下圖所示:

服務統計 -> 服務關系

④ 點擊 Dubbo Admin 的「服務統計 -> 服務統計」菜單,可以看 QPS、Response Time 等等統計信息。如下圖所示:

服務統計 -> 服務統計

= = 不過艿艿測試總是在報錯,所以這里就暫時不演示了。

3. Swagger 支持

Dubbo Admin 提供的 RESTful API 集成了 Swagger 組件,所以可以很方便的自動生成 API 文檔。訪問 http://127.0.0.1:8080/swagger-ui.html 地址,獲得 Swagger 文檔如下圖所示:

Swagger 文檔

4. 服務測試

在 Dubbo 2.7 版本開始提供服務的元數據,所以 Dubbo Admin 就可以用通過 Dubbo 泛化調用的特性,實現在控制台中,調用服務提供者進行測試。如下圖所示:

服務測試 - 示例

下面,我們來詳細介紹服務測試的使用過程。

4.1 接入元數據中心

使用服務測試的前提,是服務提供者需要接入元數據中心。以 user-rpc-service-provider-02 項目舉例子,需要添加 dubbo.metadata-report.address 配置項。如下圖所示:

配置文件

這里,我們還是采用 ZooKeeper 作為元數據中心。

修改完成后,重新執行 ProviderApplication 重啟服務提供者。

4.2 使用流程

① 打開 Dubbo Admin 的「服務測試」菜單,輸入服務名進行搜索。如下圖所示:

服務測試 - 列表

② 點擊 #get(...) 方法后面的「編輯」圖標,進入該方法的測試界面。如下圖所示:

服務測試 - 方法

③ 填寫參數,點擊「執行」按鈕,進行一次服務提供者的調用。如下圖所示:

服務測試 - 模擬測試

4.3 實現原理

胖友可以閱讀《Dubbo Admin 服務測試功能》文章,進一步了解。

5. 服務 Mock

暫未開發,還在計划中...

服務 Mock

6. 服務治理

友情提示:如下內容,基於《Dubbo 文檔 —— 服務治理和配置管理》做改造。

可以快速閱讀,在有需要的時候,認真查看。

服務治理主要作用,是改變運行時服務的行為和選址邏輯,達到限流,權重配置等目的。主要有以下幾個功能:

服務治理 —— 功能

6.1 應用級別的服務治理

在 Dubbo 2.6 及更早版本中,所有的服務治理規則都只針對服務粒度,如果要把某條規則作用到應用粒度上,需要為應用下的所有服務配合相同的規則、變更、刪除的時候,也需要對應的操作,這樣的操作很不友好。

因此 Dubbo 2.7 版本中增加了應用粒度的服務治理操作,對於條件路由(包括黑白名單)、動態配置(包括權重,負載均衡)都可以做應用級別的配置:

condition

上圖是條件路由的配置,可以按照應用名、服務名兩個維度來填寫,也可以按照這兩個維度來查詢。

6.2 標簽路由

標簽路由是 Dubbo2.7 引入的新功能,配置以應用作為維度,給不同的服務器打上不同名字的標簽,配置如下圖所示:

tag

調用的時候,客戶端可以通過 setAttachment 的方式,來設置不同的標簽名稱。比如本例中,setAttachment(tag1),客戶端的選址范圍就在如圖所示的三台機器中,可以通過這種方式來實現流量隔離,灰度發布等功能。

6.3 條件路由

條件路由是 Dubbo 一直以來就有的功能,目前可以配置服務和應用兩個維度,條件路由為 yaml 格式,具體的規則體以及各種適用場景,請參考這里

6.4 黑白名單

黑白名單是條件路由的一部分,規則存儲和條件路由放在一起,為了方便配置所以單獨拿出來,同樣可以通過服務和應用兩個維度,指定黑名單和白名單:

blackList

6.5 動態配置

動態配置是和路由規則平行的另一類服務治理治理功能,主要作用是在不重啟服務的情況下,動態改變調用行為,從 Dubbo2.7 版本開始,支持服務和應用兩個維度的配置,采用yaml格式,界面如下:config具體的規則體說明請參考這里

6.6 權重調節

權重調節是動態配置的子功能,主要作用是改變服務端的權重,更大的權重會有更大的幾率被客戶端選中作為服務提供者,從而達到流量分配的目的:

weight

6.7 負載均衡

負載均衡也是動態配置的子功能,主要作用是調整客戶端的選址邏輯,目前可選的負載均衡策略有隨機,輪訓和最小活躍,關於各個策略的解釋請參考這里

7. 配置管理

友情提示:如下內容,基於《Dubbo 文檔 —— 服務治理和配置管理》做改造。

可以快速閱讀,在有需要的時候,認真查看。

配置管理也是配合 Dubbo 2.7 新增的功能。在 Dubbo 2.7 中,增加了全局和應用維度的配置,分別在全局和應用范圍內生效。其中,應用配置也可以指定該應用中的服務級別的配置,可以在控制台中查看,修改配置規則,默認展示全局維度的配置。

7.1 全局配置

config

全局配置里可以指定注冊中心、元數據中心的地址,服務端和客戶端的超時時間等,這些配置在全局內生效。除了配置寫入,也可以用來查看。

如果使用 ZooKeeper 作為注冊中心和元數據中心,還可以看到配置文件所在位置的目錄結構。

7.2 應用、服務配置

appConfig

應用級別的配置可以為應用或者應用內的服務指定配置。在服務維度上,需要區分提供者和消費者。

  • dubbo.reference.{serviceName} 表示作為該服務消費者的配置
  • dubbo.provider.{servcieName}表示作為該服務提供者的配置。

其中注冊中心和元數據中心的地址,只能在全局配置中指定,這也是 Dubbo 2.7 中推薦的使用方式。

並且,優先級:服務配置 > 應用配置 > 全局配置。

666. 彩蛋

暫無彩蛋,用就完事了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM