Rendezvous hashing (Highest Random Weight "HRW")的维基百科页é¢æ出以下声明:
 Â虽然å¯èƒ½é¦–先看到HRW算法在O(n)时间è¿è¡Œï¼Œä½†äº‹å®žå¹¶éžå¦‚æ¤ã€‚这些站点å¯ä»¥æŒ‰å±‚次结构进行组织,并且HRW应用于æ¯ä¸ªçº§åˆ«ï¼Œå› 为它会é™ä½Žå±‚次结构,导致O(log n)è¿è¡Œæ—¶é—´ï¼Œå¦‚。[7]
我得到了å‚考文件的副本,"基于哈希的移动Ad-hoc网络ä¸å¯æ‰©å±•ä½ç½®æœåŠ¡çš„虚拟层次结构。"但是,他们的论文ä¸å¼•ç”¨çš„层次结构似乎éžå¸¸ç‰¹å®šäºŽå…¶åº”用程åºåŸŸã€‚æ®æˆ‘所知,没有明确说明如何推广该方法。维基百科的评论使得日志 似乎是一般情况。
æˆ‘çœ‹äº†å‡ ä¸ªä¸€èˆ¬çš„HRW实现,但它们似乎都没有比线性时间更好的支æŒã€‚我给了它一些想法,但我没有看到任何方法æ¥åˆ†å±‚组织网站,而ä¸ä¼šå¯¼è‡´çˆ¶èŠ‚点在退出时导致低效的é‡æ–°æ˜ 射,从而大大打败了HRW的主è¦ä¼˜åŠ¿ã€‚
有人知é“怎么åšå—?或者,维基百科是ä¸æ£ç¡®çš„,在日志时间有一般的方法æ¥å®žçŽ°è¿™ä¸ªï¼Ÿ
编辑:调查mcdowella的方法:
好的,我想我知é“è¿™æ˜¯å¦‚ä½•èµ·ä½œç”¨çš„ã€‚ä½†æ˜¯ä½ éœ€è¦æ¯”ä½ æŒ‡å®šçš„æ›´å¤šä¸€ç‚¹ã€‚
如果您åªæ˜¯æ‰§è¡Œäº†æ‚¨æ‰€æ述的内容,那么您会é‡åˆ°æ¯ä¸ªå¶åå¯èƒ½åªæœ‰é›¶ä¸ªæˆ–一个节点的情况,并且å¶åä¸æœ‰å¤šå°‘个节点å˜åœ¨æ˜¾ç€å·®å¼‚ - 最多的åæ ‘ã€‚å¦‚æžœæ‚¨åœ¨æ¯ä¸ªçº§åˆ«ä½¿ç”¨HRW进行交æ¢ï¼Œåªéœ€å°†æ•´ä¸ªäº‹ç‰©è®¾ç½®ä¸ºå¸¸è§„æœç´¢æ ‘,您就会获得完全相åŒçš„效果。从本质上讲,您已ç»å®žçŽ°äº†ä¸€è‡´æ€§æ•£åˆ—,以åŠå˜å‚¨æ¡¶ä¹‹é—´ä¸å‡ç‰è´Ÿè½½çš„缺陷。计算组åˆæƒé‡ï¼ŒHRWçš„å®šä¹‰å®žæ–½ï¼Œæ²¡æœ‰å¢žåŠ ä»»ä½•å†…å®¹;ä½ æœ€å¥½åªæ˜¯åœ¨æ¯ä¸ªçº§åˆ«è¿›è¡Œæœç´¢ï¼Œå› 为它å¯ä»¥èŠ‚çœæ•£åˆ—,并且å¯ä»¥åœ¨ä¸å¾ªçŽ¯æ¯ä¸ªåŸºæ•°å€¼çš„情况下实现
虽然å¯ä»¥è§£å†³è¿™ä¸ªé—®é¢˜ï¼šä½ åªéœ€è¦åœ¨æœ€åŽä¸€çº§ä½¿ç”¨HRW从众多选择ä¸è¿›è¡Œé€‰æ‹©ã€‚也就是说,您需è¦å°†æ‰€æœ‰å¶èŠ‚点放在大桶ä¸ï¼Œè¿™ä¸Žæ‚¨åœ¨ä¸€è‡´æ•£åˆ—ä¸å…·æœ‰çš„副本数é‡ç›¸å½“。这些大型水桶应相互大致相ç‰ï¼Œç„¶åŽæ‚¨ä½¿ç”¨HRW选择特定的站点。由于å˜å‚¨æ¡¶å¤§å°æ˜¯å›ºå®šçš„,这是一个O(n)算法,我们得到了所有关键的HRW属性。
è€å®žè¯´ï¼Œæˆ‘认为这是值得怀疑的。它ä¸æ˜¯HRWçš„å®žçŽ°ï¼Œå› ä¸ºå®ƒåªæ˜¯å°†HRW与一致的散列相结åˆã€‚我猜这有什么ä¸å¯¹ï¼Œåœ¨æŸäº›æƒ…况下甚至å¯èƒ½æ¯”使用å¤åˆ¶å“的常用技术更好。但我认为说明HRW是log(n)是错误的,如果这实际上是作者的æ„æ€ã€‚
æ¤å¤–,原始æè¿°ä¹Ÿå€¼å¾—æ€€ç–‘ã€‚ä½ ä¸éœ€è¦åœ¨æ¯ä¸ªçº§åˆ«ç”³è¯·HRWï¼Œä½ ä¸åº”è¯¥è¿™æ ·åšï¼Œå› ä¸ºè¿™æ ·åšæ²¡æœ‰ä»»ä½•å¥½å¤„;ä½ åº”è¯¥å¿«é€Ÿåšä¸€äº›äº‹æƒ…(比如索引),然åŽç”¨HRWåšæœ€åŽçš„选择。
这真的是我们能åšçš„最好的,还是有其他方法æ¥åˆ¶ä½œHRW O(log(n))?
ç”案 0 :(得分:1)
如果给æ¯ä¸ªç«™ç‚¹ä¸€ä¸ªè¶³å¤Ÿé•¿çš„éšæœºid,用基数k表示(å¯èƒ½æ˜¯é€šè¿‡æ•£åˆ—éžéšæœºidï¼‰ï¼Œé‚£ä¹ˆä½ å¯ä»¥å°†ç«™ç‚¹ä¸Žä¸€æ£µæ ‘çš„å¶å相关è”ï¼Œè¿™æ£µæ ‘åœ¨æ¯ä¸ªèŠ‚点最多有k个åŽä»£ã€‚æ— éœ€å°†ä»»ä½•ç«™ç‚¹ä¸Žæ ‘çš„å†…éƒ¨èŠ‚ç‚¹ç›¸å…³è”。
è¦ç¡®å®šå˜å‚¨é¡¹ç›®çš„ä½ç½®ï¼Œè¯·ä½¿ç”¨HRWä»Žæ ‘çš„æ ¹éƒ¨å‘ä¸‹è®¡ç®—åœ¨æ ‘èŠ‚ç‚¹å¤„åˆ†æ”¯çš„æ–¹å¼ï¼Œåœ¨åˆ°è¾¾ä¸Žç«™ç‚¹å…³è”çš„å¶åæ—¶åœæ¢ã€‚您å¯ä»¥æ‰§è¡Œæ¤æ“ä½œï¼Œè€Œæ— éœ€ä¸Žä»»ä½•ç«™ç‚¹é€šä¿¡ï¼Œç›´åˆ°æ‚¨ç¡®å®šè¦å°†é¡¹ç›®å˜å‚¨åœ¨å“ªä¸ªç«™ç‚¹ - 您需è¦çŸ¥é“çš„æ˜¯æž„å»ºæ ‘çš„ç«™ç‚¹çš„æ•£åˆ—ID。
由于网站åªä¸Žæ ‘å¶ç›¸å…³è”ï¼Œå› æ¤æ ‘çš„å†…éƒ¨èŠ‚ç‚¹æ— æ³•é€€å‡ºï¼Œé™¤éžä¸Žå…¶ä¸‹çš„æ ‘å¶ç›¸å…³çš„所有网站都退出,æ¤æ—¶å®ƒå°†å˜å¾—æ— å…³ç´§è¦ã€‚
ç”案 1 :(得分:1)
我没有è´ä¹°æ›´æ–°åŽçš„ç”案。当您比较分支的æƒé‡è€Œä¸æ˜¯æ‰€æœ‰ç½‘站的æƒé‡æ—¶ï¼ŒHRW有两个很好的属性似乎会丢失。
一个是您å¯ä»¥é€‰æ‹©å‰n个站点而ä¸ä»…仅是主站点,这些站点应该是éšæœºåˆ†å¸ƒçš„。如果您è¦ä¸‹é™åˆ°å•ä¸ªæ ‘ä¸ï¼Œåˆ™å‰nä¸ªç«™ç‚¹å°†åœ¨æ ‘ä¸å½¼æ¤é 近。这å¯ä»¥é€šè¿‡ä½¿ç”¨ä¸åŒçš„ç›ä¸‹é™å¤šæ¬¡æ¥ä¿®å¤ï¼Œä½†è¿™ä¼¼ä¹Žæ˜¯å¾ˆå¤šé¢å¤–的工作。
两个是显而易è§çš„æ˜¯æ·»åŠ æˆ–åˆ é™¤ç½‘ç«™æ—¶å‘生的情况,åªæœ‰1 / |网站|åœ¨æ·»åŠ çš„æƒ…å†µä¸‹ï¼Œæ•°æ®ç§»åŠ¨ã€‚å¦‚æžœä¿®æ”¹çŽ°æœ‰æ ‘ï¼Œåˆ™ä»…å½±å“对ç‰ç«™ç‚¹ã€‚åœ¨æ·»åŠ çš„æƒ…å†µä¸‹ï¼Œç§»åŠ¨çš„å”¯ä¸€æ•°æ®æ¥è‡ªæ·»åŠ 的站点的新对ç‰ä½“ã€‚åœ¨åˆ é™¤çš„æƒ…å†µä¸‹ï¼Œè¯¥ç«™ç‚¹ä¸Šçš„æ‰€æœ‰æ•°æ®çŽ°åœ¨éƒ½ç§»åŠ¨åˆ°å‰ä¸€ä¸ªå¯¹ç‰ä½“。如果您é‡æ–°è®¡ç®—æ ‘ï¼Œåˆ™æ‰€æœ‰æ•°æ®éƒ½å¯ä»¥æ ¹æ®æ ‘çš„æž„é€ æ–¹å¼ç§»åŠ¨ã€‚
ç”案 2 :(得分:0)
我认为您å¯ä»¥ä½¿ç”¨é€šå¸¸ç”¨äºŽä¸€è‡´æ€§å“ˆå¸Œçš„相åŒâ€œè™šæ‹ŸèŠ‚点â€æ–¹æ³•ã€‚å‡è®¾æ‚¨æœ‰ N 物ç†èŠ‚点,其ID为:
{n1,...,nN}.
选择 V ,æ¯ä¸ªç‰©ç†èŠ‚点的虚拟节点数,并生æˆæ–°çš„ID列表:
{n1v1,v1v2,...,n1vV
,n2v1,n2v2,...,n2vV
,...
,nNv1,nNv2,...,nNvV}.
将这些安排到固定但éšæœºåŒ–的二å‰æ ‘çš„å¶åä¸ï¼Œå¹¶åœ¨å†…éƒ¨èŠ‚ç‚¹ä¸Šæ ‡è®°ã€‚ä¾‹å¦‚ï¼Œè¿™äº›å†…éƒ¨æ ‡ç¾å¯ä»¥æ˜¯å…¶åèŠ‚ç‚¹æ ‡ç¾çš„串è”。
è¦é€‰æ‹©ä¸€ä¸ªç‰©ç†èŠ‚点æ¥å˜å‚¨å¯¹è±¡ O ï¼Œè¯·ä»Žæ ¹ç›®å½•å¼€å§‹ï¼Œç„¶åŽé€‰æ‹©å…·æœ‰è¾ƒé«˜å“ˆå¸Œ Hï¼ˆæ ‡ç¾ï¼ŒO)的分支。é‡å¤è¿™ä¸ªè¿‡ç¨‹ï¼Œç›´åˆ°ä½ 到达一片å¶å。将对象å˜å‚¨åœ¨è¯¥å¶å上与虚拟节点对应的物ç†èŠ‚ç‚¹ä¸Šã€‚è¿™éœ€è¦ O(log(NV))= O(log(N)+ log(V))= O(log(N))æ¥éª¤ï¼ˆå› 为V是常数)。
如果物ç†èŠ‚点å‘生故障,则该节点上的对象将被é‡æ–°æ•£åˆ—,跳过没有活动å¶åçš„åæ ‘ã€‚
ç”案 3 :(得分:0)
在O(log N)ä¸å®žçŽ°é›†åˆæ•£åˆ—的一ç§æ–¹æ³•ï¼Œå…¶ä¸N是缓å˜èŠ‚点的数é‡ï¼š
å为Fçš„æ¯ä¸ªæ–‡ä»¶éƒ½ç¼“å˜åœ¨å为C的缓å˜èŠ‚点ä¸ï¼Œæƒé‡w(F,C)最大,这与集åˆæ•£åˆ—ä¸çš„æ£å¸¸æƒ…å†µä¸€æ ·ã€‚
首先,我们使用éžæ ‡å‡†å“ˆå¸Œå‡½æ•°w(),如下所示:
w(F,C)= h(F)x或h(C)。
å…¶ä¸h()是一些很好的哈希函数。
给定一个å为F的文件,而ä¸æ˜¯ä¸ºæ¯ä¸ªç¼“å˜èŠ‚点计算w(F,C) - æ¯ä¸ªæ–‡ä»¶éœ€è¦O(N)时间 - 我们åªæ ¹æ®ç¼“å˜èŠ‚点的散列åh(C)预先计算二å‰æ ‘; ä¸€æ£µæ ‘è®©æˆ‘ä»¬æ‰¾åˆ°æ¯ä¸ªæ–‡ä»¶çš„O(log N)时间内最大w(F,C)值的缓å˜èŠ‚点。
æ ‘çš„æ¯ä¸ªå¶å包å«ä¸€ä¸ªç¼“å˜èŠ‚点的å称C. æ ‘çš„æ ¹ï¼ˆæ·±åº¦ä¸º0)指å‘2个åæ ‘ã€‚ h(C)的最高ä½ä¸º0的所有å¶åéƒ½åœ¨æ ¹çš„å·¦åæ ‘ä¸; h(C)的最高ä½ä¸º1的所有å¶åéƒ½åœ¨æ ¹çš„å³åæ ‘ä¸ã€‚ æ ¹èŠ‚ç‚¹çš„ä¸¤ä¸ªå节点(深度为1)处ç†h(C)的下一个最é‡è¦çš„ä½ã€‚ ä¾æ¤ç±»æŽ¨ï¼Œæ·±åº¦D处的内部节点处ç†h(C)的D最高ä½ã€‚ ä½¿ç”¨è‰¯å¥½çš„æ•£åˆ—å‡½æ•°ï¼Œä»Žæ ¹å¼€å§‹çš„æ¯ä¸ªæ¥éª¤å¤§çº¦å°†æ‰€é€‰åæ ‘ä¸çš„候选缓å˜èŠ‚点å‡åŠï¼Œ 所以我们最终得到一棵大约ln_2 Nçš„æ ‘ã€‚ (如果我们最åŽå¾—åˆ°ä¸€æ£µæ ‘ï¼Œé‚£å°±æ˜¯ï¼†ï¼ƒ34;太ä¸å¹³è¡¡ï¼†ï¼ƒ34; åœ¨æˆ‘ä»¬å°†ä»»ä½•æ–‡ä»¶æ·»åŠ åˆ°ç¼“å˜ä¹‹å‰ï¼Œä»¥æŸç§æ–¹å¼è®©æ¯ä¸ªäººéƒ½åŒæ„æŸäº›universal hashing familyé‡å»ºæ ‘çš„ä¸åŒå“ˆå¸Œå‡½æ•°ï¼Œç›´åˆ°æˆ‘们得到一个ä¸å¤ªå¹³è¡¡çš„æ ‘ï¼ƒ34;)。 / p>
ä¸€æ—¦æž„å»ºäº†æ ‘ï¼Œæ— è®ºåŽæ¥é‡åˆ°å¤šå°‘文件å,我们都ä¸éœ€è¦æ›´æ”¹å®ƒã€‚ 我们åªåœ¨ä»Žç³»ç»Ÿæ·»åŠ æˆ–åˆ é™¤ç¼“å˜èŠ‚点时æ‰æ›´æ”¹å®ƒã€‚
对于æ°å¥½æ•£åˆ—为h(F)= 0(全零ä½ï¼‰çš„文件åF, æˆ‘ä»¬é€šè¿‡ä»Žæ ¹å¼€å§‹æ‰¾åˆ°å…·æœ‰æœ€é«˜æƒé‡ï¼ˆå¯¹äºŽè¯¥æ–‡ä»¶å)的缓å˜èŠ‚点,并且在å¯èƒ½çš„情况下始终采用æ£ç¡®çš„åæ ‘ã€‚ 如果这导致我们到一个没有æ£ç¡®åæ ‘çš„å†…éƒ¨èŠ‚ç‚¹ï¼Œé‚£ä¹ˆæˆ‘ä»¬é‡‡ç”¨å®ƒçš„å·¦åæ ‘ã€‚ 继ç»ï¼Œç›´åˆ°æˆ‘们到达没有左或å³åæ ‘çš„èŠ‚ç‚¹ - å³åŒ…å«æ‰€é€‰ç¼“å˜èŠ‚点Cçš„å称的å¶èŠ‚点。
当查找å为F的其他文件时,首先我们将其å称哈希以获得h(Fï¼‰ï¼Œç„¶åŽ æˆ‘ä»¬ä»Žæ ¹å¼€å§‹å¹¶åˆ†åˆ«å‘å³æˆ–å‘左(如果å¯èƒ½ï¼‰ç”±h(F)ä¸çš„下一ä½ç¡®å®šä¸º0或1。
ç”±äºŽæ ‘ï¼ˆé€šè¿‡æ–½å·¥ï¼‰ä¸æ˜¯ï¼†ï¼ƒ34;太ä¸å¹³è¡¡ï¼†ï¼ƒ34;, éåŽ†æ•´ä¸ªæ ‘ä»Žæ ¹åˆ°åŒ…å«æ‰€é€‰ç¼“å˜èŠ‚点Cçš„å称的å¶å在最å的情况下需è¦O(ln N)时间。
我们希望对于一组典型的文件å, 哈希函数h(F)"éšæœºï¼†ï¼ƒ34;åœ¨æ ‘çš„æ¯ä¸ªæ·±åº¦é€‰æ‹©å·¦æˆ–å³ã€‚ ç”±äºŽæ ‘ï¼ˆé€šè¿‡æ–½å·¥ï¼‰ä¸æ˜¯'#34;太ä¸å¹³è¡¡ï¼†ï¼ƒ34;, 我们希望æ¯ä¸ªç‰©ç†ç¼“å˜èŠ‚点缓å˜å¤§è‡´ç›¸åŒæ•°é‡çš„文件(大约4个左å³ï¼‰ã€‚
当æŸä¸ªç‰©ç†ç¼“å˜èŠ‚点出现故障时, æ¯ä¸ªäººéƒ½ä»Žå…¶æ ‘的副本ä¸åˆ 除相应的å¶èŠ‚点。 (æ¯ä¸ªäººä¹Ÿåˆ 除æ¯ä¸ªå†…部节点,然åŽæ²¡æœ‰å¶ååŽä»£ï¼‰ã€‚ 这并ä¸éœ€è¦ç§»åŠ¨ä»»ä½•å…¶ä»–缓å˜èŠ‚点上缓å˜çš„任何文件 - 它们ä»ç„¶æ˜ 射到它们始终执行的相åŒç¼“å˜èŠ‚点。 ï¼ˆæ— è®ºè¯¥æ ‘ä¸æœ‰å¤šå°‘å…¶ä»–èŠ‚ç‚¹è¢«åˆ é™¤ï¼Œæ ‘ä¸æœ€å³è¾¹çš„å¶èŠ‚点ä»ç„¶æ˜¯è¯¥æ ‘ä¸æœ€å³è¾¹çš„å¶èŠ‚点。)
例如,
....
\
|
/ \
| |
/ / \
| X |
/ \ / \
V W Y Z
使用这个O(log N)算法,当缓å˜èŠ‚点Xæ»äº¡æ—¶ï¼Œå¶åXä»Žæ ‘ä¸åˆ 除,并且其所有文件(希望相对å‡åŒ€åœ°ï¼‰åˆ†å¸ƒåœ¨Yå’ŒZ之间 - 没有æ¥è‡ªX端的文件在V或W或任何其他缓å˜èŠ‚点。 之å‰è¿›å…¥ç¼“å˜èŠ‚点V,W,Y,Z的所有文件继ç»è½¬åˆ°é‚£äº›ç›¸åŒçš„缓å˜èŠ‚点。
è¾å¦åŽè®¸å¤šç¼“å˜èŠ‚点å‘生故障或新缓å˜èŠ‚ç‚¹æ·»åŠ æˆ–ä¸¤è€…éƒ½å¯èƒ½ä½¿æ ‘“太ä¸å¹³è¡¡â€ï¼ƒ34; åœ¨æˆ‘ä»¬å°†ä¸€å †æ–‡ä»¶æ·»åŠ åˆ°ç¼“å˜ä¹‹åŽï¼Œé€‰æ‹©ä¸€ä¸ªæ–°çš„哈希函数是一个很大的麻烦,所以ä¸æ˜¯åƒæˆ‘们在最åˆæž„å»ºæ ‘æ—¶é‚£æ ·é€‰æ‹©ä¸€ä¸ªæ–°çš„å“ˆå¸Œå‡½æ•°ï¼Œä¹Ÿè®¸æœ€å¥½ä»¥æŸç§æ–¹å¼é‡æ–°å¹³è¡¡æ ‘é€šè¿‡åˆ é™¤å‡ ä¸ªèŠ‚ç‚¹ï¼Œç”¨ä¸€äº›æ–°çš„åŠéšæœºå称é‡å‘½å它们,然åŽå°†å®ƒä»¬æ·»åŠ 回系统。 é‡å¤ï¼Œç›´åˆ°ç³»ç»Ÿä¸å†â€œå¤ªä¸å¹³è¡¡â€ä¸ºæ¢ã€‚ (从最ä¸å¹³è¡¡çš„节点开始 - 缓å˜æœ€å°‘é‡æ•°æ®çš„节点)。
P.S .: 我认为这å¯èƒ½ä¸Žmcdowella的想法éžå¸¸æŽ¥è¿‘, 但是填写了更多细节以澄清(a)是,它是log(Nï¼‰ï¼Œå› ä¸ºå®ƒæ˜¯ä¸€ä¸ªäºŒå…ƒæ ‘ï¼Œå®ƒä¸æ˜¯å¤ªä¸å¹³è¡¡ï¼†ï¼ƒ34;,(b)它没有&#t;有"副本",以åŠï¼ˆc)当一个缓å˜èŠ‚点出现故障时,它ä¸éœ€è¦é‡æ–°æ˜ å°„ä¸åœ¨è¯¥ç¼“å˜èŠ‚点上的文件。
p.p.s .: 我éžå¸¸ç¡®å®šç»´åŸºç™¾ç§‘页é¢é”™è¯¯åœ°æš—示在O(log N)时间内å‘生了集åˆæ•£åˆ—的典型实现,其ä¸N是缓å˜èŠ‚点的数é‡ã€‚ 在我看æ¥ï¼ˆæˆ‘怀疑哈希的原始设计者),(在内部,没有通信)é‡æ–°è®¡ç®—网络ä¸æ¯ä¸ªèŠ‚点的哈希所花费的时间将是微ä¸è¶³é“的,并且ä¸å€¼å¾—担心。从æŸä¸ªè¿œç¨‹ç¼“å˜èŠ‚点获å–æ•°æ®æ‰€éœ€çš„时间。
我的ç†è§£æ˜¯ï¼Œé›†åˆæ•£åˆ—å‡ ä¹Žæ€»æ˜¯ä½¿ç”¨ç®€å•çš„线性算法实现,该算法使用O(N)时间,其ä¸N是缓å˜èŠ‚点的数é‡ï¼Œæ¯æ¬¡æˆ‘们获得新的文件åF并且想è¦é€‰æ‹©ç¼“å˜èŠ‚点该文件。
è¿™ç§çº¿æ€§ç®—法的优点是它å¯ä»¥ä½¿ç”¨æ›´å¥½çš„"哈希函数比上é¢çš„基于xorçš„w(),所以当一些物ç†ç¼“å˜èŠ‚点æ»äº¡æ—¶ï¼Œæ‰€æœ‰åœ¨çŽ°åœ¨æ»èŠ‚点上缓å˜çš„文件都应该在所有剩余节点之间å‡åŒ€åˆ†å¸ƒã€‚