1. 程式人生 > >dubbo入門學習筆記之環境準備

dubbo入門學習筆記之環境準備

  粗略的學完springcloud後由於公司的專案有用到一點dubbo,剛好手頭上又有dubbo的學習資料,於是趁機相對系統的學了下duboo框架,今天開始記錄下我的所學所悟;說來慚愧,今年之前,作為一個有差不多兩年開發經驗的程式設計師竟然連微服務都沒聽過,一方面自己對這方面的技術沒有過多關注,另一方面我從事的公司業務都相對傳統,一個ssh框架一臺伺服器基本足夠滿足業務需求了;而開始知道微服務這個概念是在我年初有跳槽的想法後,那時候開始關注這方面,才知道有什麼服務治理框架springcloud和dubbo;接下來記錄這次學習dubbo的詳細筆記

一、Dubbo介紹

  以下內容摘自dubbo官網:

  dubbo是一款高效能、輕量級的開源Java RPC框架,它提供了三大核心能力:面向介面的遠端方法呼叫,智慧容錯和負載均衡,以及服務自動註冊和發現;

  而在我目前這個水平的認知裡,dubbo就是一款解決服務間通訊的框架,他能讓不在一臺伺服器的各個服務進行相互呼叫,對使用者來說就像呼叫本地方法一樣,併為我們整合了智慧容錯和負載均衡,當某個服務不可用或是當某個服務新增時dubbo會自動發現並註冊他們。dubbo還提供了管理控制檯,我們可以很直觀的看到當前註冊中心的狀態以及註冊中心中註冊的服務(包括服務的提供者和消費者),還可以對這些服務進行各種管理,包括服務動態配置,負載均衡,訪問控制,權重管理等等;下面貼上dubbo官網的架構圖:

  由圖可見,和springcloud一樣,dubbo也有服務消費者、提供者以及註冊中心的概念,只不過springcloud整合了eureka作為註冊中心,而dubbo使用的註冊中心由第三方提供;官網推薦使用 zooKeeper;dubbo架構裡還提供了一個簡單的Montior(監控中心),它能夠實時監控服務間的呼叫情況,包括呼叫的次數,時間以及成功失敗與否,需要注意的是如果monitor掛掉不會影響服務間的相互呼叫

