一、案例說明
相信有很多小夥伴都知道,dubbo是一個分散式、高效能、透明化的RPC服務框架,提供服務自動註冊、自動發現等高效服務治理方案,dubbo的中文文件也是非常全面的,如下圖所示:

二、Dubbo基礎介紹與環境搭建
1.Dubbo基礎介紹
Dubbo管理架構的變化如圖:

通過dubbo監控中心和後臺管理可以很好的監控dubbo服務,監控服務端服務和客戶端呼叫情況,呼叫次數,呼叫日誌,方便問題查詢。
2.環境搭建
安裝zookeepe解壓(zookeeper-3.4.8.tar.gz)得到如下:

然後進入conf將zoo_sample.cfg改名成zoo.cfg。並相關如下內容:

該目錄為存放資料的目錄。然後啟動,在bin目錄下:


三、工程建立
1、搭建B工程
1.匯入依賴

2.建立物件

3.建立服務

4.編寫Dubbo的配置檔案
位置我放在根目錄下dubbo/dubbo-server.xml,內容如下:

5.編寫Web.xml

6.啟動tomcat
在控制檯中將會看到如下內容:

可以看到,已經將UserService服務註冊到zookeeper註冊中心,協議採用的是dubbo。
2、搭建A工程
1.拷貝基本檔案
從b系統中拷貝User物件、UserService介面到a系統
.

2.編寫Dubbo的配置檔案

3.編寫UserService測試用例

檢視效果如下:

可以看到,已經查詢到10條資料,那麼,也就是說A系統通過B系統提供的服務獲取到了資料。
3、解決程式碼重複問題
我們可以看到,在上面的案例中User實體和服務介面兩個專案都需要使用,程式碼複用不高。那麼我們可以將該部分程式碼抽取出來打成包,以供所有系統使用。故可以在建立一個工程專案名為dubbo-b-api。然後將相關的程式碼都放到該專案中,再在其它專案中匯入該專案依賴即可。這也是我們在真實專案中應該做的事情,因為呼叫方未必知道細節。