需要使用一致性哈希吗?

在普通的哈希中,如果节点个数(分母)发生变化,原先的次序会被完全打乱重来,一致性哈希解决了这个问题。实际可看成普通的哈希对着的是物理节点,而一致性哈希对着的是虚拟节点,这里可以拿物理内存和虚拟内存来对比,虚拟节点是可认为是使用不完的,挂了一个节点,还可以认为节点数不变,因此哈希的对应关系仍保持不变,也就不存在普通哈希的问题了。

没有深入的了解一致性哈希,但我认为一般的集群系统使用一致性哈希并非最优的选择。在一些系统中,我采取了另一种更傻瓜式的办法,基本不涉及到算法二字。仍然将物理节点看成取之不尽的虚拟节点,仍哈希成若干份(比物理节点数大百倍,甚至万倍,每一份可以看成原子不可再分隔的),可以将每一份看成为一个麻将子,最复杂的算法就是已知节点数的情况下,如何去均衡的分配这些麻将子,而同时又尽可能的减少数据映射关系的变化,要做到这一点非常容易,只需要维护一个分配表即可,这里有一个前提:需要一个集中的改变分配关系的节点。

实际即使使用一致性哈希,也需要一个集中的改变分配关系的节点,因为某个节点自作主张选择的下一节点,也许并非可靠的,因为也许刚好它们之间的网络是通的,但和其它一些可能并不通,因此仍需要一个仲裁节点来发布指令。

从上面的理解来看,使用一致性哈希并不是最简单的均衡和容灾策略。什么情况下必须一致性哈希了?

讨论:http://bbs.hadoopor.com/thread-1841-1-1.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏抠抠空间

IO(文件)处理

一、文件处理简介 计算机系统分为:计算机硬件,操作系统,应用程序三部分。 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中...

356100
来自专栏Java帮帮-微信公众号-技术文章全总结

【大牛经验】Java9的新特性

Java 9 包含了丰富的特性集。虽然Java 9没有新的语言概念,但是有开发者感兴趣的新的API和诊断命令。 我们将快速的,着重的浏览其中的几个新特性: ? ...

37580
来自专栏FreeBuf

Phpcms v9漏洞分析

最近研究源码审计相关知识,会抓起以前开源的CMS漏洞进行研究,昨天偶然看见了这个PHPCMS的漏洞,就准备分析研究一番,最开始本来想直接从源头对代码进行静态分析...

36070
来自专栏Java帮帮-微信公众号-技术文章全总结

【大牛经验】Java9的新特性

Java 9 包含了丰富的特性集。虽然Java 9没有新的语言概念,但是有开发者感兴趣的新的API和诊断命令。

10730
来自专栏流柯技术学院

jstack+top定位性能问题

定位性能问题,尤其是cpu使用率过高时,经常需要查找cpu消耗较高的线程,然后查看其堆栈,从而进入代码定位问题。    

36420
来自专栏岑玉海

hbase 学习(十五)缓存机制以及可以利用SSD作为存储的BucketCache

  下面介绍Hbase的缓存机制:   a.HBase在读取时,会以Block为单位进行cache,用来提升读的性能   b.Block可以分类为DataBl...

52550
来自专栏企鹅号快讯

React中state render到html dom 的流程分析

作者:xieyu React 中 state render 到 html dom 的流程分析Questions React 的 component的 lifec...

23170
来自专栏AI2ML人工智能to机器学习

TF Boy 之初筵 - 会话封装

在“TF Boy 之初筵 - 分布十三式”里面我们给了一个分布式MNIST训练的例子, 然后在“TF Boy 之初筵 - 机器簇” 我们对第四式: Cluste...

11930
来自专栏IT派

Python链式操作:PyFunctional

PyFunctional通过使用链式功能操作符使得创建数据管道变得简单。以下是pyfunctional及其内置工具可以做什么的几个例子:

19740
来自专栏用户2442861的专栏

百度2014软件开发工程师笔试题详解

1.有一个数据A = [a_1,a_2,a_3.....a_n],n的大小不定,请设计算法将A中的所有数据组合进行输出

34020

扫码关注云+社区

领取腾讯云代金券