最近剛剛貼上小豬佩奇的標簽,進入公司后接觸的一個項目,采用了springboot+dubbo+zookeeper的架構,對我來說,完全是一個全新的東西,但是為了能夠對這個項目進行全面的測試,必然要對測試對象有深入的了解。所以決定通過實踐來學習——自己搭建一個Dubbo服務。
1.1 Dubbo原理
Dubbo是一種分布式的服務器框架,致力于提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。主要用于解決負載均衡、容災等問題。
其基本原理可以通過一張圖來概括

1.1.1 節(jié)點角色說明
Provider: 暴露服務的服務提供方。
Consumer: 調用遠程服務的服務消費方。
Registry: 服務注冊與發(fā)現(xiàn)的注冊中心。
Monitor: 統(tǒng)計服務的調用次調和調用時間的監(jiān)控中心。
Container: 服務運行容器。
1.1.2 調用關系說明
0.服務容器負責啟動,加載,運行服務提供者。
1.服務提供者在啟動時,向注冊中心注冊自己提供的服務。
2.服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
3.注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。
4.服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
5.服務消費者和提供者,在內存中累計調用次數(shù)和調用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。
1.2 環(huán)境配置
jdk1.8 + tomcat9 + zookeeper3.4.10 + dubbo2.5.10
1.3 zookeeper的安裝
zookeeper是一種分布式協(xié)調服務,我們的項目中選用了它,用于維護和監(jiān)控存儲的數(shù)據(jù)的狀態(tài)變化。通過監(jiān)控這些數(shù)據(jù)狀態(tài)的變化,從而可以達到基于數(shù)據(jù)的集群管理。
下載zookeeper安裝包 zookeeper-3.4.10下載,然后進入到conf目錄下,新建一個zoo.cfg
#tickTime: zookeeper中使用的基本時間單位,毫秒值。
#dataDir: 數(shù)據(jù)目錄,即自己下載的zookeeper的data目錄
#dataLogDir: log目錄, 同樣可以是任意目錄. 如果沒有設置該參數(shù), 將使用和#dataDir相同的設置
#clientPort: 監(jiān)聽client連接的端口號。
tickTime=2000
dataDir= /usr/local/zookeeper-3.4.10/data
dataLogDir=/usr/local/zookeeper-3.4.10/logs
clientPort=2181
添加以上配置并保存后,進入zookeeper-3.4.10/bin目錄下 執(zhí)行./zkServer.sh start ,如圖所示,zookeeper啟動成功
1.4 dobbo admin安裝
1.4.1 打包
安裝dubbo admin需要下載dubbo-admin的war包。為了避免版本的沖突問題,這里我選擇了自己打包。步驟很簡單,去官網(wǎng)下載dubbo源碼,然后進入到本地的dubbo-admin目錄
cd /Users/Jocelyn/Downloads/incubator-dubbo-dubbo-2.5.10/dubbo-admin
在該目錄下執(zhí)行編譯打包
mvn package -Dmaven.test.skip=true -e
這里加上-e控制Maven的日志級別,打印錯誤信息,便于定位執(zhí)行中可能遇到的問題,我這次打包的過程一直失敗,查看錯誤信息發(fā)現(xiàn)拋java.lang.ArrayIndexOutOfBoundsException: 31523 的錯誤,嘗試了很多辦法,最后重裝了一個3.5.3版本的maven,問題解決。
打包完成后,dubbo-admin下會生成一個target文件夾,如圖所示,可以在該文件夾下找到生成的war包。
然后將這個war包拷貝出來,放到 本地的ApacheTomcat/webapps目錄下。
1.4.2 修改dubbo的配置
進入/ApacheTomcat/webapps/dubbo-admin-2.5.10/WEB-INF修改dubbo.properties文件
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
配置dubbo的注冊中心地址以及用戶名密碼。
1.4.3 啟動
以上工作完成之后,進入到/ApacheTomcat/bin目錄下啟動Tomcat,輸入命令:
./startup.sh
然后打開本地瀏覽器,輸入http://localhost:8080/dubbo-admin-2.5.10/,在彈框中輸入用戶名密碼。
DuangDuangDuang 就可以看到下圖頁面,dobbo環(huán)境就搭建完成了~
接下來就可以把dubbo和zookeeper集成到spring-boot中,之后將在另一篇文章中進行總結。