Dubbo 使用 SOFARegistry

本文介绍如何改造本地 Dubbo 工程,将其接入 SOFA 服务注册中心 SOFARegistry。

前置条件

在进行开发前,首先需要完成本地 Maven settings 中对 JAR 包仓库的配置,工程才可以通过 Maven 获取仓库里注册中心的 JAR 包。配置说明如下:

  • 配置路径:

    • Windows 系统:C:\Users\userName_XXX\.m2\settings.xml

    • Mac or Linux 系统:/Users/userName_XXX/.m2/settings.xml

      重要

      Linux 和 Mac OS 系统上,.m2 目录可能被隐藏。Mac OS 可以通过 Command + Shift + . 进行查看;Linux 可以通过 Ctrl + H 进行查看。

  • 配置内容:

    1. 配置 mvn.cloud.alipay.com 仓库的地址及用户名密码。

      配置示例如下:

      <servers>
          <server>
              <id>nexus-server@public</id>
              <username>${username}</username>
              <password>${password}</password>
          </server>
          <server>
              <id>nexus-server@public-snapshots</id>
              <username>${username}</username>
              <password>${password}</password>
          </server>
          <server>
              <id>mirror-all</id>
              <username>${username}</username>
              <password>${password}</password>
          </server>
      </servers>
    2. 更新开发环境 mirror 配置(可选,本地不能正常下载 JAR 包时进行配置)。

      如果本地 maven settings.xml(默认路径~/.m2/settings.xml )配置 mirror 为* , 需要排除alipay-cloud-server@public 仓库托管,示例如下:

      <mirror>
          <id>nexus-aliyun</id>
          <!-- <mirrorOf>*</mirrorOf> -->
         <mirrorOf>*,!alipay-cloud-server@public</mirrorOf>
          <name>Nexus aliyun</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>

      mirrorOf 的配置 * 改成 *,!alipay-cloud-server@public, 代表不需要托管仓库 alipay-cloud-server@public

您也可以前往 脚手架控制台 下载已配置好的 settings.xml,并前往上述配置路径,覆盖原有 settings.xml 文件。settings

操作步骤

  1. 在本地开发应用。

    1. 添加仓库地址。

      为保证 SDK 和对应 tracer 包能下载到,请在项目根 pom.xml 添加仓库地址:

      <repositories>
        <repository>
          <id>alipay-cloud-server@public</id>
          <url>http://mvn.cloud.alipay.com/nexus/content/groups/open</url>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
    2. 在工程根目录下的 pom.xml 中,引入 sofa-registry-cloud-all SDK 依赖。

      版本信息,请参见 SDK 版本说明

      <dependency>
          <groupId>com.alipay.sofa</groupId>
          <artifactId>sofa-registry-cloud-all</artifactId>
          <!-- 替换 x.x.x 为该 SDK 最新版本号 -->
          <version>x.x.x</version>
      </dependency>
      说明

      • sofa-registry-cloud-all SDK 1.2.8 版本兼容目前 Dubbo 应用的所有版本。

      • 如果是通过 sofa-registry-dubbo-all 引入的 SDK 依赖,可直接升级为 sofa-registry-cloud-all 依赖。

    3. 引入 Tracer 依赖。

      根据 Dubbo 应用框架版本的不同,Tracer 提供下述 3 种接入方式,请根据实际业务需求选择合适方式。

      • Spring Boot 1.x

        <!-- for Spring Boot 1.X -->
        <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
        <version>2.3.7.JST.1</version>
        <exclusions>
        <exclusion>
        <groupId>com.alipay.sofa.common</groupId>
        <artifactId>sofa-common-tools</artifactId>
        </exclusion>
        <exclusion>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>tracer-enterprise-dst-plugin</artifactId>
        </exclusion>
        </exclusions>
        </dependency>
        <dependency>
        <groupId>com.alipay.sofa.common</groupId>
        <artifactId>sofa-common-tools</artifactId>
        <version>1.0.17</version>
        </dependency>
      • Spring Boot 2.x

        <!-- for Spring Boot 2.X -->
        <dependency>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
        <version>3.2.3.JST.1</version>
        <exclusions>
        <exclusion>
        <groupId>com.alipay.sofa.common</groupId>
        <artifactId>sofa-common-tools</artifactId>
        </exclusion>
        <exclusion>
        <groupId>com.alipay.sofa</groupId>
        <artifactId>tracer-enterprise-dst-plugin</artifactId>
        </exclusion>
        </exclusions>
        </dependency>
        <dependency>
        <groupId>com.alipay.sofa.common</groupId>
        <artifactId>sofa-common-tools</artifactId>
        <version>1.0.17</version>
        </dependency>
      • 非 Spring Boot 类型的 Dubbo 应用。

        1. 引入上文 Spring boot 2.x 相同依赖。

        2. 在代码中, Main 启动入口第一行加入以下开关:

          SofaTracerConfiguration.setProperty(SofaTracerConfiguration.JSON_FORMAT_OUTPUT,"false");
    4. 配置 Dubbo 的注册中心。

      使用 dsr: <dubbo:registry address="dsr://dsr"/>

    5. 添加应用启动参数。

      您可以通过以下任一方式添加:

      • dubbo.properties 中配置下述属性:

        说明

        默认路径为 classpath 根目录下的 dubbo.properties,您也可以根据需求使用 JVM 参数 -Ddubbo.properties.file=xxx.properties 手动指定路径。

        com.alipay.instanceid=                   //当前登录账号的实例 ID。
        com.antcloud.antvip.endpoint=     //当前地域的 AntVIP 地址值。
        com.antcloud.mw.access=              //当前登录账号的 AccessKey ID。
        com.antcloud.mw.secret=               //当前登录账号的 AccessKey Secret。
        Image 1
      • 指定 JVM 启动参数值:

        -Dcom.alipay.instanceid=                  //当前登录账号的实例 ID。
        -Dcom.antcloud.antvip.endpoint=    //当前地域的 AntVIP 地址值。
        -Dcom.antcloud.mw.access=             //当前登录账号的 AccessKey ID。
        -Dcom.antcloud.mw.secret=             //当前登录账号的 AccessKey Secret。
      • 指定系统环境变量:

        SOFA_INSTANCE_ID=                    //当前登录账号的实例 ID。
        SOFA_ANTVIP_ENDPOINT=          //当前地域的 AntVIP 地址值。
        SOFA_ACCESS_KEY=                      //当前登录账号的 AccessKey ID。
        SOFA_SECRET_KEY=                     //当前登录账号的 AccessKey Secret。
      说明

      以上参数值是中间件的全局配置项,可在 脚手架控制台 获取。详情请参见 配置说明

  2. 发布应用。

    1. 登录 SOFAStack 控制台

    2. 在左侧导航栏选择 运维管理 > 经典应用服务 > 应用发布 > 发布单,然后创建并执行发布单。

      具体操作,请参见 新建并执行发布单。应用发布后,您可以在左侧导航栏选择 中间件 > 微服务平台 > 微服务 > 服务管控,然后在 服务管控 页面查看发布的服务。SOFARegistry 架构图

查看日志

您可以在 /home/admin/logs/registry 中查看注册中心的日志。

说明

如果您使用的是旧版客户端运行模式,请在 /home/admin/logs/confreg 中查看。