swift 修改layer.fillcolor保存_OpenStack—Swift

Swift 是一种分布式对象存储系统,强调高可用性和可扩展性,适用于静态数据的长期存储。它采用一致性哈希和数据副本策略实现数据冗余,通过proxy server、account server、container server和object server进行操作。Swift的操作流程包括对象的修改和获取,确保至少半数节点的成功操作。此外,文章还介绍了partition、replica、zone和weight的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Object Storage(Swift)对象存储

      Swift的目的是使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。Swift并不是文件系统或者实时的数据存储系统,它是对象存储,用于永久类型的静态数据的长期存储,这些数据可以检索、调整,必要时进行更新。最适合存储的数据类型的例子是虚拟机镜像、图片存储、邮件存储和存档备份。Swift无需采用RAID(磁盘冗余阵列),也没有中心单元或主控结点。Swift通过在软件层面引入一致性哈希技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性(High Availability,简称HA)和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。

Swift的特点

极高的数据持久性

完全对称的系统架构

无限的可扩展性

无单点故障

Swift逻辑架构

8a42df75efcd8040d0b32823f18b7b19.png

Swift组件

Swift porxy node

swift-proxy server       proxy server向用户提供了一套操作swift的API接口。对于每个swift请求,proxy server首先会通过Ring查找被操作实体的物理位置,随后会将请求发送过去。Proxy server中也做了大量的异常处理,例如当某个服务器因为某个原因无法添加对象时,proxy server会通过Ring获取一个可用的服务器,并将对该请求的处理切换至该服务器。

Swift storage node

swift-account server      account server是存储节点中负责处理对account的GET、HEAD、PUT、DELETE、RELICATION请求的服务进程,accountserver使用的SQLite的数据库文件保存account的相关信息

swift-container server      Container Server是存储节点找那个负责处理Container的GET、HEAD、PUT、DELETE、RELICATION请求的服务进程,Container Server使用的SQLite的数据库文件保存Container的相关信息

swift-obiect server      Object Server就是一个简单的BLOB存储服务器,可以存储、检索和删除保存在本地设备上的对象。在Object Server中,对象以二进制的形式保存在文件系统上,元数据以xattr的形式保存在文件扩展属性上,所以要求底层的文件系统支持xattr特性。

swift操作流程

假设:一个对象在swift集群中保存3个副本(Replica)

修改一个swift对象:

1、proxy server会根据/account/container/obiect查询Ring文件,得到存储该对象的节点索引(长度为3);

2、proxy server会将请求转发到这三个节点执行修改操作。如果只有两个节点写入成功,就认为这次put操作成功;(超过半数才会被认为执行成功)

3、写入失败的节点在一段时间后会将得到写入成功的节点Obiect Replicator进程推送过来的数据在进行一次写入。

从swift中获取一个对象:

1、proxy server会根据/account/container/obiect查询Ring文件,得到存储该对象的节点索引(长度为3);

2、proxy server和上述三个节点交互,如果有两个节点确认对象状态OK(超过半数),则转步骤三。否则返回失败

3、proxy server随机选取一个健康的节点获取数据并返回给用户。

Swift的原理

swift使用的算法,存储理论主要有:

一致性哈希算法

1、首先拿到一个地址空间(2^32),并且将地址空间分布到一个环,然后将节点服务器的IP地址、主机名等信息计算hash,将hash值映射到环上。

2、有数据需要存储,就将数据进行hash,得到一个hash值,这个hash值也会映射到环上。

3、通过映射到环上的位置,顺时针去找到最近的计算节点,然后就保存。

如果新增一台节点,那么影响的范围则是当前新增的节点逆时针的最近的节点中间的数据,而这些数据中的节点指针则指向了当前新增的节点。

1b888919818236bb1973f31ffb211e00.png

partition

      对象与物理节点多加一层虚拟节点,虚拟节点映射到物理节点,数据与物理节点是没有直接关系的,变更的时候只需要将物理节点与虚拟节点变更

7a698a8ba111f0ee58aabbc5950a7878.png

replica(副本)

      需要有冗余的副本来保证数据安全,理论依据主要来源于NWR策略(也叫Quorum协议)

NWR是一种分布式存储系统中用于控制一致性级别的策略。

N代表同一份数据的Replica份数

W是更新一个数据对象时需要确保成功更新的份数

R代表读取一个数据需要读取的Replica的份数

公式W+R+N,保证某个数据不被两个不同的事务同时读和写

公式W

zone

所有的Node都在一个机架或一个机房中

断电、网络故障等

对机器的物理位置进行隔离,以满足分区容忍性。

引入Zone的概念,把集群的Node分配到每个Zone中

Zone的大小可以根据业务需求和硬件条件自定义

weight

分配到更多的Partition

更好的利用已有存储空间

避免由于存储空间不同带来的问题

ring

ring是存储元素的描述,定位存储元素。

部署模式

测试用的部署模式

9bb4641f55cafa9bf7fb8ced4540c35b.png

常用的部署模式

0451d602f9d21433418d3d031474b986.png

备注:此文章为本人学习笔记,各位大佬不喜勿喷,谢谢!

§ §

d7a58a1debdf021242711767abcf542b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值