我想知道使用ElastiCache / SimpleQueue的原因,还是分别在DynamoDB中使用“Cache”和“Queue”表。
caching/队列服务的networking延迟似乎胜过了很多性能提升,而EC2将caching/队列服务视为Dynamo将提供相同的延迟和吞吐量(因为Dynamo允许任何固定的低延迟加载)。
它主要是关于发电机与其他负载下的服务的价格?
有没有人有任何比较迪纳摩与ElastiCache / SQS粗略的延迟数字?
还有其他更重要的考虑,我错过了额外的复杂性?
谢谢。
我们使用DynamoDB和ElastiCache Redis的原因有很多。
DynamoDB:
ElastiCache Redis:
所以我们的设置大部分时间是:在Redis中由Redo提供的大容量请求的简单caching,作为永久和长期持久的存储。 有了这个,我们限制了成本,因为我们通过Redis的按实例付费模型获得隐式折扣,同时也获得了DynamoDB冗余的好处,甚至可以将DynamoDB查询语言用于更复杂的工作(如果我们需要的话)。
希望有所帮助!
更新:随着Amazon DynamoDB加速器( https://aws.amazon.com/de/dynamodb/dax/ )的发布,我们正在切换使用DAX(最终),我们正在使用DAX DynamoDB和Redis的组合。 由于DAX完全由AWSpipe理,使我们有机会在应用程序中始终使用DynamoDB语言,而且还可以像Redis一样获得直写caching的好处。
我们使用Elasticache而不是DynamoDB的主要原因是速度 – 对于小物体,您可以获得小于1ms的往返延迟。 这个盒子非常接近你的EC2机器,内存比磁盘,甚至SSD要快得多。
考虑到不同的定价模式,也可能有成本优势,尽pipe我没有在那里详细描述。
Redis / memcached是内存中的存储,通常应该比caching/队列types数据的DynamoDB更快。 他们还有一些方便的附加项目,如Dynamo可能没有的过期键,Redis中的Pub / Sub等。