You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将读请求流量导向AWS Aurora RDS只读副本?

Aurora RDS 读请求分流问题解答

核心问题:Aurora是否自动处理读请求分流?

Aurora RDS不会自动将读请求分流到只读副本。主实例和只读副本各自拥有独立的访问端点,默认情况下所有请求(无论读写)都会直接发送到主实例的端点,必须通过主动配置才能让读请求流向副本。

不过Aurora提供了两个特殊端点可辅助分流:

  • 集群端点:固定指向当前的主实例,所有写请求必须通过这个端点发送
  • 只读端点:会自动轮询集群内所有只读副本,你可以将读请求直接指向这个端点,但需要在应用层自行区分读写请求的路由目标

现有两种方案对比(针对1主1副本场景)

方案一:Spring Cloud + @Transactional(readOnly=true)

  • 优势:
    • 应用层精准控制,标记为只读的事务会自动路由到副本,主写副读逻辑清晰
    • 完全适配Spring生态,无需额外基础设施配置
  • 劣势:
    • 需要引入Spring Cloud相关依赖,对现有代码有一定侵入性
    • 必须确保所有只读操作都正确标记@Transactional(readOnly=true),遗漏的话读请求仍会走主库
  • 适配性:适合你的场景,可明确区分读写请求,避免写请求打到副本报错

方案二:Route 53加权路由

  • 优势:无代码侵入,通过DNS层分配流量,无需修改应用代码
  • 劣势:
    • 无法区分读写请求,会把部分写请求转发到只读副本,直接导致写操作失败
    • 权重配置只能做简单流量比例分配,无法基于请求类型做智能路由
  • 适配性:不适合你的场景,因为项目存在写操作,该方案会引发业务报错

其他替代方案

  1. 自定义数据源路由(轻量方案)
    基于Spring的AbstractRoutingDataSource实现动态数据源切换,结合AOP或自定义注解标记读操作,运行时自动切换到只读副本的数据源。无需引入Spring Cloud,代码侵入性低,适合轻量级需求。
  2. AWS RDS Proxy
    通过RDS代理层实现读写分离,代理会自动解析SQL语句,将读请求转发到副本、写请求转发到主实例。无需修改应用代码,只需将应用的数据库连接指向代理端点即可,适合不想改动代码的场景。
  3. 连接池层面配置
    部分数据库连接池(如Sharding-JDBC)支持读写分离配置,通过配置主库和副本的连接信息,自动路由读请求到副本,配置简单,适合非Spring Cloud的项目。

内容的提问来源于stack exchange,提问作者Siva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:25:41