Dubbo Zookeeper SpringMVC整合實現分佈式

Dubbo+Zookeeper+SpringM目錄

Dubbo+Zookeeper+SpringMVC整合實現分佈式服務治理框架... 1

一、分佈式服務治理架構原理分析... 3

二、先決條件... 5

三、Zookeeper安裝與配置... 6

3.1  Zookeeper下載與解壓... 6

3.2 複製和編輯配置文件... 6

3.3 創建myid文件... 7

3.4 Zookeeper啓動與停止... 7

3.5 Zookeeper命令行基本操作... 8

四、Dubbo管理界面安裝與配置... 10

4.1 Dubbo管理界面下載與解壓... 10

4.2 修改配置文件... 10

4.3 運行... 10

4.4 訪問Dubbo管理界面... 10

五、Dubbo、Zookeeper與SpringMVC集成測試... 12

5.1 創建提供者及服務註冊... 12

5.2 創建消費者及服務調用... 16

 


一、分佈式服務治理架構原理分析

Dubbo是主流的採用RPC方式的分佈式服務治理架構之一,實現了分佈式服務註冊、服務治理服務監控等功能。通常需結合開源的Zookeeper、Redis或阿里數據庫來完成註冊中心的功能。其基本架構及原理如圖1-1所示:

 

圖1-1 Dubbo實現微服務架構原理圖

節點角色說明:

●    Provider: 暴露服務的服務一個或多個提供方。

●    Consumer: 調用遠程服務的服務消費方。

●    Registry: 服務註冊與發現的註冊中心,本文采用開源Zookeeper作爲服務註冊中心

●    Monitor: 統計服務的調用次調和調用時間的監控中心。

●    Container: 服務運行容器。

調用關係說明:

(0)服務容器負責啓動,加載,運行服務提供者。

(1)服務提供者在啓動時,向註冊中心註冊自己提供的服務。

(2)服務消費者在啓動時,向註冊中心訂閱自己所需的服務。

(3)註冊中心返回服務提供者地址列表給消費者,如果有變更,註冊中心將基於長連接推送變更數據給消費者。

(4)服務消費者,從提供者地址列表中,基於軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。

(5)服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。

二、先決條件

操作系統:CentOS 7.2

JAVA環境:jdk1.7.0_67

Web應用服務器:tomcat v7.0(自行解壓安裝)

三、Zookeeper安裝與配置

本文Zookeeper部署採用由3臺機器組成的集羣模式,以下操作步驟在每臺機器上均需執行,請注意不同機器間配置稍有變化。

3.1 Zookeeper下載與解壓

wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
tar –zxvf zookeeper-3.4.8.tar.gz –C .
cd  zookeeper-3.4.8

 

3.2 複製和編輯配置文件

cp conf/zoo_sample.cfg zoo.cfg

vi conf/zoo.cfg


圖3-1

(1)    修改數據文件目錄,也可採用默認值;

(2)"server.id=host:port:port"中的第一個port是從機器(follower)連接到主機器(leader)的端口號,第二個port是進行leadership選舉的端口號。本文采用集羣方式部署,添加機器時增加相應新記錄即可,由於Zookeeper內部存在仲裁機制,機器數最好是奇數

3.3 創建myid文件

dataDir所指定的目錄下創建一個文件名爲myid的文件,文件中的內容只有一行,爲本主機對應的id值,也就是圖3-1server.id中的id。例如:在服務器1中的myid的內容應該寫入1Zookeeper集羣模式不同機器上配置的id值一定要正確,如圖3-2所示。


圖3-2

3.4 Zookeeper啓動與停止

①Zookeeper啓動

啓動Zookeeeper,啓動成功使用jps可看到名爲“QuorumPeerMain”的進程,如圖3-3所示。注意,與Hadoop和Spark等集羣方式啓動不同,Zookeeper集羣啓動需要在每臺機器上都運行該命令

./bin/zkServer.sh start

圖3-3

②Zookeeeper停止

./bin/zkServer.sh stop

3.5 Zookeeper命令行基本操作

①連接Zookeeper命令行終端

./bin/zkCli.sh –server 172.16.24.160:2181

圖3-4

②Zookeeper增刪改查基本命令

創建命令:

create /test ‘test’

查詢命令:

get /test

修改命令:

set /test test_new

刪除命令:

delete /test

圖3-5

四、Dubbo管理界面安裝與配置

