Swift 基本知识(概念,架构,运行原理)

一、Swift 基本概念

Accounts:在Swift中,一个account就是一个存储系统中的用户,swift 可以使多个用户同时访问存储系统

Containes:就是一个account用来存储object的命名空间,类似于文件系统的文件夹的概念。

Objects:实际存储在swift中的数据,可以是任何类型的文件,比如书:照片,录像,数据库备份,文件系统的snapshot

The swift api:swift 中,所有object的上传,获取,修改和删除都可以通过 url进行,也可以通过自带的cli进行操作。

一个查看container下所有object的url 类似于:https://swift.example.com/v1/account/container

  一图胜千言
        >>> container  >>  objects  
account >>> container  >>  objects  
        >>> container >>   objects

二、Swift 架构:

swift 有两个基本的组成部分:一是proxy services,会将进来的存储或者读取数据的请求指向合适的storage nodes。第二个就是storage services,它存储实际的数据。

Clinet Request  >>>  proxy server >>> storage nodes

P orxy server: 它其实就是一个HTTP服务器,处理所有和swift交互的请求。一旦收到请求,他将会根据url来操作对应的节点。为了防止节点失败,应该最少设置两个以上的proxy server

一般情况下,swift都会将同一个object默认复制三份才返回成功存储的url,proxy server要确保数据已经成功的写入到storage nodes 的硬盘上。

Storage server: 为集群提供硬盘上的存储,在swift中总共有三种不同的storage server分别是:account, container, object。

    
        >>> object storage server
storage >>> container storage server
        >>> account storage server

account server 和 container server 提供命名空间分区和列表功能,另外account server 还提供一个各个account 下所有 container 的列表。这个列表被复制到整个swift 的集群中。

object server 为 swift 上的object 提供服务,每一个object都和它的 metadata 存储一起,被单独当作一个文件对待。复制的时候也会一起复制。


三、Swift 工作原理

把所有的组件组合在一起的是 partition space 。partition space 将集群中可用的存储分为几百万个用来存储数据的 location。 然后swift 使用一个被称作ring 的数据结构来将数据对应存储到硬盘上不同的 location 里面。最后,再使用 repliaction 进程确保 数据在每个分区都被复制成功。

Partition Space: 在 swift 中partition space 用来存储一系列的数据,包括account databases ,container databases,或者objects。partition space 是replication 系统的核心。这样会更容易复制。系统搭建起来的时候,patitions 的数量是可以设置的,搭建好以后,只要步增加新的节点,partition的数量就基本保持固定。一个patition就像一个硬盘上的文件夹,并且自带一个这个文件夹里面内容的hash table

各个概念的关系: storage node 包含 disk 包含 partition
The  Ring: 它将partition space 和物理localtion 通过map 的方式一一对应,当需要对object,container或者account 进行操作的时候,通过ring 来确定他们具体在哪个partition。每一个partition在ring默认是被复制三次的。并且如果有一个节点出现错误,也是ring 来决定哪个节点进行替代。

ConsistencyServers:

Auditors:它持续不断地运行在swift每个节点的后台,持续扫描硬盘确保数据和硬盘没有任何的损坏。如果发现任何损坏,Auditors 将数据移动到隔离区,replicator 负责复制新的数据到partition

Updates:确保account 和container,object 的列表是正确的

Replicators:确保数据存放在它应该出现的地方,并且确保系统中有数据的足够备份。除了负责修复错误的数据,他还会随时比较每块partition同其他两块patition的区别,确保数据没有出错。replicator 怎么知道是否需要替换一个replicator呢?因为每一个partition都会有一个hash table,如果和其他patition的hash table 比对后,发现不一致,就可以进行复制操作了。 



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值