- 介绍一款短视频应用的整体架构
发现短视频应用背后的视频/图片等静态内容的海量存储需求
分布式存储选型对比: 对象存储的优势
HDFS vs 对象存储
-
是否Cloud Native Storage:
- 云原生存储开箱即用,极大解除了运维运营负担,生态体系依托云构建,丰富健全
- 对象存储是当前各大云厂商王牌存储产品
-
接入难易程度对比:
-
Data Model差异:
- HDFS:伪Posix File System Interface, Directory/File的数据组织形式
- 对象存储:扁平的逻辑命名空间, Bucket/Key的数据组织形式
- Bucket/Key数据组织形式优势:容易理解,使用心智负担小,贴合业务需求
-
使用接口差异:
- HDFS:Mkdirs/Create/Append/Delete/Get等文件接口
- 对象存储: GET/PUT/HEAD/DELETE等Restful HTTP接口
- HTTP接口的优势:开发简单,分享方便,可无缝接入CDN
-
对象存储的用法
基本接口
- Restful风格简介:简单介绍Restful风格的形式和优点
- GET:获取对象内容
- PUT:下载对象内容
- DELETE:删除对象内容
- HEAD:获取对象元信息
- MultiPartUpload接口:针对大对象弱网环境上传的优化
工程挑战
首先会梳理经典的一些业务场景:
- 海量容量场景: 业务持续产生大量数据,数据规模>>PB级别,存储容量和成本压力极大
- 海量QPS场景: 业务场景有高QPS读写请求,量级>>100K/s,并且时延要求极高,对底层存储IOPS压力极大
- 高可用性场景:业务对于SLA要求非常高,要求避免全局性不可用事件发生,但对于一致性要求比较低
其中带来的工程挑战有:
- 可扩展性:架构在存储容量/带宽吞吐/QPS等关键指标上,线性可扩展,能够承担业务在这些指标上的持续增长需求
- 持久度:数据存储成功后,需要能够抵抗单机/单机架/单机房等各种类型的故障而不丢失
- 可用性:系统不可用的时间在整体运行时间的占比需要尽可能小,系统不可用后需要具备快速恢复能力
- 性价比:在海量存储容量的情况下,需要尽力降低单位存储成本,以降低业务的成本支出