________      _________________
___  __ \___________  /_____  /____________
__  / / /  __ \  __  /_  __  /_  _ \_  ___/
_  /_/ // /_/ / /_/ / / /_/ / /  __/  /
/_____/ \____/\__,_/  \__,_/  \___//_/     一个支持集群部署的分布式 DHT 网络爬虫。

快速开始

环境依赖

announce_peer messages: announce_peer

单机运行环境:

更新日志

整体架构

架构图

说明:项目中的dht-serverdownload-servicestore-service都是可以集群部署的, dht-server负责爬取 DHT 网络中的 info_hash,然后写入到 Kafka 消息队列中去,download-service 负责读取 info_hash 信息到指定 ip 去下载种子文件的 metadata(集群部署时,注意设置好 kafka 主题的分区数量, 分区数量 >= 服务部署个数)。下载好的 metadata 解析出文件信息封装成 Torrent 对象写入 Kafka 的 torrentMessages主题中去,store-service负责读取 Torrent 存储到 Elasticsearch 中去。

去重:Redis 第一次去重,MongDB 与 Elasticsearch 采用 upsert 插入数据防止重复插入。

部署

前面的环境全部搭好之后,clone 整个项目到本地,如果是集群部署请修改各个服务模块里面的一些 ip 地址参数, 我这里服务器有限,只拿了一台服务器单机部署,集群部署有问题的欢迎提 issue。

注意

dht-server 需要公网 IP 才能爬取到 info_hash