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://
例如: http://acper.oss-cn-beijing.aliyuncs.com/acper.jpg
访问Object
可直接将URL链接写入HTML中访问Object
例如:
例如: 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记录的方式验证域名所有权
例如:http://osstest.acper.net
访问地址:
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默认页面
为空,则不启用静态网站托管
ACPER:http://osstest.acper.net/
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)
产品主页:https://www.qiniu.com/products/kodo
产品价格:https://www.qiniu.com/prices/kodo
[国内] 阿里云 OSS
https://www.aliyun.com/product/oss
http://api.aliyun.com
[国内] 华为云 OBS
https://www.huaweicloud.com/product/obs.html
[全球] Amazon S3
https://aws.amazon.com/cn/s3/
[开源] MiniIO
https://min.io
https://github.com/minio
Y 大型OSS云平台的安装与使用
安装 华为云 OBS 客户端 On Linux
参考文献
对象存储服务 OBS/ 成长地图 - 华为云
登录 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 参考文献
第五章:对象存储OSS笔记 - Zhihu/徐强
[linux] 域名解析失败案例定位 [Errno -2] Name or service not known - CSDN