使用Amazon RDS只读副本时是否有可能获得不一致的数据?

时间:2019-02-07 10:03:06

标签: database amazon-web-services amazon-rds

想象一下以下情况:

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

上述方案是否可行?

我知道Amazon RDS只读副本不能保证严格的写后读一致性,但是那样您可能会遇到非常糟糕的用户体验。您应该如何设计应用程序以解决此类问题?

1 个答案:

答案 0 :(得分:1)

可以用过时的数据命中(查询)只读副本。但是,按照您描述的方式不太可能。复制通常需要一秒钟的时间。刷新页面需要一点:)

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

为避免您的情况下出现异常行为:

  1. 如果您确实需要在写入后进行一致的读取,则只需向母版读取即可!但是在您描述的用例中我看不到这一点。如果您想证明,请尝试进行监视。
  2. 不要给您的只读副本增加额外的负担(例如报告或分析查询)。这可能会降低复制速度。
  3. 您可以使用Amazon Aurora来更好地同步(读取)副本。

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