【问题标题】:does redis cluster use consistent hashingredis集群是否使用一致性哈希
【发布时间】:2018-10-19 04:21:39
【问题描述】:

我正在使用 redis 集群 3.0.1。

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

但是the redis cluster turorial说redis集群没有使用consistent hash。

我错过了什么?谢谢。

【问题讨论】:

    标签: redis consistent-hashing


    【解决方案1】:

    你是对的,虚拟节点与哈希槽非常相似。

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

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

    【讨论】:

      【解决方案2】:

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

      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,我相信这是一个来自哈希值的显式映射->服务器。这使您可以完全控制,尤其是它支持多键交易:即

      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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-27
        • 2023-03-11
        • 2015-08-17
        • 2012-11-13
        • 2016-10-04
        • 2012-07-02
        • 2011-03-20
        • 1970-01-01
        相关资源
        最近更新 更多