Spring與Dubbo搭建一個簡單的分佈式詳情

一、zookeeper 環境安裝搭建

搭建 zookeeper 之前要確保當前的機器已經有 JDK 環境。

我使用的是 CentOS 7.5 華為雲服務器,

註意:如果你也同樣華為雲服務器必須配置一個安全組,不然你的應用程序會無法訪問你的 zookeeper 服務器,這一點我在後面也提到瞭。

二、實現服務接口 dubbo-interface

主要分為下面幾步:

  • 創建 Maven 項目;
  • 創建接口類
  • 將項目打成 jar 包供其他項目使用

項目結構:

r

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!

推薦閱讀: