【问题标题】:How to get sub 10ms response times from AWS DynamoDB?如何从 AWS DynamoDB 获得低于 10 毫秒的响应时间?
【发布时间】:2016-01-01 00:16:26
【问题描述】:

在 DynamoDB 文档和 Internet 上的许多地方,我已经看到单位数毫秒的响应时间是典型的,但即使使用最简单的设置,我似乎也无法实现。我已经在 us-west-2 中配置了一个 t2.micro ec2 实例和一个 DynamoDB 表,当从 ec2 实例上的 aws cli 运行以下命令时,我得到平均大约 250 毫秒的响应。从我的本地机器(丹佛)运行相同的命令平均大约 700 毫秒。

aws dynamodb get-item --table-name my-table --key file://key.json

在 AWS 控制台中查看 CloudWatch 指标时,它显示平均获取延迟为 12 毫秒。如果有人能告诉我我做错了什么,或者指出我可以自己解决这个问题的信息方向,我将不胜感激。提前致谢。

【问题讨论】:

  • Cloudwatch 指标显示 DDB 本身处理您的查询所用的时间。那是12毫秒。您在机器端看到的 250 或 700 毫秒可能是由于网络旅行、服务发现、凭证匹配等原因造成的。

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

在进行 REST API 调用时,您会看到许多影响延迟的因素。 DynamoDB 可以在个位数毫秒内提供延迟,但您可以采取一些注意事项和措施来最大限度地减少延迟。

首先要考虑的是距离和光速。当您使用位于同一区域的 EC2 实例时,预计在访问 DynamoDB 时会获得最佳延迟。从笔记本电脑或其他数据中心访问 DynamoDB 时,通常会看到较高的延迟。请注意,每个区域也有多个数据中心。

根据您使用的硬件、网络连接和编程语言,客户端也会产生性能成本。当您谈论毫秒延迟时,您机器上的处理时间可能会有所不同。

延迟的另一个可能来源是 TLS 握手。建立加密连接需要双方进行多次往返和计算才能建立加密通道。但是,只要您使用 Keep Alive 进行连接,您只需支付第一次查询时听到的费用。连续查询将大大加快,因为它们不会产生这种初始惩罚。不幸的是,AWS CLI 不会保持请求之间的连接,但大多数语言的 AWS 开发工具包会自动为您管理。


另一个重要的考虑因素是 DynamoDB 在 Web 控制台中报告的延迟是平均值。虽然 DynamoDB 确实提供了可靠的平均低两位数延迟,但最大延迟通常会在数百毫秒甚至更高。通过查看 CloudWatch 中的最大延迟可以看到这一点。

【讨论】:

  • 感谢您的回复,结合 ryan 的回答非常有帮助。
  • 从角色加载 AWS 凭证的开销是另一个启动成本,我在 Ryan 包含的答案中没有提及。底线是在您的请求全速执行之前有一个预热期。
【解决方案2】:

您看到的响应时间很大程度上取决于 aws cli 的冷启动时间。运行 get-item 命令时,cli 必须加载到内存中,获取临时凭证(如果在 t2.micro 实例上运行时使用 ec2 iam 角色),并建立与 DynamoDB 服务的安全连接。完成所有这些之后,它会执行 get-item 请求,最后将结果打印到标准输出。您的命令还需要从文件系统中读取 key.json 文件,这会增加额外的开销。

我在 t2.micro 实例上运行的经验是,aws cli 在启动时有大约 200 毫秒的开销,这似乎与您所看到的一致。

这对于长时间运行的程序来说不是问题,因为它们只在启动时支付类似的间接费用。我在 t2.micro 实例上运行了许多与 DynamoDB 配合使用的 Web 服务,DynamoDB 响应时间始终低于 20 毫秒。

【讨论】:

  • 我在 t2.micro 上创建了一个 restify.js 服务器,它的执行与 AWS 文档和您在此处所说的完全一致。非常感谢!并继续保持对 vogels 的出色工作,到目前为止我很喜欢它!
【解决方案3】:

他们最近发布了 DAX(预览版)。 Amazon DynamoDB Accelerator (DAX) 是一种完全托管的、高度可用的内存缓存,适用于 DynamoDB,即使在每秒数百万个请求的情况下,性能也可以提高多达 10 倍(从毫秒到微秒)。有关详细信息,请参阅In-Memory Acceleration with DAX (Preview)

【讨论】:

  • DAX 现已全面上市。
猜你喜欢
  • 2016-09-24
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
相关资源
最近更新 更多