使用Cloud Toolkit开发Dubbo微服务应用样例工程

Alibaba Cloud Toolkit(简称Cloud Toolkit)是为开发者提供的一款IDE插件,您可以使用Cloud Toolkit快速创建Apache Dubbo应用样例工程,验证后,再使用Cloud Toolkit部署到EDAS上。本文以IntelliJ IDEA为例介绍如何创建一个以Nacos作为注册中心的Apache Dubbo应用样例工程。

准备工作

在使用Cloud Toolkit创建Apache Dubbo应用样例工程前,请完成以下工作:

  • 在IntelliJ IDEA中安装和配置Cloud Toolkit

    如果您使用Eclipse,请参见在Eclipse中安装和配置Cloud Toolkit

    如果您此前已经安装了Cloud Toolkit,请检查Cloud Toolkit是否为2019.6.2及以上版本。如果低于2019.6.2,请升级。

    1. 在IntelliJ IDEA的工具栏单击Cloud Toolkit图标IDEA,在下拉菜单中选择About

    2. About Alibaba Cloud Toolkit对话框中查看版本信息。

  • 在本地启动Nacos Server。

    本文的样例工程的注册中心为Nacos,在创建工程前,还需要先在本地启动Nacos Server。

    1. 下载最新版本的Nacos Server

    2. 解压下载的Nacos Server压缩包。

    3. 进入nacos/bin目录,启动Nacos Server。

      • Linux/Unix/Mac系统:执行命令sh startup.sh -m standalone

      • Windows系统:双击执行startup.cmd文件。

  • 可选:

    在本地开发应用时,可以使用Alibaba Cloud Toolkit插件实现本地应用和部署在EDAS中的应用的相互调用,即端云互联,而无需搭建VPN,帮助您提升开发效率。更多信息,请参见端云互联简介

创建Apache Dubbo应用样例工程

  1. 启动IntelliJ IDEA,在菜单栏选择File > New > Project

  2. New Project对话框左侧的导航栏中单击Apache Dubbo,在右侧界面中选择本地安装的JDK,然后单击Next

    edas-appDev-cloudToolkit-createApacheDubboProject

  3. 设置样例工程的参数,单击Next

    工程参数主要包括Dubbo的版本、注册中心、配置方式和Spring Boot的版本。创建 Apache Dubbo 应用样例工程

    参数说明及示例:

    • Project:选择Maven Project

    • GroupId:输入相应的Group ID,如com.dubbo.example

    • ArtifactId:输入dubbo-demo

    • Version:应用工程的版本,如1.0-SNAPSHOT

    • Dubbo:在下拉菜单中选择Dubbo的版本,如2.7.3

    • Registry:选择样例工程的注册中心,推荐选择Nacos

    • Configuration Method:样例工程的开发方式。推荐使用Annotation

    • Type:工程的服务类型,勾选ConsumerProvider,则会创建服务提供者和服务消费者的工程Demo。

    • Spring Boot:Spring Boot的版本,如2.1.5.RELEASE

  4. 设置Project nameProject location,然后单击 Finish

    创建 Apache Dubbo 应用样例工程02

    创建完成后,可以在IntelliJ IDEA中看到Apache Dubbo样例工程。此样例工程中包含Provider、Consumer和调用的接口。创建 Apache Dubbo 应用样例工程完成

验证Apache Dubbo应用样例工程

本文的样例工程使用Nacos为注册中心,且使用了注解的开发方式,所以需要验证Demo中的代码和配置。同时,由于同时创建了Provider和Consumer,所以还需要验证服务调用是否成功。

  • 该样例工程是一个Spring Boot + Dubbo的工程,检查pom.xml中是否中包含Apache Dubbo的依赖。

    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo</artifactId>
        <version>${dubbo.version}</version>
    </dependency>                    
  • 该样例工程注册中心选择了Nacos,检查pom.xml中是否中包含Nacos Registry的依赖。

    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-registry-nacos</artifactId>
        <version>${dubbo.version}</version>
    </dependency>                    

    同时在application.properties中检查本地Nacos Server的配置。

    ## Dubbo Registry
    dubbo.registry.address=nacos://localhost:8848                    
  • 该样例工程包含Provider和Consumer。

    • Provider提供了一个服务com.dubbo.example.DemoService,通过Dubbo协议暴露在12345端口,配置在application.properties中。

      # Dubbo Protocol
      dubbo.protocol.name=dubbo
      dubbo.protocol.port=12345                            
    • Consumer通过Nacos Server调用Provider提供的服务。

      @Reference(version = "1.0.0")
      private DemoService demoService;                            

验证服务调用

  1. 启动Provider。

    1. 在IntelliJ IDEA中运行(run)com.dubbo.example.provider.DubboProviderBootstrapmain函数。

    2. 观察标准输出。

      出现以下字段,说明Provider启动成功。

      2019-07-03 16:05:50.585  INFO 19246 --- [           main] c.d.e.provider.DubboProviderBootstrap    : Started DubboProviderBootstrap in 36.512 seconds (JVM running for 42.004)
      2019-07-03 16:05:50.587  INFO 19246 --- [pool-1-thread-1] .b.c.e.AwaitingNonWebApplicationListener :  [Dubbo] Current Spring Boot Application is await...           
  2. 启动Consumer并验证调用。

    1. 在IntelliJ IDEA中运行(Run)com.dubbo.example.consumer.DubboConsumerBootstrapmain函数。

    2. 观察服务端(Provider)的打印日志,出现以下字段,则说明调用成功。

      Hello Provider, response from provider: 30.5.XXX.XXX:12345                            

部署Apache Dubbo应用样例工程

在完成Apache Dubbo样例工程的创建和验证后,可以使用Cloud Toolkit将该样例工程打包(JAR包)并根据需要部署到EDAS的不同集群中,请参见: