专栏首页北漂的我使用 Guava 实现 Java 一致性哈希 (用于根据哈希Hash值平均分配的场景)

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

1. pom.xml 文件引入依赖

<dependency>
	<groupId>com.google.guava</groupId>
	<artifactId>guava</artifactId>
	<version>29.0-jre</version>
</dependency>

2. java 代码

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 条评论
登录 后参与评论

相关文章

  • 一致性哈希负载均衡算法的探讨

    一致性哈希算法在很多领域有应用,例如分布式缓存领域的 MemCache,Redis,负载均衡领域的 Nginx,各类 RPC 框架。不同领域场景不同,需要顾及的...

    kirito-moe
  • 分布式数据缓存中的一致性哈希算法

    一致性哈希算法在分布式缓存领域的 MemCached,负载均衡领域的 Nginx 以及各类 RPC 框架中都有广泛的应用,它主要是为了解决传统哈希函数添加哈希表...

    程序员历小冰
  • 一致性哈希的分析与实现

    哈希函数,想必大家都不陌生。通过哈希函数我们可以将数据映射成一个数字(哈希值),然后可用于将数据打乱。例如,在HashMap中则是通过哈希函数使得每个桶中的数据...

    Java技术江湖
  • 分布式数据缓存中的一致性哈希算法

    一致性哈希算法在分布式缓存领域的 MemCached,负载均衡领域的 Nginx 以及各类 RPC 框架中都有广泛的应用,它主要是为了解决传统哈希函数添加哈希表...

    程序员历小冰
  • 分布式数据缓存中的一致性哈希算法

    一致性哈希算法在分布式缓存领域的 MemCached,负载均衡领域的 Nginx 以及各类 RPC 框架中都有广泛的应用,它主要是为了解决传统哈希函数添加哈希表...

    Bug开发工程师
  • 不了解布隆过滤器?一文给你整的明明白白!

    海量数据处理以及缓存穿透这两个场景让我认识了布隆过滤器 ,我查阅了一些资料来了解它,但是很多现成资料并不满足我的需求,所以就决定自己总结一篇关于布隆过滤器的文章...

    乔戈里
  • 如何用好缓存?全面梳理(第二篇)

    既然本地缓存有这么多的不足,那能不能把缓存独立出来呢?统一化管理。分布式缓存借助分布式的理念,采用集群化部署,突破单机的容量限制,理论上支持无限扩容。如果数据更...

    用户7676729
  • Guava的布隆过滤器

     程序世界的算法都要在时间,资源占用甚至正确率等多种因素间进行平衡。同样的问题,所属的量级或场景不同,所用算法也会不同,其中也会涉及很多的trade-off。

    程序员历小冰
  • Guava的布隆过滤器原来是这么回事儿

    程序世界的算法都要在时间,资源占用甚至正确率等多种因素间进行平衡。同样的问题,所属的量级或场景不同,所用算法也会不同,其中也会涉及很多的trade-of...

    Bug开发工程师

扫码关注云+社区

领取腾讯云代金券