openstack-swift.18421165

对象存储 swift

对象存储 是一种用于存储和管理大量数据的系统。类似于一个超大云盘。可以存储各种文件。(照片,视频,文档等等)。与传统的文件存储不同,对下个存储不关心文件的目录结构和层级关系,而是将每个文件视为一个独立的对象(Object).每个对象都有一个唯一的标识符,我们可以通过这个标识符来找到和访问对象。

为了确保数据的可靠性和安全性,对象存储会将每个对象分成对各副本,并将这些副本分散存储在不同的存储服务器上。这样,即使某个服务器出现故障,我们仍然可以通过其他副本来获取文件。
当我们想要上传文件时,我们将文件分成小块,并将这些块分发发哦不同的存储服务器上。每个块都有自己的效验码,以便需要时进行数据校验和修复。

当我们需要访问文件时,我们只需要提供文件的唯一标识符,对象存储系统就会根据标识符找到对应的存储服务器,并将文件块重新组装起来,然后,将完整的文件返回给我们。

swfit的特点

  • 高可用性:swift采用了多副本,冗余和分布式架构,以确保数据的高可用性和可靠性。当一个存储节点发生故障时,系统可以自动地将数据复制到其他节点上,以确保数据的完整性和可用性。
  • 可扩展性:swift可以轻松的扩展到数千台服务器,支持pb级别的数据存储,同时也支持水平和垂直扩展,以应对日益增长的数据需求
  • 强安全性:swift提供了多种安全机制,包括认证,授权,访问控制,加密等,以保护用户的数据免受恶意攻击和非法访问
  • 高性能:swift采用了分布式存储和负载均衡技术,以确保数据的快速访问和高效传输。同时,swift还支持多种数据访问协议,如RESTful API、Swift API、S3 API等,以满足不同用户的需求。
  • 易用性:swift提供了简单,易用的api和web界面

什么是openstack swift

swift和hadoop分布式文件系统(hdfs)都有着相似的目的:实现冗余,快速,联网的存储,它们的技术差异:

  • swift中,元数据呈分布式,跨集群复制。而hdfs使用了中央系统来维护文件元数据(namenode,名称节点),这对hdfs来说无异于单一故障点,因而扩展到规模非常大的环境显得更困难
  • swift中有多租户架构,而hdfs没有多租户架构这个概念
  • swift中文件可以写入多次;在并发操作环境下,以最近一次的操作为准。而hdfs中,文件写入一次,而且每次只能有一个文件写入
  • swift使用python hdfs使用java
  • swift被设计成了一种比较通用的存储解决方案,能够可靠地存储数量非常多的大小不一的文件;而hdfs被设计成可以存储数量中等的大文件(hdfs针对更庞大的文件做了优化),以支持数据处理。

img

Proxy Server:负责接收客户端的请求,并将请求分发到后端的存储节点上,同时也负责处理授权、认证和负载均衡等。

Object Server:存储对象数据,如图片、视频、文档等。

Container Server:存储对象容器数据,如文件夹、目录等。

Account Server:存储账户和认证信息,如用户、密码、角色等。

Replicator:负责对象和容器的数据复制和同步,以保证数据的冗余和高可用性。

Auditor:负责对对象和容器的数据进行检查和验证,以确保数据的完整性和可用性。

Updater:负责对对象和容器的元数据进行更新和同步,以支持Swift的高效管理和查询。

工作原理

  • 用户发起请求

用户通过RESTful API 发起http请求(例如GET,POST,PUT,DELETE等),以便存储在swift中的对象进行交互。这些请求首先发送搭配代理服务器

  • 身份认证和授权

代理服务器接收到请求后,首先对用户进行身份验证,以确保用户具有执行请求操作的权限。swift与openstack的身份验证服务keystone继承,以提供身份验证和授权功能。

  • 请求路由

代理服务器根据请求类型(账户,容器或对象操作)将请求路由到适当的服务器。此外,代理服务器还利用ring(一致性哈希环)来确定存储节点的位置

  • ring和数据分布

ring使用一致性哈希算法将数据均匀地分布在各个存储节点上,要实现负载均衡和高可用性。当请求到达存储节点时,ring负责确定数据应存储在哪个位置以及如何检索数据。

  • 数据持久化

