业务单元化双活实践 3.3、路由标透传改造 应用在单元组设置DUBBO服务的路由标时,可以设置路由标从方法参数或请求上下文中取值。 本示例以通过参数传递方式,配置第一个参数为路由标,代码如下: java @DubboReference(injvm false) private CrmebStoreCartService storeCartService; ... / 修改商品数量 @param id @param number 修改的产品数量 / @ApiOperation(value"修改") @RequestMapping(value"/num", methodRequestMethod.POST) public CommonResult update(@RequestParam Long id, @RequestParam Integer number) { // 传递用户id if (storeCartService.updateCartNum(UserContext.currentUser().getId(), id, number)) { return CommonResult.success(); } else { return CommonResult.failed(); } } 3.4、定时任务改造 在数据双活架构下,定时任务本身可能无法根据路由规则进行调度,可以通过数据过滤的方式让每个单元的任务只处理本单元的数据。 首先引入多活SDK: plaintext ... com.ctg.amss amssagent ${版本号} ... 其次在处理数据前增加数据归属判断: java ... // 获取需要处理的数据 List businessData new ArraList<>(); ... for (Object data : businessData) { // 从数据中提取路由标 String routerId data.getTenantId(); // 计算路由命中 if (AmssAgentManager.sdk().isInLocalUnit(routerId)) { // 执行任务 } } ... 4、应用接入 4.1、 应用安装探针 1. 登录应用高可用控制台。 2. 单击左侧菜单栏应用容灾多活 ,在应用容灾多活菜单下单击数据双活 ,进入数据双活管理页面。 3. 在应用系统列表中找到需要配置的应用系统 ,单击应用系统名称 ,进入应用系统概览页面。 4. 单击左侧导航栏容灾配置 ,在容灾配置菜单下单击服务层配置 ,进入容灾配置服务层配置页面。 5. 在弹出应用接入 页面,点击查看密钥,获取密钥。 6. 为应用配置JVM参数,根据应用所属单元组和单元,将参数模板中的各个变量替换为实际的值。 javaagent:${探针JAR所在路径} Damss.application.group${单元组编码} Damss.application.name${应用名称} Damss.service.ip${应用IP,可选} Damss.commander.servers${管控通道地址} Damss.commander.secret${管控通道密钥} 配置参数说明: ${管控通道地址}:您可以在应用容灾多活控制台的应用接入页面查看管控通道地址。 ${管控通道密钥}:您可以在应用容灾多活控制台的应用接入页面点击管控通道密钥。 您需要根据实际参数为每个应用配置JVM启动参数,应用通过JavaAgent的方式植入管控逻辑,将应用纳入应用容灾多活系统。 启动脚本示例如下: 前端模块广州站点启动脚本 javaagent:/app/mall/agent/amssagent${版本号}.jar Damss.application.namelilishopfront Damss.application.groupfront Damss.command.servers