TOS对象存储实战 | 青训营笔记

117 阅读5分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天

这里主要是TOS相关内容的讲解,本节课主要通过对比分布式存储选型,讲解对象存储的优势,分析为什么我们需要对象存储。

抖音背后的存储

短视频架构初探

image-20230128094054882

存储需求:

image-20230128094209118

  • 需求细化:

    • Day: 1730 TB, 432块4TB磁盘,20亿个视频/图片

存储量真的是超级超级大!!!

找到一个合适的存储,易用,便宜,海量

为什么对象存储

存储选型

  • 存储种类:

    • 单机存储:

      • 文件系统
      • kv存储
    • 单机数据库:

      • 关系型数据库
      • 非关系型数据库
    • 分布式数据库:

      • 关系型数据库
      • 非关系型数据库
    • 分布式存储:

      • 分布式文件系统
      • 对象存储
  • 各类存储对比:

image-20230128094524441

分布式存储最适合昂!!!

  • 分布式文件系统 vs 对象存储TOS

image-20230128094804873

易用性

  • HDFS:

image-20230128101049473

  • 对象存储:

image-20230128101124788

好处:HTTP接口就能用啦,非常简单易用昂!!!互联网都是HTTP建立的昂,能用HTTP,就非常简单!!!

TOS适用场景

  • 适用场景:

    • 视频
    • 图片
    • 文本
    • 安装包
    • 备份
    • 前端js文件 ......

    静态、Immutable

  • 不适用场景:

    • 关系型数据:商品订单...
    • KV:缓存记录...
    • 随机写:在线编辑文件
    • Append写:大数据计算中间结果...
    • 更新频繁:钱包余额...>_ < ......

    结构化、Mutable

简单来说:简单存取,很好用。就是个仓库嘛。一旦需要仓库去“理解”这些内容,并需要进行稍微复杂的逻辑分析,就不行了,那就用结构化的仓库去。

TOS就是很简单的,你塞个东西,就能访问到,很好用的昂!!!

对象存储怎么用

  • 步骤:

    • 申请Bucket

    • 业务逻辑开发:

      • 视频的CRUD
    • 上线测试:

      • 视频操作测试

Restful接口

image-20230128103946113

MultiUpload接口

随着开发的深入,小明发现一个问题,自己. 上传数GB的大视频时,由于网络不好,总是上传到99%就网络卡住了,他很恼火,翻遍对象存储各类手册,终于发现了一个解决此场景的闪电三连鞭: MultiUpload

image-20230128104410368

Listprefix接口

小明把上传/下载/删除对象存储等基本场景搞定后,但是想看看桶里面有哪些对象,这时候他又犯难了, 继续翻遍开发手册后,他发现了一个分页列举接口: ListPrefix

image-20230128104612461

TOS字节内部实践

开发一个存储对象

  • 短视频应用上线后,大获成功,对象存储在公有云的使用量特别大,数据量大了,领导决定自研对象存 储,这个重任又交给了小明。小明很快想出了一个经典的三层架构:

image-20230128104754284

  • 接入层: 接入解析并处理接口请求
  • 元信息层: 存储对象元信息
  • 存储引擎层: 存储对象内容
  • 架构细化:

    • 容量型

      • 代表业务 片源: 用户上传源视频 转码: 源文件转码后的视频
      • 特点 容量: 海量,EB 吞吐: 海量,>> 100GB/S 高持久度: 用户视频不能丢
      • 挑战 可扩展性: 容量/吞吐需可线性扩展 成本: 单位存储成本需要足够低 持久度: 如何在保证成本的情况下,确保高持久度
    • QPS型:

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

可拓展性-Partition

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

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

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

image-20230128105309614

持久度-Replication

  • 持久度的敌人: 不可靠的一切

    • 不可靠的硬件
    • 不可靠的软件
    • 自然灾害
    • 甚至是太阳黑子!

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

  • Replication:

image-20230128105659940

一致性就是Replication引出的问题

成本-EC

Erasure Coding

image-20230128105803850

Replication虽然可以解决持久化的问题,但是单纯多副本拷贝成本非常高。 -> EC可以实现降本昂!

成本-温冷转换

image-20230128105919384

不常用的数据,存到性能更差,成本更低但是更廉价的存储介质上,不就更好咩!!!

架构细化

image-20230128110150654

存储需求量细化-高可用

可用性!高可用!!!

image-20230128110314771

降低爆炸半径

image-20230128110400522

粤核酸yyds

image-20230128110449017

镜像灾备

image-20230128110549017

未来展望

image-20230128110617221