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

108 阅读2分钟

这是我参与「第三届青训营-后端场」笔记创作活动的第5篇笔记。内容主要是关于对象存储的介绍和字节内部TOS的问题处理策略。

对象存储

  • 简介

    •   对象存储将数据作为对象进行管理,每个对象通常包括数据本身、数量不等的元数据和一个全局唯一的标识符。对象存储系统中可以保存大量的非结构化数据(文本、图片、音视频等)。属于分布式存储之一(还有分布式文件系统)。
  • 为什么需要对象存储

    •   海量数据、易用性要强高、价格成本低

    • 适用场景

      • 视频
      • 图片
      • 文件
      • 安装包
      • 备份
      • 前端js文件     静态的、不变的数据
    • 不适用场景

      • 关系型数据,如商品订单
      • KV缓存记录
      • 随机写,如在线编辑文件更新频繁     结构化、易变的数据
  • 对象存储怎么用

    • 流程:申请Bucket、业务逻辑开发(视频上传、下载、删除、查看)、上线测试

    • Restful接口

      • PUT(Bucket, Key, 对象内容) -- 上传视频
      • GET(Bucket, Key) -- 下载视频
      • HEAD(Bucket, Key) -- 查看视频元信息
      • DELETE(Bucket, Key) -- 删除视频
    • 大数据量文件上传

      • InitUpload
      • UploadPart
      • CompleteUpload
    • 分页列举

      • ListPrefix

TOS 字节内部实践

  • 面临的挑战

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

    • 采用分而治之的思想,将不同的数据映射至不同的Partition分区,当数据量增加时,扩容机器新建Partition即可
  • 持久度解法 -- Replication

    • 避免数据的单节点存储,防范持久度的敌人,即不可靠的软硬件、自然灾害。。。将数据复制多份,同时维护多个副本。其中,副本的放置策略有多机架、多机房、多Region。这样,不仅可以带来高持久性,还可以带来强吞吐能力。
  • 成本解法 -- EC

    • Replication虽然可以解决持久性问题,但单纯拷贝多副本的成本也非常高,所以采用冗余编码(Erasure Coding)的方式,降低单纯多副本的成本
  • 成本解法 -- 温冷转换

    • 一句话说明,将冷数据迁移到性能更差但成本更低的存储介质,由此降低成本
  • 高可用解法 -- 拆分降低爆炸半径

    • 即将一个集群拆分成多个集群,降低故障发生时的爆炸半径
  • 高可用解法 -- 粤核酸的启发

    • 多个集群间双向同步
  • 高可用解法 -- 镜像灾备

    • 完全镜像的主备Bucket,出现问题时随时切换