YugabyteDB中的Follower Reads技术解析:降低全局应用读取延迟

YugabyteDB中的Follower Reads技术解析:降低全局应用读取延迟

yugabyte-db yugabyte/yugabyte-db: 是 YugaByte DB 的官方仓库,一个高性能、高可扩展、分布式的 SQL 数据库,支持 PostgreSQL 兼容性。适合对分布式数据库、SQL 数据库和云原生应用的开发者。 yugabyte-db 项目地址: https://gitcode.com/gh_mirrors/yu/yugabyte-db

什么是Follower Reads

在分布式数据库系统中,Follower Reads是一种优化读取性能的技术模式,它允许应用程序从最近的副本(follower)而非必须从主节点(leader)读取数据。这种技术特别适合全球分布式部署的YugabyteDB数据库场景。

为什么需要Follower Reads

当应用在全球多个区域运行时,传统的主从架构存在一个显著问题:即使本地存在副本节点,应用也必须跨区域访问主节点来获取最新数据,这会带来显著的读取延迟。

考虑以下典型场景:

  • 数据不频繁变更(如电影数据库)
  • 应用不需要绝对最新的数据(如昨天的报表)

在这些情况下,如果应用可以容忍一定程度的数据延迟(非强一致性读取),Follower Reads就能显著提升读取性能。

技术实现原理

基本配置

在YugabyteDB中启用Follower Reads非常简单,只需执行以下SQL语句:

-- 设置会话为只读事务
SET session characteristics as transaction read only;

-- 启用从副本读取功能
SET yb_read_from_followers = true;

数据新鲜度控制

由于副本节点可能不是最新的,Follower Reads可能会返回略有延迟的数据(默认30秒)。这个值可以通过参数调整:

-- 设置可接受的数据延迟为10秒
SET yb_follower_read_staleness_ms = 10000;

重要建议:虽然可以设置更短的新鲜度阈值,但不建议将其设置为小于raft_heartbeat_interval_ms(默认500ms)的2倍,否则可能导致大量读取被重定向回主节点。

性能优势分析

假设我们有一个跨越三个区域(us-east、us-central、us-west)的YugabyteDB集群,主节点优先设置在us-east:

  1. 传统读取模式

    • us-west应用读取延迟:60ms(必须访问us-east的主节点)
    • us-central应用读取延迟:60ms
  2. Follower Reads模式

    • us-west应用读取延迟:2ms(访问本地副本)
    • us-central应用读取延迟:2ms

性能提升非常显著,延迟降低了96%以上。

容错机制

当某个区域的副本节点发生故障时,系统会自动将读取请求重定向到次近的可用副本:

  • 如果us-west副本故障,us-west应用的读取会被重定向到us-central副本
  • 此时读取延迟约为40ms,仍比直接访问主节点的60ms要低

注意事项

  1. 写入操作:Follower Reads仅影响读取操作,所有写入仍然由主节点处理。
  2. 一致性权衡:应用需要根据业务需求合理设置数据新鲜度阈值。
  3. 心跳间隔yb_follower_read_staleness_ms的设置不应小于2倍raft_heartbeat_interval_ms

适用场景建议

Follower Reads特别适合以下类型的应用:

  • 内容管理系统(CMS)
  • 产品目录
  • 历史数据分析
  • 非实时报表系统
  • 用户画像和推荐系统

对于金融交易等需要强一致性的场景,则应谨慎使用此功能。

通过合理使用YugabyteDB的Follower Reads功能,全球分布式应用可以显著降低读取延迟,同时保持可接受的数据一致性水平。

yugabyte-db yugabyte/yugabyte-db: 是 YugaByte DB 的官方仓库,一个高性能、高可扩展、分布式的 SQL 数据库,支持 PostgreSQL 兼容性。适合对分布式数据库、SQL 数据库和云原生应用的开发者。 yugabyte-db 项目地址: https://gitcode.com/gh_mirrors/yu/yugabyte-db

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祝珏如

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值