springboot2 整合 dubbo2.7 版本 以及新版 Dubbo_Admin

目錄

 

什麼是 Dubbo?

Dubbo2.7.x 版本變化

Dubbo 生態系統

SpringBoot 整合 Dubbo2.7.x

zookeeper 說明

zookeeper 安裝啓動

新版 Dubbo_Admin

創建 SpringBoot 項目


什麼是 Dubbo?

Apache Dubbo | ˈ d ʌ b əʊ | 是一款高性能、輕量級的開源 Java RPC 框架,它提供了三大核心能力:面向接口的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。

是的,是 Apache Dubbo,不在是 Alibaba Dubbo。原因簡單來說就是 Alibaba 將 dubbo 移交給 Apache 開源社區進行維護。
詳情見這兩篇文章:
Dubbo 正式進入 Apache 開源孵化器
從遇見到信任 | Apache Dubbo 的畢業之旅

Dubbo2.7.x 版本變化

  1. JDK 版本需求上升到 1.8
  2. 包名更換:com.alibaba.dubbo - > org.apache.dubbo
  3. 註冊中心一分爲三,變成註冊中心,元數據中心,配置中心
  4. 異步支持優化
  5. 服務治理規則優化
    ......

Dubbo 生態系統

圖片.png

 

SpringBoot 整合 Dubbo2.7.x

環境信息:
JDK 1.8
SpringBoot 2.1.14
Dubbo 2.7.4.1
準備工具:zookeeper 官網下載地址,新版 dubbo_admin 官網下載地址

zookeeper 說明

ZooKeeper 是一個開源的分佈式協調服務,由雅虎創建,是 Google Chubby 的開源實現。
分佈式應用程序可以基於 ZooKeeper 實現諸如數據發佈/訂閱、負載均衡、命名服務、分佈式協
調/通知、集羣管理、Master 選舉、配置維護,名字服務、分佈式同步、分佈式鎖和分佈式隊列
等功能。

Dubbo 支持多種註冊中心:redis,nacos,zookeeper..... 推薦使用 zookeeper。

zookeeper 安裝啓動

在官網下載好 zookeeper 之後,解壓。
然後將 conf 文件夾下的 zoo_sample.cfg 文件複製一份重命名爲 zoo.cfg 不做任何的修改。
進入 bin 文件夾下找到 zkServer.cmd(windows 環境下,Linux 使用 zkServer.sh) 雙擊啓動即可。
啓動後默認端口爲 2181。 zookeeper 在 3.5.5 版本後還會佔用 8080 端口,需要注意。

新版 Dubbo_Admin

使用前建議先閱讀官方文檔說明!!!!

可以通過官網 readme 說明進行操作,也可以直接使用 IDEA 拉取項目代碼運行。
IDEA 拉取項目之後先啓動 DubboAdminApplication 這個類,默認 8080 端口,已被佔用可以手動修改。
然後運行 dubbo-admin-ui 這個前端模塊(找到 package.json,然後找到 npm run dev ,點擊左側綠色啓動按鈕即可)注意:需要安裝 node.js。默認 8081 端口,也是可以手動在 index.js 裏面進行修改。
運行起來後訪問 :localhost:8081 就會出現如下畫面,就表示啓動成功了。
圖片.png

 

創建 SpringBoot 項目

先創建一個多模塊的 SpringBoot 項目,方便體驗 dubbo。

dubbo-api 接口服務模塊

pom 文件內容:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.hjljy</groupId>
        <artifactId>springboot_dubbo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.hjljy</groupId>
    <artifactId>dubbo_api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>dubbo_api</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
 

然後定義兩個簡單的接口

public interface TestService {
    String showName();
}

public interface TestService2 {
    String showName();
}
 

dubbo-provider 服務提供者

pom 文件內容:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--zookeeper 註冊中心客戶端引入 使用的是curator客戶端 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.4.1</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- dubbo 2.7.x引入-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.hjljy</groupId>
            <artifactId>dubbo_api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
 

創建對應接口實現:

@Service(version = "1.0.0")
public class TestService2Impl implements TestService2 {
    @Override
    public String showName() {
        return "HELLO   TestService2";
    }
}

@Service(version = "1.0.0")
public class TestServiceImpl implements TestService {
    @Override
    public String showName() {
        return "HELLO   DUBBO";
    }
}

application 配置文件配置:

# Spring boot application
spring.application.name=dubbo-provider-demo
# Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
dubbo.scan.base-packages=com.hjljy.dubbo_provider.impl   

# Dubbo Application
## The default value of dubbo.application.name is ${spring.application.name}
dubbo.application.name=${spring.application.name}

# Dubbo Protocol
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

## Dubbo Registry
dubbo.registry.address=zookeeper://127.0.0.1:2181

server.port=7010

注意事項:

  • @Service 一定要加上 version 屬性 並且是 dubbo 包下面的註解不是 Spring 裏面的註解
  • base-packages 指定接口實現所在路徑。
  • dubbo 的配置不再以 Spring 開頭。

dubbo-comsumer 服務消費者

pom 文件內容:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--zookeeper 註冊中心客戶端引入 使用的是curator客戶端 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>2.7.4.1</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- dubbo 2.7.x引入-->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.hjljy</groupId>
            <artifactId>dubbo_api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

消費創建的服務

@RestController
public class TestDubboController {
    @Reference(version = "1.0.0")
    TestService2 service2;
    @Reference(version = "1.0.0")
    TestService service;

    @GetMapping("test1")
    public String test1(){
        return  service.showName();
    }
    @GetMapping("test2")
    public String test2(){
        return  service2.showName();
    }
}

application 配置文件配置:

spring.application.name=dubbo-consumer-demo
dubbo.registry.address=zookeeper://127.0.0.1:2181
server.port=7000

啓動程序驗證 DUBBO

先啓動 DubboProviderApplication
然後啓動 DubboConsumerApplication
最後訪問 http://127.0.0.1:7000/test1 http://127.0.0.1:7000/test2
圖片.png

 


成功返回信息,驗證成功。

然後登陸 dubbo_admin 查看提供的服務:
圖片.png

 到這裏完成的 SpringBoot 整合 dubbo2.7.x 就完成了。


 

發佈了29 篇原創文章 · 獲贊 30 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章