DynamoDB
DynamoDB是分布式数据库,设计成用来解决数据库管理、性能、可扩展性和可靠性等核心问题。开发人员可以创建一个数据库表,该表可以存储和检索任何数量的数据。
DynamoDB改进了Memcached的一致性hash算法
采用了虚拟节点的机制改进了一致性hash算法,有Q个虚拟节点,S个物理节点,那么为每一个物理节点分配Q/S个虚拟节点,其中Q>>S,虚拟节点的好处是能够分布不均匀的问题,最大限度减少服务器增减时的缓存重新分布
Memcached虚拟节点不固定,虚拟节点位置随机性,如果有新节点加入,则需要扫描所有节点上的所有数据对象,判断是否需要迁移,这种全局扫描会造成很大开销。
DynamoDB固定虚拟节点,只改变虚拟节点和节点的对应关系。
- 当加入节点的时候,从现有节点中拿出等量虚拟节点分配给新节点
- 当节点离开的时候,将此节点的所有虚拟节点平均分配给余下的节点
Quarum机制:
R + W > N的机制能够保证数据的正确性,但是不能保证一致性,如果R=W=N可以保证一致性,但是无疑牺牲了很多可用性
多副本机制
DynamoDB有多副本机制,但是为了达到高的可用性,牺牲了一致性,满足AP,牺牲了C,