【问题标题】:Avoid throttle dynamoDB避免油门 dynamoDB
【发布时间】:2019-10-29 04:54:30
【问题描述】:

我是云计算的新手,但有一个问题,我将要描述的机制是否存在或可能创建?

Dynamodb 已配置吞吐量(例如 100 次写入/秒)。当然,在现实世界的应用程序中,现实生活中的吞吐量是非常动态的,几乎永远不会是您预置的 100 次写入/秒。我在想 dynamodb 的某种类型的队列会很棒。例如,我的 dynamodb 在高峰时段每秒可能会收到 500 个写入请求(我分配的 5 倍)并且会返回错误。我可以在客户端和数据库之间放置一些队列吗,所以客户端请求进入队列,客户端得到确认他们的请求已被处理,然后队列以 100 的速率向 dynamodb 发出请求/ 每秒准确写入,这样就不会返回错误并且我不需要提高吞吐量,这会增加我的成本?

【问题讨论】:

    标签: amazon-web-services cloud amazon-dynamodb


    【解决方案1】:

    将 AWS SQS 放在 DynamoDB 的前面将为您解决这个问题,这不是一种不常见的设计模式。 SQS 已经非常适合根据需要进行扩展,并且可以接收大量具有不可预测的流模式的消息。

    您可以先将所有消息放入 SQS,也可以在超过 DynamoDB 数据库的设计吞吐量时使用 SQS 作为溢出缓冲区。

    一个或多个工作实例可以从 SQS 队列中读取消息,并按照您决定的速度将它们放入 DynamoDB。

    如果传入消息的顺序非常重要,Kinesis 是您提取传入消息然后将它们插入到 DynamoDB 的另一种选择,按照它们到达的相同顺序,按照您定义的速度。

    IMO,SQS 将更易于使用,但如果您的需求更复杂,Kineses 将为您提供更大的灵活性。

    【讨论】:

    • 哇,是的,这正是我想要的。我刚刚开始阅读有关 SQS 的信息,但找不到任何文档如何将其与 dynamodb 集成?我认为亚马逊真的应该更多地宣传这一点,这是与 dynamodb 结合的一个很棒的功能。
    【解决方案2】:

    这无法单独使用 DynamoDB 完成。 DynamoDB 专为统一、可扩展、可预测的工作负载而设计。如果你想在 DynamoDB 前面放置一个队列,你必须自己做。

    DynamoDB 确实对burst capacity 有一点容忍度,但这不是为了持续使用。您应该阅读最佳实践部分 Consider Workload Uniformity When Adjusting Provisioned Throughput,但这里有一些我认为很重要的段落,其中包含我强调的一些事情:

    对于设计用于统一工作负载的应用程序,DynamoDB 的分区分配活动并不明显。如Use Burst Capacity Sparingly 中所述,工作负载中的临时不均匀性通常可以被突发容限所吸收。但是,如果您的应用程序必须定期适应不均匀的工作负载,您应该在设计表时使用牢记 DynamoDB 的分区行为(请参阅 Understand Partition Behavior),并在增加和减少该表上的预置吞吐量时要注意。

    如果您减少表的预置吞吐量,DynamoDB 不会减少分区数。假设您创建了一个表,其预置吞吐量远大于应用程序实际需要的吞吐量,然后随后降低了预置吞吐量。在这种情况下,每个分区的预置吞吐量将低于最初创建吞吐量较低的表时的吞吐量。

    有一些工具可以帮助自动扩展 DynamoDB,例如 sebdah/dynamic-dynamodb,可能值得研究。

    【讨论】:

      【解决方案3】:

      最近看到这一点的人的一个更新,因为 DynamoDB 在 2018 年推出了按需容量模式。

      你不需要事先决定容量,它会根据需求扩展读写容量。

      见: https://aws.amazon.com/blogs/aws/amazon-dynamodb-on-demand-no-capacity-planning-and-pay-per-request-pricing/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-28
        • 2019-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-22
        • 2022-06-15
        • 2012-09-02
        相关资源
        最近更新 更多