阿里OSS--基本介绍

相关链接

Fastdfs—基本介绍和底层模型详解
阿里OSS–官方文档
阿里OSS–基本介绍
阿里OSS–快速使用(附开发工具类)

一.文件存储系统介绍

在一些项目中我们通常将上传的图片存入到中转目录中,直接去获取目录中的图片。
在这里插入图片描述
但这样会存在一些问题,导致这个方案不是任何时候都能适用。

  1. 如果图片过多、过大,就会占用项目本身的资源
  2. tomcat自身对大图片的处理不占优势
  3. 如果使用了集群,那么图片同步将非常麻烦
  4. 门户网站和后台系统必须在同一台电脑上

所以我们有时候就需要一个文件存储系统来进行统一的文件管理,而且可以进行海量存储、高可用

1.储存系统的选择

方案1:租用别人已经搭建好了的.
阿里云对象存储(收费),七牛云(10G内免费)

  1. 高可用架构设计,消除单节故障,确保数据业务的持续性。采用数据冗余存储机制
  2. 安全性高提供企业级多层次安全防护,包括服务端加密、客户端加密、防盗链、IP黑白名单、细粒度权限管控、日志审计、WORM特性等
  3. 方便、快捷:提供标准的RESTful API接口

方案2:自己搭建
hdfs(hadoop),FastDfs(国产,小文件)…

开源免费!开源免费!开源免费!

FASTDFS是一个开源分布式文件存储系统:充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
Fastdfs—安装fastdfs和nginx


OSS 与文件系统的对比

对比项 OSS 文件系统
数据模型 OSS 是一个分布式的对象存储服务,提供的是一个 Key-Value 对形式的对象存储服务。 文件系统是一种典型的树状索引结构。
数据获取 根据 Object 的名称(Key)唯一的获取该 Object 的内容。虽然用户可以使用类似 test1/test.jpg 的名字,但是这并不表示用户的 Object 是保存在test1 目录下面的。对于 OSS 来说,test1/test.jpg 仅仅只是一个字符串,和a.jpg 这种并没有本质的区别。因此不同名称的 Object 之间的访问消耗的资源是类似的。 一个名为 test1/test.jpg 的文件,访问过程需要先访问到 test1 这个目录,然后再在该目录下查找名为 test.jpg 的文件。
优势 支持海量的用户并发访问。 支持文件的修改,比如修改指定偏移位置的内容、截断文件尾部等。也支持文件夹的操作,比如重命名目录、删除目录、移动目录等非常容易。
劣势 OSS 保存的 Object 不支持修改(追加写 Object 需要调用特定的接口,生成的 Object 也和正常上传的 Object 类型上有差别)。用户哪怕是仅仅需要修改一个字节也需要重新上传整个 Object。OSS 可以通过一些操作来模拟类似文件夹的功能,但是代价非常昂贵。比如重命名目录,希望将 test1 目录重命名成 test2,那么 OSS 的实际操作是将所有以 test1/ 开头的 Object 都重新复制成以 test2/ 开头的 Object,这是一个非常消耗资源的操作。因此在使用 OSS 的时候要尽量避免类似的操作。 受限于单个设备的性能。访问越深的目录消耗的资源也越大,操作拥有很多文件的目录也会非常慢。

二.阿里OSS的基础介绍

介绍

对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。
其中也使用的与平台无关的 RESTful API 接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

使用场景

OSS 适合存储论坛网站与软件应用中的附件、高清图片、音视频、备份文件等,以及各种APP应用、多终端同步软件、网盘下载站的文

三.阿里OSS的基础概念

这里我直接贴一些官网文档的说明,也会带上一些自己的理解方便大家阅读

存储空间(Bucket)

类似与windows 系统盘符,但是没有目录所有文件都在同一层

存储空间是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。

  • 同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。
  • 每个用户可以拥有多个存储空间。
  • 存储空间的名称在 OSS 范围内必须是全局唯一的,一旦创建之后无法修改名称。
  • 存储空间内部的对象数目没有限制。

存储空间的命名规范如下:

  • 只能包括小写字母、数字和短横线(-)。
  • 必须以小写字母或者数字开头和结尾。
  • 长度必须在 3–63 字节之间。

对象/文件(Object)

就是我们日常使用的文件,在OSS中以键值对的形式存储。文件上传后无法修改,只能进行通过覆盖达到修改的效果

对象是 OSS 存储数据的基本单元,也被称为 OSS 的文件。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的 Key 来标识。对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。

对象的生命周期是从上传成功到被删除为止。在整个生命周期内,只有通过追加上传的 Object 可以继续通过追加上传写入数据,其他上传方式上传的 Object 内容无法编辑,您可以通过重复上传同名的对象来覆盖之前的对象。

