Hash 集合与一致散列

Hash 集合与一致散列,hash,distributed-computing,consistent-hashing,Hash,Distributed Computing,Consistent Hashing,我读到: 与一致性散列不同,HRW(最高随机权重,又称集合散列)需要不预先计算或存储令牌 为什么? 我的理解是: 在一致散列中,一个散列对象和站点(即h(Oi)和h(Sj))到单位圆,然后对于给定对象,它在散列空间中找到最近的站点 在HRW(集合散列)中,同时散列对象和站点,即h(Oi,Sj),然后选择最高的散列结果来确定对象的目标站点 因此,在我看来,在一致性哈希中,可以选择预计算和预存储h(Sj)s,但不需要这样做。换句话说,一致性哈希提供了这种灵活性,而HRW则没有 我错了吗?如果

我读到:

与一致性散列不同,HRW(最高随机权重,又称集合散列)需要预先计算或存储令牌

为什么?

我的理解是:

  • 在一致散列中,一个散列对象和站点(即
    h(Oi)
    h(Sj)
    )到单位圆,然后对于给定对象,它在散列空间中找到最近的站点

  • 在HRW(集合散列)中,同时散列对象和站点,即
    h(Oi,Sj)
    ,然后选择最高的散列结果来确定对象的目标站点

因此,在我看来,在一致性哈希中,可以选择预计算和预存储
h(Sj)
s,但不需要这样做。换句话说,一致性哈希提供了这种灵活性,而HRW则没有

我错了吗?如果是,为什么

以下是来自同一链接的HRW参考说明:


关于集合散列的圆圈解释是错误的

集合散列:
散列(对象+站点)
:具有最高结果(最高随机权重(HRW)散列)的站点可以存储对象。 如果删除站点,则对于该站点上的每个对象,对剩余的每个站点重新执行操作哈希(对象+站点),以查找结果最高的站点

一致哈希: 为每个站点指定一个站点密钥编号(站点密钥编号越高,对象的重新分区就越统一,您可以通过以下方式生成它们:
Hash(Site+number)
)。把它们放在一个圆上。(所有这些都是可以预先计算的部分)。 要存储对象,
Hash(object)
要获取对象键,请将其放在圆圈上,然后顺时针查找最近的站点键。具有此站点密钥的站点将存储该对象 如果删除站点,则删除该站点所在圆圈上的站点键。对于存储在该站点上的每个对象,再次顺时针在圆圈上查找最近的站点键。

您是正确的。 我们可以预计算和预存储
h(Sj)
这一事实对于一致性散列来说是一个优势

维基百科指出,集合散列的优势在于它在概念上更易于理解和实现(尽管我个人并不同意)

它还提到了另一个优势:

集合散列还有它提供的巨大优势 其他重要问题的简单解决方案,如分布式 k协议


谢谢路易斯,那么回到我的问题:你认为维基百科这一声明的基础是什么
“与一致性哈希不同,HRW(最高随机权重,又称集合哈希)不需要预先计算或存储令牌”。
?HRW哈希不需要预先计算或存储令牌。首先,因为HRW没有令牌(站点密钥),其次,要找到将存储对象的位置,必须散列(对象+站点)(查找最高的随机权重)。由于您事先不知道要存储的对象,因此无法预计算哈希。但是,这不是一个很大的缺点,因为您需要执行一个哈希(如一致哈希)知道在哪里存储一个对象。好的,谢谢,我提到这一点是因为维基百科的措辞似乎是一件好事,HRW不需要预先计算/存储令牌,但你似乎同意我的观点,它们都不需要预先计算这些哈希,因此,如果有什么不同的话,一致哈希提供了灵活性to预先计算/存储这些散列。对吗?