1

我有一个用于读取和写入操作的 Amazon DynamoDB 表。仅当批处理作业以特定间隔运行时才执行写入操作,而读取操作全天持续发生。

当由于批处理作业而发生大量写入操作时,我面临读取延迟增加的问题。我探讨了一些关于为 DynamoDB 设置单独的只读副本的问题,但没什么用处。全局表不是一个选项,因为这不是它们的用途。

任何想法如何解决这个问题?

4

1 回答 1

0

根据 Dynamo 论文,Dynamo 中不存在记录或表的只读副本的概念。在同一区域内,您将拥有多个记录副本,具体取决于复制因子 (R+W > N),其中 N 是复制因子。但是,当客户端读取时,会根据集群运行状况返回其中一条记录。

根据在客户端库或集群中如何选择协调器节点,客户端只能向集群协调器请求一条记录(获取)或发送一条记录(放置)(1 个额外的跃点)或分配给记录的节点(单跳记录)。客户端无法说“给我来自另一个节点的只读副本”。副本用于容错,如果包含记录主副本的节点之一死亡,将使用副本。

我正在研究热键上下文中的相同问题。每条记录都被分配给 Dynamo 中的一个节点。因此,对同一条记录的一百万次读取将导致热键、读取/写入丢失等。如何处理?只读副本会很好用,因为我现在可以管理应用程序的热键并将所有额外的读取移动到只读副本。这又充满了问题。

于 2022-01-29T09:10:18.803 回答