本文为您提供MshaSDK 的集成与使用指南,涵盖了基本依赖配置、JVM 参数设置及各个框架(如 Dubbo、Spring Cloud、RocketMQ、SchedulerX 和 XXL-JOB)的 SDK 引入与应用改造要求。帮助您了解多活架构的配置要求,实现高可用性和容灾功能,并注意配置过程中的事项,以确保系统稳定运行。
1. 基础MshaSDK依赖
由于具体组件的Bridge包会依赖MshaSDK,因此不需要单独声明MshaSDK的POM依赖。
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。
${应用名称},为您实际的应用名,应用名称不支持中文。
${Nacos命名空间ID}。
${Nacos 连接地址} :您的配置中心地址。
${探针管理}。
2. 应用程序改造
2.1 Dubbo
2.1.1 SDK依赖
Dubbo 分为apache dubbo和alibaba dubbo,请根据应用实际使用获取SDK。
apache dubbo引入SDK如下所示:
<dependency> <groupId>com.aliyun.unit.router</groupId> <artifactId>msha-bridge-dubbo</artifactId> <version>x.y.z</version> </dependency>
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:
在resource下新增META-INF/dubbo/internal目录,在目录下新增三个Dubbo的SPI文件,结构和内容如下:
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
由于alibaba的dubbo和apache的dubbo有区别,要主动设置router的key,并且需要标明每次都要去调用router,不然不会走router的逻辑,于是dubbo的consumer需要配置为:
确保dubbo生产者的协议类型配置的是dubbo,provider配置为:
在resource下新增META-INF/dubbo/internal目录,在目录下新增三个Dubbo的SPI文件,结构和内容如下:
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文件,如果定义过,请把msha的spi内容添加到自己的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目录,在目录下新增两个rocketMQ的SPI文件,结构和内容如下:
com.aliyun.msha.bridge.ons.spi.MshaConsumerInterceptor
com.aliyun.msha.bridge.ons.spi.MshaProducerInterceptor
请检查自己的应用是否定义过这些SPI文件,如果定义过,请把msha的spi内容添加到自己的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 应用改造
无需代码层面的改造。