主流分布式存储技术的对比分析与应用

Swift 组件包括: 代理服务(Proxy Server):对外提供对象服务 API,转发请求至相应的账户、容器或对象服务 认证服务(Authentication Server):验证用户的身份信息,并获得一个访问令牌(Token) 缓存服务(Cache Server):缓存令牌,账户和容器信息,但不会缓存对象本身的数据 账户服务(Account Server):提供账户元数据和统计信息,并维护所含容器列表的服务 容器服务(Container Server):提供容器元数据和统计信息,并维护所含对象列表的服务 对象服务(Object Server):提供对象元数据和内容服务,每个对象会以文件存储在文件系统中 复制服务(Replicator):检测本地副本和远程副本是否一致,采用推式(Push)更新远程副本 更新服务(Updater):对象内容的更新 审计服务(Auditor):检查对象、容器和账户的完整性,如果发现错误,文件将被隔离 账户清理服务(Account Reaper):移除被标记为删除的账户,删除其所包含的所有容器和对象

2.Swift的数据模型**Swift的数据模型采用层次结构,共设三层:**Account/Container/Object(即账户/容器/对象),每层节点数均没有限制,可以任意扩展。数据模型如下:

主流分布式存储技术的对比分析与应用

3.一致性散列函数Swift是基于一致性散列技术,通过计算将对象均匀分布到虚拟空间的虚拟节点上,在增加或删除节点时可大大减少需移动的数据量;为便于高效的移位操作,虚拟空间大小通常采用 2 n;通过独特的数据结构 Ring(环),再将虚拟节点映射到实际的物理存储设备上,完成寻址过程。如下图所示:

主流分布式存储技术的对比分析与应用

散列空间4 个字节(32为),虚拟节点数最大为232,如将散列结果右移 m 位,可产生 2(32-m)个虚拟节点,(如上图中所示,当m=29 时,可产生 8 个虚拟节点)。

4.环的数据结构Swift为账户、容器和对象分别定义了的环。环是为了将虚拟节点(分区)映射到一组物理存储设备上,并提供一定的冗余度而设计的,环的数据信息包括存储设备列表和设备信息、分区到设备的映射关系、计算分区号的位移(即上图中的m)。账户、容器和对象的寻址过程。(以对象的寻址过程为例):