1、什么是对象存储?

描述: 对象存储(Object Storage)是一种存储数据的计算机体系结构,它以对象的形式存储和管理数据。与传统的文件系统和块存储不同,对象存储将数据作为对象存储在分布式的存储集群中,每个对象都有一个唯一的标识符(通常是一个URL),并且可以通过这个标识符来访问和检索数据。

「对象存储特点」

  1. 弹性扩展:对象存储可以轻松地扩展存储容量,无需中断服务或重新配置硬件。通过添加更多的存储节点,可以实现无限的存储能力。

  1. 高可靠性:对象存储采用分布式存储架构,数据在多个存储节点上进行冗余备份,以保证数据的可靠性和持久性。

  2. 高性能:对象存储可以提供高并发的数据读写操作,通过并行处理和负载均衡技术,实现快速的数据访问。

  3. 数据管理:对象存储可以对数据进行元数据管理,可以为每个对象添加自定义的元数据信息,方便对数据进行分类、搜索和管理。

  4. 访问控制:对象存储可以实现灵活的访问控制策略,可以根据需要设置不同的权限和访问策略,确保数据的安全性和隐私性。

对象存储广泛用于云存储、大数据分析、备份和恢复、多媒体内容存储等场景,它提供了高度可靠、高性能、可扩展和经济高效的数据存储解决方案。

2、为什么需要对象存储?

描述:在互联网越来越普及的当下,各种 APP 如雨后春笋。用户通过 APP 可以进行远程办公、查看新闻咨询、理财、社交、教育等等。在上面这些场景中,避免不了需要查看图片、音频、视频。那么问题来了?这些图片、视频、音频是怎样的存储的呢?

传统开发中,我们可以使用 tomcat 类似的服务器进行映射目录实现资源访问(在 server.xml 文件中进行配置)

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">   <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />          <!-- 增加的静态资源映射配置 --><Context path="/static" docBase="/usr/local/app/html/" reloadable="true" crossContext="true"></Context>
</Host>

也可以使用 nginx 对静态资源进行代理

server {listen       8080;server_name  localhost;# charset koi8-r;# access_log  logs/host.access.log  main;location / {root   html; # 代理 html 目录index  index.html index.htm;}
}

随着 APP 用户量的增加,服务器需要存储海量的图片、音频和视频。此时,再使用上面方式就显得不足了。当然,如果资金充足,可以购买成熟对象存储服务产品,例如:阿里云对象存储 OSS(Object Storage Service)。如果不想购买存储服务产品,则可以自己搭建对象存储服务,MinIO 就是你当下最好的选择。

3、什么是 MinIO 对象存储?

描述: Minio 是由 GlusterFS 创始人之一的 Anand Babu Periasamy 发布新的开源项目, MinIO 是一种对象存储解决方案,它是一个基于 Go 语言 (跨平台运行)的开源的对象存储系统,专门设计用于云原生和容器化环境,或者部署在任何地方而构建 公共云或私有云、裸机基础架构、编排环境和边缘基础架构。

Minio 提供与亚马逊云科技 S3 兼容的 API,并支持所有核心 S3 功能, 所以也可以看做是S3的开源版本;它允许用户通过简单的 API 接口进行数据的存储和检索,同时提供高度可扩展性和强大的数据保护机制。

MinIo主要是在微服务系统中使用,非常适合于存储大容量非结构化的数据,例如 图片、视频、日志文件、备份数据和容器/虚拟机 镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等,并且其安装配置简单,单行命令可以运行起来; 也可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

【相关概念】:

❝存储桶(Bucket)是对象的载体,可理解为存放对象的 “容器”,且该 “容器” 无容量上限,对象以扁平化结构存放在存储桶中,无文件夹和目录的概念,用户可选择将对象存放到单个或多个存储桶中不能单独存在。❞

❝对象(Object)是对象存储的基本单元,可理解为任何格式类型的数据,例如图片、文档和音视频文件等。存储桶(Bucket)是对象的载体,每个存储桶可容纳任意数量的对象。❞

# 每个对象都由对象键(ObjectKey)、对象值(Value)、和对象元数据(Metadata)组成。
* 对象键(ObjectKey):对象键是对象在存储桶中的唯一标识,可以通俗的理解为文件路径。
* 对象值(Value):即上传的对象本身,可以通俗的理解为文件内容(Object Content)。
* 对象元数据(Metadata):是一组键值对,可以通俗的理解为文件的属性,例如:文件的修改时间、存储类型等,您可以在上传对象后对其进行查询。

