• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

TOS对象存储 | 青训营

武飞扬头像
kanier
帮助2

对象存储

对象存储(Object Storage Service,OSS),也叫基于对象的存储,是一种解决和处理离散单元的方法,可提供基于分布式系统之上的对象形式的数据存储服务。

之前写过文章描述存储系统分类的,主要是单机存储和分布式存储。

  海量 易用 便宜
分布式文件系统HDFS 支持PB->EB海量存储
文件数量受Name Node限制
伪Posix文件接口,开发略复杂
非云原生,搭建维护较麻烦
视频/图片相关生态接入略复杂
使用普通X86服务器,成本低
对象存储TOS 支持>EB海量存储
文件数量无限制
Restful HTTP接口,开发极简单
云原生,按需申请使用
视频/图片相关生态丰富
使用普通X86服务器
具备冷热数据分级存储能力,成本更低

Bucket/Object语义

  • Bucket:存储对象的桶,可类比一个云上的Map。
  • Object:对象,包含如下三个部分
  • Key:对象的名字,可类比Map的Key
  • Data:对象的内容,例如视频/图片内容
  • MetaData:对象的一些元信息,如对象大小,对象Content-Type,也可以存储自定义元信息

HTTP接口

  • 任何时间、任何地点、任何互联网设备上传和下载数据
  • 支持HTTP协议的各种客户端都可访问

接口速览

  • GET:下载对象
  • HEAD:查看对象元信息
  • PUT:上传对象
  • DELETE:删除对象
  • ...........

使用对象存储

学新通

Restful接口

  1. PUT:
  • 参数: Bucket, Key, 对象内容
  • 返回: 成功/失败
  1. GET :
  • 参数: Bucket, Key
  • 返回: 对象内容
  1. HEAD: Lite版GET
  • 参数: Bucket, Key
  • 返回: 对象元信息,如大小/Content-Type等
  1. DELETE:
  • 参数: Bucket, Key
  • 返回: 成功/失败

MultiUpload

  1. lnitUpload:
  • 参数: Bucket, Key
  • 返回: Uploadld
  1. UploadPart:
  • 参数: Uploadld,Partld,Part内容
  • 返回: 成功/失败
  1. CompleteUpload: 参数: Uploadld, Partld Array 返回: 成功/失败

分页列举接口ListPrefix

  1. ListPrefix参数:
  • prefix: key前缀
  • delimiter:分隔符,默认为/
  • max-keys :本次分页数量
  • start-after:分页起始对象Key
  1. ListPrefix返回:
  • common-prefix:共同前缀
  • objects:对象key列表
  • isTruncated:是否已经列举完

对象存储实战学习

经典三层架构

  1. 接入层:接入解析并处理接口请求
  2. 元信息层:存储对象元信息
  3. 存储引擎层:存储对象内容

细化

业务有很多,根据不同业务分为容量型的业务和QPS的业务。

首先是容量型的业务:

代表业务

  • 片源:用户上传源视频
  • 转码:源文件转码后的视频

特点

  • 容量:海量,>EB
  • 吞吐:海量,>>100GB/S
  • 高持久度:用户视频不能丢

挑战

  • 可扩展性:容量/吞吐需可线性扩展
  • 成本:单位存储成本需要足够低
  • 持久度:如何在保证成本的情况下,确保高持久度

其次是基于QPS型的业务:

代表业务
抽帧: 源视频审核用抽帧
特点
QPS: 极高,>>100K/s
挑战
可扩展性: QPS需可线性扩展

可扩展性解法---Partition

分布式存储=分布式+单机存储

分布式

  • 存储均匀分布
  • 计算均匀分布
  • 压力均匀分布

分布式系统相当于一个蜂群,每个节点都负责一小部分数据存储和计算,达到1 1 >=2的效果

Partition(分而治之)

  • 分而治之: 不同数据映射至不同Partition分区
  • Partition Logic: Hash/Range

可扩展性如何达成

  • 数据量增加: 扩容机器新建Partition
  • Parition Logic: 新增数据写入映射导向新Partition

持久度解法---Replication

数据单节点存储,一定有较大概率丢失无法找回! !!

复制(Replication) 数据复制多份,即多个副本副本放置策略:

  • 多机架: 可抵抗机架级别故障
  • 多机房: 可抵抗机房级别故障
  • 多Region: 可抵抗Region级别故障

好处

  • 高持久度: 不丢数据
  • 强吞吐能力: 多个副本可以提供服务

成本解法---EC

Replication虽然可以解决持久度问题,但是单纯多副本拷贝成本也非常高!

EC (Erasure Coding)冗余编码: 可达到和多副本一样的持久度

特点

  • 低冗余度: 成本较单纯多副本低
  • 额外计算: 增加了额外的编码计算步骤

成本解法---温冷转换

比较热门的数据放在访问速度快的存储介质上面,特别冷门的视频等可以放到一些不追求访问速度的存储介质上。

架构细化

学新通

高可用解法---拆分降低爆炸半径

一个集群拆分成多个集群,有效降低爆炸半径

高可用---粤核酸的启发

高可用---镜像灾备

完全镜像的主备Bucket,出现问题随时切换,真正100%的可用性

增量双向同步

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbcffe
系列文章
更多 icon
同类精品
更多 icon
继续加载