一致性hash

基本概念

一致性hash又名DHT(分布式hash表)、chord环算法。其主要解决常见分布式缓存的单调性,和平衡性。

所谓单调性,个人理解为增加或删除一个缓存节点时,不会导致整个缓存资源的重定向,只是将部分资源重定向到新的cache中。
而平衡性是指资源能够均匀滴分布在cache节点上,每个cache节点负载压力相同。

常见的hash算法弊端。

常用的hash算法hash(obj)/N,这种对于N过于敏感。如果N增大或者减小,就带来所有资源hash的重定向。而实际的分布式集群管理系统中,对机器的增加或者机器故障后的自动脱离是其基本功能。

基本算法

将每一个cache服务器节点映射到一个环上。顺时针方向,每一个服务器节点负责一个环区间,当对资源进行hash时,落在此区间的话,即存储在顺时针方向上的第一个服务器节点上。这样设计,在增加一个节点或者删除一个节点时,只会导致部分环区间改变,也就只引起部分资源hash的重定向。上诉即解决了单调性。

在解决平衡性上,一致性哈希引入了虚拟节点。
当环上服务器过少,则服务器分布不均匀,则负责环区间要大的节点,负载必然会更大。但是如果再用多个hash对服务器进行hash,相当于增加了环上服务器节点的个数。此时就能实现资源的均匀分布。

参考:
http://blog.csdn.net/cywosp/article/details/23397179
http://blog.codinglabs.org/articles/consistent-hashing.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值