dubbo 簡介與 dubbo demo 運行

dubbo 簡介與 dubbo demo 運行

來自專欄 分散式和人工智慧

原文參見dubbo 簡介與 dubbo demo 運行

dubbo是阿里巴巴推出的分散式服務治理框架,是國內實現微服務較為常見的框架。關於微服務的介紹可以參見原文,infoq 文章,dubbo 架構設計詳解。

dubbo 的架構圖如下:

如上圖所示,簡單來說 dubbo 架構包括如下幾部分:服務註冊和服務發現中心,對外暴露服務的服務提供方和運行該服務的容器,調用遠程服務的服務消費方,統計服務調用時間和次數的監控中心(非必需)。其調用關係為:

0. 服務方的容器啟動服務1. 服務提供方向註冊中心註冊自己的地址2. 訪問消費方向註冊中心訂閱所需的服務3. 註冊中心通知服務消費方所訂閱服務的變更4. 根據獲取到的提供方地址列表,服務消費方直接調用服務提供方5. 監控中心會監控消費方和提供方的調用時間和次數等信息

安裝與準備

dubbo 採用全 spring 配置方式,透明化接入應用,對應用沒有侵入。

如上框圖所示,你需要準備註冊中心,dubbo 服務的提供者和消費者,以及監控中心。運行一個 demo 程序需要準備這些:

  • 註冊中心 zookeeper
  • 噹噹的 dubbox
  • tomcat
  • 示例 dubbo demo 的 provider,consumer
  • dubbo admin 管理程序
  • dubbo simple monitor 監控程序

其中 dubbo 的部分都在 dubbox 項目中。這些軟體的下載只需要下載源碼,不會安裝到本地。

在 zookeeper 官網選擇國內鏡像下載 zookeeper,解壓到本地。我下載的是 3.4.9 版本。

在 tomcat 官網下載國內鏡像 tomcat,解壓到本地。我下載的是 8.5.11 版本。

clone 下噹噹的 dubbox 項目,執行:

mvn install -Dmaven.test.skip=true #dubbox 的測試 url 無法訪問

安裝。

查看 dubbox 的文件結構,我們在後面還需要用到 dubbo-admin,dubbo-demo 和 dubbo-simple/dubbo-monitor-simple。

運行

zookeeper 註冊中心

進入解壓後的 zookeeper 目錄,創建 conf/zoo.cfg(可參考同目錄下的 sample 文件),其內容如下:

tickTime=2000initLimit=10syncLimit=5dataDir=/tmp/zookeeper/tmp/data # 自己定義dataLogDir=/tmp/zookeeper/tmp/log # 自己定義clientPort=2181server.1=localhost:2287:3387

執行bin/zkServer.sh start啟動 zookeeper,執行bin/zkCli.sh -server 127.0.0.1:2181查看是否啟動成功。

dubbo 提供者和消費者服務

Demo 在 dubbo-demo 文件夾下,因為前面在 dubbox 下執行過 mvn install,都已經打包好了,這裡可以直接執行來啟動 demo provider, consumer,如下圖所示。

當 provider 執行後看到

[01/03/17 06:16:26:026 CST] main INFO container.Main: [DUBBO] Dubbo SpringContainer started!, dubbo version: 2.0.0, current host: 127.0.0.1[2017-03-01 18:16:26] Dubbo service server started!

consumer 執行後看到

Client response filter invokedReader interceptor invokedDynamic reader interceptor invoked[01/03/17 06:18:11:011 CST] main INFO support.LoggingFilter: [DUBBO] The contents of request body is: {"id":1,"username":"username1"}, dubbo version: 2.0.0, current host: 192.168.1.33SUCCESS: got user User (id=1, name=username1)[01/03/17 06:18:11:011 CST] main INFO container.Main: [DUBBO] Dubbo SpringContainer started!, dubbo version: 2.0.0, current host: 192.168.1.33[2017-03-01 18:18:11] Dubbo service server started!

說明啟動成功了。

tomcat 運行 dubbo admin

在 dubbo-admin 的 target 目錄下找到 war 包(沒有的話就 mvn package 一下),放到 tomcat 目錄下的webapps 下。

~/tmp/zookeeper/apache-tomcat-8.5.11> ls webappsROOT docs dubbo-admin-2.8.4 dubbo-admin-2.8.4.war examples host-manager manager

執行bin/startup.sh啟動 tomcat,打開 localhost:8080,一開始會有點慢,tomcat 要解壓 war 文件,解壓完畢後 webapps 下出現對應的文件夾(如上面 ls 所示),進入該文件夾,

~/tmp/zookeeper/apache-tomcat-8.5.11> vim webapps/dubbo-admin-2.8.4/WEB-INF/dubbo.properties

編輯 dubbo-admin 的 zookeeper 配置。

dubbo.registry.address=zookeeper://127.0.0.1:2181# 帳號對應的密碼,初次訪問的時候需要用到dubbo.admin.root.password=rootdubbo.admin.guest.password=guest

重啟 tomcat,打開 localhost:8080/dubbo-ad,輸入帳號密碼即可看到 dubbo-admin 的管理頁面。上面運行的 provider 和 consumer demo 在服務治理下。

注意:有些鏈接可能 404,因為 dubbo-admin 默認使用了/路徑,而掛在 tomcat 下的時候路徑中包含了/dubbo-admin-2.8.4。

啟動 dubbo monitor

除了這三者之外,dubbo 還提供了監控面板。在 dubbo-simple/dubbo-monitor-simple 的 target 目錄下,解壓 .tar.gz 文件,得到 dubbo-monitor-simple-2.8.4 文件夾,編輯其中的 conf/dubbo.properties 文件。

dubbo.container=log4j,spring,registry,jettydubbo.application.name=simple-monitordubbo.application.owner=# 選擇 zookeeper 作為註冊中心# dubbo.registry.address=multicast://224.5.6.7:1234dubbo.registry.address=zookeeper://127.0.0.1:2181#dubbo.registry.address=redis://127.0.0.1:6379#dubbo.registry.address=dubbo://127.0.0.1:9090dubbo.protocol.port=7070# 監控中心的埠號dubbo.jetty.port=8083dubbo.jetty.directory=${user.home}/monitordubbo.charts.directory=${dubbo.jetty.directory}/chartsdubbo.statistics.directory=${user.home}/monitor/statisticsdubbo.log4j.file=logs/dubbo-monitor-simple.logdubbo.log4j.level=WARN

需要修改的是 registry,埠號和各種文件的保存位置。

執行bin/start.sh,當看到

Starting the simple-monitor .........................OK!PID: 21032STDOUT: logs/stdout.log

即執行成功,打開 localhost:8083/ 即可看到監控面板。

如果看不到 charts 和 statitics,檢查下配置中的dubbo.charts.directory和dubbo.statistics.directory是否提前創建成功,dubbo-monitor 可能不會自動創建該目錄的。

自帶 monitor 比較簡單,可以參見 monitor 的其他實現:韓都衣舍/dubbo-monitor,dubboclub/dubbokeeper。

PS: 從零開始搭一個 dubbo 的 demo 示例可以參見下一篇文章。


推薦閱讀:

《微服務設計》閱讀筆記(九)安全
「演講復盤」技術沙龍(滬江網4月) - 我所遇見的微服務演進這十年
《Cloud Native Go》筆記(十一)使用WebSockets
《微服務設計》閱讀筆記(八) 監控

TAG:dubbo | 微服務架構 |