代码之家  ›  专栏  ›  技术社区  ›  Max Holland

Redis cluster reshard后,分配给节点的大量非连续插槽

  •  1
  • Max Holland  · 技术社区  · 7 年前

    ~ redis-3.2.10/src/redis-trib.rb create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002
    

    然后,我添加了第四个节点,并重新硬化以使时隙分配更加均匀:

    ~ redis-3.2.10/src/redis-trib.rb add-node 127.0.0.1:7003 127.0.0.1:7000
    ~ redis-3.2.10/src/redis-trib.rb reshard --timeout 60000  127.0.0.1:7000
    ...
    How many slots do you want to move (from 1 to 16384)? 4096
    ...
    Source node #1:all
    ...
    redis-3.2.10/src/redis-trib.rb check 127.0.0.1:7000
    >>> Performing Cluster Check (using node 127.0.0.1:7000)
    M: 29fbb7e5f93eac22a224c14d4070139919bb0a5e 127.0.0.1:7000
       slots:1365-5460 (4096 slots) master
       0 additional replica(s)
    M: c90c9f590bb48d328f3eed2fc96af3a7d9cb0f25 127.0.0.1:7003
       slots:0-1364,5461-6826,10923-12287 (4096 slots) master
       0 additional replica(s)
    M: 970b3145574a4f38bbe10548bf6b80f8fdc2854d 127.0.0.1:7001
       slots:6827-10922 (4096 slots) master
       0 additional replica(s)
    M: 2cc0922fcfb3e619b6d733e054dd249a4b6137bf 127.0.0.1:7002
       slots:12288-16383 (4096 slots) master
       0 additional replica(s)
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    

    >>> Performing Cluster Check (using node 127.0.0.1:7000)
    M: 29fbb7e5f93eac22a224c14d4070139919bb0a5e 127.0.0.1:7000
       slots:1365-5460,12288-13652 (5461 slots) master
       0 additional replica(s)
    M: 970b3145574a4f38bbe10548bf6b80f8fdc2854d 127.0.0.1:7001
       slots:0-1364,5461-6826,10923-12287,13653-15017 (5461 slots) master
       0 additional replica(s)
    M: 2cc0922fcfb3e619b6d733e054dd249a4b6137bf 127.0.0.1:7002
       slots:6827-10922,15018-16383 (5462 slots) master
       0 additional replica(s)
    M: c90c9f590bb48d328f3eed2fc96af3a7d9cb0f25 127.0.0.1:7003
       slots: (0 slots) master
       0 additional replica(s)
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    

    7001节点有4组不同的哈希槽分配给它。在随后的重排之后,哈希槽的这种“碎片”似乎增加了。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Itamar Haber    7 年前

    就任何有意义的开销而言,AFAIK无哈希插槽的“碎片”可以忽略不计。一些直觉:

    • 小范围(16K)
    • 重装不是一种常见的操作
        2
  •  0
  •   Sanjay Kanani    7 年前

    首先创建单节点集群。

    创建单节点集群后,只需添加其他节点,并在新节点中添加连续的插槽。 这样你就会得到你想要的。