检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
非事务中使用强制路由 除了根据路由算法配置路由,SDK还支持通过注解@DynamicRoute强制指定路由,且相比路由算法,注解指定路由优先级更高。存在注解指定路由的场景下,优先根据注解指定进行路由。 注解@DynamicRoute指定路由分为两部分:source和hint,可单独
强制路由 除了根据路由算法配置路由,SDK还支持通过注解@DynamicReadRoute指定读操作的路由。注解@DynamicReadRoute指定路由的参数:source,用于选择数据源,可以选择对应的枚举值:MongoSource.ACTIVE, MongoSource.LOCAL。
强制路由 非事务中使用强制路由 事务中使用强制路由 父主题: 使用场景
r方法,开启了事务,并且里面有两个接口,第一个userReopository2上指定路由“dc2”,第二个userReopository2上指定路由“dc1”,此时以第一个接口中的注解指定的路由为准,使用“dc2”的数据源。 @Slf4j @Repository @javax.annotation
本地读单边写,适用于读多写少场景,读流量很大,对一致性不敏感的场景: 对于用户,不感知多个Redis。 对于SDK 读操作:同步路由到local Redis。 写操作:同步路由到active Redis。 此场景下Redis之间依赖同步服务相互同步。 图1 local-read-single-write部署图
本地读异步双写场景具体操作: 对于用户,不感知多个Redis。 对于SDK。 读操作:同步路由到近端Redis。 写操作:同步路由到近端Redis,同时异步发送到远端Redis。 此场景下Redis之间会相互同步,两个Redis位置等同没有主备之分,切换不会产生影响。 当不同实例内SDK操作同一个Redis
读操作:同步路由到指定的Redis。 写操作:同步路由到指定的Redis,同时异步发送到远端Redis。 此场景下可切换指定的Redis。 当不同实例内SDK操作同一个Redis key时,不能保证两个Redis的一致性。 当SDK发生Redis切换时,切换前产生的异步双写命令和切换后
single-read-write(单边读写) single-read-write场景具有以下两个特点: 读操作:同步路由到指定active的Redis;写操作:同步路由到指定active的Redis。 支持MAS动态切换激活数据源。 父主题: 使用场景
local-read-write(单边读写) single-read-write场景具有以下两个特点: 读操作:同步路由到指定active的elasticsearch;写操作:同步路由到指定active的elasticsearch。 支持MAS动态切换激活数据源。 父主题: 使用场景
此模式为MAS-Mongo-SDK的默认路由模式,在单边读写模式下,对Mongo的读写操作都在同一Mongo数据库(dc1或dc2)进行,通过配置文件中的active字段或MAS界面配置活跃节点来指定。(通过注解指定数据源的场景例外,注解强制指定路由见强制路由)。 配置示例: devspore:
single-write"。在这种路由模式下,读操作在本地进行,不受MAS指示的活跃节点影响。根据配置文件中的AZ信息判断本地属于哪个AZ,读操作时从本地AZ进行读取,写操作仍然根据MAS指示的活跃节点进行操作。(本地指的是当Mongo数据源和props中所配置的AZs为同一AZ时,此Mongo数据源被视为本地)
完成。 读写分离。 读写分离由SDK实现,支持随机、轮询的负载均衡算法。 故障注入。 支持带注入故障的实例创建,包含延时(波动)、预设异常的故障配置。 single-read-write 单读写类似于主备库,MAS监控各节点健康状态,active节点故障自动切换至其他节点,保证多
分布式锁场景最佳实践 分布式锁场景需根据所选取的路由模式来选择合适的策略。 路由模式为single-read-write, single-read-async-double-write时 由于读写都在同一边,分布式锁不受影响。 路由模式为local-read-single-wri
DRS灾备切换 概述 “DRS灾备切换”插件用于对DRS实时灾备任务进行升主/降备的灾备关系切换。 配置介绍 表1 选择输入-配置说明 参数 配置说明 任务所在region 选择任务所在区域。 凭证 选择凭证,默认显示当前命名空间多活分区下已配置的默认凭证。 项目 选择项目,默认
若设置为“开”,目前仅支持关联DRS实时灾备任务。请先配置密钥,再开启DRS联动。 说明: 数据复制服务(Data Replication Service,简称DRS)是一种易用、稳定、高效、用于数据库在线迁移和数据库实时同步的云服务。DRS实时灾备任务提供的实时灾备功能,可实现主实例和跨区域的灾备实例之间的实时同步。
key自定义,单维度请参考表2。 数据源。 router 是 RouterConfiguration 请参考RouterConfiguration数据结构说明。 路由相关配置。 chaos 否 InjectionProperties 请参考InjectionProperties数据结构说明。 故障注入相关配置。
多活容灾能力是指在同城场景下实现多活故障自动切换,由SDK和MAS服务配合完成。 数据双写 读写分离由SDK实现,支持内存双写、文件双写。 故障注入 支持带注入故障的实例创建,包含延时(波动)、预设异常的故障配置。 single-read-write 单读写类似于主备库,MAS监控各节点健康状态,act
router.nodes.ds1.azs 该数据中心所属AZ信息 空 路由算法为本地读单边写,且未对接MAS平台时必填。 router.nodes配置罗列本项目中数据源路由节点,所以上表中“ds1”为数据源路由节点名称,如果有多组数据源,按照同样的格式配置多组即可。 节点router
读命令列表 MAS-Mongo-SDK将以下mongo命令视为读命令,上述的本地读单边写和注解强制路由均根据此表来操作。 表1 读命令列表 序号 命令 描述 1. aggregate、count、distinct、mapReduce Aggregation Commands 2.
execute(action -> { action.insert(xxx); // 写操作,路由到active数据源 action.count(xxx); // 读操作,路由到本地数据源 }); 2. 有限制的命令 表1 MAS-Mongo-SDK有限制的命令 命令名称