Chinaunix首页 | 论坛 | 博客
  • 博客访问: 923815
  • 博文数量: 201
  • 博客积分: 8078
  • 博客等级: 中将
  • 技术积分: 2162
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-20 17:22
文章分类

全部博文(201)

文章存档

2013年(3)

2012年(11)

2011年(34)

2010年(25)

2009年(51)

2008年(77)

分类: 系统运维

2008-11-16 18:53:54

前些天大致看了khashmir的代码。对于网络down掉之后, 又再重新恢复, 将会对DHT产生什么影响呢? 具体的不是很清楚。 我的理解是:  down掉之后所有的DHT节点失效, 重新恢复之后这些 DHT节点会被新的节点代替, 也就是说很多本来是好的节点被从路由表中删除了。这似乎违背DHT的原则。我想到处理的方法估计是down掉的检测和延迟节点替换。

对付网络down掉的处理方式是: 可以认为收到数据报的前10s网络是好的。把所有的这期间超时的节点提交到路由表([延迟提交方式])。 另外认为一个节点被替换前如果最近的一次被ping(发送时间, 或者说最后一次的失败时间)超过了 15分, 则需要在被替换前重新ping一下([延迟替换方式])。

另外对khashmir的一些处理方式不是很明白:
1、多余的find_node操作, 我目前的理解是方便实现(不用多余接口), 以及可以增加把自己加入到对方的路由表中的机会。
2、把find_node操作返回的节点, 未经过确认就加入路由表中, 并且认为该节点是1970/00/00 00:00:00最后一次看到的节点。所以以后的插入操作需要被ping. 也就存在不必要的通讯。
3、ping cache的处理方式有些不明白, 到底是采用最旧的节点还是最近看到的节点替换。
4、网络down掉的处理没有明确的代码, 估计处理方式已经被隐藏了, 难道是因为 并发数是8的原因? 个人不认为难很好的解决问题。
阅读(1229) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~