首页 > 解决方案 > 使用 Amazon RDS 只读副本时是否可能获得不一致的数据?

问题描述

想象以下场景:

  1. 您正在使用 Web 应用程序来修改您的个人资料数据(假设您将您的姓名从A更改为B)。
  2. 数据存储在 Amazon RDS 中。您将数据库配置为使用额外的只读副本。
  3. 提交数据更新 ( B ) 后,您会立即刷新页面。
  4. 您会看到从 Amazon RDS 中读取的旧数据 ( A )(从尚未同步的只读副本中提取)。

上面描述的场景是否可能得到?可能性有多大?

我知道 Amazon RDS 只读副本不能保证严格的写后读一致性,但那样您可能会有非常糟糕的用户体验。你应该如何设计你的应用程序来应对这些问题?

标签: databaseamazon-web-servicesamazon-rds

解决方案


可以使用陈旧数据命中(查询)只读副本。尽管如此,您描述的方式不太可能。复制通常需要不到一秒钟。刷新页面需要一点:)

复制速度取决于负载(主要是只读副本)。

为了避免在您的情况下出现奇怪的行为:

  1. 如果您确实需要在写入后进行一致的读取,只需从 master 读取!但我在您描述的用例中没有看到这一点。如果你想证明的话,试着监控它。
  2. 不要给只读副本增加额外的负载(如报告或分析查询)。这可能会减慢复制速度。
  3. 您可以使用 Amazon Aurora 为(读取)副本获得更好的同步。

还有更多方法可以使事情复杂化并使其“更好”。但通常情况下,您会在大型系统中考虑这些,写入/更新负载很重。


推荐阅读