Dynamo的核心技术是什么
扫描二维码
随时随地手机看文章
摘要
亚马逊平台,基于成百上千万,分布于世界各地的服务器和网络组件,为众多网站提供服务。
本文呈现了Dynamo的设计与实现,亚马逊部分核心业务所使用的高度可用的实时在线键值存储系统。在特定的场景下牺牲了一定的一致性来维护可用性,对对象版本,冲突解决做了拓展,为开发者提供了新式的接口。
引言
Amazon:
高度去中心化,松散耦合(联系紧密却独立),面向服务的架构。
Dynamo:
1.综合多种知名技术来实现可拓展性和可用性;
2.保证最终一致性。
背景
现有的复制架构技术,过于局限,且太重视一致性,而导致可用性不高。
满足ACID性质的,可用性都不高。Dynamo不提供任何分离保证,且只允许单键更新。
Dynamo:
1.增量式拓展性
单次可以加入一台主机(节点)。
2.对称性
每个节点上的职责是一致的。
3.去中心化的
更偏向于点对点的去中心化技术。
4.异质性
可以根据机器的能力,分配相应比例的工作负载。
相关工作
P2P系统
- Freenet,Gnutella,P2P文件分享系统。
- Pastry,Chord,使用特定的路由机制,确保查询可以在一定的条数内得到回应。
- Oceanstore,提供在分布式数据上支持序列化更新,全局事务持久性存储服务。
分布式文件系统/数据库
- Ficus,Coda,牺牲了一致性来提高可用性。
- Farsite,通过复制架构来完成高度可用性和可拓展性。
- Google File System(GFS),单一中心服务器,多分支服务器分割存储。
- Bayou,分布式关系型数据库,支持无网操作,保证最终一致。
Dynamo:
支持无网状态下读写操作,高速读写,使用多种冲突解决机制,维护最终一致性,基于可靠网络环境设计。
架构
分布式架构要处理的问题:
负载均衡
错误检测
错误恢复
架构同步
过载处理
状态转换
并发控制
工作计划
请求编组
请求路由
系统监测与警报
配置管理
身份信息
本文专注于Dynamo的核心技术,如下表所示Partioning
Consistent Hashing
Incremental Scalability
High Availability for writes
Vector clocks with reconciliation during reads
Version size is decoupled from update rates
Handling temporary failures
Sloppy Quorum and hinted handoff
Provides high availability and durability guarantee when some of the replicas are not available.
Recovering from permanent failures
Anti-entropy using Merkle trees
Synchronizes divergent replicas in the background.
Membership and failure detection
Gossip-based membership protocol and failure detection.
Preserves symmetry and avoids having a centralized registry for storing membership and node liveness information.
系统接口
get(key),返回内容,及与内容冲突矛盾的对象。
put(key,context,object),根据key确定确认对象写入位置,再将副本写到磁盘上。
分配算法
一致性哈希,分配到一个首尾相接的环空间上。一个节点对应环上多个位置节点。
一对多好处:
1.如果节点故障,可以将工作均派给相同节点。
2.新加入节点,可以从其他节点中获取工作内容。
3.满足了异质性。
复制架构
每个数据对象在多个站点上备份。
数据版本
Dynamo保证最终一致性,故而更新操作可以同时传播到全部站点。