我理解经典的一致性缓存算法,在添加/删除节点时,必须将某些键重新映射到不同的节点。如果我放松了一些要求,是否有一种根本不支持重新映射的算法?
在我的应用程序中,我想逐步为节点分配密钥:
将一个密钥分配给一个节点后,它将永远保留在那里。
添加节点但未删除。添加后节点永远不会关闭 - 假设工作中有复制/备份机制。
密钥不需要在节点之间统一分配。尽力而为:当添加新节点时,会为其分配比旧节点更多的新密钥。
这种情况是否有算法?
答案 0 :(得分:1)
我可以想象两种类似的解决方法可以提供你所要求的,但两者都有可能无法接受的条件:
(如果两阶段查找正常,则#2的变体,但查找表的大小是一个问题:保持哈希(键)→cachenode查找表,并使该哈希尽可能小到需要它是保持查找表小。如果两个键碰巧有相同的哈希值,它们最终会在同一个节点上 - 但如果平衡不严格则不需要考虑。)
这些技术都不依赖于一致的哈希 - 只是天真的哈希码 - 但两者都是非常有限的。
在一般情况下,如果没有将密钥与密钥首次缓存时缓存状态信息联系起来的东西,那么不,我不认为你要求的是可能的。