存储的分布式化
高效存储的一些考虑:
- 很长时间没有人访问的老数据,怎么办?
- 是不是减少副本的同时,还能还原出数据?(例如,RAID)
- 数据压缩,平成好压缩效果与压缩/解压速度
- 数据的分层存储:根据数据的冷热来选择不同的存储介质(局部性原理),内存、硬盘(SSD、SATA)
- 存储与计算分离(底层基础:网络IO不再是瓶颈,而CPU性能、磁盘IO性能跟不上)
分布式存储引擎
主要解决数据如何拆分、数据如何冗余、数据如何定位的问题。
(1)parititioning 方式,即数据在逻辑上怎么切分
(2)localization 方式,即数据在物理上怎么分布
一个系统要想拥有高可用性,有且只有一个办法 — 副本(replication),因为物理故障是无法避免的,只能花钱做备份。
主从和时效性是 replication 要考虑的两个重要问题。
主从主要有单主、多主和无主三种方式。
时效性主要有同步、异步、半同步三种方式。
(3)rebalance 方式,即在节点数变化后,数据在物理上怎么重新分布.
分布式文件系统
按照Block拆分文件,然后通过一个管理员来管理Block到对应及其的映射关系。
新的问题:
如果存储block的机器挂了怎么办? 如果管理员挂了怎么办?