在分布式系统中,如果某业务可以由多个相同的节点处理,很容易想到用HASH的方式将业务请求分散到这些节点处理,如果有N个节点,计算方法为:HASH(id)% N。

如果节点数量发生变化,比如由于业务量的增大而增加节点或由于机器宕机而减少节点,上述HASH的结果就不一样了。若增加2个节点,某id原处理节点为HASH(id)% N,新的处理节点就变成了HASH(id)% (N + 2),可能会将大量id的处理节点打乱重新分配,就会发现之前某节点保存的用户数据用不到了,而新的处理节点根本没有这些数据。

一致性哈希在一定程度上缓解了这个问题。

阅读原文 »

3 收藏


直接登录

推荐关注