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

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

dubbo 的架構圖如下:

dubbo 簡介與 dubbo demo 執行

dubbo 簡介與 dubbo demo 執行

如上圖所示,簡單來說 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

=

2000

initLimit

=

10

syncLimit

=

5

dataDir

=

/tmp/zookeeper/tmp/data

# 自己定義

dataLogDir

=

/tmp/zookeeper/tmp/log

# 自己定義

clientPort

=

2181

server。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,如下圖所示。

dubbo 簡介與 dubbo demo 執行

dubbo 簡介與 dubbo demo 執行

當 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 invoked

Reader interceptor invoked

Dynamic 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。33

SUCCESS: 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 webapps

ROOT 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=root

dubbo。admin。guest。password=guest

重啟 tomcat,開啟

http://

localhost:8080/dubbo-ad

min-2。8。4

,輸入帳號密碼即可看到 dubbo-admin 的管理頁面。上面執行的 provider 和 consumer demo 在服務治理下。

dubbo 簡介與 dubbo demo 執行

dubbo 簡介與 dubbo 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,jetty

dubbo。application。name=simple-monitor

dubbo。application。owner=

# 選擇 zookeeper 作為註冊中心

# dubbo。registry。address=multicast://224。5。6。7:1234

dubbo。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:9090

dubbo。protocol。port=7070

# 監控中心的埠號

dubbo。jetty。port=8083

dubbo。jetty。directory=${user。home}/monitor

dubbo。charts。directory=${dubbo。jetty。directory}/charts

dubbo。statistics。directory=${user。home}/monitor/statistics

dubbo。log4j。file=logs/dubbo-monitor-simple。log

dubbo。log4j。level=WARN

需要修改的是 registry,埠號和各種檔案的儲存位置。

執行bin/start。sh,當看到

Starting the simple-monitor ……………………。OK!

PID: 21032

STDOUT: logs/stdout。log

即執行成功,開啟

http://

localhost:8083/

即可看到監控面板。

dubbo 簡介與 dubbo demo 執行

dubbo 簡介與 dubbo demo 執行

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

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

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