4、MinIO 对象存储有何特点 ?

描述:MinIO 对象存储特点如下所示:

  1. 高可用性:MinIO 支持分布式部署,可以在多个节点上实现数据冗余和负载均衡,从而提供高可用性和容错能力。

  1. 高性能:MinIO 的设计目标是提供快速的数据访问速度。它采用了高度优化的底层存储引擎,并且支持并行读写操作,以满足大规模数据访问的需求。

  2. 可扩展性:MinIO 可以根据实际需求进行水平扩展,用户可以根据数据量的增长来增加节点数量,从而实现存储容量和性能的扩展。

  3. 数据保护:MinIO 提供了多种数据保护机制,包括数据加密、数据完整性校验和故障恢复等。用户可以根据需要选择适当的保护机制来保障数据的安全性和可靠性。

  4. 兼容性:MinIO 兼容 Amazon S3 云存储服务(AWS Signature v2 和 v4) API,这意味着用户可以直接使用现有的 S3 工具和应用程序与 MinIO 进行集成,而无需进行修改。

总之,MinIO 是一个功能强大且易于使用的对象存储系统,适用于各种规模的数据存储和访问需求, 它的开源性质使得用户可以自由地定制和扩展系统,满足特定的业务需求。

5、Minio 安装配置

描述: 下述部署操作都是基于单节点Minio且由于处于演示的目录,只采用了一块网络存储卷,若要在中大型的生产环境中,请准备至少4块存储硬盘

  • Docker 方式部署

首先,创建持久化的目录,打开 Shell 执行 mkdir -vp /app/minio/{data,config} 即可。

$ mount -l
# 挂载 NFS 时关键参数 vers=4
192.168.1.94:/volume1/storage/ on /app type nfs (rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.94,mountvers=4,mountport=892,mountproto=udp,local_lock=all,addr=192.168.1.94) docker run -d -p 9000:9000 -p 9001:9001 --name minio-server \
-e "MINIO_ROOT_USER=minioadmin" -e "MINIO_ROOT_PASSWORD=weiyigeek.top" \
-v /app/minio/data:/data  -v /app/minio/config:/config \
--restart=always \
quay.io/minio/minio:RELEASE.2023-10-07T15-07-38Z server /data --config-dir=/config --console-address ":9001" --address ":9090"
  • 通过 Docker-compose 方式, 首先创建 docker-compose.yml 文件

tee docker-compose.yml <<'EOF'
version: '3'
services:minio:container_name: minioimage: quay.io/minio/minio:RELEASE.2023-10-07T15-07-38Zrestart: alwayscommand: server /data --config-dir=/config --console-address ":9001" --address ":9090"ports:- 9000:9000- 9001:9001volumes:- /app/minio/data:/data- /app/minio/config:/root/.minioenvironment:- MINIO_ROOT_USER: admin- MINIO_ROOT_PASSWORD: weiyigeek.top- MINIO_SERVER_URL: https://minio.weiyigeek.top- MINIO_BROWSER_REDIRECT_URL: https://minio.weiyigeek.top/admin/- MINIO_BROWSER_SESSION_DURATION: 30mhealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3
EOF# 参数&环境变量浅析
--address :指定 minio 监控地址
--console-address :指定 minio console 监控地址
MINIO_ROOT_USER:Minio Console 管理账号
MINIO_ROOT_PASSWORD : Minio Console 管理密码
MINIO_SERVER_URL : 存储桶资源访问路径
MINIO_BROWSER_REDIRECT_URL :Minio Console 管理域名地址
MINIO_BROWSER_SESSION_DURATION :Minio Console 管理页面认证失效时间# 启动与创建容器 
docker-compose up -d

温馨提示: MinIO 可使用纠删码(erasure code)和校验和(check sum)来保护数据免受硬件故障和无声数据损坏, 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据,但是你可能需要准备4块以上的硬盘,分别挂载到minio server服务器中。