二、Dubbo環境搭建(基於普通maven專案的搭建,後續會記錄基於springboot的搭建)

  接下來進行dubbo的環境搭建,根據架構圖總結為以下幾步:

  (一)搭建zooKeeper註冊中心(由於我的老爺機效能,不足以支撐VMware所以我只在Windows環境下搭建了)

  (二)dubbo管理控制檯的搭建

  (三)監控中心的搭建

  (四)開發服務提供者和消費者並讓他們在啟動時分別向註冊中心註冊和訂閱服務

  (五)進行服務間的呼叫並測試

  (一)搭建zooKeeper註冊中心

    2、conf目錄下zoo_sample.cfg檔案中的clientPort表示zooKeeper的埠號,dataDir的值表示臨時資料儲存的目錄,可以在conf同級目錄新建data資料夾,然後將dataDir的值設成data,即dataDir=../data

    3、進入bin目錄,如果這時候啟動zkServer.cmd應該會報錯,原因是zkEnv.cmd定義的zoo.cfg檔案找不到,這時候有兩種解決辦法,一是進入/conf目錄將zoo_sample.cfg複製一份改名為zoo.cfg;另一種方法是將bin目錄下的zkEnv.cmd檔案以記事本方式開啟,將set ZOOCFG=%ZOOCFGDIR%\zoo.cfg改為set ZOOCFG=%ZOOCFGDIR%\zoo_sample.cfg;

    4、這時候你可以雙擊或是使用命令列啟動bin下的zkServer.cmd檔案了,但是我試過的兩次這時候還是報錯的,錯誤如下圖所示( JAVA_HOME is incorrectly set.):

  這應該是JAVA_HOME配置出了問題,可以去zkEnv.cmd進行如下修改:將set JAVA_HOME=%JAVA_HOME:"=%改為set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_181"(等號後面的值是對應的本地jdk路徑),然後將所有用雙引號括起來的JAVA_HOME外面的雙引號去掉,然後重啟zkServer.cmd就能成功啟動zooKeeper了

   二、dubbo管理控制檯的搭建

    1、在https://github.com/apache/incubator-dubbo-ops下載dubbo-admin專案,這裡需要注意一點我直接進去的時候預設分支是develop,這個分支應該是各路大神正在開發的,我看每天都有跟新,但一開始我不知道啊,看到它的目錄如下:

   我想dubbo的管理控制檯都做成前後端分離的了呀,這麼高階!於是就給下載下來了,dubbo-admin-backend專案還好,是一個springboot專案,用maven打個包就執行起來了,但是dubbo-admin-frontend專案開始 我也是使用mvn打包,但打出了一個node資料夾,對nodejs我一點了解沒有,後來通過該專案的README.md檔案和百度才把他起起來,然後還很欣喜的認為啟動成功了,於是按照控制檯的提示打開了dubbo-admin-frontend專案的首頁,結果如下:

   各種英文啊,要知道我的概念裡dubbo-admin的頁面全是中文的啊(等下搭建成功上圖就知道了),心裡還在想難道是dubbo做的更新,於是啟動了之前開發好的一個服務向註冊中心進行註冊然後看控制檯有沒有顯示,結果是令我失望的,無論怎麼重新整理頁面還是如上,啥都沒有,尷尬的是頁面右上角的設定,通知這些按鈕點選都沒有效果,反應遲鈍的我才意識到這有可能只是個開發中的demo;難怪我百度dubbo-admin-frontend顯示的資訊極少啊,於是我才回過頭來想這是為什麼,從dubbo官網跳到github然後不死心的慢慢找不同,最後終於發現是我選錯了分支,尷尬一筆(好奇不知道有沒有和我一樣的白痴小白啊,哈哈),當我在相同的地址切換到master分支的時候,我印象中的dubbo-addmin終於出現了,至此浪費了一上午時間的問題終於搞定了,只是好奇這個develops分支下面的是幹嘛的,是在準備跟新dubbo-addmin做成前後端分離的專案嗎?希望有知道的大神告知,謝謝

  選對分支後的頁面如下(然後直接下載即可):

   2、下載下來後進行解壓,進入dubbo-admin資料夾,開啟windows的命令控制檯(可直接在當前路徑裡輸入cmd快速啟動這樣就不用一層層的切換到當前目錄了),輸入命令:mvn clean package -Dmaven.test.skip=true進行打包,打包成功後進入target資料夾,會看到dubbo-admin-0.0.1-SNAPSHOT.jar,同樣使用cmd輸入java -jar dubbo-admin-0.0.1-SNAPSHOT.jar執行該專案,這樣一切正常的話就可以直接訪問了(使用者名稱密碼預設都為root),訪問成功頁面如下:

  需要注意的是,在使用mvn打包前最好進入dubbo-admin/src/main/resources下開啟application.properties檔案瞄一眼dubbo.registry.address的值是否是上面搭建的zooKeeper註冊中心的地址,本機測試的話只要關注埠號與之前起的zooKeeper埠是否一致即可.可進入zookeeper-3.4.13/conf/zoo_sample.cfg檔案檢視zooKeeper的埠號

  至此dubbo的管理控制檯就搭建成功了,後續我們可以在這裡檢視服務的註冊情況以及對服務的相應管理;

  三、簡單監控中心的搭建

   1、程式碼下載地址和dubboadmin一樣,都位於incubator-dubbo-ops下,只不過dubbo管理控制檯是dubbo-admin專案,而監控中心對應的是dubbo-monitor-simple專案,流程其實都是差不多的,把對應的專案打包然後跑起來就好了;但需要注意的是,我們打包之前都要看一樣對應的配置檔案裡面的註冊中心地址是否正確以及自身的埠號,ubbo-monitor-simple的配置檔案在incubator-dubbo-ops-master\dubbo-monitor-simple\src\main\resources\conf\dubbo.properties中;一般我們都在本地測試的話是不用修改的,因為預設的註冊中心就是zookeeper://127.0.0.1:2181;埠號是8080

   2、接下來就是跑這個監控中心了,進入dubbo-monitor-simple資料夾,使用maven進行打包並跳過單元測試,命令如下:mvn package -Dmaven.test.skip;打包成功後進入targer資料夾,解壓dubbo-monitor-simple-2.0.0-assembly.tar.gz後會有一個dubbo-monitor-simple-2.0.0資料夾,進入dubbo-monitor-simple-2.0.0\assembly.bin並執行start.bat,這樣監控中心算是啟動起來了,啟動成功後訪問localhost:8080頁面如下:

  至此,dubbo的監控中心也算是搭建好了,後續可以結合dubbo-admin完美監控服務的執行狀態,包括介面的暴露、註冊情況,以及他們之前的呼叫明細

  時間關係這篇筆記到此為止,後續記錄運用到dubbo的簡單demo