使用 Guava 实现 Java 一致性哈希 (用于根据哈希Hash值平均分配的场景)

2020-07-16 15:39:51 浏览数 (2)

1. pom.xml 文件引入依赖

代码语言:txt复制
<dependency>
	<groupId>com.google.guava</groupId>
	<artifactId>guava</artifactId>
	<version>29.0-jre</version>
</dependency>

2. java 代码

代码语言:txt复制
HashFunction hashFunction = Hashing.sha512();
int buckets = 2;   // 要平均分为几份
int hashCode = Hashing.consistentHash(hashFunction.hashString("XXXXXXXXXXXXXX", Charsets.UTF_8), buckets);
// 然后就可以对 buckets 取余, 平均分配
if (hashCode % buckets == 0) {
	// XXXXXXX
} else {
	// XXXXXXX
}

Guava 的一致性 Hash 算法, 只能保证大概的平均, 不能保证绝对的平均.

0 人点赞