Dodder 分布式 DHT 网络爬虫开源项目

我要开发同款
匿名用户2019年10月14日
41阅读
开发技术Java
所属分类应用工具、网络爬虫
授权协议GPL

作品详情

______________________________\___________/_____/______________///__\__/___/__\____/_/_////_///_////_///__///_____/\____/\__,_/\__,_/\___//_/一个支持集群部署的分布式DHT网络爬虫。快速开始环境依赖Nacos-1.1.3(https://nacos.io)Zookeeper-3.5.5(https://zookeeper.apache.org/)Kafka-2.12-2.3.0(https://kafka.apache.org/)Redis-2.6(https://redis.io/)MongoDB-3.6.8(https://www.mongodb.com/)Elasticsearch-7.3.2(https://www.elastic.co/)elasticsearch-analysis-ik-7.3.2(https://github.com/medcl/elasticsearch-analysis-ik)演示地址

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

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论