項目實戰Dubbo Spring Cloud 並使用Nacos實現註冊中心

搞了大半天,終於趟平了。

本文中主要是基於Dubbo實現了服務提供和調用的demo,並接入Nacos註冊中心。

Dubbo Spring Cloud 是Spring Cloud Alibaba 的核心組件,它構建在原生的Spring Cloud 標準之上,不僅覆蓋了Spring Cloud原生特性,還提供了更加穩定和成熟的實現。接下來,就讓我們一步一步揭開它的神祕面紗。

話不多說直接上代碼。

版本選擇

Spring Cloud Version : Hoxton.SR9

Spring Cloud Alibaba Version : 2.2.6.RELEASE

Spring Boot Version : 2.3.2.RELEASE

(重要)版本一定要匹配,不然一堆報錯搞的煩死了

實現Dubbo服務提供方

1、創建一個父工程 dubbo-demo

圖片

pom.xml中增加 <packaging>pom</packaging>

刪除src文件夾

2、創建provider-api模塊

這是一個普通的maven工程,在其中創建接口,並執行mvn install 將jar包安裝到本地倉庫

/** * 服務提供者接口 */public interface HelloService {    /**     * 定義接口,傳入名字,打招呼     * @param name     * @return     */    String hello(String name);}

3、創建provider模塊

第一步,這是一個spring boot工程,添加依賴

<dependencies>        <dependency>            <groupId>cn.guoxiaolong</groupId>            <artifactId>provider-api</artifactId>            <version>1.0-SNAPSHOT</version>        </dependency>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter</artifactId>            <version>${spring.cloud.alibaba.version}</version>        </dependency>        <dependency>            <groupId>com.alibaba.cloud</groupId>            <artifactId>spring-cloud-starter-dubbo</artifactId>            <version>${spring.cloud.alibaba.version}</version>        </dependency>        <dependency>            <groupId>com.alibaba.cloud</groupId>            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>            <version>${spring.cloud.alibaba.version}</version>        </dependency>    </dependencies>

依賴說明如下:

provider-api :api接口聲明

spring-cloud-starter:Spring Cloud核心包

spring-cloud-starter-dubbo:引入Spring Cloud Alibaba Dubbo

spring-cloud-starter-alibaba-nacos-discovery:基於nacos實現服務註冊發現的artifactId

 

第二步,創建接口的實現類HelloServiceImpl,其中@DubboService是Dubbo服務的註解,表示當前服務會發布爲一個遠程服務

@DubboServicepublic class HelloServiceImpl implements HelloService {
    private static final Logger logger = LoggerFactory.getLogger(HelloServiceImpl.class);
    @Override    public String hello(String name) {        logger.info("service impl param:{}",name);        return "Hello," + name + " welcome to AlwaysBeCoding!";    }}

第三步,在application.properties中配置dubbo相關信息​​​​​​​

spring.application.name=providerdubbo.scan.base-packages=cn.guoxiaolong.dubbodubbo.protocol.name=dubbodubbo.protocol.port=20882dubbo.protocol.host=100.149.40.112dubbo.registry.address=spring-cloud://localhostspring.cloud.nacos.discovery.server-addr=100.149.40.112:8848

其中spring.cloud.nacos.discovery.server-addr 爲註冊中心地址,這裏我單機啓動的註冊中心(參考:Nacos快速開始安裝使用),也可以採用高可用部署(基於Nacos實現高可用服務註冊中心部署

 

第四步,創建啓動類並啓動服務​​​​​​​

@SpringBootApplicationpublic class ProviderApplication {    public static void main(String[] args) {        SpringApplication.run(ProviderApplication.class,args);    }}

查看註冊中心,服務已經註冊上去了

圖片

實現Dubbo服務調用方

1、創建一個consumer的spring boot項目

第一步,增加web依賴,其他與服務提供方一致​​​​​​​

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId>    <version>${spring.boot.version}</version></dependency>

第二步,創建HelloController類,暴露一個hello服務,來消費Dubbo服務提供者的HelloService服務。​​​​​​​

@RestControllerpublic class HelloController {
    private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
    @DubboReference    private HelloService helloService;
    @GetMapping("/hello")    public String hello(String name){        logger.info("controller param:{}"+name);        String result = helloService.hello(name);        logger.info("controller result:{}",result);        return result;    }}

第三步,創建啓動類

@SpringBootApplication

public class ConsumerApplication {
    public static void main(String[] args) {        SpringApplication.run(ConsumerApplication.class,args);    }}

 

第四步,在application.properties中配置dubbo相關信息​​​​​​​

spring.application.name=consumerdubbo.scan.base-packages=cn.guoxiaolong.dubbodubbo.protocol.name=dubbodubbo.protocol.port=20883dubbo.protocol.host=100.149.40.112dubbo.registry.address=spring-cloud://localhostspring.cloud.nacos.discovery.server-addr=100.149.40.112:8848

第五步,啓動服務並測試調用

圖片

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章