微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在分布式网络爬虫中分配 URL 边界和爬虫工人?

如何解决如何在分布式网络爬虫中分配 URL 边界和爬虫工人?

我已经阅读了一些关于设计分布式网络爬虫的文章,但仍然有一些与架构相关的问题,尤其是分布式 URL 前沿和爬虫工作器。目前,我有两个选择:


  1. URL Frontier 和爬虫 worker 是独立的微服务,而 URL Frontier 会根据一些 hash 或规则将要爬取的 URL 发送给 worker,理想情况下,相同 IP 的 URL 应该转到同一个 worker(为了控制 QPS 并避免重复TCP 连接)。

但是通过这种方式,爬行的 worker 似乎不是无状态的,每个 worker 都为未访问的 URL 维护一些队列,一个 worker 如何从故障中恢复?另外,我觉得工作人员应该是无状态的,这样更有利于可扩展性。


  1. 使用分布式消息队列(例如 Kafka)作为 URL 边界,爬行工作者从队列中获取 URL,我猜拉队列适合这种情况。

但是对于这个解决方案,我不确定如何保证相同的 IP 可以转到同一个 worker,Kafka 等消息队列似乎没有这种自定义路由策略?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。