Chord环的原理和路由表

1.首先是覆盖网络的概念

 

•覆盖网络

–在一个含有N个节点的网络中,将整个网络看做一个圆环,节点按标识符从小到大顺时针组成一个环。对象分配在节点n上,n是从节点标识符大于等于对象标识的节点开始顺时针方向遇到的第一个活着的节点。

 

 

•Chord协议的数据定位

–网络中共可能存在N个节点,ID值0-N。组成一个环, Chord协议规定每个节点一定知道其后继节点,查找只能是顺时针进行。

–Chord为每个节点维护一个路由表,路由表的大小为m项(2m>=N),称其为 finger table。finger table保存的节点不是直接相邻的节点,而是按照ID间隔2i的关系排列(i表示表中的数组下标),表中包括m个后继节点和一个前驱节点。前驱节点即NodeID比本节点小的最近节点

–假设本节点 NodeID为X,则m个后继节点分别为 NodeID大于X+20,X+21,…,X+2m的第一个节点。其中第i项指向节点X的后继集中第一个活动的并满足条件大于等于n+2i-1的最小节点s

 

 

 

Chord协议的数据查找

–Chord协议在查询的过程中,查询节点将请求发送到附近(键值最接近)的节点上。收到查询请求的节点如果发现自身存储了被查询的信息,可以直接回应查询节点(这与一致性哈希完全相同);如果被查询的信息不在本地,就根据查询表将请求转发到与键值最接近的节点上。这样的过程一直持续到找到相应的节点为止。

–查询过程实际上就是折半查找的过程。虽然Chord中的每个节点维护了O(log(N))个信息,但是Chord协议提高了数据路由和定位的效率,从O(N)提高到了O(log(N)),查询时信息的转发也减少到了O(log(N))。

 

1、查看Key的哈希是否落在节点n和其直接successor之间,若是结束查找,nsuccessor即为所找

2、在nFinger表中,找出与hash(Key)距离最近且<hash(Key)nsuccessor,该节点也是Finger表中最接近Keypredecessor,把查找请求转发到该节点

3、继续上述过程,直至找到Key对应的节点

 

 

•Chord协议其他的一些要素

–节点的加入与退出

•节点的加入必须有一个节点推荐

–节点内保存的数据资料的迁移

–实际中多采用 (key, value) 对来实现,key决定存储的目标节点,value则是存储在目标节点的信息,可以是内容的索引,也可能是内容本身(如文件中的一个片段)

–超级节点

 

下面有几个定义:

  • 我们称Chord环上的每个节点为标志符
  • 如果某个Node映射到了某个标志符,则继续称该标准符为Node
  • 按顺时针,节点前面的成为前继(predecessor),节点后面的成为后继(successor);同理,第一个predecessor称之为直接前继,第一个successor称之为直接后继

如图:

Chord环

红色点为Node,蓝色为标志符。上面只是部分节点和标志符,以节点N1为例说明其Finger表中的successor:

 

Noith successorSuccessor
1N1+20 N18 
2N1+21 N18
3N1+22 N18
4N1+23 N18
5N1+24 N18
6N1+25 N45
7N1+26  N1
8N1+27 N1

 

 

 

 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值