[OSS] 对象存储(OSS)概述
目录
- 0 序
- 1 对象存储-概述
- 2 对象存储的概念与原理
- 3 OSS产品一览
- Y 大型OSS云平台的安装与使用
- X 参考文献
0 序
- 本文属笔记型博文。
目标读者:博主本人
- 本文OSS的描述内容,主要参考阿里云的OSS产品。
1 对象存储-概述
1.1 什么是对象存储OSS?
- 对象存储服务(
Object Storage Service
)是阿里云等云平台提供的海量、安全、低成本、高可靠的云存储服务,提供与平台无关的RESTful API
接口,提供99.999999999%的服务持久性。
- 优势:
- 海量、安全、低成本、高可靠
- 按量收费,无需担心存储容量
- 主要功能:
- 任何时间、任何地点、任何平台上对数据进行上传和下载
- 通过API或WEB页面方式管理海量数据
- 弹性扩展:海量存储空间,随时增加
- 大规模:支持同一时间内高并发,大流量的读写访问
- 图片处理:支持缩略、裁剪、水印、压缩和格式转换
- 按量付费:存储量、流量、请求次数付费
1.2 对象存储OSS的特点
OSS产品特点一:稳定
- 服务可用性不低于99.9%
- 规模自动扩展
- 数据三冗余备份,持久性99.999999999%
OSS产品特点二:低成本
- OSS使用成本很低
- 内网地址访问免流量费
- 无需运维投入
OSS产品特点三:安全
- 结合云盾防DDos系统
- 多种安全认证机制
- 提供访问日志,有助于追查非法访问
OSS产品特点四:大规模、高性能
- 存储容量无限扩展
- 处理能力弹性增加
- 多线BGP网络,各运营商访问流畅
1.3 对象存储OSS的应用场景
- 场景1:OSS适合作为应用程序的持久化存储
- 持久保存文件(附件、图片、视频)
- RDS数据库MySQL
- 场景2:数据处理
- 图片处理:提供裁剪、旋转、水印、缩放
- 媒体转码:音视频格式转换
- 场景3:海量存储
- 管理音视频资源
- 网络摄像机直存
- 管理海量的物联网设备数据(例如:车联网领域————CAN报文等)
- 软件系统的日志
- 场景4:动静态资源分离
- 动态资源:数据库记录
- 静态资源:图片、附件、音视频资源的超低延时传输
1.4 对象存储OSS的计费模式
OSS费用构成(按量付费[主要类型]、包年包月)
- 结算方式:
- 按量付费:
- 开通OSS后,默认付费方式
- 按小时时间
- 计费公式:实际资源使用量*每小时单价
- 包年包月:
- 以资源包的形式提供,超出部分按量付费
- 资源包类型:
- 1、存储包、下行流量包、回源流量包三种类型
- 2、地域资源包和全国通用资源包两大类
- 存储费用:
- 标准存储类型
- 实际存储量
- 低频/归档存储类型
- 实际存储量
- 存储实际未满指定天数的存储容量
- 数据取回量
- 流量费用:
- 外网流出流量
- CDN回源流出流量
- 跨区域复制流量
- 请求费用:
- 请求次数
- 数据处理费用:
- 图片处理
- 视频截帧
2 对象存储的概念与原理
2.1 基本概念
OSS数据组织结构
- OSS数据组织结构
Bucket/桶
- 定义
- 同一用户、同一地域创建的存储空间不超过30个,名称全局唯一
- 存储空间一旦创建,名称、所处地域、存储类型不能修改
- 单个存储空间的容量不限制
- Bucket的解释说明:
- Bucket是OSS上的命名空间
- Bucket名称在整个OSS服务中具有全局唯一性,不能修改
- 一个应用,例如图片,可以对应一个或多个Bucket中
- 一个用户在同一地域下最多可以创建30个Bucket,每个Bucket中存放的Object没有限制,存储容量没有限制
- Bucket命名规则:
- 只能包括小写字母、数字或短横线
- 必须以小写字母或数字开头和结尾
- 长度必须在3-63字节之间
- Bucket的使用:
- 创建Bucket
- 设置Bucket权限
- 查看Bucket信息
- 删除Bucket信息
Object
- 定义
- 每个文件都是一个Object
- 文件大小限制
- 控制台最大不超过5G,断点续传方式
- 上传的文件大小不超过48.8TB
- OSS支持上传同名文件,但会覆盖已有文件
- Object的解释说明:
- Object是OSS存储数据的基本单元,也称为OSS的文件
- Object由元信息(Object Meta),用户数据(Data),文件名(Key)组成,对象由存储空间内部唯一的Key来标识。
- 用户可根据自己的需要在元信息中存储一些自定义信息
- 根据不同的上传方式,Object的大小限制是不一样的,分片上传最大支持48.8TB的对象大小,其他的上传方式最大支持5GB
- Object展现形式为文件或文件夹
- Object命名规则:
- 使用UTF-8编码
- 长度必须在1-1023字节之间
- 不能以“/”或者“\”字符开头
- 区分大小写
- OSS控制台可以上传小于5G的文件,大于5G通过SDK或者API分片上传
- 获取文件访问地址
- Bucket或Object的读写权限为非私有,可以通过URL来访问该文件
Bucket或Object的读写权限为私有,OSS按照URL有效时间生成带签名字符串的URL
- OSS Object 的使用 :设置文件HTTP头
HTTP标准属性
名称 | 描述 |
---|---|
Content-Type | 该Object文件类型 |
Content-Encoding | 指定该Object被下载时的内容编码格式 |
Cache-Control | 指定该Object被下载时的网页缓存行为 |
Content-Disposition | 指定该Object被下载时的名称 |
Content-Language | 指定该Object被下载时的内容语言编码 |
Expires | 过期时间 |
-
OSS Object 的使用 : 用户自定义元数据(User Meta)
-
OSS Object 的使用 : 删除文件
- 单个删除,指定删除某个Object
- 批量删除,控制台批量删除一次最多可指定1000个Object
- 自动删除,使用生命周期管理来完成
- OSS Object 的使用 : 碎片管理
- 碎片
- 碎片是使用分片上传模式,需要调用Compute Ultipart Upload将这些碎片组合成一个完整的Object
- 可通过控制台查看或删除产生的碎片
AK(AccessKey ID & Secret)
- 用于标识用户,为访问OSS做签名验证
Endpoint(访问域名)
- OSS对外服务的访问域名
- HTTP RESTful API对外提供服务
- 访问不同地域的时候,需要不同的域名
- 同一地域下,内外网的Endpoint也是不同的
2.2 OSS 访问的Bucket、域名和数据中心
- Bucket和数据中心的关系
- Bucket是地域内作用的资源,可按照费用单价,请求来源分布,网络延迟
- Bucket一旦创建完成,不可修改所属的数据中心
- OSS支持Bucket级别的数据中心设置,不支持Object级别设置数据中心
- Bucket访问域名
Bucket的三级域名(API GetService)
- 域名构成规则是:
Bucket 名字
+.
+EndPoint
EndPoint
依据Bucket
所在地域的不同,内外网访问方式的有所区别
- Bucket内网访问
- 只有
ECS实例
可通过Bucket内网地址访问ECS实例
与Bucket在同一地域,如不在同一地域,需使用外网Bucket外网域名访问
- Object访问地址构成规则
Bucket权限为公共读或公共读写时,Object的访问规则如下:
http://<bucket名字>.<endpoint>/<object名字>
例如:
http://acper.oss-cn-beijing.aliyuncs.com/acper.jpg
访问Object
可直接将URL链接写入HTML中访问Object
例如:<img src="http://acper.oss-cn-beijing.aliyuncs.com/acper.jpg">
例如:
ping flink-runtime.obs.cn-north-1.myhuaweicloud.com
bucket
=flink-runtime
endpoint
=obs.cn-north-1.myhuaweicloud.com
例如:
checkpoint.dir=obs://${OSS_AK}:${OSS_SK}@${OSS_ENDPOINT}/${OSS_BUCKET}/jobs/checkpoint/
2.3 OSS 自定义域名绑定
- 域名绑定说明:
- OSS Bucket未绑定域名时,通过浏览器访问Object的URL,则为:强制下载模式
- 支持OSS域名绑定CName,目前仅支持
OSS
及三级域名访问访问,即配置方式为Bucket_name
.endpoint
- 绑定的域名,需提供工信部备案号
- 每个Bucket可以绑定20个域名
- 可通过域名TXT记录的方式验证域名所有权
- 访问地址:
2.Y OSS的其他设置
2.Y.1 防盗链设置
-
适用场景:为了减少存储于OSS数据被他人盗链而产生额外费用
-
防盗链设置:
- OSS是按量收费的服务
- OSS基于HTTP Header中的字段Referer的防盗链方法
- 每个Refer白名单使用换行符,支持通配符(*,?)
- 1、白名单为空
- 不会检查Referer字段是否为空
- 2、白名单不为空
- 设置了不允许Referer字段为空的规则,则只有Referer属于白名单的请求被允许
- 设置了允许Referer字段为空的规则,则Referer为空的请求和符合白名单的请求被允许,其他请求会被拒绝。如果使用浏览器直接访问,需设置Referer字段为空。
2.Y.2 静态网站托管
-
适用场景:网站静态内容存储在OSS Bucket中
-
静态网站托管
- OSS支持静态网站托管
- 通过控制台将存储空间配置成静态网站托管模式
- 支持索引和404默认页面
- 为空,则不启用静态网站托管
2.Y.3 图片处理
- 图片服务特点:
海量、安全、低成本、高可靠的图片处理服务
调用简单:RESTful接口调用
不受时间、地点、设备的限制
随OSS服务一并开通
- 图片服务提供功能:
图片缩放、裁剪、旋转;
添加图片,文字,图文混合水印;
图片格式转换
自定义图片处理样式
通过管道顺序调用多种图片处理功能
获取图片信息
-
服务规则:
-
通过URL的形式(RESTful)
-
Bucket:用户的IMG频道
-
endpoint:用户的Bucket所在数据中心的访问域名
-
Object:用户操作图片的基本数据单元是Object
-
action:用户对图片的操作
-
parame:用户对图片操作对应的参数
-
多个action之间的组合形式
- 常用action列表:
- 图片服务概念:
- 样式 : 为了避免URL过长,action保存成别名,即样式style
URL方式访问
分隔符方式访问
分隔符支持-、_、/、!
2.Y.4 安全控制
- 数据安全:
三副本机制,盘古分布式文件系统,提供物理层面的高可靠性
- 安全控制:
OSS提供Bucket、Object级别的权限访问控制
- 防盗链:
- OSS是按量付费服务
- OSS基于HTTP Header中的字段Referer的防盗链方法
- 每个Referer白名单使用换行符,支持通配符(*、?)
- 服务器加密存储:
- OSS支持在服务器端对用户上传的数据进行加密编码
- 数据上传,对数据进行加密编码
- 数据下载,对数据进行解密,下载
- 支持加密的操作包括:
- Put Object:简单上传
- Copy Object:复制Object
- Initiate Multipart Upload:分片上传
- 客户端加密SDK:
- SDK在本地进行数据加密
- 阿里云KMS托管用户主密钥,上传对象时指定KMS用户的主密钥ID
- 使用用户自主管理密钥,用户自主生成并保管加密密钥
- AK方式加解密
2.Y.5 对象存储OSS的API
- OSS API使用:
- 使用RESTful接口,推荐使用SDK来调用
- 通过向OSS client类设定Endpoint,加入请求参数,系统返回结果
- 请求结构:
访问地址:EndPoint(http://oss-cn-hangzhou.aliyuncs.com)
- 返回的格式:数据格式只有XML格式
阿里云API网址:http://api.aliyun.com
2.x 对比分析:OSS vs 传统自建存储服务器
对比项 | 对象存储OSS | 自建服务器存储 |
---|---|---|
可靠性 | 服务设计可用性不低于99.9% 规模自动扩展,不影响对外服务 数据设计持久性不低于99.999999999% 数据自动多重冗余备份 |
受限于硬件可靠性,易出问题,一旦出现磁盘坏道,容易出现不可逆转的数据丢失。 人工数据恢复困难、耗时、耗力 |
安全 | 提供企业级多层次安全防护 多用户资源隔离机制,支持异地容灾机制。 提供多重鉴权和授权机制及白名单、防盗链、主/子账号功能 |
需要购买清洗和黑洞设备 需要单独实现安全机制 |
成本 | 多线BGP骨干网络(中国移动、联通、移动教育网等),无带宽限制,上行流量免费 无需运维人员与托管费用,0成本运维 |
存储受硬盘容量限制,需人工扩容 单线或双线接入速度慢,有带宽限制,峰值时需人工扩容 需专人运维,成本高 |
数据处理能力 | 提供图片处理、音视频转码、内容加速分发(CDN)、鉴黄服务、归档服务等多种数据增值服务,并不断丰富中 | 需要额外采购,单独部署 |
3 OSS产品一览
- [国内] 七牛云 Kodo OSS
对象存储产品(Kodo OSS)
- [国内] 阿里云 OSS
- [国内] 华为云 OBS
- [全球] Amazon S3
- [开源] MiniIO
Y 大型OSS云平台的安装与使用
安装 华为云 OBS 客户端 On Linux
参考文献
-
登录 ECS 服务器
-
通过SHELL命令,下载安装 OBS 客户端
cd /opt
wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz
ls -la /opt
tar -xvf obsutil_linux_amd64.tar.gz
ls -la /opt
# mv /opt/obsutil_linux_amd64_5.4.11 /opt/obsutil
mv /opt/obsutil_linux_amd64_5.5.12 /opt/obsutil
ls -la /opt/obsutil
- 通过SHELL命令,配置 OBS 的 AK / SK
需根据实际情况配置(建议创建一个公共的 AK、SK)
/opt/obsutil/obsutil config -i=${OSS_AK} -k=${OSS_SK} -e=${OSS_ENDPOINT}
-i
参数 即 AK-k
参数 即 SK-e
参数 即 OBS桶所在地区
配置成功的样例:(仅供参考)
root@test-ecs:/opt# /opt/obsutil/obsutil config -i=TOHT20H9OHXAIMB4xxNy -k=r0ijXdVL7or2xyaFxxxxh3xxZTvewU2O53cJFHz6 -e=obs.cn-north-4.myhuaweicloud.com:443 Config file url: /root/.obsutilconfig Update config file successfully! root@test-ecs:/opt#
X 参考文献

本文链接: https://www.cnblogs.com/johnnyzen/p/18102842
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
2023-03-28 [Git/SVN] Gitee使用教程
2023-03-28 [软件体系结构/架构] 零拷贝技术(Zero-copy)[转发]
2023-03-28 [智能制造] 如何利用生产软件(MES)进行生产信息收集?
2020-03-28 [Java]变量及其初始化 与 类对象的初始化
2018-03-28 团队协作小结