学习笔记:TOS对象存储(下)|青训营;

56 阅读2分钟

在上次的笔记当中,我们明白了对象存储是什么,以及它和关系存储的对比,还有使用它的必要性以及存储方式。现在我们来谈谈它的使用方式。

对象存储怎么用?

使用流程

graph TD
申请Bucket --> 业务逻辑开发 --> 上线测试

增删改查

在其中的操作(提供的对外接口Restful)和操作数据库很像,都是增删改查:

  • PUT(上传视频): 参数: Bucket,Key,对象内容 返回: 成功/失败
  • GET(下载视频): 参数: Bucket,Key 返回: 对象内容
  • HEAD(查看视频元信息)Lite版GET: 参数: Bucket,Key 返回:对象元信息,如大小/Content-Type等
  • DELETE(删除视频): 参数: Bucket,Key 返回:成功/失败

最后一公里问题(99%时走不动了)

使用MultiUpload接口

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

一口气下载全部太慢了

ListPrefix参数:

  1. prefix: key前级
  2. delimiter: 分隔符,默认为/
  3. max-keys: 本次分页数量
  4. start-after:分页起始对象Key

ListPrefix返回:

  1. common-prefix: 共同前级
  2. objects: 对象key列表
  3. isTruncated: 是否已经列举完

内部实践

  1. 梳理当前业务场景,再总结挑战对症下药。
  2. 是否需要使用partition分布式存储,用算法来保证每一台服务器运算量差不多,且每一个访问者都能在差不多的时间得到返回
  3. 考虑持久度:做好容灾备份。
  4. 考虑冗余度:代码一定要简洁
  5. 对数据进行温冷转换:数据变凉之后要放得远一点
  6. 架构细化
  7. 存储需求量细化
  8. 通过拆分降低爆炸半径

未来,我们要可以展望容量、成本、大数据和稳定性的发展,提升项目的性能,包括但不限于安全性和稳定性以及反问速度和广度。