# 纠删码限制 (多块硬盘 / 服务)
最大驱动器数量 Unlimited
最小驱动器数量 Unlimited
读仲裁 N / 2
写仲裁 N / 2+1# 示例演示
$ mkfs.xfs /dev/sdb -L DISK1
$ mkfs.xfs /dev/sdc -L DISK2
$ mkfs.xfs /dev/sdd -L DISK3
$ mkfs.xfs /dev/sde -L DISK4$ nano /etc/fstab# <file system>  <mount point>  <type>  <options>         <dump>  <pass>LABEL=DISK1      /mnt/disk1     xfs     defaults,noatime  0       2LABEL=DISK2      /mnt/disk2     xfs     defaults,noatime  0       2LABEL=DISK3      /mnt/disk3     xfs     defaults,noatime  0       2LABEL=DISK4      /mnt/disk4     xfs     defaults,noatime  0       2docker run -p 9000:9000 -p 9001:9001 --name minio \-v /mnt/disk1:/disk1 \-v /mnt/disk2:/disk2 \-v /mnt/disk3:/disk3 \-v /mnt/disk4:/disk4 \minio/minio server /disk1 /disk2 /disk3 /disk4 --console-address ":9001" --address ":9090"

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[深度学习] 大模型学习4-RAG技术全景解析

在大语言模型基础知识一文中&#xff0c;检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;简称 RAG&#xff09;技术作为构建大语言模型&#xff08;Large Language Model&#xff0c;简称 LLM&#xff09;应用的一种方式已被简要提及&#xff0c;本文将详…

4G/5G无线电单元系统

4G/5G无线电单元系统 ADI公司的核心技术和领域专业知识帮助客户在全球范围内规划、设计、打造更出色的高性能通信系统。 我们的无线电单元(RU)设计平台利用新一代技术来提供高性能解决方案&#xff0c;帮助客户消除设计障碍、缩短产品开发周期&#xff0c;加快产品上市时间。 价…

HarvardX TinyML小笔记1(番外2:神经网络)

1 介绍 图片来自&#xff1a;https://zh.wikipedia.org/zh-cn/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C 神经网络一直感觉挺神奇的&#xff0c;江湖也说可解释性很差&#xff0c;无论如何还是学学吧。借这次学习哈佛的TinyML&#xff0c;也就顺带弄了。 这里…

计算机网络 第2章通信基础(竟成)

第 2 章 物理层【考纲内容】1.通信基础 (1) 信道、信号、带宽、码元、波特、速率、信源与信宿等基本概念 (2) 奈奎斯特定理与香农定理 (3) 编码与调制 (4) 电路交换、报文交换与分组交换 (5) 数据报与虚电路2.传输介质 (1) 双绞线、同轴电缆、光纤与无线传输介质&#xff1b;(2…

2025-08-09通过授权码的方式给exe程序充值

2025-08-09通过授权码的方式给exe程序充值主要点&#xff1a; 一次性授权机制&#xff1a; 新增 .used_licenses 文件记录所有已使用的授权码 每次激活前检查授权码是否在已使用列表中 激活成功后立即将授权码标记为已使用 时效性验证&#xff1a; 授权码包含过期时间戳&#x…

工具类-高效集合差异计算工具DiffWrapper

集合差异工具类-DiffWrapper 原因 在编辑过程中&#xff0c;肯定会存在对于子表的更新操作&#xff0c;这种更新分为三种&#xff1a; 要加的&#xff0c; 要删的&#xff0c;要更新的&#xff0c;并且传参只有一个modifyVO的, 每一个都写有点过于冗余&#xff0c;故考虑提取一…

SimBA算法实现过程

文章目录添加噪声衡量扰动示例数值总结高级索引变量名代码总体代码添加噪声 操作&#xff1a;将频率扰动通过trans( )转为像素域扰动加到原始图像上&#xff08;trans返回频率域转换为像素域的结果&#xff09; expanded (images_batch[remaining_indices] # 原始图像&…

【面试题】cookie和session 的区别

文章目录一、核心定义与存储位置二、关键区别对比三、典型使用场景四、关联与依赖总结在Web开发中&#xff0c; Cookie和 Session是两种常用的状态管理机制&#xff0c;用于在无状态的HTTP协议中保存用户信息&#xff08;如登录状态、偏好设置等&#xff09;。二者的核心区别体…

【机器学习】算法调参的两种方式:网格搜索(枚举)、随机搜索

文章目录一、网格搜索&#xff1a;穷举式的最优解寻找1、数学推导过程1. 搜索空间的数学结构2. 优化问题的数学性质3. 收敛性分析4. 误差分析2、为什么网格搜索有效&#xff1f;1. 全局最优性保证2. 可重现性与稳定性3. 参数敏感性分析3、适用场景与局限性二、随机搜索&#xf…

免费PDF翻译 离线自建

