TL;DR
- 大规模抓取首先在协调、重复工作、验证和重试方面失败,而不是原始请求速度。
- 使用耐用队列、幂等作业、按域预算、静态优先检索、有限浏览器池和仅追加结果。
- 按政策和目标行为进行分区,检查每个阶段,并计算每个接受页面的成本。
- 托管抓取和代理操作可以消除基础设施工作,但不能取代数据合同或业务验证。
将抓取器扩展到数百万个页面意味着扩展决策和恢复路径,而不是发起数百万个同时请求。
最先出现的瓶颈
重复的 URL 会增加工作量,重试会放大事件,浏览器工作者耗尽内存,特定目标的限制会造成队首阻塞,而不完整的页面则被视为成功。Nstdata Crawl 可以删除检索层的部分内容,但架构仍然需要幂等性和验证。HTTP 语义规范 有助于分类响应;OpenTelemetry 有助于连接跟踪和度量;爬虫排除协议 指导爬取政策。
生产架构
discovery → canonicalization → policy admission → durable queue → static workers → browser escalation → extraction → semantic validation → append-only storage → export
每个作业需要一个由规范 URL、政策版本和请求的工件派生的稳定 ID。重放消息不得创建第二个已接受的记录。




