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

Mic*_*iak 5 database amazon-web-services amazon-rds

想象一下以下场景:

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

上面描述的场景可以实现吗?可能性有多大?

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

Fel*_*lix 4

可以使用陈旧数据命中(查询)只读副本。不过,按照您所描述的方式,可能性不大。复制通常需要不到一秒的时间。并且刷新页面需要一点:)

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

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

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

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