对象服务器将数据写入存储设备。swift将数据分割为多个分片,并在多个存储节点上存储数据的多个副本,以确保数据的可靠性和容错能力。(Swift 会在节点内部创建数据的多个副本(如果你配置了副本数量))

  • 复制和一致性

复制器会定期检查数据副本的数量和完整性。如果某个存储节点发生故障或者数据损坏,复制器会自动创建新的副本以保持数据的可用性。同时,审计员会定期检查存储节点上的数据完整性和一致性,并在发现问题时出发复制器

  • 响应返回

完成操作后,存储节点将结果返回给代理服务器。代理服务器会将结果以http相应的形式返回给用户。

操作

[root@controller swift]# openstack container create swift-test
+---------------------------------------+------------+------------------------------------+
| account                               | container  | x-trans-id                         |
+---------------------------------------+------------+------------------------------------+
| AUTH_2fc2d17699ab4d1784a9b0f96e630915 | swift-test | txd6233772ee8248f2913ca-0066ece0e0 |
+---------------------------------------+------------+------------------------------------+

[root@controller swift]# openstack container list
+------------+
| Name       |
+------------+
| swift-test |
+------------+

[root@controller swift]# mkdir test
[root@controller swift]# echo 'hello word' > test/lll.txt

[root@controller swift]# openstack object create swift-test test/lll.txt 
+--------------+------------+----------------------------------+
| object       | container  | etag                             |
+--------------+------------+----------------------------------+
| test/lll.txt | swift-test | 4d2220fcf2abf3a9baac712bb93bd29c |
+--------------+------------+----------------------------------+

[root@controller swift]# openstack object list swift-test
+--------------+
| Name         |
+--------------+
| test/lll.txt |
+--------------+

[root@controller swift]# rm -rf test/

[root@controller swift]# openstack object save swift-test test/lll.txt
[root@controller swift]# ls test/
lll.txt
[root@controller swift]# cat test/lll.txt 
hello word
[root@controller swift]# 

切片式上传

[root@controller ~]# swift upload swift-test  -S 4096 cirros-0.5.1-x86_64-disk.img 

[root@controller ~]# openstack container list
+---------------------+
| Name                |
+---------------------+
| a                   |
| swift-test          |
| swift-test_segments |
+---------------------+
[root@controller ~]# openstack object   list swift-test_segments
+-----------------------------------------------------------------------+
| Name                                                                  |
+-----------------------------------------------------------------------+
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000000 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000001 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000002 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000003 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000004 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000005 |
| cirros-0.5.1-x86_64-disk.img/1726651615.838030/16338944/4096/00000006 |
省略
# 发现每个都是4096 4mb的分片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/889008.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【unity游戏开发】彻底理解AnimatorStateInfo,获取真实动画长度

前言 前置知识:设置参数后,下一个循环才会切换对应动画,所以在下一个循环获取真实的动画长度 AnimatorStateInfo是结构体!值类型,要不断重复获取才是最新的 主要是自动设置trigger切换的动画自动切回上一个动画&#x…

【读书笔记·VLSI电路设计方法解密】问题7:什么是基于标准单元的专用集成电路 (ASIC) 设计方法论

标准单元方法论是一种基于预组装库单元的芯片设计方法。该库中包含的标准单元和宏单元(例如存储器、I/O、特殊功能单元、锁相环(PLLs)等)已经在预定的工艺节点中设计、布局并经过验证。这些单元经过完全表征,并在逻辑、时序、物理和电气模型方面进行了定义,并正确地打包在…

Day2 IDEA

使用IDEA开发第一个程序 代码结构:Project - Module - Package - Class 作用:便于管理代码 例如: 创建一个空工程 创建module模块 创建package,一般以公司域名倒写技术名称 例如:com.test.hello 创建类 class He…

Axios 网络请求

文章目录 Axios 网络请求1.Axios 使用1.Axios 简介2.Axios 安装安装命令 3.Axios 引入方式全局引入局部引入 2.整合 vue1.在组件中使用 axios 发送请求发送结果这里就出现了跨域问题 3.跨域后端解决办法全局配置类 加入注解 CrossOrigin请求结果 全局配置 baseUrl Axios 网络请…

Nodejs-Nestjs框架 RBAC(基于角色的访问控制模型) 微服务 仿小米商城实战视频教程-2024年-试看学习记录

