4

我们正在使用 DynamoDB 全局表,并计划在 DynamoDB 之上使用 DAX 来启用缓存。但我没有看到任何提及 DAX 失效将如何在多区域设置中发生。

例如,假设有 2 个集群,一个在 us-west-2 中,一个在 us-east-2 中。如果我们使用 DAX 客户端更新 us-east-2 中的某些内容,它的缓存将被更新,但是在将数据复制到 us-west-2 时,全局表是否也会更新 us-west-2 中的缓存?我在DynamoDB 文档中没有看到任何提及。

4

3 回答 3

5

DAX 缓存将不会更新。全局表将复制其他区域的数据。但是,它不会更新缓存。甚至,query cacheanditem cache是独立的。

DAX 不会使用来自 DynamoDB 的最新数据刷新查询缓存中的结果集。查询缓存中的每个结果集都是执行查询或扫描操作时的最新结果。因此,Charlie 的查询结果不反映他的 PutItem 操作。在 DAX 从查询缓存中逐出结果集之前,情况将如此。

写通政策:-

DAX 项目缓存实施直写策略(请参阅 DAX 如何处理写入)。当您写入项目时,DAX 会确保缓存项目与 DynamoDB 中存在的项目同步。这对于需要在写入项目后立即重新读取项目的应用程序很有帮助。但是,如果其他应用程序直接写入 DynamoDB 表,DAX 项目缓存中的项目将不再与 DynamoDB 同步。

DAX 一致性

在上面的陈述中,您可以将这个other application词视为global table复制。DAX 不会知道为全局表完成的复制。

于 2019-03-11T18:04:38.343 回答
2

此时,区域二中的 DAX 缓存将不知道 GT 复制写入。目前最好的选择是在两个区域的 DAX 上保持较低的 TTL,以便更频繁地获取最新版本。

于 2019-03-11T17:50:22.863 回答
0

这是 AWS 服务团队一直存在的问题。他们似乎是孤立地设计事物,而不用担心不同的相关上下文。我在好几个地方都看到过这种设计上的不一致。事实上,即使在 DAX 和 DynamoDB 中,这 2 个 TTL 概念也没有考虑其功能,即使它们是相关的。不知道 AWS 服务团队何时会像 Microsoft 为他们的解决方案那样设计具有完整上下文的东西。

于 2020-12-18T16:20:16.337 回答