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

我要开发同款
匿名用户2019年10月14日
200阅读

技术信息

开源地址
https://gitee.com/xwlcn/Dodder
授权协议
GPL

作品详情

______________________________\___________/_____/______________///__\__/___/__\____/_/_////_///_////_///__///_____/\____/\__,_/\__,_/\___//_/一个支持集群部署的分布式DHT网络爬虫。快速开始环境依赖Nacos-1.1.3(https://acos.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/)MogoDB-3.6.8(https://www.mogodb.com/)Elasticsearch-7.3.2(https://www.elastic.co/)elasticsearch-aalysis-ik-7.3.2(https://github.com/medcl/elasticsearch-aalysis-ik)演示地址

https://dodder.cc

单机运行环境:

CPU:ItelXeoE3-1230v3-3.3GHz-4core(s)RAM:32GB-DDR3HardDrive(s):2x1TB(HDDSATA)Badwidth:Umetered@1Gbps整体架构

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

去重:dht-server中使用Redis第一次进行拦截过滤,dowload-service查询Elasticsearch进行二次判断去重,store-service中采用upsert进行第三次去重。实际上upsert已经完全可以进行去重了,前面两次是用来减少下载次数,提升爬取的速度。

部署

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

注意

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

功能介绍

________ _________________
___ __ \___________ /_____ /____________
__ / / / __ \ __...

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

评论