Amazon web services 避免油门发电机B

Amazon web services 避免油门发电机B,amazon-web-services,cloud,amazon-dynamodb,Amazon Web Services,Cloud,Amazon Dynamodb,我是云计算新手,但有一个问题,我将要描述的机制是否存在,或者是否可能创建 Dynamodb提供了吞吐量(例如100次写入/秒)。当然,在现实世界的应用程序中,现实生活中的吞吐量是非常动态的,几乎永远不会达到每秒100次写入的配置量。我在想什么是伟大的将是某种类型的队列为dynamodb。例如,我的dynamodb在高峰时间每秒可能会收到500个写请求(是我分配的5倍),并且会返回错误。在客户机和数据库之间是否有一些队列,这样客户机请求进入队列,客户机得到确认,他们的请求已被处理,然后队列以每秒1

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


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

仅使用DynamoDB无法实现这一点。DynamoDB设计用于统一、可扩展、可预测的工作负载。如果你想在DynamoDB前面排队,你必须自己排队

DynamoDB确实有一点耐受性,但这不是为了持续使用。您应该阅读最佳实践部分,但这里有一些我认为很重要的段落,其中有我强调的几点:

对于设计用于统一工作负载的应用程序,DynamoDB的分区分配活动并不明显。工作负载中的临时不均匀性通常可以通过突发容差来吸收,如中所述。但是,如果您的应用程序必须定期适应不均匀的工作负载,那么您应该在设计表时考虑DynamoDB的分区行为(请参阅),在增加和减少该表上的已配置吞吐量时,请注意

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


有一些工具可以帮助自动缩放DynamoDB,例如值得研究的工具。

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

您可以先将所有消息放入SQS,或者在超出DynamoDB数据库上的设计思想时,使用SQS作为溢出缓冲区

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

如果传入消息的顺序非常重要,那么Kinesis是另一个选项,您可以接收传入消息,然后按照它们到达的顺序,以您定义的速度将它们插入DynamoDB


在国际海事组织,SQS将更容易使用,但如果您的需求更复杂,Kiness将为您提供更大的灵活性。

对于最近看到这一点的人,有一个更新,即在2018年推出了突发容量DynamoDB,即按需容量模式

您不需要事先决定容量,它将根据需要扩展读写容量

见:

哇,是的,这正是我想要的。我刚刚开始阅读SQS,但找不到任何文档说明如何将其与dynamodb集成?亚马逊真的应该更多地宣传这一点,我认为,这是一个伟大的功能与dynamodb结合。