Cassandra源码学习:一致性hash回顾
来源:互联网 发布:淘宝网排行榜 编辑:程序博客网 时间:2024/04/29 04:39
每个节点都有一个哈希值,将这个哈希值配置到圆环上(0到2的32次方),相当于这个圆环分配给了这些节点,每个节点负责一段。数据根据同样的哈希函数也得到一个哈希值,这个哈希值落到哪一段,就表示这个节点存储在这段对应的节点上。
每添加或者移除一个新的节点,只有相邻的那个节点会受到影响,因此,一致性哈希解决了节点变化引起的数据重新分布问题。
Cassandra1.2以前采用的是这种标准的一致性哈希算法:为每个节点分配一个token,根据这个token值来决定节点在集群中的位置以及这个节点所存储的数据范围。
由于这种方式会造成数据分布不均的问题,在Cassandra1.2以后采用了虚拟节点的思想:不需要为每个节点分配token,把圆环分成更多部分,让每个节点负责多个部分的数据,这样一个节点移除后,它所负责的多个token会托管给多个节点处理,这种思想解决了数据分布不均的问题。
如图所示,上面部分是标准一致性哈希,每个节点负责圆环中连续的一段,如果Node2突然down掉,Node2负责的数据托管给Node1,即Node1负责EFAB四段,如果Node1里面有很多热点用户产生的数据导致Node1已经有点撑不住了,恰巧B也是热点用户产生的数据,这样一来Node1可能会追随Node2而去,Node1去了,Node6还hold住吗?
下面部分是虚拟节点实现,每个节点不再负责连续部分,且圆环被分为更多的部分。如果Node2突然down掉,Node2负责的数据不全是托管给Node1,而是托管给多个节点。而且也保持了一致性哈希的特点。
0 0
- Cassandra源码学习:一致性hash回顾
- Cassandra学习笔记之一致性hash回顾
- 一致性hash算法学习
- 一致性 Hash 算法学习
- 一致性Hash算法学习
- Cassandra源码学习:数据模型
- libmemcached的一致性hash实现源码分析
- Cassandra源码学习:Gossip协议
- Cassandra源码学习:数据读取
- Cassandra源码学习:数据更新
- Cassandra源码学习:数据文件分布
- 【算法学习】Consistent Hash 一致性哈希
- python学习(swift 一致性hash算法分析)
- 一致性hash算法的应用研究学习
- 一致性hash
- 一致性hash
- 一致性hash
- 一致性hash
- 构造器,重载,this,传递
- qq登录界面及其实现
- Win 8 系统下 Tomcat 8.0 版本的下载安装与配置——Windows J2EE开发安装序列之三
- java文件类的一些基本用法
- 用自定义的队列实现一些基本功能
- Cassandra源码学习:一致性hash回顾
- 谢宾斯基三角形
- 足球小游戏
- SQL Server数据库连接
- 小球与线程
- 今夜,灵魂
- MWPhotoBrowser 使用
- 通信基础篇小项目-----多人聊天QQ的实现
- 通过实现端口代理映射,进而连接oracle数据库