天天看點

還在為項目初始化、依賴管理問題困擾?Dubbo Initializer 來了!

作者:阿裡雲雲原生

作者:Dubbo 社群

通過這篇文章,你将學習如何在 1 分鐘内用 Dubbo Initializer 模闆快速建立 Dubbo Spring Boot 項目,幫你解決項目初始化問題。

什麼是 Dubbo Initializer?

Dubbo Initializer 是一款幫助開發者快速生成 Dubbo Spring Boot 項目的 UI 工具,它幫助生成具有基本 Dubbo 配置、代碼示例、Web、SQL 等微服務元件的項目源碼并提供 ZIP 包下載下傳方式。下載下傳後,你就可以将項目模闆代碼導入 IDE 開發環境并增加自己的業務邏輯,免去從頭初始化項目的各種繁瑣操作。

想馬上體驗使用 Dubbo Initializer 建立 Spring Boot 項目,請通過浏覽器通路以下連結:

注:Initializer 仍在持續更新中,更多 Dubbo Feature 的支援将會陸續釋出。

使用 Intializer 建立 Dubbo Spring Boot 微服務項目

使用浏覽器打開 Initializer 位址:https://start.dubbo.apache.org/,你将看到以下界面:

還在為項目初始化、依賴管理問題困擾?Dubbo Initializer 來了!

選擇 Dubbo 版本

Initializer 會使用 dubbo-spring-boot-starter 建立 Spring Boot 項目,是以我們首先需要選擇 Dubbo 與 Spring Boot 的版本。

還在為項目初始化、依賴管理問題困擾?Dubbo Initializer 來了!

錄入項目基本資訊

接下來,填入項目基本資訊,包括項目坐标、項目名稱、包名、JDK 版本等。

還在為項目初始化、依賴管理問題困擾?Dubbo Initializer 來了!

選擇項目結構

有兩種項目結構可共選擇,分别是 單子產品 和 多子產品,在這個示例中我們選擇 單子產品。

還在為項目初始化、依賴管理問題困擾?Dubbo Initializer 來了!
  • 單子產品,所有元件代碼存放在一個 module 中,特點是結構簡單。
  • 多子產品,生成的項目有 API、Service 兩個子產品,其中 API 用于存放 Dubbo 服務定義,Service 用于存放服務服務實作或調用邏輯。通常多子產品更有利于服務定義的單獨管理與釋出。

選擇依賴元件

我們為模闆預設選擇如下幾個依賴元件:

  • Dubbo 元件
    • Java Interface
    • 注冊中心,zookeeper
    • 協定 TCP
  • 常用微服務元件
    • Web
    • Mybatis
    • 模版引擎
還在為項目初始化、依賴管理問題困擾?Dubbo Initializer 來了!

基于以上選項,生成的項目将以 Zookeeper 為注冊中心,以高性能 Dubbo2 TCP 協定為 RPC 通信協定,并且增加了 Web、Mybatis 等元件依賴和示例。

注意:上面選中的 Dubbo 元件也都是預設選項,即在不手動添加任何依賴的情況下,打開頁面後直接點選代碼生成,生成的代碼即包含以上 Dubbo 元件。

如手動添加依賴元件,請注意 Dubbo 各個依賴元件之間的隐含組合關系限制,比如

  • 如果選擇了【Dubbo Service API】-【IDL】,則目前僅支援選擇 【Dubbo Protocol】中的 【HTTP/2】或 【gRPC】 協定。
  • 同一個依賴分組下,相同類型的依賴隻能選擇一個,比如 【Dubbo Registry&Config&Metadata】分組下,從注冊中心視角【Zookeeper】、【Nacos】隻能選一個,如果要設定多注冊中心,請在生成的代碼中手動修改配置。但注冊中心、配置中心可以分别選一個,比如 Zookeeper 和 Apollo 可同時選中。

生成項目模闆

  • 點選 “浏覽代碼” 可線上浏覽項目結構與代碼
  • 點選 “擷取代碼” 生成項目下載下傳位址
還在為項目初始化、依賴管理問題困擾?Dubbo Initializer 來了!

解壓的 ZIP 包下載下傳到本地後,解壓并導入 IDE 後即可根據需要開發定制 Dubbo 應用。

示例項目代碼解讀

以下以生成的單子產品代碼為例,講解生成的代碼含義。

1. 服務定義

public interface DemoService {    String hello(String arg);}           

2. 業務邏輯實作

@DubboService
public class DemoServiceImpl implements DemoService {
    public String hello(String arg) {
        // put your microservice logic here
    }
}           

3. 項目配置

dubbo:
  application:
    name: dubbo-demo
  protocol:
    name: dubbo
    port: -1
  registry:
    address: zookeeper://127.0.0.1:2181
           

4. 代碼依賴

<dependencies>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-thymeleaf</artifactId>
      </dependency>
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
          <groupId>org.apache.dubbo</groupId>
          <artifactId>dubbo-dependencies-zookeeper</artifactId>
          <type>pom</type>
      </dependency>
      <dependency>
          <groupId>org.apache.dubbo</groupId>
          <artifactId>dubbo-spring-boot-starter</artifactId>
      </dependency>
      <dependency>
          <groupId>org.mybatis.spring.boot</groupId>
          <artifactId>mybatis-spring-boot-starter</artifactId>
          <version>2.3.0</version>
      </dependency>
  </dependencies>           

總結

Dubbo Initializer 作為全面提升 Dubbo 易用性的一個重要規劃,其功能仍在持續演進中。以下是正在推進的一些工作。

IntelliJ IDEA 官方合作

IntelliJ IDEA 2023 近期剛剛釋出內建 Dubbo 的官方架構↓

Apache Dubbo in Spring Framework:

目前,雙方社群正在商讨基于 Dubbo Initializer 的內建方案,相信用不了多久,我們就能在你最喜歡的 IDE 中看到 Dubbo 項目模闆的官方支援了。

Dubbo Boot Starters

除了 Dubbo Initializer 之外,Dubbo 社群還正在建設一批 Dubbo Boot Starters,目标是讓使用者能夠做到零配置使用 Dubbo 架構,隻需要引入 starter 依賴即可,不必關心繁瑣的 pom 依賴和預設配置。

請在此快速體驗 Dubbo Initializer 吧!

連結:

繼續閱讀