Skip to content

Commit 3ff4b29

Browse files
committed
一致Hash算法
1 parent b3ab980 commit 3ff4b29

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

MD/Consistent-Hash.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# 一致 Hash 算法
2+
3+
当我们在做数据库分库分表或者是分布式缓存时,不可避免的都会遇到一个问题:
4+
5+
如何将数据均匀的分散到各个节点中,并且尽量的在加减节点时能使受影响的数据最少。
6+
7+
## Hash 取模
8+
随机放置就不说了,会带来很多问题。通常最容易想到的方案就是 `hash 取模`了。
9+
10+
可以将传入的 Key 按照 `index = hash(key) % N` 这样来计算出需要存放的节点。其中 hash 函数是一个将字符串转换为正整数的哈希映射方法,N 就是节点的数量。
11+
12+
这样可以满足数据的均匀分配,但是这个算法的容错性和扩展性都较差。
13+
14+
比如增加或删除了一个节点时,所有的 Key 都需要重新计算,显然这样对成本较高,为此需要一个算法满足分布均匀同时也要有良好的容错性和拓展性。
15+
16+
## 一致 Hash 算法
17+
18+
一致 Hash 算法

0 commit comments

Comments
 (0)