1. 程式人生 > >dubbo實戰之四:管理控制檯dubbo-admin

dubbo實戰之四:管理控制檯dubbo-admin

### 歡迎訪問我的GitHub [https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) 內容:所有原創文章分類彙總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等; ### 《dubbo實戰》系列導航 1. [準備和初體驗](https://xinchen.blog.csdn.net/article/details/109096867) 2. [與SpringBoot整合](https://xinchen.blog.csdn.net/article/details/109142783) 3. [使用Zookeeper註冊中心](https://xinchen.blog.csdn.net/article/details/109147843) 4. [管理控制檯dubbo-admin](https://xinchen.blog.csdn.net/article/details/109267151) ### 本篇概覽 - 本文是《dubbo實戰》系列的第四篇,內容是部署和啟動dubbo管理控制檯服務,該服務在開發、測試、生產等環節都非常重要,接下來一起通過實戰學習和了解它,官方GitHub地址:https://github.com/apache/dubbo-admin - 整篇文章由以下內容構成: 1. 準備工作(註冊中心、服務提供者、服務消費者); 2. 準備工作(配置資訊); 3. 體驗docker版; 4. 下載原始碼自行構建; ### 準備工作(註冊中心、服務提供者、服務消費者) 1. 所謂準備工作,就是準備一個相對完整的dubbo環境,裡面有註冊中心、服務提供者、服務消費者; 2. 在上一篇《dubbo實戰之三:使用Zookeeper註冊中心》,咱們已經建立和驗證了服務提供者和消費者,並且以zookeeper作為註冊中心,現在請把這些服務全部啟動起來,我這邊的服務情況如下所示: | 服務 | IP | 埠 | 專案名稱 | 作用 | |--|--|--|--|--| | zookeeper | 192.168.50.43 | 2181 | 註冊中心、配置中心 | 作用 | | springboot-zk-provider | 192.168.50.12 | 8080 | springbootzkprovider | 服務提供者 | | springboot-zk-consumer | 192.168.50.12 | 8081 | springbootzkconsumer | 服務消費者 | 3. 確保zookeeper、服務提供者、服務消費者全部啟動且功能正常; ### 準備工作(配置資訊) 1. 接下來要準備配置資訊,首選要強調的是dubbo-admin有三個重要的配置項:admin.config-center(配置中心),admin.registry.address(註冊中心)、admin.metadata-report.address(元資料中心); 2. 如果在配置檔案中只有admin.registry.address(舊版本的做法),此時dubbo-admin會將admin.registry.address的值作為註冊中心和配置中心使用,元資料中心將無法使用,因此官方不推薦這樣的配置; 3. 官方推薦的做法:在配置檔案中只有admin.config-center,此配置的值是zookeeper地址,在zookeeper服務中有個節點,路徑是/dubbo/config/dubbo/dubbo.properties,內容是admin.registry.address和admin.metadata-report.address的配置,如下所示: ```properites dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.metadata-report.address=zookeeper://127.0.0.1:2181 ``` 4. 簡單地說,就是隻有配置中心的地址放在本地配置檔案中,等到dubbo-admin連線到配置中心後,從配置中心取得其他配置資訊,畫了個簡圖輔助理解,如下: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202103/485422-20210309071758173-514003430.png) 5. 基於上述分析,咱們要先在zookeeper中建立好節點/dubbo/config/dubbo/dubbo.properties,以便dubbo-admin使用,請登入zookeeper所在伺服器,進入zookeeper的bin目錄; 6. 由於前面的文章已經使用過zookeeper作為註冊中心,因此"/dubbo/config/"目錄已經存在,下面的命令會建立/dubbo/config/dubbo節點: ```shell ./zkCli.sh create /dubbo/config/dubbo "" ``` 7. 再建立/dubbo/config/dubbo/dubbo.properties節點: ```shell ./zkCli.sh create /dubbo/config/dubbo/dubbo.properties "dubbo.registry.address=zookeeper://192.168.50.43:2181 dubbo.metadata-report.address=zookeeper://192.168.50.43:2181" ``` 8. 最後,檢視是否建立成功,輸入和響應如下所示,可見節點建立成功,值也是預期的: ```shell root@zookeeper:/opt/zookeeper-3.4.13/bin# ./zkCli.sh get /dubbo/config/dubbo/dubbo.properties Connecting to localhost:2181 2020-10-25 03:47:50,512 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT environment:user.home=/root 2020-10-25 03:47:50,526 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/opt/zookeeper-3.4.13/bin 2020-10-25 03:47:50,529 [myid:] - INFO [main:ZooKeeper@442] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@674e5e21 2020-10-25 03:47:50,584 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1029] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) WATCHER:: WatchedEvent state:SyncConnected type:None path:null dubbo.registry.address=zookeeper://192.168.50.43:2181 dubbo.metadata-report.address=zookeeper://192.168.50.43:2181 cZxid = 0x6b5 ctime = Sun Oct 25 03:47:30 UTC 2020 mZxid = 0x6b5 mtime = Sun Oct 25 03:47:30 UTC 2020 pZxid = 0x6b5 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 114 numChildren = 0 ``` 9. 至此,準備工作全部完成,可以部署和嘗試dubbo-admin了,先從官方推薦的快速體驗方式開始,即docker版; ### 體驗docker版 1. 請確保docker已部署並正常執行; 2. [官方Github](https://github.com/apache/dubbo-admin/blob/develop/README_ZH.md)建議通過docker映象快速體驗管理控制檯,如下圖,咱們就按照官方的建議先用docker映象試試: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202103/485422-20210309071758541-1964674494.png) 3. 下載映象(此步驟可以不執行,我這是想看看下載映象要多久): ```shell docker pull apache/dubbo-admin ``` 4. 執行以下命令啟動docker容器: ```shell docker run \ -p 8083:8080 \ -e admin.config-center=zookeeper://192.168.50.43:2181 \ --rm \ apache/dubbo-admin ``` 5. 用上述命令啟動的容器是一次性的,如果用Ctrl+C中斷控制檯,容器就會自動銷燬,另外容器的8080埠被對映到了宿主機的8083埠; 6. 用瀏覽器訪問宿主機的8083埠,如下圖所示,dubbo-admin已經啟動了: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202103/485422-20210309071759075-526922566.png) 7. 點選下圖紅框1中的服務查詢選單,即可看到整個分散式環境中所有已經暴露的服務(即紅框2),此時點選右側的DETAIL按鈕,就能看到此服務的詳情: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202103/485422-20210309071800016-503542130.png) 8. 服務詳情如下圖,基礎資訊、提供者、消費者都有,但遺憾的是元資料無法正常展示: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202103/485422-20210309071800756-715965894.png) 9. 以上就是官方提供的體驗版,算是讓咱們對管理控制檯有了基本瞭解,但這僅是用於體驗的映象,實際生產環境中,首先未必會用docker,並且可能需要有對應的原始碼以便學習和分析問題,甚至有可能用原始碼做進一步定製,因此這個docker版本就不適合了,接下來一起下載dubbo-admin原始碼自行編譯構建; 10. 在啟動docker容器的控制檯執行Ctrl+C,剛才建立的容器就會自動銷燬; ### 下載原始碼自行構建 1. 下載官方原始碼: ```shell git clone https://github.com/apache/dubbo-admin.git ``` 2. 修改配置檔案dubbo-admin/dubbo-admin-server/src/main/resources/application.properties ,如下所示,只配置admin.registry.address的值,將admin.registry.address和admin.metadata-report.address註釋掉,如果要修改埠,也在此新增server.port的配置,我這裡配置的是8083埠: ```properties server.port=8083 # centers in dubbo2.7 #admin.registry.address=zookeeper://127.0.0.1:2181 admin.config-center=zookeeper://192.168.50.43:2181 #admin.metadata-report.address=zookeeper://127.0.0.1:2181 admin.root.user.name=root admin.root.user.password=root #group 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 #compress server.compression.enabled=true server.compression.mime-types=text/css,text/javascript,application/javascript server.compression.min-response-size=10240 ``` 3. 在dubbo-admin目錄執行以下命令,開始編譯: ```shell mvn clean compile -U ``` 4. 不出意外的話會編譯成功,如下: ```shell [INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ dubbo-admin-test --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 6 source files to /Users/zhaoqin/temp/202010/24/dubbo-admin/dubbo-admin-test/target/classes [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for dubbo-admin 0.2.0-SNAPSHOT: [INFO] [INFO] dubbo-admin ........................................ SUCCESS [ 1.997 s] [INFO] dubbo-admin-ui ..................................... SUCCESS [ 44.322 s] [INFO] dubbo-admin-server ................................. SUCCESS [ 4.731 s] [INFO] dubbo-admin-distribution ........................... SUCCESS [ 0.850 s] [INFO] dubbo-admin-test ................................... SUCCESS [ 0.815 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 53.105 s [INFO] Finished at: 2020-10-25T16:24:27+08:00 [INFO] ------------------------------------------------------------------------ [WARNING] The requested profile "nexus" could not be activated because it does not exist. ``` 5. 啟動服務: ```shell mvn --projects dubbo-admin-server spring-boot:run ``` 6. 啟動成功後,在瀏覽器訪問登入頁面:http://localhost:8083/#/login ,(一定要先登入),如下圖,賬號密碼都是root,這是application.properties檔案中配置的: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202103/485422-20210309071801050-266666734.png) 7. 登入後可見主頁,如下圖,和之前的docker體驗版還是有些不同的: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202103/485422-20210309071801627-1710039253.png) 8. 點選上圖的測試按鈕,可以在頁面上測試該服務的方法: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202103/485422-20210309071802062-1664222328.png) 9. 再次進入服務詳情頁,可見元資料也能正常顯示了: ![在這裡插入圖片描述](https://img2020.cnblogs.com/other/485422/202103/485422-20210309071802499-479021259.png) ### 小結 至此,管理控制檯dubbo-admin的編譯、部署、基本操作都實戰完成了,網頁上更多功能您可以自行嘗試,(建議部署更多的服務和例項),回顧整個過程其實都很簡單,唯一要注意的就是服務的配置那裡,本地只有配置中心的地址,其他資訊都放在配置中心; ### 你不孤單,欣宸原創一路相伴 1. [Java系列](https://xinchen.blog.csdn.net/article/details/105068742) 2. [Spring系列](https://xinchen.blog.csdn.net/article/details/105086498) 3. [Docker系列](https://xinchen.blog.csdn.net/article/details/105086732) 4. [kubernetes系列](https://xinchen.blog.csdn.net/article/details/105086794) 5. [資料庫+中介軟體系列](https://xinchen.blog.csdn.net/article/details/105086850) 6. [DevOps系列](https://xinchen.blog.csdn.net/article/details/105086920) ### 歡迎關注公眾號:程式設計師欣宸 > 微信搜尋「程式設計師欣宸」,我是欣宸,期待與您一同暢遊Java世界... [https://github.com/zq2599/blog_demos](https://github.com/zq2599/blo