8

我正在使用 redis 集群 3.0.1。

我认为redis集群使用一致的哈希。哈希槽类似于一致性哈希中的虚拟节点。Cassandra的数据分布和redis集群差不多,这篇文章说的是一致性哈希。

但是redis cluster turorial说redis cluster不使用consistent hash。

我想念什么?谢谢。

4

2 回答 2

7

没错,虚拟节点与哈希槽非常相似。

但虚拟节点并不是一致性哈希的原始概念,而更像是 Cassandra 基于一致性哈希使用的技巧。所以redis说不使用一致性哈希也是可以的。

所以,不要为措辞而烦恼。

于 2018-05-09T10:28:13.390 回答
0

当将服务器散列成一个环时,一致的散列提供了许多很好的属性:

  1. 服务器随机分布在环中,有利于集群负载均衡
  2. 添加/删除服务器仅影响其邻居,最大限度地减少数据迁移

但是,我认为您无法控制哪个密钥进入哪个服务器:即我无法执行以下任务:

key 1-99 ==> serverA
key 100 ==> serverB

// I can probably reach the same traffic split, 99:1 
// by given more virtual nodes to serverA, but it won't guarantee
// key 1 and key 99 is served by the same machine 

这在 redis 中是允许的,redis 使用hash slot,我相信这是一个来自 hash value -> severs 的显式映射。这使您可以完全控制,尤其是它可以启用多键事务:即

key Alice, key Bob ==> serverA
// move 100$ from Alice's bank account to Bob's in one operation
// no need special technique like 2 phase commit

键 -> 服务器映射现在由您自己管理,而不是通过一致性哈希来管理,缺点是管理员有更多的工作/责任,Redis 还提供表扬来帮助您管理:rebalancereshard

免责声明:这是我自己的理解(这是我的来源),我希望我可以在 stackoverflow 上 @redis_dev 并让他们校对我的答案

于 2021-12-06T02:41:31.197 回答