TOS对象存储实战 | 青训营

61 阅读3分钟

抖音背后的存储

短视频架构

  • 短视频生产/消费:片源系统--送审-->审核系统--放出-->推荐系统
  • 公共系统:客户端、账号系统、评价系统

存储需求

-(片源服务)存储源视频、(转码服务)存储不同码率视频、(抽帧服务)存储抽帧后的图片

  • 易用、海量、便宜

为什么需要对象存储

  • 存储系统分类:单机存储、单机数据库、分布式数据库、分布式存储
  • 分布式存储:分布式文件系统HDFS和对象存储TOS

易用性

  • 对象存储云端分为Bucket和Object:类型简单
  • 对象存储使用HTTP接口:具备任何时间、任何地点、任何互联网设备上传和下载数据的能力;支持HTTP协议的各种客户端都可访问

适用场景

  • 静态、Immutable
  • 结构化、Mutable

对象存储怎么用

  • 申请Bucket
  • 业务逻辑开发(CRUD--增删改查)
  • 上线测试

申请Bucket

对象存储很多云厂商都支持。可自行在官网申请。

Restful接口

对象存储对外提供的一般都是Restful风格的接口。

  • HTTP协议分为url、method、header、body
  • Restful的url:{Bucket}/{Object Key}
  • Restful的method:put、get、head、delete
  • Restful的header:Object metadata
  • Restful的body:Object data

MultiUpload接口

闪电三连鞭:InitUpload、UploadPart、CompleteUpload

Listprefix接口

分页列举接口:可以看清桶里面的对象

TOS字节内部实践

开发一个对象存储

  • 经典三层架构:
    • 接入层:接入解析并处理接口需求
    • 元信息层:存储对象元信息
    • 存储引擎层:存储对象内容
  • 梳理经典业务场景:
    • 容量型:片源业务、转码业务(容量大、吞吐大、高持久度)
    • QPS型:抽帧业务(QPS极高)

可扩展性解法之Partition

  • 分布式存储=分布式+单机存储
  • 分布式:存储均匀分布、计算均匀分布、压力均匀分布
  • Partition 分而治之:不同数据映射至不同Partition分区
    • 数据量增加:扩容机器新建Partition
    • Partition Logic:新增数据写入映射导向新Partition

持久度解法之Replication

  • 数据单节点存储,一定有较大概率丢失无法找回
  • Replication 复制:数据复制多份,即多个副本,放置在多个不同地方(多机架、多机房、多Region)
    • 高持久度:不丢数据
    • 强吞吐能力:多个副本可以提供服务

成本解法之EC

  • EC(Erasure Coding) 冗余编码:可达到和多副本一样的持久度
    • 低冗余度:成本较单纯多副本低
    • 额外计算:增加了额外的编码计算步骤

成本解法之温冷转换

  • 数据都是有温度的,将冷数据转移到性能更差但更廉价的存储介质

高可用解法

  • 拆分降低爆炸半径:一个集群拆分成多个集群,有效降低爆炸半径
  • 镜像灾备:完全镜像的主备Bucket,出现问题随时切换,保证100%的可用性

架构细化

  • 接入层API
  • RPC+RPC+HTTP
  • 对象存储池(Bucket Meta、Object Meta、Storage Engine)