问答

当前位置
  • 首页
  • 问答
  • Consistent hashing 時, 同一台机器的 virtual nodes 刚好被排在环上相邻的位置

Consistent hashing 時, 同一台机器的 virtual nodes 刚好被排在环上相邻的位置

onsite 在讨论分散式系统时被 ab 家问的问题~

在作 consistent hash 的时候通常一台机器是对应好几个 virtual nodes. 然后把这些 nodes 随机撒在环上. 在作 replicas 时, 通常也是拿环上顺时钟方向的下三个 nodes (given RF=3) 来当 replicas.

被问的问题是, 怎么避免 virtual nodes 被撒在环上的连续空间.
譬如一台机器有 5 个 virtual nodes. A => A1, A2, ... , A5
如果他们刚好被放在环上的连续空间, 作 replicas 的时候, 其实都作在同一台机器上, 一台掛了就所有 replicas 一起掛.

我解法是在 random 的时候, 先去看看现在有哪些区间, 随机取一些区间出来, 在这些区间范围内去作 random. 面试官说可以, 但觉得我把问题复杂化了. 想请问各位有没有更 straight forward 的解法?

3 个回复

2016-09-29 陈同学

这个问题假设,是不是同一台机器的node在连续的区间里面? 那这样是不是重新构造一下随机函数就解决了?就是先随机选机器, 第二部,在随机选这台机器上面的node.


2016-10-23 K同学

2016-11-21 R同学

是不是就直接顺时针开始一一遍历,选出三个distinct node就好了,
比如A1, B2, B1, A3, C4...
那就取A1, B2, (B1跳过,A3跳过)C4

我来回答

您没有权限

为提高问答质量,问答版块发言权限只向九章学员开放

登录 注册

© Jiu Zhang 2013-. All rights reserved. 京ICP备16004690号-1