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

177 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第20篇笔记

  • 为什么对象存储
    • 存储系统分类
      • 单机存储
      • 单机数据库
      • 分布式数据库
      • 分布式存储
        • 分布式文件系统
        • 对象存储
        • 适合存储大数据计算中间结果/视频/图片等
    • 易用性
      • Bucket/Object
        • Bucket
          • 存储对象的桶,可类比为云上的map
        • Object
          • 对象,包含如下三部分
            • Key
              • 对象的名字
            • Data
              • 对象内容
            • MetaData
              • 对象的一些元信息,如对象大小,对象Content-Type,也可以存储自定义元信息
      • HTTP接口
        • 任何时间、任何地点、任何互联网设备上传和下载数据
        • 支持HTTP协议的各种客户端访问
      • 接口速览
        • GET
          • 下载对象
        • HEAD
          • 查看对象元信息
        • PUT
          • 上传对象
        • DELETE
          • 删除对象
      • 适用场景
        • 静态
        • Immutable
      • 不适用场景
        • 结构化
        • Mutable
  • 对象存储怎么用
    • 申请Bucket
    • 业务逻辑开发
      • RESTful接口
        • URL
          • {Bucket}/{Object Key}
        • Method
          • PUT
            • 参数
              • Bucket
              • Key
              • 对象内容
            • 返回
              • 成功/失败
          • GET
            • 参数
              • Bucket
              • Key
            • 返回
              • 对象内容
          • HEAD
            • 参数
              • Bucket
              • Key
            • 返回
              • 对象元信息
          • DELETE
            • 参数
              • Bucket
              • Key
            • 返回
              • 成功/失败
        • Header
        • Body
      • MultiUpload接口
        • 大对象上传,分割上传串联
        • InitUpload
          • 参数
            • Bucket
            • Key
          • 返回
            • UploadID
        • UploadPart
          • 参数
            • UploadID
            • PartID
            • Part内容
          • 返回
            • 成功/失败
        • CompleteUpload
          • 参数
            • UploadID
            • PartID Array
          • 返回
            • 成功/失败
      • Listprefix接口
        • 分页列举,查看桶中对象
        • 参数
          • prefix
            • key前缀
          • delimiter
            • 分隔符,默认为/
          • max-keys
            • 本次分页数量
          • start-after
            • 分页起始对象key
        • 返回
          • common-prefix
            • 共同前缀
          • objects
            • 对象key列表
          • isTruncated
            • 是否已经列举完
    • 上线测试
  • TOS字节内部实践
    • 架构
      • 接入层
        • 接入解析并处理接口请求
      • 元信息层
        • 存储对象元信息
      • 存储引擎层
        • 存储对象内容
    • 可扩展性解法
      • Partition
        • 不同数据根据Hash/Range方法映射至不同的Partition分区
        • 可扩展性
          • 数据量增加
            • 扩容机器新建Partition
          • Partition Logic
            • 新增数据写入映射导向新Partition
    • 持久度解法
      • Replication
        • 数据复制多份,即多个副本
        • 副本放置策略
          • 多机架
          • 多机房
          • 多Region
        • 结果
          • 高持久度
          • 强吞吐能力
    • 成本解法
      • EC(Erasure Coding)
        • 冗余编码
          • 可达到和多副本一样的持久度
        • 特点
          • 低冗余度
          • 额外计算
      • 温冷转换
        • 将冷数据转移到性能更差更廉价的磁盘
    • 高可用
      • 集群拆分
        • 一个集群拆分成多个集群,有效降低爆炸半径
      • 镜像灾备
        • 完全镜像的主备Bucket,出现问题随时切换