对象存储学习笔记 | 青训营

84 阅读3分钟

TOC对象存储

对象存储优势

支持>EB海量存储,对象数量无限制
Restful HTTP接口,开发简单,云原生,按需申请使用,视频/图片相关生态丰富
使用普通X86服务器,具备冷热数据分级存储能力,成本更低\

接口

Bucket/Object语义

Bucket: 存储对象的通,可类比为一个map

Object: 对象,包含Key对象名字,Data对象内容,MetaData对象元信息如大小、Content-Type等

HTTP接口 任何时间、任何地点、任何互联网设备上传和下载数据

Get 下载对象 HEAD 查看对象元信息 PUT 上传对象 DELETE 删除对象

适用场景

对象存储适用于视频,图片,文本,安装包,备份,前端js文件等静态Immutable数据。 但是不适用于关系型数据,KV,随机写,Append写,更新频繁的数据

对象存储使用

申请Bucket -> 业务逻辑开发(上传,下载,删除,测试) -> 上线测试

上传大对象MultiUpload接口

InitUpload 参数 Bucket,Key,返回UploadId

UploadPart 参数 UploadId,PartId,Part内容

CompleteUpload 参数UploadId,PartId Array,返回成功/失败

查看桶里有哪些对象ListPrefix接口

ListPrefix 参数 prefix key前缀,delimiter分隔符,默认为'/' ,max-keys 本次分页数量,start-after分页起始对象key

ListPrefix 参数common-prefix共同前缀 ,objects对象key列表,isTruncated是否已经列举完

字节内部实践

三层架构

接入层: 接入解析并处理接口请求 |--> 元信息层: 存储对象元信息 |--> 存储引擎层: 存储对象内容

挑战

容量型:

代表业务:用户上传源视频,原视频转码后的视频

特点:海量 > EB
吞吐:海量 >> 100GB
高持久度:用户视频不能丢

挑战:

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

QPS

代表业务:抽帧用于审核

特点:

QPS:极高, >> 100 kb

挑战:

可扩展性,QPS需可线性扩展

可扩展性解法

Partition

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

分布式:存储均匀分布,计算均匀分布,压力均匀分布

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

Replication

数据复制多份,即多个副本

副本放置策略
多机架:可抵抗机架级别故障
多机房:可抵抗机房级别故障
多Region:可抵抗Region级别故障\

带来:高持久度(不丢数据),强吞吐能力(多个副本提供服务)

EC

通过冗余编码,可以达到和多副本一样的持久度

特点:低冗余度,成本较单纯多副本低;额外计算,增加了额外的编码计算步骤

温冷转换

将冷数据转移到性能更差但更廉价的存储介质

存储需求量细化

SLA 服务一年只能5分钟不可用,数据 RPO 数据不可用事件不用太关心 RTO 数据出错五分钟恢复

高可用性:拆分降低爆炸半径

将一个集群拆分成多个集群

高可用性,镜像灾备

完全镜像的主备Bucket,双向同步,在故障期间读写流量转移到备Bucket