我尝试使用下面的参考实现一致的基于哈希算法Java进行分片键的Redis -实现一致性哈希算法在Java中
我想了解的最佳方式产生节点和密钥的hascode。目前我使用的DigestUtils生成散列如下& 将返回值到环/圈 -
private BigInteger hash(String key) {
return new BigInteger(DigestUtils.md5Hex(key.getBytes()), 16);
}
我想知道如果这个做法听起来是正确的。
我尝试使用下面的参考实现一致的基于哈希算法Java进行分片键的Redis -实现一致性哈希算法在Java中
我想了解的最佳方式产生节点和密钥的hascode。目前我使用的DigestUtils生成散列如下& 将返回值到环/圈 -
private BigInteger hash(String key) {
return new BigInteger(DigestUtils.md5Hex(key.getBytes()), 16);
}
我想知道如果这个做法听起来是正确的。
如果您查看Memcache的源代码spymemcached client,您可以看到该客户端如何实现Ketama一致性散列算法。重点抓好以下文件:
虽然不是Redis的具体的原理是相同的。
在Redisson我们使用xxHash
算法对sharded Map和Set对象进行分片。该算法具有较好的分布特性。
下面是实施使用例如通过zero-allocation-hashing LIB提供:
long hash = LongHashFunction.xx().hashBytes(objectState);