同城多活MshaSDK使用手册

本文为您提供MshaSDK 的集成与使用指南,涵盖了基本依赖配置、JVM 参数设置及各个框架(如 Dubbo、Spring Cloud、RocketMQ、SchedulerX 和 XXL-JOB)的 SDK 引入与应用改造要求。帮助您了解多活架构的配置要求,实现高可用性和容灾功能,并注意配置过程中的事项,以确保系统稳定运行。

1. 基础MshaSDK依赖

由于具体组件的Bridge包会依赖MshaSDK,因此不需要单独声明MshaSDKPOM依赖。

1.1 JVM-D参数配置

Java应用需要新增的JVM参数:

-Dmsha.app.name=${应用名称}
-Dmsha.namespaces=${多活命名空间ID}
-Dmsha.nacos.namespace=${命名空间ID}
-Dmsha.nacos.server.addr=${nacos 连接地址}
-Dmsha.licence=${探针管理}

参数说明:

  • ${多活命名空间ID},可以进入 多活容灾管控平台MSHA页面,菜单栏选择基础配置 > 命名空间页面,查看已经创建好的多活命名空间ID。

image.png

  • ${应用名称},为您实际的应用名,应用名称不支持中文。

  • ${Nacos命名空间ID}。

image.png

  • ${Nacos 连接地址} :您的配置中心地址。

  • ${探针管理}。

image.png

2. 应用程序改造

2.1 Dubbo

2.1.1 SDK依赖

Dubbo 分为apache dubboalibaba dubbo,请根据应用实际使用获取SDK。

  1. apache dubbo引入SDK如下所示:

    <dependency>
      <groupId>com.aliyun.unit.router</groupId>
      <artifactId>msha-bridge-dubbo</artifactId>
      <version>x.y.z</version>
    </dependency>
  1. alibaba dubbo引入SDK如下所示:

<dependency>
    <groupId>com.aliyun.unit.router</groupId>
    <artifactId>msha-bridge-dubbo-alibaba</artifactId>
    <version>x.y.z</version>
</dependency>
<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

间接依赖包:

  • msha-bridge-support

  • msha-bridge-spi

  • msha-bridge-rpc-base

  • msha-bridge-cell

  • msha-router-all

2.1.2 应用改造

2.1.2.1 Apache Dubbo

确保dubbo生产者的协议类型配置的是dubbo:

image.png

resource下新增META-INF/dubbo/internal目录,在目录下新增三个DubboSPI文件,结构和内容如下:

image.png

dubbo=com.aliyun.msha.bridge.dubbo.registry.MshaOverrideConfiguratorFactory
msha=com.aliyun.msha.bridge.dubbo.router.routerFactory.MshaRouterFactory
msha=com.aliyun.msha.bridge.dubbo.filter.MshaFilter

2.1.2.2 Alibaba Dubbo

由于alibabadubboapachedubbo有区别,要主动设置routerkey,并且需要标明每次都要去调用router,不然不会走router的逻辑,于是dubboconsumer需要配置为:

image.png

确保dubbo生产者的协议类型配置的是dubbo,provider配置为:

image.png

resource下新增META-INF/dubbo/internal目录,在目录下新增三个DubboSPI文件,结构和内容如下:

image.png

dubbo=com.aliyun.msha.bridge.alidubbo.registry.MshaOverrideConfiguratorFactory
msha=com.aliyun.msha.bridge.alidubbo.router.routerFactory.MshaRouterFactory
msha=com.aliyun.msha.bridge.alidubbo.filter.MshaFilter
重要

请检查自己的应用是否定义过这些SPI文件,如果定义过,请把mshaspi内容添加到自己的SPI文件内。

2.2 SpringCloud

2.2.1 SDK依赖

<dependency>
  <groupId>com.aliyun.unit.router</groupId>
  <artifactId>msha-springcloud-spring-boot-starter</artifactId>
  <version>x.y.z</version>
</dependency>

间接依赖包:

  • msha-bridge-support

  • msha-bridge-spi

  • msha-bridge-rpc-base

  • msha-bridge-cell

  • msha-bridge-servlet

  • msha-router-all

2.2.2 应用改造

无需代码层面的改造。

2.3 RocketMQ

2.3.1 SDK依赖

<dependency>
  <groupId>com.aliyun.unit.router</groupId>
  <artifactId>msha-bridge-mq-ons</artifactId>
  <version>x.y.z</version>
</dependency>

间接依赖包:

  • msha-bridge-mq-base

  • msha-bridge-support

  • msha-bridge-spi

  • msha-bridge-cell

  • msha-router-all

2.3.2 应用改造

resource下新增META-INF/services目录,在目录下新增两个rocketMQSPI文件,结构和内容如下:

image.png

com.aliyun.msha.bridge.ons.spi.MshaConsumerInterceptor
com.aliyun.msha.bridge.ons.spi.MshaProducerInterceptor
重要

请检查自己的应用是否定义过这些SPI文件,如果定义过,请把mshaspi内容添加到自己的SPI文件内。

2.4 SchedulerX

2.4.1 SDK依赖

<dependency>
  <groupId>com.aliyun.unit.router</groupId>
  <artifactId>msha-bridge-schedulerx2-starter</artifactId>
  <version>x.y.z</version>
</dependency>

间接依赖包:

  • msha-bridge-support

  • msha-bridge-spi

  • msha-bridge-cell

  • msha-router-all

2.4.2 应用改造

无需代码层面的改造。

2.5 xxlJob

2.5.1 SDK引入

<dependency>
  <groupId>com.aliyun.unit.router</groupId>
  <artifactId>msha-xxljob-spring-starter</artifactId>
  <version>x.y.z</version>
</dependency>

间接依赖包:

  • msha-bridge-support

  • msha-bridge-spi

  • msha-bridge-cell

  • msha-router-all

2.5.2 应用改造

无需代码层面的改造。