我对名为 a的Btdigg.org"DHT search engine"
感兴趣。根据这篇文章,它不存储任何内容,甚至没有数据库。那么它是如何工作的呢?它不需要像其他普通搜索引擎一样收集元信息并将它们存储在数据库中吗?用户提交查询后,它会扫描 DHT 网络并“实时”返回结果?这可能吗?
4 回答
我对 BTDigg 没有具体的见解,但我认为没有数据库(或类似数据库的东西)的说法是错误的陈述。那篇文章的作者可能指的是您在传统的 torrent 站点中可能遇到的更具体的内容,例如实际的 .torrent 文件存储在该站点中。
这就是类似 BTDigg 的网站的工作方式:
- 你运行了一堆 DHT 节点,特别是为了对 DHT 流量进行“窃听”,将其引入人们谈论的信息散列。
- 加入这些群并使用 ut_metadata 扩展下载元数据(.torrent 文件)
- 索引您在其中找到的信息,将其映射到 info-hash
- 为该索引提供前端
如果你想稍微奢侈一点,你也可以定期刮取你知道的信息哈希,以随着时间的推移收集统计数据,也许还可以找出群体何时消亡,应该从索引中删除。
因此,您不存储 .torrent 文件或任何内容的说法是正确的。
实时搜索 DHT 是不现实的,因为 DHT 不是围绕关键字搜索组织的,您需要“在后台”不断地构建和维护索引。
编辑:
自此答案以来,已在一些 DHT 客户端中实施了优化(BEP 51),可让您查询它们托管的信息散列,从而显着降低索引成本。
要深入了解 DHT 及其应用,请参阅 Scott Wolchok 的论文和演示文稿“Crawling BitTorrent DHTs for Fun and Profit”。他将自主搜索引擎的想法作为他对 DHT 安全性研究的旁注提出:
他论文的PDF:
他在 DEFCON 18 上的演讲(第 1 部分和第 2 部分)
https://www.usenix.org/legacy/event/woot10/tech/full_papers/Wolchok.pdf
第 3 节中使用的方法似乎表明需要一个数据库来存储所有 torrent 数据。虽然性能更好,但它可能不是真正的 DHT 搜索引擎。
第 8 节虽然效率较低,但似乎是一个 DHT 搜索引擎,只要关键字是存储值。
从第 3 节,引导 Bittorent 搜索:
“该系统通过将每个 torrent 的文件名和描述的连接视为典型信息检索模型中的文档并使用倒排索引将关键字与 torrent 匹配来处理用户查询。这具有得到流行的开源关系良好支持的优势DBMS。我们根据种子的受欢迎程度对搜索结果进行排名,我们可以从 DHT 中列出的对等点数量推断出来"
来自第 8 节,相关工作:
使用 DHT 分布搜索的常用方法是使用倒排索引,通过将每个(关键字、匹配文档列表)对存储为 DHT 中的键值对。琼等人。[17]描述了这种方法并指出了它的性能问题:Zipf在文件之间的关键字分布导致负载平衡非常倾斜,文档信息为文档中的每个关键字复制一次,并且在分布式环境中难以对文档进行排名
它分为两个步骤。
要实现 bep_0005 协议得到了 infohash,你不需要实现所有协议,只需要现在
find_node (request)
,get_peers (response)
,announce_peer (response)
. 这是我的一个开源dhtspider。实现bep_0009协议得到metainfo索引吧,这里是我自己的一个bittorrent搜索引擎,每天可以得到唯一的infohash 300w+,有效metainfo 50w+。