一致性 hash 算法 java 代码实现
现在一致性 hash 算法在分布式系统中也得到了广泛应用,研究过 memcached 缓存数据库的人都知道,memcached 服务器端本身不提供分布式 cache 的一致性,而是由客户端来提供,具体在计算一致性 hash 时采用如下步骤:
首先求出 memcached 服务器(节点)的哈希值,并将其配置到 0~232 的圆(continuum)上。
然后采用同样的方法求出存储数据的键的哈希值,并映射到相同的圆上。
然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过 232 仍然找不到服务器,就会保存到第一台 memcached 服务器上。
服务器类,代码如下:
分片类:
获取 hashcode 算法:
根据 key 获取服务器方法:
求标准差方法:
调用 main 方法:
评论