https://github.com/Byaidu/PDFMathTranslate/blob/main/docs/README_zh-CN.md https://github.com/Byaidu/PDFMathTranslate/releases 方法 针对不同的使用案例&#xff0c;我们提供不同的方法来使用我们的程序&#xff1a;1. UV 安装 安装 Python (3.10 < 版本 < 3.12)…

DeepSeek智能考试系统智能体

一、deepseek-app-1.0 1、系统要求 CentOS 7.9Python 3.8Node.js 16MySQL 8.0 2、部署步骤 运行初始化脚本&#xff1a;./scripts/setup.sh初始化数据库&#xff1a;mysql -u root -p < scripts/init_db.sql启动服务&#xff1a;./scripts/start.sh 3、访问地址 前端&…

4深度学习Pytorch-神经网络--损失函数(sigmoid、Tanh、ReLU、LReLu、softmax)

目录 激活函数 1. Sigmoid 2. Tanh 函数&#xff08;双曲正切&#xff09; 3. ReLU 函数 4. Leaky ReLU (LReLU) 5. Softmax 总结对比表 损失函数选择 激活函数 激活函数是神经网络中每个神经元&#xff08;节点&#xff09;的核心组成部分。它接收上一层所有输入的加权…

探索Trae:使用Trae CN爬取 Gitbook 电子书

在以前使用过Cursor&#xff0c;但是后期由于试用资源很少&#xff0c;免费资源用完我就卸载掉啦&#xff0c;最近又需要开展相关工作&#xff0c;因此下载了最新版的Trae。Trae 2.0最近很火&#xff0c;我正好想要爬取某一个Gitbook 电子书&#xff0c;因此尝试使用Trae和Pyth…

嵌入式知识日常问题记录及用法总结(一)

文章目录摘要问题一、内核启动流程1.1 ARM内核上电复位与BootROM执行​启动代码&#xff08;Startup Code&#xff09;执行跳转到用户程序1.2 内存管理问题二、C语言基础2.1 常量指针和指针常量区别2.2.函数指针和指针函数区别2.3 关键字Volatile2.4 队列结构体数据摘要 嵌入式…

使用Navicat备份数据库MySQL、PostGreSQL等

Navicat 支持多种数据库系统&#xff0c;可通过手动或自动方式进行数据备份&#xff0c;整个过程还是相对简单且直观&#xff0c;比自己敲命令行方便多了。一、备份步骤1.1、手动备份1、打开Navicat并连接数据库&#xff1a;首先&#xff0c;启动Navicat并连接到您的MySQL数据库…

Web3: 用ERC-1400革新公司股权激励

大家好&#xff01;今天&#xff0c;我们来聊一个非常酷的话PEG话题&#xff1a;如何利用Web3技术&#xff0c;特别是ERC-1400证券型代币标准&#xff0c;来革新传统的公司股权激励模式。 大家是否想过&#xff0c;派发给员工的期权或限制性股票&#xff08;RSU&#xff09;可以…

【Python 高频 API 速学 ④】

一、为什么是这 4 个&#xff1f; 列表&#xff08;list&#xff09;是 Python 最常用的可变序列&#xff0c; 90 % 的操作可以浓缩成 「增、并、删、排」 四个字&#xff0c; 而这四个字正好对应 append / extend / pop / sort。二、四剑客一览方法作用原地&#xff1f;返回值…

K8S的POD数量限制

#k8s-v1.11.11.查询当前节点的最大pod数kubectl describe nodes | grep pods2.编辑配置文件把单台的pod数量调到150个vim /etc/systemd/system/kubelet.service #添加最大数量--maxPods: 1503.加载配置重启服务systemctl daemon-reload systemctl restart kubelet#k8s-v1.21.41…

OpenAI开源大模型 GPT-OSS 开放权重语言模型解析:技术特性、部署应用及产业影响

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《GPT多模态大模型与AI Agent智能体》&#xff08;跟我一起学人工智能&#xff09;【陈敬雷编著】【清华大学出版社】 清华《GPT多模态大模型与AI Agent智能体》书籍配套视频课程【陈敬雷…

CSS--后端也有自己的CSS要学

CSS,即Cascading Style Sheets,它描述了网页的表现与展示效果 为了演示CSS,我写了一个简单的index.html 为了使用控制变量法,一开始我先不写style.css文件的内容 右键在默认浏览器里查看页面,看看效果 1-选择器 根据标签名进行匹配,所以也叫元素选择器 页面效果: 根据…