简单的一致性哈希算法实现

原创
2015/11/09 20:53
阅读数 523

抽空写了一个简单的一致性哈希算法的实现,放在了 GitHub 上(实现单元测试)。

目前实现比较原始,只实现了添加服务器节点和根据对象的 hashcode 查找服务器节点的功能。虚拟节点功能尚未实现,测试用例也少的可怜。

闲言碎语

服务器节点使用 JDK ConcurrentSkipListMap 实现,节省了不少工作。并发操作的线程安全并未实现,使用 ConcurrentSkipListMap 只是为了提供线程安全的基础。当然,在真实的系统中,数据是需要持久化的。服务器节点的信息往往会存放在 Zookeeper 或 Redis 这样的服务中。一致性哈希服务对写操作的性能相对远低于读操作,因为查找相应的服务器节点的频率远高于添加删除服务器节点。目前 ConcurrentSkipListMap 可提供100万每秒级的读操作,所以可将数据缓存在内存中以提供高性能。而服务器节点数据持久化在 Zookeeper 中。需要注意的是 hashcode 要保持相同。

真正产品级的一致性哈希算法没做过,所以哪位做过的可以说说其中的难点。

展开阅读全文
打赏
0
2 收藏
分享
加载中
更多评论
打赏
0 评论
2 收藏
0
分享
返回顶部
顶部