4.1 Dubbo管理界面下載與解壓

       下載Dubbo管理界面dubbo-admin-2.5.4並解壓出來,見附件。

4.2 修改配置文件

       解壓後進入dubbo-admin-2.5.4\WEB-INF目錄中,打開dubbo.properties文件如下配置,如圖4-1所示

圖4-1

4.3 運行

       將修改好配置的dubbo-admin-2.5.4整個目標複製到Tomcat根目錄的webapps下,進入Tomcat根目錄執行如下命令進行啓動,如圖4-2所示

圖4-2

4.4 訪問Dubbo管理界面

打開瀏覽器,輸入地址:http://172.16.24.160:8080/dubbo-admin-2.5.4/,用戶名和密碼均爲root,參考前面dubbo.properties配置,如圖4-3所示


圖4-3

五、Dubbo、Zookeeper與SpringMVC集成測試

Dubbo、Zookeeper與SpringMVC集成測試需要編寫提供者和消費者程序進行驗證,下文只簡述關鍵步驟,程序開發的細節請參考附件源代碼。

5.1 創建提供者及服務註冊

①創建Maven項目

先開發服務提供者程序,新建Maven項目,配置pom.xml文件加入dubbo、zookeeper等jar包,如圖5-1所示:

圖5-1

②創建接口

編寫提供者的服務接口,如圖5-2所示

圖5-2

③創建實現類

編寫服務接口的具體實現類,如圖5-3所示

圖5-3

暴露服務配置

新建dubbo-provider.xml暴露服務配置文件,配置Zookeeper服務註冊中心的IP、端口號、服務接口和接口實現類等信息,如圖5-4所示:

圖5-4

具體配置說明:

● dubbo:application 標籤一些屬性的說明:

(1) name 必填,當前應用名稱,用於註冊中心計算應用間依賴關係,注意:消費者和提供者應用名不要一樣,此參數不是匹配條件,你當前項目叫什麼名字就填什麼,和提供者消費者角色無關。

● dubbo:registry 標籤一些屬性的說明:

(1)address必填,可以Zookeeper集羣配置,地址可以多個以逗號隔開等。

(2)check可選,註冊中心不存在時,是否報錯。

(3)subscribe可選,是否向此註冊中心訂閱服務,如果設爲false,將只註冊,不訂閱。

(4)register可選,是否向此註冊中心註冊服務,如果設爲false,將只訂閱,不註冊。

(5) dynamic 可選,服務是否動態註冊,如果設爲false,註冊後將顯示後disable狀態,需人工啓用,並且服務提供者停止時,也不會自動取消冊,需人工禁用。

● dubbo: protocol標籤的一些屬性說明:

(1)name 必填,協議名稱,缺省值dubbo。

(2)port可選,dubbo協議缺省端口爲20880rmi協議缺省端口爲1099httphessian協議缺省端口爲80 

● dubbo:service標籤的一些屬性說明:

(1)interface必填,服務接口的路徑

(2)ref必填,引用對應的實現類的Bean的ID

(3)registry可選,向指定註冊中心註冊,在多個註冊中心時使用,值爲<dubbo:registry>的id屬性,多個註冊中心ID用逗號分隔,如果不想將該服務註冊到任何registry,可將值設爲N/A。

● bean 標籤一些屬性的說明:

(1) id 是實現類的Bean的ID。

(2)class 是實現類的引用路徑。

⑤註冊服務

       編寫註冊服務主類Provider.java,如圖5-5所示,讀取並解釋顯露服務的配置文件dubbo-provider.xml,運行Main函數即可將上述寫好的服務註冊到Zookeeper註冊中心上,如圖5-6所示。

圖5-5

圖5-6

5.2 創建消費者及服務調用

①調用服務配置

新建dubbo- consumer.xml調用服務配置文件,配置調用Zookeeper註冊中心IP、端口號和提供商服務接口等信息,如圖5-7所示:

圖5-7

具體配置說明:

● dubbo:application 和dubbo:registry標籤屬性說明同上:

● dubbo:reference標籤屬性說明:

(1)id 必填,服務引用BeanId

2interface必填,服務接口名,由於dubbo服務治理方式屬於RPC方式,因而消費者需要明確知道服務的完整接口名方可調用。

②調用服務

編寫調用服務主類Consumer.java,如圖5-8所示,讀取並解釋調用服務的配置文件dubbo-consumer.xml,運行Main函數即可完成服務調用,如圖5-9所示

圖5-8

圖5-9



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章