;简介;简介;中心化架构;对称架构;目录; ;调研总结;调研总结;调研总结;调研总结;调研总结; ; ;简介;基础架构;元数据管理;总结; ;简介;应用场景;特性总览;基础架构;基础架构;存储机制;存储机制;文件名结构;读写操作;平滑扩容;容错机制;其他设计思想;无文件数据缓存;最新改进;总结; ;简介;基础架构;分组存储;轻量级;轻量级;轻量级;对等性;文件分块问题;副本同步;副本同步延迟问题;解决副本同步延迟问题;;解决副本同步延迟问题;总结; ;简介;业务背景;特性总览;基础架构;数据分布方案;数据分布方案;副本策略;集群扩展;NRW策略与仲裁协议;向量时钟与仲裁协议;Hinted Handoff临时故障处理;基于Merkle树的副本同步;基于Gossip的成员和故障检测协议;客户端驱动或服务器驱动协调;权衡后台和前台任务;总结; ;简介;应用场景;特性总览;Swift主要有三个组成部分
Proxy Server:REST-ful API 服务器、与Client通信的唯一部件
Storage Server:提供磁盘存储服务
Consistency Server:负责查找并恢复因数据和硬件产生的错误
Storage和Consistency服务均允许在Storage Node上
;添加负载均衡器的部署架构
下图的Swift集群分为5个Zone,每个Zone是一台存储服务器,每台服务器上由12块2TB的SATA磁盘组成。
Swift采用完全对称的系统架构:每个存储服务器的角色是完全对等的,系统配置完全一样,均安装了所有Swift服务软件包。
上面的负载均衡(Load Balancer)并不属于Swift的软件包,出于安全和性能的考虑,一般会在业务之前挡一层负载均衡设备。
;基础架构—— Proxy Server;Storage servers为集群提供磁盘存储,提供了内部的REST-ful API。
Account Server
面向多租户(multi-tenancy)
提供用户命名空间划分和container列表功能
Sqlite数据库实现
用户对其账号内的命名空间具有完全的控制权
Container Server
提供对象命名空间划分和object列表功能
Sqlite数据库实现
container不可以嵌套,概念上类似于文件系统中的文件夹
用户创建container的数量没有限制,container也不需全局命名唯一
Object Server
每个对象作为一个单独的文件存储在磁盘中,除非超过5GB
对象的元数据存储在文件的扩展属性(extended attributes)中,因此对象的数据和元数据被存储在一???,在复制时作为一个单元进行复制;Consistency Servers查找并解决由数据损坏和硬件故障引起的错误。
Auditor
运行在每台swift服务器的后台,定时扫描磁盘确保数据没有位错误或文件损坏。
一旦发现损坏的存储对象,就将其移动到隔离区。
;Ring
Swift最重要的组件,用于记录存储对象与物理位置间的映射关系。
使用一致性哈希算法(Consistent hashing)实现。在swift集群中的每一个node(storage proxy)上,都存有一份ring信息,解决了元数据集中管理问题。
Zone
不依赖于其他zone的独立空间,同一个数据的副本存储在不同的zone上,从而保证即时其中的一个zone出现故障(如停电),其他zones仍然是可访问的(满足分区容忍性,CAP理论中的P)。
Zone的大小可以根据业务需求和硬件条件自定义,可以是一块磁盘、一台存储服务器,也可以是一个机架甚至一个IDC。
Zone中有1到N个node,每个Node存储若干Partition;Partition
Ring将哈希值映射到不同的均等空间中去,这每一个均等空间就称为一个partition。
;一致性哈希算法思路
计算每个节点的哈希值,并将其分配到一个0~232的(也可以是其他指数)圆环区间上。
使用相同方法计算存储对象的哈希值,也将其分配到这个圆环上。
;Ring的存储
在Swift集群中的每一个node(storage proxy)上,都存有一份ring信息。解决了类似HDFS等分布式文件系统的元数据集中管理问题。
Ring的类型
Swift中共有三种类型的数据需要存储:account,container和object。
每种类型都有单独的ring:account ring,container ring和object ring。
Account Ring:
hash(‘/account’) - 存储该account的partitions位置
Container Ring:
hash(‘/accou
原创力文档

文档评论(0)