填充糕点的路由表如何工作?


23

我正在尝试实现Pastry Distributed Hash Table,但是有些事情使我无法理解。我希望有人能澄清一下。

免责声明:我不是计算机科学专业的学生。我一生中刚上过两门计算机科学课程,但都没有涉及任何远程复杂的问题。我从事软件工作已经有多年了,所以如果我能将想法付诸实践,我觉得我已经完成了实现任务。因此,我可能只是缺少一些明显的东西。

我已经阅读了作者发表的论文[1],并且取得了一些不错的进步,但是我一直对路由表的工作原理这一点感到困惑:

该文件声称

一个节点的路由表中,R,被组织成log2bN 与行2b1每个条目。路由表第n行的2b1条目均引用一个节点,该节点的nodeId在前n位共享当前节点的nodeId,但其n + 1位具有2 b1可能值之一,而不是所述ñ + 1个数位在本节点的id。nn+12b1n+1

b代表一个应用程序特定的变量,通常是4。为了简单起见,让我们使用b=4。所以上面是

一个节点的路由表中,R,被组织成 log16N与行15的每个条目。路由表第n行的15个条目均引用一个节点,该节点的nodeId在前n个数字中共享当前节点的nodeId,但其n + 1个数字具有除n +以外的2 b - 1可能值之一当前节点ID中的第1位数字。nn+12b1n+1

我很了解 此外,N是群集中服务器的数量。我也知道

我的问题是,如果条目所在的行取决于键的共享长度,那么为什么看似随机的行数限制呢?当时,每个nodeId都有32位数字(128位nodeIds分为b位的数字)。当会发生什么ň得到足够高,使得登录16 ñb=4N?我意识到,要达到这种情况,将需要340,282,366,920,938,463,463,374,607,431,768,211,457(如果我的数学是正确的)服务器才能达到这种情况,但是这看起来像是一个奇怪的包含,并且从未解释过这种相关性。log16N>32

此外,如果服务器数量少,会发生什么情况?如果我的服务器少于16台,则表中只有一行。此外,在任何情况下,该行中的每个条目都不会具有相应的服务器。条目应该留空吗?我意识到无论有什么服务器,无论如何我都可以在叶集中找到服务器,但是第二行引发了同样的难题-如果我没有具有nodeId的服务器该怎么办这样我就可以填充第n个数字的所有可能排列?最后,如果我有四个服务器,并且我有两个节点以某种随机的uke幸方式共享32个数字中的20个,那么我应该为该节点填充表的20行,即使那是比我什至无法填满的行还要多吗?

这是我想出的方法,试图通过这种方式推理出自己的方式:

  1. 如果没有一个节点与该前缀精确匹配,则将条目设置为空值。
  2. 将添加空行,直到存在足够的行以匹配nodeId的共享长度为止。
  3. 当且仅当没有与所需消息ID匹配的条目时,才在路由表中搜索共享长度大于或等于当前nodeId且在数学上比当前条目更近的nodeId的nodeId。 nodeId到所需的ID。
  4. 如果在#3中找不到合适的节点,则假定这是目的地并传递消息。

所有这四个假设是否成立?我还应该在其他地方寻找有关此信息吗?


  1. Pastry: A.Rowstrong和P.Druschel(2001)的大型点对点系统可扩展,分散式对象定位和路由 - 在此处下载

您说您几乎没有编程。本文并没有真正地(直接地)涉及编程,而是两个节点之间的最短路径网络。因此,下一个问题是:您获得了多少联网背景?这都是关于通过网络进行路由的。

我实际上说过,我相信我有足够的编程经验。我觉得我缺乏计算机科学经验。无论如何,我几乎没有网络经验。我不确定您是否认为这主要是关于网络的说法,但我很想听听您的想法。

Answers:


5

在Pastry(以及所有结构化的P2P网络)中建立路由表的想法是在确保更快路由的同时,最大程度地减小其大小。

Pastry的路由算法如下:

步骤A.节点u首先通过在其叶子集中查找对象A来搜索对象A。步骤B。如果不可用,则将查询转发到共享“与共享的前缀数量至少大于u与A共享的节点数量”的已知节点。步骤C.如果找不到这样的记录,则将查询转发到叶集中数字上最接近A的节点。AA

这就是为什么节点u存储地址将其表组织如下:

iuiu

(i+1)thi{0,,2b1}

A具有标识符4324:那么将发生以下情况:(我们假设它的基础为4。(即地址来自[1-4] [1- 4] [1-4] [1-4])。

uAuAuu1u1

u1A

log2bb2bb

实际情况通常不是那样典型的。可能存在网络中节点不多的情况。这就是我们执行上述步骤C的原因。-但是,您需要保证使该算法正确的是,每个节点都连接到与其最接近的两个节点(就标识符而言)。这将形成一个有序节点的环[例如1-> 3-> 4-> 9-> 10-> 11-> 1]


不完全是我要问的问题,但是对算法的一个很好的概述总会给您一个赞成和接受的答案。:)
Paddy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.