是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记 之前课程介绍过如下存储体系分类:
- 单机存储
- 分布式存储
- 单机/分布式数据库
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
-
-
其他对比:
- 可扩展性:对象存储可扩展性更强,支持无限容量
- 成本:对象存储成本更低
解法
Partition 分治提升可扩展性
思路:
- 将数据通过一定的Partition方法,散步到分布式系统中的不同的机器节点来计算/存储
Partition一般做法:
- Hash Partition:通过hash函数来做Partition的选取
- Range Partition: 通过range方式切分逻辑地址空间
带来的好处:
- 可扩展性好
- 爆炸半径低
Replication 多副本提升持久度
思路:
- 将数据拷贝多份来存储
Replication一般做法:
- 多副本:将数据拷贝成多个镜像的副本存储
- EC:使用Erasure Coding方法来构建冗余副本
带来的好处:
- 持久度高
- 吞吐能力也有提升
单元化最小化爆炸半径
思路:
- 将系统切分成多个垂直独立的单元,单元之间互相无影响
单元化一般做法:
- 去除系统单点依赖:系统中没有强依赖的单点
- 构建流量调度能力:流量可在单元之间灵活调度
带来的好处:
- 可用性高
- 运维更友好
镜像灾备应对极端情况
思路:
- 构建镜像的主备集群应对极端情况
单元化一般做法:
- 同构灾备:使用同构系统来做数据的镜像备份
- 异构灾备:使用异构系统来做数据的镜像备份
带来的好处:
- 极高的可用性
- 极高的可靠性
开源节流提升性价比
思路:
-
开源:
- 冷热分离,使用更低成本存储介质
-
节流:
- 通过更高比例EC降低单位存储逻辑冗余
- 提升垃圾回收效率,提高磁盘空间利用率
带来的好处:
- 更高的性价比