Zookeeper 用于一致性哈希?

问题描述

我们可以使用zookeeper来实现一致性哈希吗?我想用 zookeeper 维护我的服务器散列,以便可以监控它们的健康状况,以及使用 zookeeper 将给定密钥映射到特定服务器的逻辑。但是由于zookeeper需要一个领导者(正如我所读到的),那么在我的情况下,谁可以成为领导者?是否可以为健康监控设置无领导者的zookeeper?我需要领导者吗?

这是我想到的流程:

  1. 向zookeeper注册所有散列服务器。
  2. 客户端发送密钥以获取服务器,zookeeper 有主机列表,它可以决定哪个分片将处理它。(逻辑可能是基于散列的分片或范围基驻留在zookeeper)
  3. 如果服务器添加/删除,职责将被调整。(我假设我们必须在添加新服务器时手动更新职责,以防我们使用范围基础分片)?

解决方法

不,您不需要您认为的领导者。 Zookeeper 会根据共识算法 ZAB 逐出一个领导者来自行处理请求。

此外,您可以使用 ZK 来管理节点列表,称为 group membership