基於SpringBoot整合Dubbo+Zookeeper
阿新 • • 發佈:2022-04-10
一、基本介紹
2、ZooKeeper:是Google的Chubby一個開源的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。
二、安裝配置
1、安裝配置過程
//ZooKeeper 1、下載 連結:https://pan.baidu.com/s/1dukbp2Ld54Mqtnt9F6Igyw 提取碼:o8e6 2、安裝 解壓 3、配置 (1)複製zookeeper-3.4.14\conf\zoo_sample.cfg,重新命名為zoo.cfg (2)開啟zoo.cfg,新增data目錄及log目錄的路徑配置 #dataDir=/tmp/zookeeper dataDir=D:\\Study\\other\\Dubbo_ZooKeeper\\DownLoad\\temp\\data dataLogDir=D:\\Study\\other\\Dubbo_ZooKeeper\\DownLoad\\temp\\log 4、執行 (1)開啟cmd (2)切換至目錄zookeeper-3.4.14\bin (3)執行zkServer.cmd //Dubbo 1、下載 連結:https://pan.baidu.com/s/193xCvde4clGJRXShTP14mg 提取碼:x9rt 2、安裝 解壓 3、配置及執行 (1)cmd進入目錄Dubbo\dubbo-dubbo-2.5.8\dubbo-admin (2)執行mvn clean install命令,進行專案打包(注:打包過程可能需要耗時大約30分鐘) (3)將dubbo.war包放入tomcat的webapps目錄下 (4)然後到tomcat的bin目錄下執行startup.bat,啟動tomcat 4、訪問 (1)瀏覽器輸入localhost:8080/dubbo-admin-2.5.8,如果啟動成功就可以在瀏覽器訪問dubbo頁面了,登入使用者和密碼:root/root 注:8080埠指的是你的本地tomcat實際執行埠,dubbo-admin-2.5.8為專案名
2、成果
(1)Zookeeper啟動成功
(2)Dubbo配置成功
//打包成功
//啟動成功
三、整合DUbbo和ZooKeeper
1、整合過程
//基於SpringBoot進行DUbbo和Zookeeper整合(目錄結構如圖所示) 1、建立父專案:DubboAndZookeeper_study //新增相關的配置:父框架、編碼及JDK版本配置、公共依賴集、工具集 <!-- 引入繼承SpringBoot框架父依賴 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.17.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <!-- 引入SpringBoot的測試依賴 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.0.0.RELEASE</version> </dependency> <!-- dubbo --> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency> <!-- zookeeper --> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.8</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 2、建立公共服務api子專案:common_api //建立公共api介面 /** * 提供公共服務api介面 */ public interface HelloService { public String sayHello(String message); } 3、建立服務提供者子專案:service_provider //實現服務介面(需要注意的是此處的Service註解為dubbo的註解!!) /** * 服務提供方:實現公共api介面 */ @Service(interfaceClass = HelloService.class) public class HelloServiceImpl implements HelloService { public String sayHello(String message){ return "hello:"+message; } } //新增專案啟動類 /** * 專案啟動類 */ @EnableDubbo @SpringBootApplication public class MainApplication { public static void main(String[] args){ SpringApplication.run(MainApplication.class,args); } } //新增專案配置 server: port: 9001 dubbo: application: # 服務名稱,保持唯一 name: server-provider # zookeeper地址,用於向其註冊服務 registry: protocol: zookeeper address: zookeeper://127.0.0.1:2181 protocol: name: dubbo port: 20880 scan: base-packages: com.lkw.impl 4、建立服務消費者子專案:service_consumer //新增控制器,用於訪問服務 /** * 服務消費方:請求呼叫服務 */ @RestController public class HelloController { @com.alibaba.dubbo.config.annotation.Reference private HelloService helloService; @RequestMapping("/sayHello") public String sayHello(String message){ return helloService.sayHello(message); } } //新增專案啟動類 /** * 專案啟動類 */ @SpringBootApplication @EnableDubboConfig public class MainApplication { public static void main(String[] args){ SpringApplication.run(MainApplication.class,args); } } //新增專案配置 server: port: 9003 dubbo: application: # 服務名稱,保持唯一 name: server-consumer # zookeeper地址,用於向其註冊服務 registry: protocol: zookeeper address: zookeeper://127.0.0.1:2181 scan: base-packages: com.lkw.controller 5、除錯 //啟動service_provider //啟動service_consumer //訪問dubbo,觀察註冊中心是否已發現提供者和消費者兩個應用,以及服務HelloService //瀏覽器模擬客戶端訪問service_consumer:localhost:9003/sayHello,觀察頁面顯示,通過dubbo實現rpc訪問是否成功
2、成果
(1)目錄結構
(2)基於ZooKeeper的Dubbo服務發現生效
(3)Dubbo的RPC生效服務消費者成功訪問服務提供者的服務
四、FAQ問題集錦
1、在cmd裡執行“mvn clean install”命令後提示“mvn為不識別批處理名令”?
原因:未安裝maven工具或未給maven工具進行環境變數配置
解決方法:在環境變數->系統變數->Path->新增maven的安裝bin路徑,例:D:/maven/bin。最後重新開啟cmd即可
解決:把dubbo關掉,重新啟動ZK再重新啟動dubbo服務