假设有四台图片缓存服务器。
1、随机
所有图片随机存在四台机器上,则需访问某个图片时要遍历所有机器。
缺点:慢
2、Hash
利用Hash的方式对图片分库存储,
hash(a.png)%4
缺点:当机器数量变化时,所有缓存失效,需重新缓存。
3、一致性Hash
对2^32取模,将整个哈希空间组成一个虚拟的环。

将机器IP或主机名为关键字进行哈希,并映射到该环上某个位置,

与机器数量无关,但可能出现数据倾斜。

解决:引入虚拟节点。

当节点数发生变化时,


对于节点变化,引起访问数据不存在时,则直接访问数据库,然后再该节点上新增缓存。将所有节点失效的风险降到某几个节点上。