springboot應用訪問zookeeper的流程

本文講解瞭如果通過springboot快速開發web服務,並讀取zookeeper的過程,為後續的“在docker下部署dubbo服務“做準備工作,本文相關的操作都在mac上進行的,文中有些目錄和windows有些區別,請各位註意對應自己的電腦做對應的修改。

本地部署zookeeper

首先去官網下載zookeeper包,推薦使用穩定版3.3.6

下載後在本地解壓,進入zookeeper-3.3.6/conf目錄下,將zoo_sample.cfg文件改名為zoo.cfg,再用文本編輯器打開這個文件,修改如下紅框位置的內容,改成本地一個可以訪問的已有目錄:

640?wx_fmt=png

打開命令行窗口,進入zookeeper-3.3.6/bin目錄,windows下執行zkServer.cmd status,mac和linux下執行./zkServer.sh status,該命令是查看當前zookeeper的狀態,由於還沒有啟動zookeeper,我們會看到如下錯誤信息:

640?wx_fmt=png

現在啟動zookeeper吧,windows下執行zkServer.cmd start,mac和linux下執行./zkServer.sh start,啟動信息如下:

640?wx_fmt=png

這時候輸入zkServer.cmd status,看到的結果如下:

640?wx_fmt=png

可以看到zookeeper正在以standalone模式運行中;

現在我們用客戶端命令來試試服務,windows下執行zkCli.cmd, mac和linux下執行./zkCli.sh,連接上服務端:

640?wx_fmt=png

執行create /node1 abc創建一個znode,對應的value是"abc",再執行get /node1可以查看/node_1的value,如下圖:

640?wx_fmt=png

關於zookeeper的安裝和驗證就寫到這裡瞭,接下來我們開始開發應用來訪問這個zookeeper節點的數據。

開發基於spring boot的應用

打開IntelliJ IDEA CE,創建名為zookeeperdemo的Maven工程,指定模板,如下圖:

640?wx_fmt=png

工程創建後要做的就是修改pom,增加庫的依賴,已經添加配置文件,寫java代碼,具體的源碼請在我的git上下載,鏈接

源碼在以下位置:

640?wx_fmt=png

源碼下載下來後,可以通過Intellij IEDA導入,導入的時候以下紅框中的選項需要選中,這樣才能導入maven工程:

640?wx_fmt=png

整個工程非常簡單,首先是pom文件,依賴的父工程要用spring-boot-starter-parent:

640?wx_fmt=png

還要添加對springboot的依賴,以及build時使用springboot對應的插件:

640?wx_fmt=png

在resource目錄增加application.properties文件配置一些重要的參數,例如日志目錄,web server端口等,如下圖:

640?wx_fmt=png

最後是寫java代碼,由於隻是個demo,這裡的代碼非常簡單,一個入口,一個controller,入口如下:

640?wx_fmt=png

controller如下,是一個簡單的rest響應,鏈接zookeeper取得znode節點的值然後返回,註意由於申明瞭RestController,所以返回的內容非頁面而是字符串:

640?wx_fmt=png

至此,編碼結束,來試試吧,如下圖新建一個命令:

640?wx_fmt=png

選擇maven:

640?wx_fmt=png

命令內容為clean package -U -Dmaven.test.skip=true spring-boot:run,如下:

640?wx_fmt=png

命令創建完成後,點擊“run“執行:

640?wx_fmt=png

此時打開瀏覽器,輸入http://localhost:2222/zkget即可得到我們在zookeeper上設置的/node_1的value,如下圖:

640?wx_fmt=png

至此,基於spring boot框架訪問zookeeper的demo開發以及結束,後面我們嘗試通過Dockerfile的方式制作zookeeper的鏡像,然後通過docker的容器提供zookeeper的服務。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: