巨杉 Tech | 读写分离机制与实践
1. 背景
SequoiaDB 巨杉数据库是一款开源的金融级分布式关系型数据库,主要面对高并发联机交易
型场景提供高性能、可靠稳定以及无限水平扩展的数据库服务。用户可以在 DB 巨杉数据库中,不仅可以给协调节点配置默认的读写分离策略,还可以在会
话级别指定读操作选择的节点,从而使读写分离更加灵活。
写请求处理
所有的写请求都只会发往主节点。数据写入主节点后记录在事务日志 replicalog。备节点从
主节点异步复制 replicalog,并通过重放 replicalog 来复制数据。
读请求处理
读请求可以通过设置会话或协调节点的 PreferedInstance 参数,来控制会话读操作优先选择
的实例。
PreferedInstance 的取值列表为:"M", "m", "S", "s", "A", "a", 1-255。用户可以使用数组指定多
个取值,取值具体含义如下表:如果指定会话多个实例符合 PreferedInstance 的条件时, 选择哪个实例取决于会话的
PreferedInstanceMode 参数,PreferedInstanceMode 参数取值如下:
注意事项
1) 当会话没有指定—preferedinstance 和—preferedinstacemode 时:
--preferedinstance 的默认值是 "M",即从主节点读数据,--preferedinstacemode 的默认值是
"random",即从复制组中候选实例中随机选取一个实例进行读操作。修改默认值可以通过
SequoiaDB Shell 中的方法 ({preferedinstance:”xx”},{GroupName:”SYSCoord”})
实现。
2) 如果多个 1-255 的实例和 "M" 或 "m" 一起指定,满足指定实例中的主实例会被优先选
择,当没有满足指定的实例时选择主实例。如 [ 1, 2, "M" ] 表示优先从实例 1 和实例 2 中的
主实例读取,如果不存在实例 1 和实例 2,则从主实例读取。
3) 如果多个 1-255 的实例和 "S" 或 "s" 一起指定,满足指定实例中的备实例会被优先选
择,当没有满足指定的实例时选择备实例。如 [ 1, 2, "S" ] 表示优先从实例 1 和实例 2 中
的备实例读取,如果不存在实例 1 和实例 2,则从任意一个备实例读取。
4) 如果指定多个 "M"、"m"、"S"、"s"、"A"、"a" 实例,则只有第一个生效。
5) 如果没有符合 PreferedInstance 的实例,这时会话将随机选择使用上一次写
巨杉Tech 读写分离机制与实践 来自淘豆网m.daumloan.com转载请标明出处.