[缓存中间件] 缓存分片策略
在使用分布式缓存的时候,可以将数据分区保存在不同节点上,以扩大存储能力。
另外一种思想是不同节点备份相同数据,以提高读响应速度(如redis主从模型)。
以下是集中分片策略(算法)
1.range Based算法
按照关键值将数据划分到不同区间,每个缓存节点保存一个区间内的数据,需要保证关键值的连续性和分布均匀。
2.哈希算法
range based算法的改进,将数据的key或其他关键值进行哈希计算之后取模,每个节点分别保存一个区间内的数据。
其优势在于简单,劣势在于难以增加新的节点(意味者需要对旧节点进行变动)。
3.一致性哈希算法
将数据映射到首位相接的哈希环上(依然采取取模的办法)。
将服务其计算哈希值映射到哈希环上。
将数据按照key或其他关键值哈希计算取模,保存到顺时针方向最接近的服务器上。
若有新的服务器节点加入,只会影响新节点顺时针方向第一个节点,需要进行数据的迁移。
其优点在于:
平衡性,即结果会被尽可能分布地存放到所有缓冲当中(这取决于哈希算法的性质)。
单调性,有新的缓冲区(节点)加入时,尽量保证原有数据的位置不改变(不会被映射到其他缓冲区)。
其缺点在于:
分散性,当终端希望控制哈希过程将不同内容映射到相同缓冲上时,往往难以达到目的(因为哈希算法的随机性)。
负载,即不同终端可能将相同内容映射到不同的缓冲区,导致浪费缓存空间。