发布于 2018-05-09 10:28:13
您是对的,虚拟节点与散列槽相当简单。
但是虚拟节点并不是一致散列的最初概念,而更像是Cassandra在一致散列的基础上使用的技巧。因此,对于redis来说,不使用一致的散列也是可以的。
所以不用费心用词了。
发布于 2021-12-06 02:41:31
当一致散列将服务器散列成一个环时,它提供了许多很好的属性:
但是,我认为您无法控制哪个键指向哪个服务器:也就是说,我无法执行以下任务:
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使用散列槽,我认为它是来自哈希值->服务器的显式映射。这给了您完全的控制,特别是它启用了多键事务:
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还提供了一些建议来帮助您进行管理:rebalance,reshard。
免责声明:这是我自己的理解(这是我的资料来源),我希望我能在堆叠溢出事件上@redis_dev,让他们校对我的答案。
https://stackoverflow.com/questions/50246763
复制相似问题