【问题标题】:aws dynamo db throughputaws dynamodb 吞吐量
【发布时间】:2018-06-25 12:32:44
【问题描述】:

关于 AWS DynamoDb 吞吐量,我有些不明白。

让我们考虑强一致性读取。

现在,我知道在这种情况下,1 个容量单位意味着我每秒最多可以读取 4KB。

让我有点困惑的是“每秒”位。如果您确切知道要以多快的速度读取数据,则可以适当地设置单位。但是,如果您对阅读时间不太挑剔怎么办?

假设我的表只分配了 1 个读取单元,我尝试读取超过 4KB 的项目。现在肯定这只是意味着我的阅读将花费超过 1 秒吗?那很好,但是文档谈到了请求失败。当我没有要求在特定时间内读取数据时,AWS 如何确定我使用了太多单位?

也许我遗漏了一些明显的东西。有人可以帮忙解决这个问题吗?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb throttling throughput


    【解决方案1】:

    DynamoDB 最多可以消耗 burst capacity 中 300 秒的未使用吞吐量。

    DynamoDB 中的最大项目大小为 400KB,1 个 RCU 可让您读取高达 4KB。

    假设您要读取一个大小为 400KB 的项目,并且您的桌子上有 1 个 RCU。您可以每 100 秒检索一次该项目。

    由于突发容量,您总会有一段时间可以读取该项目,因为实际上您一次最多可以使用 300 个 RCU,而不仅仅是 1 个。

    想象一下从那个 400KB 的项目开始的表格。您需要等待 100 秒且不花费任何 RCU,这样您才能获得足够的爆发容量来获取该物品。 101 秒后您提出请求,花费 100 RCU 并获得该物品。再过 5 秒后,您再次发出请求,但因节流异常而被拒绝。

    所以不,DynamoDB 不会增加请求延迟以满足您的 RCU 规定。它要么尽快返回结果,要么抛出异常。

    编辑:顺便提一下,所有 AWS DynamoDB 开发工具包都会为您处理限制异常。如果您尝试读取某个项目,但由于没有足够的可用吞吐量而被拒绝,SDK 会退出并重试。因此,除非您的表确实配置不足,否则您不必担心处理限制异常。

    【讨论】:

    • 感谢您的解释。我现在明白了这个概念。当您说 SDK 处理节流异常时,这是否意味着节流异常不会导致调用我的 getItem 回调? (除非真的供应不足)。我正在使用节点 sdk。
    • SDK 最多会为您重试 10 次,总计 25 秒。如果在 10 次尝试后由于缺乏吞吐量配置而您仍未执行请求,则 ThrottlingException 将传递回您的应用程序,您可以处理它。请注意,重试次数和回退时间是可配置的。看看我的其他答案之一here。如果有帮助,请投票:)
    猜你喜欢
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多