@论坛小助手 leader节点和follow节点,分别配置读写分离,会影响leader的读写和follow节点的读特性吗?
4 个赞
根据文档库中的信息,可以综合多个文档片段来回答您的问题。
配置读写分离的作用
在 OceanBase 数据库中,1主2从的架构下配置读写分离的主要作用是:
- 降低主节点压力:通过将读请求路由到备副本(Follower 节点),可以显著减少主副本(Leader 节点)的负载,从而提升整体性能。
- 优化数据库性能:读写分离允许主节点专注于处理写操作和强一致性读操作,而备节点则负责处理弱一致性读操作,从而实现资源的有效分配。
- 提高系统可用性:即使主节点发生故障,备节点仍然可以继续提供读服务,增强了系统的高可用性。
参考文档标题及段落:
- 《读写分离》
- 《SQL 路由 → 副本路由选择(读写分离部署)》
Leader 节点和 Follower 节点配置读写分离的影响
1. 对 Leader 节点的影响
- 写操作:Leader 节点始终负责写操作,读写分离不会影响其写入性能。
- 强一致性读操作:对于需要读取最新数据的强一致性读操作,这些请求会直接路由到 Leader 节点。因此,读写分离不会改变 Leader 节点的强一致性读特性。
- 弱一致性读操作:如果某些弱一致性读操作被路由到 Follower 节点,则可以减轻 Leader 节点的读负载。
2. 对 Follower 节点的影响
- 读特性:Follower 节点主要负责处理弱一致性读请求。通过读写分离配置,可以优先将读请求路由到 Follower 节点,从而分散读压力。
- 延迟问题:需要注意的是,Follower 节点的数据可能会有几百毫秒的延迟(取决于日志同步的速度)。因此,使用 Follower 节点进行读操作时,无法保证读取到最新的数据。
参考文档标题及段落:
- 《读写分离 → 配置读写分离》
- 《SQL 路由 → 副本路由选择(常规部署) → 备优先路由》
配置读写分离的具体方式
可以通过以下方式配置读写分离:
1. 修改路由策略
- 使用
proxy_route_policy
配置项设置路由策略:-
follower_first
:优先选择备副本,如果备副本不可用,则选择主副本。 -
follower_only
:仅选择备副本,如果备副本不可用,则断开与客户端的连接。
-
参考文档标题及段落:
- 《读写分离 → 配置读写分离 → 修改路由策略》
2. 设置弱读
- 通过 Hint 或者修改配置项
obproxy_read_consistency
来启用弱读:alter proxyconfig set obproxy_read_consistency = 1;
- 默认值为
0
,表示强读。 - 设置为
1
,表示弱读。
- 默认值为
参考文档标题及段落:
- 《读写分离 → 配置读写分离 → 弱读设置 → 通过配置项设置》
总结
- 配置读写分离的主要作用是降低主节点的压力、优化数据库性能以及提高系统可用性。
- 对于 Leader 节点,读写分离不会影响其写操作和强一致性读特性,但可以减少弱一致性读请求的负载。
- 对于 Follower 节点,读写分离会增加其读请求的负载,但由于数据可能存在延迟,无法保证读取到最新数据。
- 可以通过修改路由策略和设置弱读来实现读写分离的具体配置。
检索到的文档如下:
3 个赞
做压力分担吧,当然也根据业务类型而定
3 个赞
ocenabase 默认是强一致性读, ob_read_consistency=strong 决定
- 强一致性读 是从leader进行读取 , follower节点仅仅从日志流复制日志,不承担任何流量
- 读写分离后 。读可能变成一种弱读。 读取落后时间 max_stale_time_for_weak_consistency=5s 。
- 降低leader节点的读取压力,
- 如果是3-3-3架构,并且primary_zone=‘z1,z2,z3’ unit_num=3 这种情况的话 ,每个observer都有leader节点 。 读写分离也能解决热点数据的问题。
读写分离是一种弱读。
3 个赞
primary zone 是 random 的话做读写分离意义不大,除非设置了primary zone
1 个赞
好好学习,天天向上