______________________________\___________/_____/______________///__\__/___/__\____/_/_////_///_////_///__///_____/\____/\__,_/\__,_/\___//_/一个支持集群部署的分布式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







评论