作者klb0905 (klb)
看板P2PSoftWare
标题Re: [骡子] 乾脆废了ED2K...
时间Mon Sep 24 14:38:37 2007
※ 引述《sarsman (钱全输光了...)》之铭言:
: 现在,骡子已经没有真正能保证安全、可靠的伺服器
: 大家为了一个新的安全伺服器不断的讨论、寻找
: 可是,又找到一个安全的伺服器又怎样?
: 这个伺服器能够永永远远的经营下去吗?
: DS已经是一个最好的例子
: 再好的伺服器总有一天也会被抄
: 我认为emule官方应该要称这个时候把心力放在KAD,把KAD网路做的更加完善
: 最後让骡子变成一个纯KAD的P2P软体
: 小弟第一次发表感想,请不要鞭太大力
我不知道eMule的KAD实作
我只就我所了解的理论讨论一下
KAD这个架构有它先天的问题
他也算是DHT的一种变化
如果要拿来做keyword search
1.keyword index会分散到各peer上
2.相同keyword的index会交给同一个peer
3.储存相似关键字的peer,在DHT网路上不会在附近
这导致想做更有弹性的关键字搜寻非常困难
所以不太可能会有万用字元的功能可用......
以下是较详细的描述,懒得看的人可以跳过
先说明3,以KAD来看,它的hash function是用SHA-1
原则上,两个相似的关键字,所取得的key会相差很大
所以若我们打"Car","car","cars","CAR"...,etc.
会各取得截然不同的key
根据key,DHT网路会找到一个peer
所以原则上,虽然是不同peer,但它们会根据同样的关键字找到相同的peer
因此,当一个peer加入DHT网路,会将自己拥有的档案资讯
根据不同的keyword,交给不同的peer管理index
这样其他peer就可以进行keyword search.....
因为DHT的topology是根据各自的algorithm决定
所以即使非常类似的关键字,通常负责管理index的peer也相隔非常远
那问题就是,如果user想进行keyword search
他必须使用非常精准的keyword
例如:输入"car"找不到"cars","Car",...,etc.等资讯
有方法可以简单的处理掉这个问题
判断单字时态或单复数,强制做成某种型态使用
一律转成大写或小写处理
但万用字元就不同了
一个user如果输入"cos*",它要怎麽做?
我能想到的有两种方法:
1.由application自己想办法透过字典档
自动把"cos*"转成"coser","cosplay",...,etc.
不过想找的字不见得在字典档里
另外,这样做"极度"没有效率
2.再建一个overlay network(类似freenet或gnutella)
根据keyword类似程度相连
使用万用字元时就用这个overlay network搜寻
不过这种头痛医头脚痛医脚的方式不但没效率,还非常蠢
但很明显的,上述两个方法都只是硬在这个架构下解决问题
效率跟效果恐怕都好不到那去
DHT的很多问题可以慢慢改善
关键字搜寻效果可以越来越好
效率我相信也会越来越好
可是我也相信,万用字元应该不太可能加入
勉强加入的效果,效率恐怕也不会太好
中文或日文,eMule有时断字做的有点两光的情况下
有时必须得用万用字元的方式才找的到档案
Server还是有它不可取代的好处.......
--
讲的很乱.....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.105.201.166
1F:推 kira925:不是DHT学KAD吗? 印象中是先有kad然後bt软体商开发dht的 09/24 14:40
2F:推 sarsman:jyhfang大之前打了一篇文章,在10492篇,里面有讲到KAD的 09/24 14:46
3F:→ sarsman:一些知识,我觉得对於KAD的推广很有用 09/24 14:47
4F:推 amateratha:话说之前那篇还没被M.... 09/24 17:37
5F:→ sarsman:M吧!版主呢? 09/24 17:52