文章目录 前提-安装环境Nestjs框架介绍Nestjs框架环境搭建创建nestjs项目运行nestjs项目demonestjs新项目结构解释nestjs中的控制器、路由、Get、Post、方法参数装饰器nestjs模板引擎、配置静态资源(了解即可)nestjs中的服务(Model)nestjs中的cookie(了解即可)nestjs中的se…

YOLOv11训练自己数据集_笔记1

一、前言 yolov11-main 官网 分析YOLO11的关键改进点 YOLO11 相比之前版本,带来了五大关键改进: 增强特征提取:通过改进Backbone和Neck架构,新增了C3k2和C2PSA等组件,提升了目标检测的精度。 优化效率和速度&#xf…

深入理解HTTP Cookie

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 HTTP Cookie定义工作原理分类安全性用途 认识 cookie基本格式实验测试 cookie 当我们登录了B站过后,为什么下次访问B站就…

ctfshow-web 萌新题

给她 spring漏洞 pyload: 1.dirsearch扫描&#xff0c;发现git 2. GitHack工具得到.git文件 <?php $passsprintf("and pass%s",addslashes($_GET[pass])); $sqlsprintf("select * from user where name%s $pass",addslashes($_GET[name])); ?>…

HTML5实现古典音乐网站源码模板1

文章目录 1.设计来源1.1 网站首页1.2 古典音乐界面1.3 著名人物界面1.4 古典乐器界面1.5 历史起源界面2.效果和源码2.1 动态效果2.2 源代码源码下载万套模板,程序开发,在线开发,在线沟通作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/142…

aws(学习笔记第一课) AWS CLI,创建ec2 server以及drawio进行aws画图

aws(学习笔记第一课) 使用AWS CLI 学习内容&#xff1a; 使用AWS CLI配置密钥对创建ec2 server使用drawio&#xff08;vscode插件&#xff09;进行AWS的画图 1. 使用AWS CLI 注册AWS账号 AWS是通用的云计算平台&#xff0c;可以提供ec2&#xff0c;vpc&#xff0c;SNS以及clo…

无人机之飞控仿真技术篇

一、无人机飞控仿真技术的定义 无人机飞控仿真技术主要是指飞行控制系统仿真&#xff0c;它是以无人机的运动情况为研究对象&#xff0c;面向对象的复杂系统仿真。通过该技术&#xff0c;可以模拟无人机的飞行过程&#xff0c;评估飞行控制系统的性能&#xff0c;优化飞行参数&…

【Linux:线程控制】

目录 线程的创建与等待&#xff1a; ​编辑 代码中tid是什么&#xff1f; 如何看待线程函数传参&#xff1f; ​编辑 ​编辑创建多线程&#xff1a;​编辑 终止多线程&#xff1a; 线程分离&#xff1a; 线程封装&#xff1a; 线程的创建与等待&#xff1a; void *thre…

leetcode125:验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xff0c;如果它是 回文串 &#xff0c;返回 true &#xff1b;否则&#…

华为OD机试 - 贪吃蛇 - 队列(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

计算机网络:数据链路层 —— 数据链路层概述

文章目录 数据链路层主要功能 基本概念链路数据链路帧 数据链路层 在计算机网络中&#xff0c;链路层&#xff08;Data Link Layer&#xff09;是网络协议栈中的一层&#xff0c;负责管理和控制链路的建立、维护和释放&#xff0c;以及处理链路层的数据帧传输和错误控制等功能…

Linux入门3——vim的简单使用

1.vim 1.1 vim的模式 vim有三种主要模式&#xff1a; ①命令模式&#xff1a;使用vim刚打开进入的模式就是命令模式&#xff1b; ②插入模式&#xff1a;只有在插入模式下才可以做文字输入&#xff0c;按[Esc]键可退回命令模式&#xff1b; ③末行模式&#xff1a;文件保存或退…

大数据毕业设计选题推荐-王者荣耀战队数据分析-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

Android SELinux——安全策略(三)

SELinux 通过严格的访问控制机制增强了 Linux 系统的安全性。它通过标签和安全策略来控制进程和文件的访问权限&#xff0c;从而保护系统免受未经授权的访问和攻击。 一、策略介绍 1、主要组件 安全标签&#xff08;Security Labels&#xff09;&#xff1a;每个文件、目录、…

vite学习教程02、vite+vue2配置环境变量

文章目录 前言1、安装依赖2、配置环境变量3、应用环境变量4、运行和构建项目资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝3W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&#xff1…