记得我人生第一次参加面试的时候,面试官问我的就是这样一个问题: 你有很多台服务器,每台服务器上都存放着很多数据,现在要加一台服务器,如何才能让数据搬迁尽可能的少,同时能让每台服务器经可能的负载均衡。现在才发现,这就是可一致性hash 问题,当时我答了个hashMap中的rehash操作,给糊弄过去了…
具体的内容可见 reference,这里大致记录一下
问题定义
简化问题如下:
有 m m m 个item,有 n n n 台机器,将 m m m 个item 尽量均匀的hash到每一台服务器,同时,当机器出现删减的时候应该能够保证数据移动足够小。
简单实现
用两个hash函数,
h a s h i ( x ) hash_i(x) ha