假设每个处理器 pi 都有一个手指表,允许它存储自己的地址以及其他两个处理器的地址。进一步假设 P2P 网络中的处理器数量为 10^6,标识符环的大小为 2^30。
哪些地址必须存储在每个处理器 pi 的手指表中,以最小化查找密钥(或确定密钥未存储在系统中)所需的消息数量,同时确保可以找到每个密钥?
必须采用格式 fingerTable[0] = successor (...), fingerTable[1] = successor (...)。假设 hp(proc id) 是用于将处理器 id 映射到环标识符的散列函数,并且该散列函数将处理器 id 均匀地映射到整个环。
我相信一根手指必须指向 pi 的继任者,以便能够找到每个键。当较大的手指传递一个它正在寻找的值时,这个较小的手指可以一个接一个地移动,直到它到达正确的处理器。但我不确定大手指的地址应该是什么。显然,让大手指跳跃较小的量会最小化为查找靠近手指的值而发送的消息数量,但会增加为查找手指上的值而发送的消息量。
例如,大手指跳过 62,500 个处理器。然后在最坏的情况下需要 16 + 62,500 条消息。如果大手指跳过 31,250 个处理器,在最坏的情况下需要 32 + 31,250 条消息。
不知道在这种情况下该怎么做。任何帮助,将不胜感激。