租租户内如何配置路由—弱一致性读

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】租户内如何配置路由—弱一致性读

3 个赞

学习一下

2 个赞

一、租户内路由—弱一致性读概述
和强一致性读对立的就是弱一致性读,弱一致性读不要求写后读立即可见。弱一致性读可以路由到分区的主副本和备副本节点。常见的弱一致性读设置有三种方式:会话级别设置、SQL级别设置、ODP级别设置。
1、会话级设置
会话级别设置,通过 ob_read_consistency 系统变量
指定,分为Global级别和Session级别
l 设置 Session 变量,影响当前 Session
SET ob_read_consistency = WEAK;
SELECT * FROM t1;
l 设置 Global 变量,影响之后新建的所有 Session
SET GLOBAL ob_read_consistency =WEAK;

2、SQL级设置
在请求的SQL中,加上弱一致性读的Hint,
优先级高于 ob_read_consistency
select
/+READ_CONSISTENCY(WEAK)/ *
from t1;

3、ODP配置设置
通过 Hint 的方式设置弱读需要修改 SQL,
会比较麻烦,此时可以通过修改配置项
obproxy_read_consistency 的值设置
弱读.
alter proxyconfig set
obproxy_read_consistency = 1;
(0:强度,1:弱读)

二、租户内路由—弱一致性读(读写分离)
某些场景下,我们希望将分析型的查询请求发送到从副本执行。此时就可以使用读写分离功能,将读请求发送到备副本,降低主副本的压力。设置路由策略(ODP通过配置项 proxy_route_policy 设置读写分离的路由策略)
n follower_first:弱读请求优先路由到备副本,如果备副本都不可用,弱读请求路由到主副本。
n follower_only:弱读请求路由到备副本,如果备副本都不可用,断开和客户端的连接。

场景1:alter proxyconfig set proxy_route_policy=’’;
SELECT /*+READ_CONSISTENCY(WEAK) */ * FROM T;
primary zone1;zone2,zone3
ODP 在z1、z2、z3 三个副本随机选择副本转发弱读请求

场景2:alter proxyconfig set proxy_route_policy=‘FOLLOWER_FIRST’;
SELECT /*+READ_CONSISTENCY(WEAK) */ * FROM T;
ODP 优先选择z2、z3 转发弱读请求,如果z2、z3都不可用,则转发到z1

场景3:alter proxyconfig set proxy_route_policy=‘FOLLOWER_ONLY’;
SELECT /*+READ_CONSISTENCY(WEAK) */ * FROM T;
ODP 只选择z2、z3 转发弱读请求,如果z2、z3都不可用,则请求报错

三、租户内路由—弱一致性读(LDC路由)
OceanBase 数据库作为典型的高可用分布式关系型数据库,使用 Paxos 协议进行日志同步,天然支持多地多中心的部署方式以提供高可靠的容灾保证。但当采用多地多中心的部署架构时,弱一致性读会均匀访问数据的所有主从副本,当访问非本地域机房上的副本时,系统响应时间将大大增加。
逻辑数据中心(Logical Data Center,LDC)路由正是为了解决这一问题而设计的,通过给 OceanBase 集群的每个 Zone 设置 Region 属性和IDC 属性,并给 ODP 指定 IDC 名称配置项后,当数据请求发到 ODP 时,ODP将弱读请求按“同机房>同地区>异地”的优先级顺序进行OBServer 的选取

4 个赞

谢谢

2 个赞

888

1 个赞

:+1: :100: