对象云存储 - learning
简单了解
各种云服务商都有自己的对象云存储服务,这里是收集到的一些主流名称
- Amazon****Web Services (AWS):
- Amazon****S3 (SimpleStorageService): 这是最早推出也是市场上最广为人知的对象存储服务之一。它提供了强大的可扩展性、数据可用性、安全性和性能。
- Microsoft****Azure:
- Azure****Blob Storage (BinaryLargeObject****Storage): 这是 Azure 平台提供的对象存储解决方案,用于存储大量的非结构化数据,如文本或二进制数据。它提供了不同的存储层(热、冷、存档)以优化成本。
- Google****Cloud Platform (GCP):
- Google****Cloud Storage: 提供了统一的对象存储服务,支持不同存储类别(Standard, Nearline, Coldline, Archive)以满足不同的访问频率和成本需求。它与 Google Cloud 的其他服务紧密集成。
- Alibaba****Cloud (阿里云):
- Alibaba****Cloud OSS (ObjectStorageService): 正如我们之前讨论的,这是阿里云提供的海量、安全、低成本、高可靠的云存储服务。在中国及亚太市场有广泛应用。
- IBM****Cloud:
- IBM****Cloud Object Storage: 提供灵活、经济高效且可扩展的云存储,用于存储非结构化数据。它支持多种 API,包括 S3 API 兼容性。
- Oracle****Cloud Infrastructure (OCI):
- Oracle****Cloud Infrastructure Object Storage: 提供高持久性、高可用性的存储服务,适用于存储和访问大量数据。它也提供了不同的存储层(标准、低频访问、归档)。
- Tencent****Cloud (腾讯云):
- Tencent****Cloud COS (CloudObjectStorage): 腾讯云提供的对象存储服务,为用户提供数据存储、处理和访问服务,同样具有高可用性和可靠性。
- Huawei****Cloud (华为云):
- Huawei Cloud OBS (Object Storage Service): 华为云提供的稳定、安全、高效、易用的云存储服务,能够存储任意数量和格式的非结构化数据。
什么是 OSS 对象存储
OSS 对象存储是一种现代化的数据存储方式,特别适合存储和管理海量的非结构化数据。它通过将数据、元数据和唯一 ID 捆绑成“对象”,并使用扁平的地址空间和 HTTP API 进行访问,提供了高可扩展性、高持久性和成本效益。当你听到“OSS”时,很可能指的是阿里云的对象存储服务,但这个概念本身是通用的。
阿里云这边文章介绍很全面,可以看一下
https://www.alibabacloud.com/help/zh/oss/what-is-oss
好的,我们来聊聊 OSS 对象存储 (Object Storage Service)。
当你看到 "OSS 对象存储" 这个词组时,通常它指的是一种数据存储架构,其中数据被管理为对象 (objects)。这与传统的文件存储(有目录层级结构)或块存储(将数据存储为磁盘上的块)有所不同。
对象存储的核心概念:
- 对象 (Objects): 数据本身(例如,图片、视频、文档、备份文件等)与描述该数据的元数据 (metadata) 以及一个全局唯一的标识符 (unique ID) 一起存储。
- 数据本身: 可以是任何类型的文件,大小从几 KB 到几 TB 不等。
- 元数据: 是关于数据的数据,例如内容类型、创建日期、作者等。元数据非常灵活,可以自定义。
- 唯一标识符: 一个全局唯一的 ID,用于在扁平的地址空间中定位和访问对象。
- 扁平的地址空间 (Flat Address Space): 与文件系统中层层嵌套的目录结构不同,对象存储通常使用一个扁平的命名空间。你通过对象的唯一 ID 来直接访问它,而不是通过文件路径。
- 通过 HTTP/HTTPS 访问: 对象通常通过标准的 HTTP API(如 RESTful API)进行访问。这意味着你可以通过网络轻松地上传、下载和管理数据。
- 高可扩展性 (High Scalability): 对象存储系统设计用于存储海量数据,可以轻松扩展到 PB(Petabyte)甚至 EB(Exabyte)级别。
- 高持久性和可用性 (High Durability and Availability): 数据通常会在多个设备、多个数据中心甚至多个地理区域进行冗余存储,以确保数据的持久性和高可用性,防止数据丢失。
- 成本效益 (Cost-Effectiveness): 对于存储大量非结构化数据(如备份、归档、多媒体文件等),对象存储通常比传统存储方案更具成本效益。
"OSS" 的具体含义:
-
通用术语: "OSS" 可以泛指任何遵循对象存储原理的服务或系统。
-
特定云服务商产品: 在云计算领域,"OSS" 常常特指阿里云对象存储服务 (Alibaba Cloud Object Storage Service)。这是阿里云提供的一种海量、安全、低成本、高可靠的云存储服务。
- 类似地,其他云服务商也有自己的对象存储服务,例如:
-
Amazon S3 (Simple Storage Service)
-
Google Cloud Storage
-
Azure Blob Storage
对象存储的典型应用场景:
- 备份和归档: 存储数据库备份、日志文件、长期归档数据。
- 静态网站托管: 存储网站的静态内容(图片、CSS、JavaScript 文件)。
- 大数据分析: 存储用于大数据处理和分析的数据集。
- 云原生应用: 作为云原生应用的数据存储后端。
- 媒体文件存储: 存储和分发图片、音频、视频等富媒体内容。
- 内容分发网络 (CDN) 的源站: 将对象存储作为 CDN 的数据源,加速内容分发。
Bucket 储存桶
Bucket 想象成对象存储服务中的一个顶层容器或者一个命名的存储空间。它是你存放对象 (Objects) 的地方
我自己在阿里云建了 <span class="ne-text">bucket</span>
简单实践
AccessKey ID:LT....
AccessKey Secret:Lp....
使用工具
ossutil
https://github.com/aliyun/ossutil
这个工具上来先 config 一下
一般存储在 <span class="ne-text">C:\Users\lenovo\.ossutilconfig</span>
.\ossutil.exe config
基本命令
Bucket 管理
# 创建 Bucket
ossutil mb oss://mybucket
# 列出所有 Bucket
ossutil ls
# 列出 Bucket 内容
ossutil ls oss://mybucket
# 删除空 Bucket
ossutil rb oss://mybucket
# 强制删除 Bucket(包括内容)
ossutil rb oss://mybucket -f
文件上传
# 上传单个文件
ossutil cp localfile.txt oss://mybucket/
# 上传到指定路径
ossutil cp localfile.txt oss://mybucket/folder/newname.txt
# 上传整个目录
ossutil cp localdir/ oss://mybucket/remotedir/ -r
# 上传时设置存储类型
ossutil cp localfile.txt oss://mybucket/ --storage-class IA
# 断点续传上传大文件
ossutil cp largefile.zip oss://mybucket/ --bigfile-threshold 100MB
文件下载
# 下载单个文件
ossutil cp oss://mybucket/file.txt ./
# 下载到指定位置
ossutil cp oss://mybucket/file.txt /local/path/newname.txt
# 下载整个目录
ossutil cp oss://mybucket/folder/ ./localfolder/ -r
# 断点续传下载
ossutil cp oss://mybucket/largefile.zip ./ --bigfile-threshold 100MB
文件同步
# 同步本地目录到 OSS
ossutil sync localdir/ oss://mybucket/remotedir/
# 同步 OSS 到本地
ossutil sync oss://mybucket/remotedir/ localdir/
# 只同步修改的文件
ossutil sync localdir/ oss://mybucket/remotedir/ --update
# 删除目标端多余文件
ossutil sync localdir/ oss://mybucket/remotedir/ --delete
文件操作
# 复制文件
ossutil cp oss://bucket1/file.txt oss://bucket2/
# 移动文件
ossutil mv oss://mybucket/old.txt oss://mybucket/new.txt
# 删除文件
ossutil rm oss://mybucket/file.txt
# 批量删除
ossutil rm oss://mybucket/folder/ -r
# 列出文件详细信息
ossutil ls oss://mybucket/ -l
# 查看文件信息
ossutil stat oss://mybucket/file.txt
高级功能
权限管理
# 设置 Bucket ACL
ossutil bucket-acl oss://mybucket private
ossutil bucket-acl oss://mybucket public-read
ossutil bucket-acl oss://mybucket public-read-write
# 查看 Bucket ACL
ossutil bucket-acl oss://mybucket
# 设置对象 ACL
ossutil object-acl oss://mybucket/file.txt private
生命周期管理
# 设置生命周期规则
ossutil lifecycle --method put oss://mybucket lifecycle.xml
# 查看生命周期规则
ossutil lifecycle --method get oss://mybucket
# 删除生命周期规则
ossutil lifecycle --method delete oss://mybucket
静态网站托管
# 设置静态网站
ossutil website --method put oss://mybucket website.xml
# 查看静态网站配置
ossutil website --method get oss://mybucket
跨域资源共享 (CORS)
# 设置 CORS 规则
ossutil cors --method put oss://mybucket cors.xml
# 查看 CORS 规则
ossutil cors --method get oss://mybucket
行云
我们导入相应的密钥,是可以扫到一些东西的
可以
OSS Browser
https://github.com/aliyun/oss-browser
登录相应的
可以看每个桶内相应的存储文件
案例
基于 OSS 的静态网站部署
❯ .\ossutil.exe mb oss://bxwebsite
概念了解
主要是概念类的东西,这里记录一下
阿里云关于 OSS 的文档
https://help.aliyun.com/zh/oss/?spm=a2c4g.11186623.0.0.82955f555dQXZ2
术语表述
英文 | 中文 |
---|---|
Bucket | 存储空间 |
Object | 对象或者文件 |
Endpoint | OSS访问域名 |
Region | 地域或者数据中心 |
AccessKey | AccessKey ID和AccessKey Secret的统称,访问密钥 |
Put Object | 简单上传 |
Post Object | 表单上传 |
Multipart Upload | 分片上传 |
Append Object | 追加上传 |
Get Object | 简单下载 |
Callback | 回调 |
Object Meta | 文件元数据。用来描述文件信息,例如文件类型、编码方式等 |
Data | 文件数据 |
Key | 文件名 |
ACL (Access Control List) | 存储空间或者文件的权限 |
数据类型
结构化数据、非结构化数据、半结构化数据
特性 | 结构化数据**(StructuredData)** | 非结构化数据**(UnstructuredData)** | 半结构化数据**(Semi-structuredData)** | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
组织性 | 高度组织,预定义模式 | 无预定义模式,内部结构不固定 | 包含标签或标记,有一定组织性 | |||||||||
模式 | 固定 (Schema-on-write) | 无固定 (Schema-on-read) | 灵活,自描述 | |||||||||
存储 | 关系型数据库 (RDBMS) | NoSQL 数据库, 数据湖, 文件系统, 对象存储 | NoSQL 数据库, XML/JSON 文件 | |||||||||
查询分析 | 简单,使用 SQL 等 | 复杂,需专门工具 (NLP, ML) | 相对结构化数据复杂,但比非结构化简单 | |||||||||
例子 | 数据库表, Excel 表格 | 文本, 图片, 音视频, 邮件 | JSON, XML, NoSQL 文档 | |||||||||
占比 | 较小,但价值密度高 | 巨大,增长迅速 | 介于两者之间 |
地域(region)
地域 | Region****ID | Endpoint | ||
---|---|---|---|---|
华北2(北京) | cn-beijing | oss-cn-beijing.aliyuncs.com | ||
华东1(杭州) | cn-hangzhou | oss-cn-hangzhou.aliyuncs.com | ||
华东2(上海) | cn-shanghai | oss-cn-shanghai.aliyuncs.com | ||
华南1(深圳) | cn-shenzhen | oss-cn-shenzhen.aliyuncs.com |
冗余
1. 本地冗余 (Local Redundancy / Locally Redundant Storage - LRS)
-
概念: 本地冗余是指数据在****单个数据中心或单个物理位置内部创建多个副本。这些副本通常存储在同一数据中心内的不同硬件设备(如不同的磁盘、不同的服务器、不同的机架)上。
-
工作方式: 当数据写入时,系统会自动将其复制到同一数据中心内的多个独立的硬件单元上。
-
保护范围:
- 能防护: 单个磁盘故障、单个服务器硬件故障、甚至单个机架故障(取决于具体的实现方式)。
- 不能防护: 整个数据中心级别的灾难,例如火灾、洪水、大规模断电、地震等导致整个数据中心不可用的情况。
-
优点:
- 成本最低: 因为所有副本都在同一地点,数据复制的网络成本和管理复杂度相对较低。
- 写入延迟较低: 数据同步在数据中心内部网络进行,速度较快。
-
缺点:
- 可用性相对较低: 如果整个数据中心发生故障,所有数据副本都会丢失或不可访问。
-
类比: 就像你把一份重要文件的多个副本放在你家里的不同抽屉里。如果某个抽屉坏了,你还有其他抽屉里的副本。但如果你家着火了,所有副本可能都会丢失。
-
常见云服务商术语:
- AWS S3: S3 Standard (默认就是在单个区域内的多个可用区复制,但最基础的 LRS 概念是指单个设施内)
- Azure: 本地冗余存储 (LRS)
- 阿里云 OSS: 本地冗余存储 (LRS)
2. 同城冗余 (Intra-city Redundancy / Zone-Redundant Storage - ZRS)
-
概念: 同城冗余是指数据在****同一城市(或同一地理区域)内的多个独立的、物理隔离的数据中心之间创建副本。这些数据中心通常被称为“可用区** (Availability Zones, **AZs)”。
-
工作方式: 当数据写入时,系统会自动将其同步复制到同一城市内至少两到三个物理上独立的可用区(数据中心)。这些可用区拥有独立的供电、冷却和网络设施。
-
保护范围:
- 能防护: 单个数据中心级别的故障(如火灾、断电等导致某个可用区不可用)。即使一个数据中心完全瘫痪,其他可用区的数据副本仍然可用。
- 不能防护: 影响整个城市或区域的大规模灾难(例如特大地震、战争、覆盖整个区域的长时间断网)。
-
优点:
- 较高的可用性和持久性: 相比本地冗余,它能抵御单个数据中心级别的故障。
- 数据主权/合规性: 数据仍然保留在同一地理区域(城市)内,有助于满足某些数据主权或合规性要求。
-
缺点:
- 成本较高: 因为数据需要在多个数据中心之间复制和存储,成本通常高于本地冗余。
- 写入延迟可能稍高: 数据需要跨可用区同步,网络延迟会比在单个数据中心内略高。
-
类比: 就像你把重要文件的副本分别存放在你位于城市A的家、城市A的办公室以及城市A的一个银行保险箱里。如果你的家出了问题,办公室或银行保险箱里的副本还在。但如果整个城市A遭遇了特大洪水,所有副本可能都会受影响。
二者对比
特性 | 本地冗余 (LRS) | 同城冗余 (ZRS) | ||||
---|---|---|---|---|---|---|
数据副本位置 | 单个数据中心内的多个硬件单元 | 同一城市/区域内多个独立的可用区(数据中心) | ||||
防护级别 | 硬件故障(磁盘、服务器、机架) | 单个数据中心/可用区级别的故障 | ||||
无法防护 | 整个数据中心级别的灾难 | 整个城市/区域级别的大规模灾难 | ||||
可用性 | 较低 | 较高 | ||||
持久性 | 较低 | 较高 | ||||
成本 | 最低 | 中等 | ||||
写入延迟 | 最低 | 略高 | ||||
常见场景 | 对成本敏感、可容忍数据中心级别故障的非关键数据 | 需要较高可用性、能抵御单个数据中心故障的关键业务数据 |