dynamodb 可以处理哪些 TPS?

Posted

技术标签:

【中文标题】dynamodb 可以处理哪些 TPS?【英文标题】:What TPS can dynamodb handle? 【发布时间】:2018-12-19 02:39:15 【问题描述】:

我认为 NoSQL 数据库(例如 Cassandra 或 DynamoDB)可以处理 10,000 QPS 或 TPS。但是当我最近查看一些 DynamoDB 配置时,我经常看到不到 100 TPS。这是一个线程还是所有线程的 100 TPS?我错过了什么吗?搜索了 AWS 文档,但没有找到类似问题的解决方案。谢谢

【问题讨论】:

【参考方案1】:

NoSQL 数据库(如 Cassandra、Scylla 或 DynamoDB)的一个要点是它们具有可扩展性 - 它们使用可以增长的节点集群,以允许(理论上)每秒几乎无限数量的请求。因此,您可以处理 100 rps、10,000 rps 甚至 10,000,000 rps,具体取决于集群的大小(以及每个单独节点的大小)。在软件即服务 DynamoDB 中,您看不到服务器背后的实际集群,而是需要“预配”每秒要允许的请求数。

我不知道您是如何配置为您提供 100 rps 的设置的。您也可能错误地测量了此吞吐量:您提到了线程。您是在谈论 client 线程吗?因为显然,如果您只有一个客户端线程,那么您根本不会测量吞吐量,而是测量延迟:如果客户端线程发送一个请求并在发送下一个请求之前等待它得到回复,那么如果您的请求有 10 毫秒延迟(即使是由于网络延迟),您只能从一个线程中执行 100 个。但是您可以让 1000 个这样的线程实现每秒 100,000 个请求的吞吐量。您还可以有一个事件驱动线程,它在等待它们完成之前发送许多请求,而不是只发送一个请求。

【讨论】:

谢谢你!是的,我说的是客户端线程。例如,如果我的延迟是 20 毫秒,我需要每秒执行 500 个请求。我必须提供多个(至少 10 个)线程。这需要更多费用吗? 是的,如果延迟为 20 毫秒,并且单个线程只执行串行请求-响应循环,那么每个此类线程每秒仅执行 50 个请求,您需要更多这些线程才能获得更高的吞吐量.但是“更多的费用”是为了什么? DynamoDB 会根据您的请求向您收费——它不知道您的客户端有多少线程,它只是您自己的实现细节。如果您的编程正确,您的客户端也可以仅使用单个线程实现高并发。 大约 2-3 周前,您不再需要预先配置 RCU 和 WCU。您可以将表配置为“按需”提供。这是一个很大的变化,预先购买一定数量的云服务的想法很奇怪。【参考方案2】:

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html

没有任何限制。默认情况下,您可以为每个表配置的最大吞吐量为 40,000 个 RCU(每秒读取)和 40,000 个 WCU(每秒写入)。但这只是防止用户意外配置过多吞吐量的限制,您可以简单地请求对您的帐户应用更高的限制。

【讨论】:

以上是关于dynamodb 可以处理哪些 TPS?的主要内容,如果未能解决你的问题,请参考以下文章

性能测试各个指标之间关系

AWS:从 dynamodb 到 redshift 的数据转换 [关闭]

从 EC2 实例查询 DynamoDB 时遇到高延迟

哪些情况会导致 AppSync 无法从 DynamoDB 表中返回所有匹配的记录/项目?

模拟和测试由 Amplify @model 创建的 DynamoDB 表

如何使用 AWS DynamoDB 实现国际化?