https://dodder.cc
单机运行环境:
CPU:IntelXeonE3-1230v3-3.3GHz-4core(s)RAM:32GB-DDR3HardDrive(s):2x1TB(HDDSATA)Bandwidth:Unmetered@1Gbps整体架构说明:项目中的dht-server、download-service、store-service都是可以集群部署的, dht-server负责爬取DHT网络中的info_hash,然后写入到Kafka消息队列中去,download-service 负责读取info_hash信息到指定ip去下载种子文件的metadata(集群部署时,注意设置好kafka主题的分区数量,分区数量>=服务部署个数)。下载好的metadata解析出文件信息封装成Torrent对象写入Kafka的 torrentMessages主题中去,store-service负责读取Torrent存储到Elasticsearch中去。
去重:dht-server中使用Redis第一次进行拦截过滤,download-service查询Elasticsearch进行二次判断去重,store-service中采用upsert进行第三次去重。实际上upsert已经完全可以进行去重了,前面两次是用来减少下载次数,提升爬取的速度。
部署前面的环境全部搭好之后,clone整个项目到本地,如果是集群部署请修改各个服务模块里面的一些ip地址参数,我这里服务器有限,只拿了一台服务器单机部署,集群部署有问题的欢迎提issue。
注意dht-server需要公网IP才能爬取到info_hash
评论