终端有可能看不到所有的缓冲( 二 )

  • 单调性(Monotonicity)单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中 , 又有新的缓冲区加入到系统中 , 那么哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲区中去 , 而不会被映射到旧的缓冲集合中的其他缓冲区 。 简单的哈希算法往往不能满足单调性的要求 , 如最简单的线性哈希:x\n = (ax + b) mod \n(P) , 在上式中 , P表示全部缓冲的大小 。 不难看出 , 当缓冲大小发生变化时(从P1到P2) , 原来所有的哈希结果均会发生变化 , 从而不满足单调性的要求 。 哈希结果的变化意味着当缓冲空间发生变化时 , 所有的映射关系需要在系统内全部更新 。 而在P2P系统内 , 缓冲的变化等价于Peer加入或退出系统 , 这一情况在P2P系统中会频繁发生 , 因此会带来极大计算和传输负荷 。 单调性就是要求哈希算法能够应对这种情况 。

  • 分散性(Spread)在分布式环境中 , 终端有可能看不到所有的缓冲 , 而是只能看到其中的一部分 。 当终端希望通过哈希过程将内容映射到缓冲上时 , 由于不同终端所见的缓冲范围有可能不同 , 从而导致哈希的结果不一致 , 最终的结果是相同的内容被不同的终端映射到不同的缓冲区中 。 这种情况显然是应该避免的 , 因为它导致相同内容被存储到不同缓冲中去 , 降低了系统存储的效率 。 分散性的定义就是上述情况发生的严重程度 。 好的哈希算法应能够尽量避免不一致的情况发生 , 也就是尽量降低分散性 。

    推荐阅读