分布式系统中有哪些保证数据一致性的hash算法?


通常在分布式系统中,基本上采用都是mod n的算法来分布数据。使用这种算法有点不好是,假如节点数发生改变,可能意味着数据需要重组。现在想问问大家,在开发过程中遇到这个情况通常是增么解决的,有没有保证数据一致性的hash算法?

分布式 算法

2black 12 years, 6 months ago

一致性HASH算法是为了尽可能是减少增删机器后产生数据颠簸

1、首先求出每个服务节点的hash,并将其配置到一个0~2^32-1的圆环区间上。
2、其次使用同样的方法求出你所需要存储的key的hash,也将其配置到这个圆环上。
3、新增一个节点的时候,只有在圆环上新增节点逆时针方向的第一个节点的数据会受到影响。删除一个节点的时候,只有在圆环上原来删除节点顺时针方向的第一个节点的数据会受到影响

几个例子:
http://weblogs.java.net/blog/2007/11/... java 版本的例子
http://blog.csdn.net/mayongzhan/archi... PHP 版的例子
http://www.codeproject.com/KB/recipes... C语言版本例子

prwking answered 12 years, 6 months ago

Your Answer