我了解Kademlia路由表由160个存储桶组成。
节点被放入0-159号存储桶中,具体取决于它们的前缀长度(即本地节点密钥和节点的XOR中未设置的领先位数)。
为什么会这样做,除了查找最接近的节点需要通过160 * 20个节点进行迭代是不可行的之外,是否还涉及性能优势呢?
我了解Kademlia路由表由160个存储桶组成。
节点被放入0-159号存储桶中,具体取决于它们的前缀长度(即本地节点密钥和节点的XOR中未设置的领先位数)。
为什么会这样做,除了查找最接近的节点需要通过160 * 20个节点进行迭代是不可行的之外,是否还涉及性能优势呢?
为什么会这样,是否有性能方面的好处?
该组织与XOR指标相结合,创建分层本地性保证,在查询接近于您目标节点的节点时,将了解更接近的节点。这产生了指数级的收敛。
也许您可以将其视为分布式区间搜索。
我知道Kademlia路由表由160个桶组成。
一个由(最多)160个桶组成的平坦数组只是许多实现用来近似正确的路由表布局的基本方法。
使用桶分裂或多主路由表,您需要一个实际的树形布局,其中可能包含超过160个桶。
事实上,以下是具有89个节点ID的多主DHT节点的基于树的路由表的一个小部分,完整表格比此更大(这些基本上是89个ID的两个区域):
0000000... entries:8 replacements:8
0000001000... entries:8 replacements:8
0000001001000... entries:8 replacements:8
00000010010010... entries:8 replacements:8
00000010010011000... entries:8 replacements:8
000000100100110010... entries:8 replacements:8
0000001001001100110... entries:8 replacements:8
00000010010011001110... entries:8 replacements:8
0000001001001100111100... entries:5 replacements:0
0000001001001100111101... entries:8 replacements:0
000000100100110011111... entries:8 replacements:0
0000001001001101... entries:8 replacements:8
000000100100111... entries:8 replacements:8
000000100101... entries:8 replacements:8
00000010011... entries:8 replacements:8
000000101... entries:8 replacements:8
00000011... entries:8 replacements:8
0000010... entries:8 replacements:8
0000011000... entries:8 replacements:8
0000011001000... entries:8 replacements:8
00000110010010... entries:8 replacements:8
00000110010011000... entries:8 replacements:8
000001100100110010... entries:8 replacements:8
0000011001001100110... entries:8 replacements:8
00000110010011001110... entries:8 replacements:5
0000011001001100111100... entries:6 replacements:0
0000011001001100111101... entries:2 replacements:0
000001100100110011111... entries:8 replacements:0
0000011001001101... entries:8 replacements:8
000001100100111... entries:8 replacements:8
000001100101... entries:8 replacements:8
00000110011... entries:8 replacements:8
000001101... entries:8 replacements:8
00000111... entries:8 replacements:8
它的查找缓存甚至更大,由7k个桶组成。
现在比较3200个距离并不是什么大问题,但是是的,桶有助于找到与您“最接近”的节点进行复制。除了遍历160*20个节点以找到最接近的节点是不可行的之外