全球旧事资料 分类
信息。环是为了将虚拟节点(partitio
,分区)均衡地映射到一组物理存储设备上,并提供一定的冗余度而设计的,其数据结构由以下信息组成:存储设备列表、设备信息包括唯一标识号(id)区域号、(zo
e)权重、(weight)、IP地址(ip)、端口(port)、设备名称(device)、元数据(meta)。Swift为账户、容器和对象分别定义了的Ri
g,其查找过程是相同的。Ri
g中每个partitio
在集群中都默认有3个replica。每个partitio
的位置由ri
g来维护,并存储在映射中。Ri
g使用zo
e来保证数据的物理隔离。每个partitio
的replica都确保放在了不同的zo
e中。Zo
e只是个抽象概念,它可以是一个磁盘(diskdrive),一个服务器(server),一个机架(cabi
et),一个交换机(switch),甚至是一个数据中心(datace
ter),以提供最高级别的冗余性,建议至少部署5个zo
e。权重参数是个相对值,可以来根据磁盘的大小来调节,权重越大表示可分配的空间越多,可部署更多的分区。当集群中发生存储节点宕机、新增(删)存储节点、新增(删)zo
e等必须改变partitio

ode间的映射关系时,还可以对Ri
g文件通过重新平衡(rebala
ce)来进行更新。当虚节点需要移动时,环会确保一次移动最少数量的虚节点数,并且一次只移动一个虚节点的一个副本。总的来说,Ri
g引入一致性哈希的原因是为了减少由于增加结点导致数据项移动的数量来提高单调性;引入partitio
的原因是为了减少由于节点数过少导致移动过多的数据项;引入replica的原因是防止数据单点、提高冗余性;引入zo
e的原因是为了保证分区容忍性;引入weight的原因是为了保证partitio
分配的
第6页共14页
fOpe
StackSwift学习笔记
均衡。
4架构设计
41Swift数据模型Swift采用层次数据模型,共设三层逻辑结构:Accou
tCo
tai
erObject(账户容器对象)。每层节点数均没有限制,可以任意扩展。这里的账户和个人账户不是一个概念,可理解为租户,用来做顶层的隔离机制,可以被多个个人账户所共同使用;容器类似文件夹,代表封装一组对象;对象由元数据和数据两部分组成。42Swift系统架构Swift采用完全对称、面向资源的分布式系统架构设计,所有组件都可扩展,避免因单点失效而扩散并影响整个系统运转;通信方式采用非阻塞式IO模式,提高了系统吞吐和响应能力。Swift组件包括:代理服务(ProxyServer):Swift通过ProxyServer向外提供基于HTTP的REST服务接口,会根据环的信息来查找服务地址并转发用户请求至相应的账户、容器或者对象,进r
好听全球资料 返回顶部