“一致性哈希即Consistent Hashing” 和 “libconhash” 的学习感悟

来源:互联网 发布:labview软件 编辑:程序博客网 时间:2024/06/13 20:23

http://m.blog.csdn.net/blog/guoqiangi1/8695284

最近学习了一致性哈希算法及其在分布式中的应用,并且自己读取了libconhash的C语言版实现的源码。对一致性哈希和分布式中的均衡颇有些感悟。

记下:

libconhash下载地址:http://sourceforge.net/projects/libconhash/?source=directory

红黑树算法:http://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91

参考一致性哈希算法博文:http://blog.codinglabs.org/articles/consistent-hashing.html 在该文中详细介绍了一致性哈希算法在分布式中的应用。

         博文中主要两大部分,一是容错性和可拓展性的分析;二是虚拟节点。

        虽然博文中对一致性哈希中说明了增加虚拟节点,这样就解决了服务节点少时数据倾斜的问题。在实际应用中,通常将虚拟节点数设置为32甚至更大,因此即使很少的服务节

点也能做到相对均匀的数据分布。但是文中并没有给出这些虚拟节点究竟如何的分布来达到更加合理的均匀分布,自己详细阅读了libconhash中c语言版的实现。对于大量的虚拟

节点的分布问题,是采用数据结构中的红黑树的原理实现。

       红黑树是一种二叉查找树,在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保

没有一条路径会比其他路径长出俩倍,因而是接近平衡的。

      在添加或者删除红黑树中的节点时又是通过红黑树的五条原则来尽可能的维护红黑树的平衡。继而达到节点的均匀分布,实现平衡。    



0 0
原创粉丝点击