检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
强制路由 除了根据路由算法配置路由,SDK还支持通过注解@DynamicReadRoute指定读操作的路由。注解@DynamicReadRoute指定路由的参数:source,用于选择数据源,可以选择对应的枚举值:MongoSource.ACTIVE, MongoSource.LOCAL。
强制路由 非事务中使用强制路由 事务中使用强制路由 父主题: 使用场景
r方法,开启了事务,并且里面有两个接口,第一个userReopository2上指定路由“dc2”,第二个userReopository2上指定路由“dc1”,此时以第一个接口中的注解指定的路由为准,使用“dc2”的数据源。 @Slf4j @Repository @javax.annotation
非事务中使用强制路由 除了根据路由算法配置路由,SDK还支持通过注解@DynamicRoute强制指定路由,且相比路由算法,注解指定路由优先级更高。存在注解指定路由的场景下,优先根据注解指定进行路由。 注解@DynamicRoute指定路由分为两部分:source和hint,可单
router.nodes.ds1.azs 该数据中心所属AZ信息 空 路由算法为本地读单边写,且未对接MAS平台时必填。 router.nodes配置罗列本项目中数据源路由节点,所以上表中“ds1”为数据源路由节点名称,如果有多组数据源,按照同样的格式配置多组即可。 节点router
此模式为MAS-Mongo-SDK的默认路由模式,在单边读写模式下,对Mongo的读写操作都在同一Mongo数据库(dc1或dc2)进行,通过配置文件中的active字段或MAS界面配置活跃节点来指定。(通过注解指定数据源的场景例外,注解强制指定路由见强制路由)。 配置示例: devspore:
本地读单边写,适用于读多写少场景,读流量很大,对一致性不敏感的场景: 对于用户,不感知多个Redis。 对于SDK 读操作:同步路由到local Redis。 写操作:同步路由到active Redis。 此场景下Redis之间依赖同步服务相互同步。 图1 local-read-single-write部署图
local-read-write(单边读写) single-read-write场景具有以下两个特点: 读操作:同步路由到指定active的elasticsearch;写操作:同步路由到指定active的elasticsearch。 支持MAS动态切换激活数据源。 父主题: 使用场景
单边读写 这种路由算法场景下,对数据库的读写操作都只在一边(数据中心1或者数据中心2)进行,根据active指示,在相应的那边数据中心操作。(通过注解指定的场景例外,注解指定见强制路由) 路由算法不支持动态切换,更改路由算法,需要重启服务。 无从库 读写分离 父主题: 使用场景
本地读单边写 本地读单边写模式应在配置文件中配置routeStrategy为"local-read-single-write"。在这种路由模式下,读操作在本地进行,不受MAS指示的活跃节点影响。根据配置文件中的AZ信息判断本地属于哪个AZ,读操作时从本地AZ进行读取,写操作仍然根
执行,成功后,异步写到远端。 本地读异步双写场景具体操作: 对于用户,不感知多个Redis。 对于SDK。 读操作:同步路由到近端Redis。 写操作:同步路由到近端Redis,同时异步发送到远端Redis。 此场景下Redis之间会相互同步,两个Redis位置等同没有主备之分,切换不会产生影响。
分布式锁场景最佳实践 分布式锁场景需根据所选取的路由模式来选择合适的策略。 路由模式为single-read-write, single-read-async-double-write时 由于读写都在同一边,分布式锁不受影响。 路由模式为local-read-single-wri
读命令列表 MAS-Mongo-SDK将以下mongo命令视为读命令,上述的本地读单边写和注解强制路由均根据此表来操作。 表1 读命令列表 序号 命令 描述 1. aggregate、count、distinct、mapReduce Aggregation Commands 2.
single-read-write(单边读写) single-read-write场景具有以下两个特点: 读操作:同步路由到指定active的Redis;写操作:同步路由到指定active的Redis。 支持MAS动态切换激活数据源。 父主题: 使用场景
成功后,异步写到另一端。 本地读异步双写场景具体操作: 对于用户,不感知多个Redis。 对于SDK。 读操作:同步路由到指定的Redis。 写操作:同步路由到指定的Redis,同时异步发送到远端Redis。 此场景下可切换指定的Redis。 当不同实例内SDK操作同一个Redis
创建应用 应用韧性Hub通过应用来管理应用内云服务器资源及关联关系。 登录MAS控制台。 单击“应用韧性Hub>应用”,进入“应用”页面。 单击右上角的“创建应用”。 配置应用基本信息。 表1 应用基本配置 参数 配置说明 名称 自定义应用名称。 描述 填写对该应用的描述内容,选填项。
niAgent安装页面。 选择“弹性云服务器 ECS”。 这里选择“弹性云服务器 ECS”页签,是因为在创建资源类型为自建K8S的应用时,将一台ECS作为K8S集群控制节点。 选择UniAgent版本。 选择安装机。如无安装机,在下拉框单击“设置安装机”,选择主机和输入安装机名称,单击“确定”。
yaml、application.properties中router下配置的active节点。 类级别指定数据源示例: 见1.4.3 强制路由 方法级别指定数据源示例: 见1.4.3 强制路由 父主题: 接入指南
Spring项目接入MAS-DB-SDK 引入MAS-DB-SDK组件坐标,下面version版本为最新版本,依赖组件版本参考如何选择组件版本。 <dependency> <groupId>com.huaweicloud.devspore</groupId> <artifac
0-RELEASE 初次发布。 Java v 1.2.1-RELEASE 支持本地读单边写特性。 Java v 1.2.2-RELEASE 支持强制路由source设置为ACTIVE。 Java v 1.2.4-RELEASE 修复etcd故障后不能再watch key变化问题。 Java v 1