一致的散列:保持环的数据结构在哪里

时间:2013-06-26 11:16:09

标签: hashtable distributed-caching consistent-hashing

我们有N个缓存节点,在环中具有基本的一致性哈希。

问题:

  1. 此环的数据结构是否存储:
    • 在每个节点上?
    • 部分每个节点及其范围?
    • 在作为负载均衡器的单独机器上?

  2. 当其他节点加入时,环会发生什么?
  3. 非常感谢。

1 个答案:

答案 0 :(得分:3)

我找到了问题1的答案。

回答1: 所有方法都写在我的博客中: http://ivoroshilin.com/2013/07/15/distributed-caching-under-consistent-hashing/

有几个选项可以保留ring的数据结构:

  • 协调的中心点:专用计算机保持一个环并作为中央负载均衡器,将请求路由到适当的节点。 优点:非常简单的实施。这对于不具有少量节点和/或数据的动态系统是非常合适的。 缺点:这种方法的一大缺点是可扩展性和可靠性。稳定的分布式系统没有一次失败。

  • 没有协调的中心点 - 完全重复:每个节点都保留环的完整副本。适用于稳定的网络。使用此选项,例如在亚马逊Dynamo。 优点:查询在一跳中直接路由到相应的缓存服务器。 缺点:从环中加入/离开服务器需要通知/修改环中的所有缓存服务器。

  • 没有中心协调点 - 部分重复:每个节点都保留环的部分副本。此选项是CHORD算法的直接实现。就DHT而言,每个缓存机器都有其预先确定者和后继者,并且在接收查询时,检查它是否具有密钥。如果该机器上没有这样的密钥,则使用映射函数来确定其哪个邻居(后继者和预备者)与该密钥的距离最小。然后它将查询转发给其邻居,其距离最小。该过程将继续,直到当前缓存计算机找到密钥并将其发回。 优点:对于高度动态的更改,由于节点间闲聊的开销很大,以前的选项不合适。因此,在这种情况下,此选项是选择。 缺点:没有直接路由消息。将消息路由到环中的目标节点的复杂性是O(lg N)。