五分钟理解一致性哈希算法(consistent hashing)
来源:互联网 发布:关于单片机的外文文献 编辑:程序博客网 时间:2024/04/28 10:01
Cynric 的博客
修身齐家治国平天下 格物致知诚意正己心
[置顶] 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。
2、单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到原有的或者新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。
3、分散性(Spread):在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓冲中去,降低了系统存储的效率。分散性的定义就是上述情况发生的严重程度。好的哈希算法应能够尽量避免不一致的情况发生,也就是尽量降低分散性。
4、负载(Load):负载问题实际上是从另一个角度看待分散性问题。既然不同的终端可能将相同的内容映射到不同的缓冲区中,那么对于一个特定的缓冲区而言,也可能被不同的用户映射为不同 的内容。与分散性一样,这种情况也是应当避免的,因此好的哈希算法应能够尽量降低缓冲的负荷。
- 顶
- 32
- 踩
- 2
- 猜你在找
核心技术类目
- 个人资料
- 访问:431166次
- 积分:5925
- 等级:
- 排名:第1737名
- 原创:128篇
- 转载:134篇
- 译文:2篇
- 评论:210条
cywosp
- 投石问路
- https://github.com/ApusApp
- 文章搜索
- 文章分类
- ARM(3)
- C/C++(100)
- Java(3)
- Linux(107)
- Mac 系统(1)
- Windows System(2)
- 随笔(4)
- algorithm(27)
- Linux 内存管理(15)
- Nginx(15)
- OpenStack(22)
- Thrift(1)
- memcached(6)
- c++ 11(6)
- 系统架构(9)
- 读书(10)
- leveldb(4)
- SublimeText(3)
- 文章存档
- 2014年12月(3)
- 2014年11月(4)
- 2014年09月(4)
- 2014年08月(4)
- 2014年07月(6)
- 阅读排行
- 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)(39783)
- 点滴记录——Ubuntu 14.04中安装Sublime Text 3并使用SublimeClang插件(15833)
- Linux 快速删除大量小文件方法(13220)
- C++ string类中的字符串查找(12163)
- Sublime Text 3 快捷键汇总(11483)
- 使用Keystone认证多节点安装Swift(11453)
- 每天进步一点点——分布式文件系统下的本地缓存(10548)
- 点滴记录——在Ubuntu 14.04中使SublimeText 3支持中文输入法(9618)
- 每天进步一点点——Swift项目实践(9536)
- 即使没人看我们也要坚持写Blog(9381)
- 评论排行
- 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)(30)
- 即使没人看我们也要坚持写Blog(25)
- 在一台机器上部署swift存储和swauth认证(15)
- 点滴记录——在Ubuntu 14.04中使SublimeText 3支持中文输入法(15)
- 每天进步一点点——swift对象副本修复之简单理解(10)
- 每天进步一点点——分布式文件系统下的本地缓存(10)
- 点滴记录——Ubuntu 14.04中Solr与Tomcat整合安装(8)
- 使用Keystone认证多节点安装Swift(7)
- 每天进步一点点——负载均衡之DNS域名解析(6)
- ubuntu 14.10 64bit系统安装mac主题(6)
- 推荐文章
- 最新评论
- 点滴记录——Ubuntu 14.04中安装Sublime Text 3并使用SublimeClang插件
bljswpu: 楼主 没有这个SublimeClang/internals文件夹啊 这个是手动生成的吗
- 每天进步一点点——分布式集群管理
刘正权: 我很喜欢这篇文章。
- 点滴记录——Centos 6.5 yum安装Ganglia
李世钰: 我按照您的方法做了,但是我的进入到http://192.168.8.94/ganglia/后发现之后...
- 每天进步一点点——Linux中的线程局部存储(一)
f45760: 比POSIX多线程程序设计讲得还要容易理解
- 点滴记录——Ubuntu 14.04中安装Sublime Text 3并使用SublimeClang插件
dc_726: 非常感谢!网上其他资料写的都不详细,SublimeClang官网下载的包里只有libclang.dl...
- 使用Keystone认证多节点安装Swift
cywosp: @fl_csdn:keystone提供了更强的、更灵活的功能,且与swift的耦合性更低,至于具体的...
- 使用Keystone认证多节点安装Swift
fl_csdn: 楼主,我想问一下,keystone认证和swauth认证有什么区别啊?
- 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
吃素了: 5分钟没看完,被打脸了
- ubuntu 14.10 64bit系统安装mac主题
tanshuai1001: @TonyLee1314:我也是,怎么解决啊!急死了,还有东西要做!
- 点滴记录——Windows 7中安装Sublime Text 3、cynwin、SublimeClang
cfzjxz: 很不错的文章
Cynric 的博客
修身齐家治国平天下 格物致知诚意正己心
[置顶] 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
1、平衡性(Balance):平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。
2、单调性(Monotonicity):单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到原有的或者新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。
3、分散性(Spread):在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓冲中去,降低了系统存储的效率。分散性的定义就是上述情况发生的严重程度。好的哈希算法应能够尽量避免不一致的情况发生,也就是尽量降低分散性。
4、负载(Load):负载问题实际上是从另一个角度看待分散性问题。既然不同的终端可能将相同的内容映射到不同的缓冲区中,那么对于一个特定的缓冲区而言,也可能被不同的用户映射为不同 的内容。与分散性一样,这种情况也是应当避免的,因此好的哈希算法应能够尽量降低缓冲的负荷。
- 顶
- 32
- 踩
- 2
- 猜你在找
- 20楼 吃素了 2015-05-15 01:17发表 [回复]
- 5分钟没看完,被打脸了
- 19楼 51412 2015-04-26 11:28发表 [回复]
- 博客中的图是用visio画的吗?
- Re: cywosp 2015-04-27 14:46发表 [回复]
- 回复51412:不是,用office 2007 ppt
- Re: 51412 2015-04-27 23:06发表 [回复]
- 回复cywosp:使用ppt画的?
- Re: cywosp 2015-04-28 09:41发表 [回复]
- 回复51412:是的
- Re: 51412 2015-04-28 15:41发表 [回复]
- 回复cywosp: 使用ppt里的哪个功能画出来的?
- 18楼 在读中大 2015-04-11 22:44发表 [回复]
- 楼主的牛逼
- 17楼 he037 2015-04-11 15:46发表 [回复]
- 假如新增节点,它的虚拟节点是怎么分布的啊,重新分布吗?重新分布那数据迁移也很大,不重新分布,那怎么保证平衡性的啊
- Re: cywosp 2015-04-14 11:01发表 [回复]
- 回复he037:加入新节点时,会将该节点虚拟成多个虚节点,然后散列在环的不同位置中,最后将该环附近的数据迁移至该节点,已达到新的平衡。(一致性hash算法的主要目的是为了尽量减少数据迁移)
- 16楼 he037 2015-04-11 15:35发表 [回复]
- 假如新增节点,虚拟节点会不会重新分布?如果重新分布那数据迁移量不是很大?
- 15楼 wellse 2015-03-30 19:24发表 [回复]
- 图文结合很生动,理解了呵呵!
- 14楼 itfanr 2015-03-17 16:17发表 [回复]
真心漂亮啊!
- 13楼 y0908105023 2015-03-16 11:05发表 [回复]
- 单调性写错了
- 12楼 crystal_dan7 2015-03-11 16:08发表 [回复]
- 想请教楼主,在引入虚节点后,也是会出现不平衡的情况吧?
- 11楼 雨天要吃饭 2015-01-30 11:52发表 [回复]
- 博主的图是用什么工具画的 很漂亮
- Re: cywosp 2015-01-30 16:09发表 [回复]
- 回复雨天要吃饭:office 2010
- 10楼 jzhx107 2015-01-29 11:26发表 [回复]
- 不错,谢谢楼主讲解!
- 9楼 展翅飞翔XD 2014-11-30 00:53发表 [回复]
- 还是不知道怎么去实现,一般的hash算法都是32位(md5)甚至更多位,这样就不是2^32-1了啊,我想用php实现,博主能不能能个提示??如果有例子就更好了,先谢谢了!
- Re: ohmygirl 2014-12-03 17:23发表 [回复]
- 回复展翅飞翔XD:计算的hash值(整数值)与 0x7FFFFFFF做 &运算不就完了。或者%
- 8楼 展翅飞翔XD 2014-11-30 00:51发表 [回复]
- 我想用php去实现,但是想不出来要怎么做,2^32-1就是8个f的16进制数,但是用hash函数,一般都是32位(md5)甚至更多位,这样就不行了啊,难道要自己去写这个hash算法??博主能不能提示一下??如果有相关例子就更好了,先谢谢了!
- 7楼 华为cloudos 2014-04-15 08:57发表 [回复]
- 5分钟看不完:)但是楼主讲的很好,赞
- Re: cywosp 2014-04-15 12:26发表 [回复]
- 回复华为cloudos:熟悉相关概念之后 5分钟就能看完了
- 6楼 夏影2014 2014-04-14 10:56发表 [回复]
- 感谢分享,现在正在学习中
- 5楼 守枫竹清 2014-04-12 13:19发表 [回复]
- 谢谢了
- 4楼 博客管理员 2014-04-11 12:17发表 [回复]
- 您的文章已被推荐到CSDN首页,感谢您的分享。
- Re: cywosp 2014-04-15 12:25发表 [回复]
- 回复博客管理员:谢谢
- 3楼 一只蚂农 2014-04-11 10:21发表 [回复]
- 很不错
- 2楼 5iasp 2014-04-11 09:10发表 [回复]
- 非常好,有java的例子吗? 学习了。
- Re: cywosp 2014-04-15 12:26发表 [回复]
- 回复5iasp:很抱歉,这个没有
- 1楼 SpeedMe 2014-04-11 06:41发表 [回复]
- 先讲理论,后结合例子讲。总结的非常不错!很容易看懂。
核心技术类目
- 个人资料
- 访问:431166次
- 积分:5925
- 等级:
- 排名:第1737名
- 原创:128篇
- 转载:134篇
- 译文:2篇
- 评论:210条
cywosp
- 投石问路
- https://github.com/ApusApp
- 文章搜索
- 文章分类
- ARM(3)
- C/C++(100)
- Java(3)
- Linux(107)
- Mac 系统(1)
- Windows System(2)
- 随笔(4)
- algorithm(27)
- Linux 内存管理(15)
- Nginx(15)
- OpenStack(22)
- Thrift(1)
- memcached(6)
- c++ 11(6)
- 系统架构(9)
- 读书(10)
- leveldb(4)
- SublimeText(3)
- 文章存档
- 2014年12月(3)
- 2014年11月(4)
- 2014年09月(4)
- 2014年08月(4)
- 2014年07月(6)
- 阅读排行
- 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)(39783)
- 点滴记录——Ubuntu 14.04中安装Sublime Text 3并使用SublimeClang插件(15833)
- Linux 快速删除大量小文件方法(13220)
- C++ string类中的字符串查找(12163)
- Sublime Text 3 快捷键汇总(11483)
- 使用Keystone认证多节点安装Swift(11453)
- 每天进步一点点——分布式文件系统下的本地缓存(10548)
- 点滴记录——在Ubuntu 14.04中使SublimeText 3支持中文输入法(9618)
- 每天进步一点点——Swift项目实践(9536)
- 即使没人看我们也要坚持写Blog(9381)
- 评论排行
- 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)(30)
- 即使没人看我们也要坚持写Blog(25)
- 在一台机器上部署swift存储和swauth认证(15)
- 点滴记录——在Ubuntu 14.04中使SublimeText 3支持中文输入法(15)
- 每天进步一点点——swift对象副本修复之简单理解(10)
- 每天进步一点点——分布式文件系统下的本地缓存(10)
- 点滴记录——Ubuntu 14.04中Solr与Tomcat整合安装(8)
- 使用Keystone认证多节点安装Swift(7)
- 每天进步一点点——负载均衡之DNS域名解析(6)
- ubuntu 14.10 64bit系统安装mac主题(6)
- 推荐文章
- 最新评论
- 点滴记录——Ubuntu 14.04中安装Sublime Text 3并使用SublimeClang插件
bljswpu: 楼主 没有这个SublimeClang/internals文件夹啊 这个是手动生成的吗
- 每天进步一点点——分布式集群管理
刘正权: 我很喜欢这篇文章。
- 点滴记录——Centos 6.5 yum安装Ganglia
李世钰: 我按照您的方法做了,但是我的进入到http://192.168.8.94/ganglia/后发现之后...
- 每天进步一点点——Linux中的线程局部存储(一)
f45760: 比POSIX多线程程序设计讲得还要容易理解
- 点滴记录——Ubuntu 14.04中安装Sublime Text 3并使用SublimeClang插件
dc_726: 非常感谢!网上其他资料写的都不详细,SublimeClang官网下载的包里只有libclang.dl...
- 使用Keystone认证多节点安装Swift
cywosp: @fl_csdn:keystone提供了更强的、更灵活的功能,且与swift的耦合性更低,至于具体的...
- 使用Keystone认证多节点安装Swift
fl_csdn: 楼主,我想问一下,keystone认证和swauth认证有什么区别啊?
- 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
吃素了: 5分钟没看完,被打脸了
- ubuntu 14.10 64bit系统安装mac主题
tanshuai1001: @TonyLee1314:我也是,怎么解决啊!急死了,还有东西要做!
- 点滴记录——Windows 7中安装Sublime Text 3、cynwin、SublimeClang
cfzjxz: 很不错的文章
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- 五分钟理解一致性哈希算法(consistent hashing)
- Android开源项目SlidingMenu深入剖析
- 冒泡排序进阶
- 飞机大战-GameObject精灵父类的实现
- openwrt mt7620a devicetree研究
- SQL Server中char、varchar、nvarchar的区别
- 五分钟理解一致性哈希算法(consistent hashing)
- HDU 5429 KPI(树状数组)
- CentOS-7-64bit 配置Apache + MySQL + PHP
- AOP 那点事儿
- 《C Primer Plus 》 第二章总结
- Python进行中文注释
- Composition vs. Inheritance: How to Choose?
- C++内存管理详解
- jquery 弹出层
真心漂亮啊!