一致性哈希和哈希槽是分布式缓存集群系统常用的两种算法,本文不会再介绍这两种算法,感兴趣的可以阅读参考博文。本文想在此基础上分析下两种算法使用场景的差异。
在参考博文4中给了一个示例:
上图为一致性hash算法中的四个节点A、B、C、D,现在假设B失效了:
文中提到:如果B失效了,那么如果有持久化存储的,需要做数据恢复,将B的数据迁移至C即可,对于原本散列在A和D的数据,不需要做任何改变。
这里,个人感觉单纯的一致性哈希算法不适合作为需要持久化存储的集群算法,原因有二:
第一,如果一台机器失效了,往往意味着无法与其建立通讯,又如何能做自动的数据迁移?
第二,数据迁移需要时间,如何保证迁移期间缓存集群的可用性?
因而个人认为,单纯的一致性哈希算法比较适合做内存存储的集群缓存算法。当机器失效后,机器上的缓存数据直接“丢失”,当该机器上原本缓存的数据被请求时,会从数据源重新获取数据&