Algorithm 是否存在支持密钥零重映射的一致哈希算法?
我了解经典的一致缓存算法,当添加/删除节点时,一些键必须重新映射到不同的节点。如果我放宽一些要求,是否有一种算法完全不支持重新映射 在我的应用程序中,我希望以增量方式将密钥分配给节点:Algorithm 是否存在支持密钥零重映射的一致哈希算法?,algorithm,hash,cluster-computing,consistent-hashing,Algorithm,Hash,Cluster Computing,Consistent Hashing,我了解经典的一致缓存算法,当添加/删除节点时,一些键必须重新映射到不同的节点。如果我放宽一些要求,是否有一种算法完全不支持重新映射 在我的应用程序中,我希望以增量方式将密钥分配给节点: 一旦将密钥分配给节点,它将永远留在那里 节点已添加但未删除。一个节点在添加后永远不会停止-假设复制/备份机制在工作 密钥不需要在节点之间均匀分布。尽力而为:添加新节点时,为其分配的新关键点比旧节点多 这个场景有算法吗 我可以想象两种类似的解决方法,它们可以满足您的要求,但都附带了一些可能无法接受的条件: 如
我可以想象两种类似的解决方法,它们可以满足您的要求,但都附带了一些可能无法接受的条件:
在一般情况下,如果没有将密钥与首次缓存该密钥时的缓存状态相关的信息联系起来,那么不,我认为您所要求的是不可能的 你的第一个解决方法正是我所想的,但是单调递增的键似乎很有限制性。我认为“2上的变化”很有希望,如果你能容忍两阶段查找,并且第一次查找是一个热点的话。不管你怎么做,你都得想办法把过去的某一部分编码成现在的样子。是的,我会试试的。谢谢你的要求不能以无状态的方式实现。比如说,这种算法需要知道其余节点上的平均负载,以管理何时转到或不转到新节点。