对象的命名规范如下:

  • 使用 UTF-8 编码。

  • 长度必须在 1–1023 字节之间。

  • 不能以正斜线(/)或者反斜线(\)开头。

    说明 对象名称需要区分大小写。如无特殊说明,本文档中的对象、文件称谓等同于 Object。

Region(地域)

选择离自己最近地点的服务器,越近越快

Region 表示 OSS 的数据中心所在物理位置。用户可以根据费用、请求来源等选择合适的地域创建 Bucket。一般来说,距离用户更近的 Region 访问速度更快。详情请查看 OSS 已经开通的 Region

Region 是在创建 Bucket 的时候指定的,一旦指定之后就不允许更改。该 Bucket 下所有的 Object 都存储在对应的数据中心,目前不支持 Object 级别的 Region 设置。

Endpoint(访问域名)

Endpoint 表示 OSS 对外服务的访问域名。OSS 以 HTTP RESTful API 的形式对外提供服务,当访问不同的 Region 的时候,需要不同的域名。通过内网和外网访问同一个 Region 所需要的 Endpoint 也是不同的。例如杭州 Region 的外网 Endpoint 是 oss-cn-hangzhou.aliyuncs.com,内网 Endpoint 是 oss-cn-hangzhou-internal.aliyuncs.com。

AccessKey(访问密钥)

身份认证信息,通过keyid和keySecret来进行验证

AccessKey(简称 AK)指的是访问身份验证中用到的 AccessKeyId 和 AccessKeySecret。OSS 通过使用 AccessKeyId 和 AccessKeySecret 对称加密的方法来验证某个请求的发送者身份。AccessKeyId 用于标识用户;AccessKeySecret 是用户用于加密签名字符串和 OSS 用来验证签名字符串的密钥,必须保密。对于 OSS 来说,AccessKey 的来源有:

  • Bucket 的拥有者申请的 AccessKey。
  • 被 Bucket 的拥有者通过 RAM 授权给第三方请求者的 AccessKey。
  • 被 Bucket 的拥有者通过 STS 授权给第三方请求者的 AccessKey。

强一致性

Object 操作在 OSS 上具有原子性,操作要么成功要么失败,不会存在有中间状态的 Object。OSS 保证用户一旦上传完成之后读到的 Object 是完整的,OSS 不会返回给用户一个部分上传成功的 Object。

Object 操作在 OSS 上同样具有强一致性,用户一旦收到了一个上传(PUT)成功的响应,该上传的 Object 就已经立即可读,并且 Object 的冗余数据已经写成功。不存在一种上传的中间状态,即 read-after-write 却无法读取到数据。对于删除操作也是一样的,用户删除指定的 Object 成功之后,该 Object 立即变为不存在。

数据冗余机制

OSS 采用数据冗余存储机制,将每个对象的不同冗余存储在同一个区域内多个设施的多个设备上,确保硬件失效时的数据可靠性和可用性。

  • OSS Object 操作具有强一致性,用户一旦收到了上传/复制成功的响应,则该上传的 Object 就已经立即可读,且数据已经冗余写入到多个设备中。
  • OSS 会通过计算网络流量包的校验和,验证数据包在客户端和服务端之间传输中是否出错,保证数据完整传输。
  • OSS 的冗余存储机制,可支持两个存储设施并发损坏时,仍维持数据不丢失。
    • 当数据存入 OSS 后,OSS 会检测和修复丢失的冗余,确保数据可靠性和可用性。
    • OSS 会周期性地通过校验等方式验证数据的完整性,及时发现因硬件失效等原因造成的数据损坏。当检测到数据有部分损坏或丢失时,OSS 会利用冗余的数据,进行重建并修复损坏数据。

四.阿里OSS基础概念对比图(方便记忆理解)

对象存储 OSS 传统文件系统
Object 文件
Bucket 主目录
Region
Endpoint
AccessKey
多级目录
GetService 获取主目录列表
GetBucket 获取文件列表
PutObject 写文件
AppendObject 追加写文件
GetObject 读文件
DeleteObject 删除文件
修改文件内容
CopyObject (目的和源相同) 修改文件属性
CopyObject 复制文件
重命名文件

OSS 术语表

英文 中文
Bucket 存储空间
Object 对象或者文件
Endpoint OSS 访问域名
Region 地域或者数据中心
AccessKey AccessKeyId 和 AccessKeySecret 的统称,访问密钥
Put Object 简单上传
Post Object 表单上传
Multipart Upload 分片上传
Append Object 追加上传
Get Object 简单下载
Callback 回调
Object Meta 文件元信息。用来描述文件信息,例如长度,类型等
Data 文件数据
Key 文件名
ACL (Access Control List) 存储空间或者文件的权限
原创文章 25 获赞 70 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ChengHuanHuaning/article/details/105613360
今日推荐