一致性hash的简单实现案例

    一致性hash算法是分布式系统的实施中非常重要的一个算法,只是简单的使用hash算法在节点没有故障和不新增或删除节点时没有问题,但一旦涉及到节点的扩容或节点故障,往往会导致之前的大部分节点失效的问题,一致性hash能够解决这个问题,具体的算法介绍可以参考http://blog.csdn.net/sparkliang/article/details/5279393,此处讲解一个简单的一致性hash实现,这里的实现与淘宝的cobar中的实现基本一致。

    一致性hash算法可以归结为两个步骤,第一步是计算hash值,第二步是查找真正的节点hash值,针对具体的应用可以这么实现,第一步计算hash值时使用v_value=hash(value)%VNODE_SIZE,第二步是范围匹配,比如VNODE_SIZE=1024,则可以指定0-511为node0,512-1023为node1,查找的时候使用位图的方式,即使用int map[VNODE_SIZE],此处map[0-511]存储的是node0的值,map[512-1023]存储的是node1的值,使用v_value作为数组下标即可以直接找到其实际节点值,实际是一种空间换时间的策略,实现起来也非常简单。这种实现在公司实现的分布式项目中采用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值