首頁 > 軟體

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

2022-08-28 14:00:04

一、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搭分散式內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com