(3)Chord:指针表 N1 指针表 N8+1 N14 N56 N8 N8+2 N14 K10 N8+4 N14 N8+8 N21 N51 N8+16 N32 N14 N8+32 N42 N48 节点S的第i个指针 N21 successor[n+2^(i-1)], 1≤i≤m K38 K24 N38 N32 K30 m=6 16
16 (3) Chord:指针表 N56 指针表 N8+1 N8+2 N8+4 N8+8 N8+16 N8+32 N14 N14 N14 N21 N32 N42 节点S的第i个指针 successor[n+2^(i-1)], 1≤i≤m
(4)Chord:基于指针表的扩展查找过程 Lookup(K54) 指针表 N1 N8+1 N14 K54 N8+2 N14 N8 N56 N8+4 N14 K10 N8+8 N21 N51 N8+16 N32 N14 N8+32 N42 指针表 N48 N42+1 N48 N42+2 N48 N21 N42+4 N48 N42 K24 N42+8 N51 K38 N42+16 N1 N38 N42+32 N14 N32 K30 指针表中有O(Il0g)个节点 m=6 查询经过0(IogN)跳 17
17 (4) Chord:基于指针表的扩展查找过程 指针表中有O (log N)个节点 查询经过O (log N)跳 N56 K54 指针表 N8+1 N8+2 N8+4 N8+8 N8+16 N8+32 N14 N14 N14 N21 N32 N42 Lookup(K54) 指针表 N42+1 N42+2 N42+4 N42+8 N42+16 N42+32 N48 N48 N48 N51 N1 N14
(S)Chord:网络波动(Churn) ■Churn由节点的加入、 退出或者失效所引起 ■每个节点都周期性地运行探测协议来检测新 加入节点或退出/失效节点,从而更新自己 的指针表和指向后继节点的指针 18
18 (5) Chord:网络波动(Churn) Churn由节点的加入、退出或者失效所引起 每个节点都周期性地运行探测协议来检测新 加入节点或退出/失效节点,从而更新自己 的指针表和指向后继节点的指针
(6 Chord:节点加入 新节点事先知道某个或者某些节点,并且通过 这些节点初始化自己的指针表,也就是说,新节 点将要求已知的系统中某节点为它查找指针表 中的各个表项 ■在其他节点运行探测协议后,新节点N将被反映 到相关节点的指针表和后继节点指针中 ■新结点N的第一个后继结点将其维护的小于N节 点的D的所有K交给该节点维护 19
19 (6) Chord:节点加入 新节点N事先知道某个或者某些节点,并且通过 这些节点初始化自己的指针表,也就是说,新节 点N将要求已知的系统中某节点为它查找指针表 中的各个表项 在其他节点运行探测协议后,新节点N将被反映 到相关节点的指针表和后继节点指针中 新结点N的第一个后继结点将其维护的小于N节 点的ID的所有K交给该节点维护
(⑦)Chord:节点退出/失效 当Chord中某个节点M退出/失效时,所有在指针 表中包含M的节点将相应指针指向大于M节点D 的第一个有效节点,即节点M的后继节点 ■为了保证节点M的退出/失效不影响系统中正在进 行的查询过程,每个Chord节点都维护一张包括r 个最近后继节点的后继列表。如果某个节点注意 到它的后继节点失效了,它就用其后继列表中第 一个正常节点替换失效节点 20
20 (7) Chord:节点退出/失效 当Chord中某个节点M退出/失效时,所有在指针 表中包含M的节点将相应指针指向大于M节点ID 的第一个有效节点,即节点M的后继节点 为了保证节点M的退出/失效不影响系统中正在进 行的查询过程,每个Chord节点都维护一张包括r 个最近后继节点的后继列表。如果某个节点注意 到它的后继节点失效了,它就用其后继列表中第 一个正常节点替换失效节点