今天我们来看看DynamoDb的设计思想。
DynamoDB主要是想要达到高可用性(availability),因为CAP理论,所以只能牺牲一致性了,但是会实现最终一致性。另外还想要达到高可扩展性(scalability)这个目标,方便进行水平扩展,也就是说高可用性和高可扩展性是DynamoDB要达到的两个目标,因为是分布式系统,所以需要对待失效处理向对待正常情况一样。
DynamoDB也不例外的利用了一致性哈希(consistent hashing)来对数据进行分区和复制。它的数据一致性是利用对象版本(object versioning)进行实现的。那我们来看看DynamoDB是怎么实现最终一致性的。
DynamoDB实现的最终一致性要解决两个问题,第一个问题是什么时候解决更新冲突,也就是说冲突是在读还是写的时候进行解决。很多数据存储系统是在写的时候进行冲突解决的,在这种情况下,如果所有的数据副本不能达成一致,那么写操作是有可能被拒绝的。而DynamoDB要实现总是可写的(always writable), 所以在读的时候进行冲突解决。
第二个问题是谁来解决更新冲突。可以使数据存储系统也可以是应用来解决冲突。如果是数据存储

本文探讨了Amazon DynamoDB的设计思想,强调其追求高可用性和高可扩展性,采用一致性哈希进行分区和复制,并通过对象版本实现最终一致性。DynamoDB在读时解决更新冲突,允许应用程序自定义冲突解决策略,提供始终可写的特性,并确保读写操作在大多数情况下能在百毫秒内完成。
最低0.47元/天 解锁文章
54

被折叠的 条评论
为什么被折叠?



