Spring與Dubbo搭建一個簡單的分佈式詳情
一、zookeeper 環境安裝搭建
搭建 zookeeper 之前要確保當前的機器已經有 JDK 環境。
我使用的是 CentOS 7.5 華為雲服務器,
註意:如果你也同樣華為雲服務器必須配置一個安全組,不然你的應用程序會無法訪問你的 zookeeper 服務器,這一點我在後面也提到瞭。
二、實現服務接口 dubbo-interface
主要分為下面幾步:
- 創建 Maven 項目;
- 創建接口類
- 將項目打成 jar 包供其他項目使用
項目結構:
dubbo-interface 後面被打成 jar 包,它的作用隻是提供接口。
1. dubbo-interface 項目創建
File->New->Module...
,然後選擇 Maven類型的項目,其他的按照提示一步一步走就好。
2. 創建接口類
public interface HelloService { public String sayHello(String name); }
3. 將項目打成 jar 包供其他項目使用
點擊右邊的 Maven Projects
然後選擇 install ,這樣 jar 包就打好瞭。
三、實現服務提供者 dubbo-provider
主要分為下面幾步:
- 創建 springboot 項目;
- 加入 dubbo 、zookeeper以及接口的相關依賴 jar 包;
- 在 application.properties 配置文件中配置 dubbo 相關信息;
- 實現接口類;
- 服務提供者啟動類編寫
項目結構:
1. dubbo-provider 項目創建
創建一個 SpringBoot 項目,註意勾選上 web 模塊。
2. pom 文件引入相關依賴
需要引入 dubbo 、zookeeper以及接口的相關依賴 jar 包。註意將本項目和 dubbo-interface
項目的 dependency
依賴的 groupId
和 artifactId
改成自己的。
dubbo 整合spring boot 的 jar 包在這裡找dubbo-spring-boot-starter
。zookeeper 的 jar包在 Maven 倉庫 搜索 zkclient
即可找到。
<dependency> <groupId>top.snailclimb</groupId> <artifactId>dubbo-interface</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--引入dubbo的依賴--> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!-- 引入zookeeper的依賴 --> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency>
3. 在 application.properties 配置文件中配置 dubbo 相關信息
配置很簡單,這主要得益於 springboot 整合 dubbo 專屬的@EnableDubboConfiguration
註解提供的 Dubbo 自動配置。
# 配置端口 server.port=8333 spring.dubbo.application.name=dubbo-provider spring.dubbo.application.registry=zookeeper://ip地址:2181
4. 實現接口
註意:@Service
註解使用的時 Dubbo 提供的而不是 Spring 提供的。另外,加瞭Dubbo 提供的 @Service
註解之後還需要加入
import com.alibaba.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; import top.snailclimb.service.HelloService; @Component @Service public class HelloServiceImpl implements HelloService { @Override public String sayHello(String name){ return "Hello " + name; } }
5. 服務提供者啟動類編寫
註意:不要忘記加上 @EnableDubboConfiguration
註解開啟Dubbo 的自動配置。
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // 開啟dubbo的自動配置 @EnableDubboConfiguration public class DubboProviderApplication { public static void main(String[] args){ SpringApplication.run(DubboProviderApplication.class, args); } }
四、實現服務消費者 dubbo-consumer
主要分為下面幾步:
- 創建 springboot 項目;
- 加入 dubbo 、zookeeper以及接口的相關依賴 jar 包;
- 在 application.properties 配置文件中配置 dubbo 相關信息;
- 編寫測試類;
- 服務消費者啟動類編寫
- 測試效果
項目結構:
第1,2,3 步和服務提供者的一樣,這裡直接從第 4 步開始。
4. 編寫一個簡單 Controller 調用遠程服務
import com.alibaba.dubbo.config.annotation.Reference; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import top.snailclimb.service.HelloService; @RestController public class HelloController { @Reference private HelloService helloService; @RequestMapping("/hello") public String hello(){ String hello = helloService.sayHello("world"); System.out.println(helloService.sayHello("CrazyK")); return hello; } }
5. 服務消費者啟動類編寫
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableDubboConfiguration public class DubboConsumerApplication { public static void main(String[] args){ SpringApplication.run(DubboConsumerApplication.class, args); } }
五、測試
瀏覽器訪問 http://localhost:8330/hello
頁面返回 Hello world
,控制臺輸出Hello SnailClimb,和預期一致,使用SpringBoot+Dubbo 搭建第一個簡單的分佈式服務實驗成功!
到此這篇關於Spring與Dubbo搭建一個簡單的分佈式詳情的文章就介紹到這瞭,更多相關Spring Dubbo搭分佈式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java中dubbo+zookeeper微服務架構簡介
- Java Dubbo框架知識點梳理
- springboot分佈式整合dubbo的方式
- 升級dubbo2.7.4.1版本平滑遷移到註冊中心nacos
- Spring Boot 整合 Apache Dubbo的示例代碼