(一)关键问题
数据分布
对于存储系统,最重要的问题就是数据分布,即什么样的数据放置在什么样的节点上。数据分布时需要考虑数据是否均衡、以后是否容易扩容等一系列问题。不同的数据分布方式也存在不同的优缺点,需要根据自身数据特点进行选择。
1)哈希分布 => 随机读取
取模直接哈希:将不同哈希值的数据分布到不同的服务器上
关键:找出一个散列特性很好的哈希函数
问题:增加、减少服务器时的大量数据迁移
解决:1)将<哈希值,服务器>元数据存储在元数据服务器中;2)一致性哈希
一致性哈希: 给系统每个节点分配一个随机token,这些token构成一个hash环。执行数据存放操作时,先计算key的hash值,然后存放到顺时针方向第一个大于或者等于该hash值的token所在节点。