第三篇 分布式改造:多机协作

单机原型跑稳之后,量级开始追上来。每天三万页的目标压上去,单机的带宽、抓取时长和容错都到了极限:一次机器重启就是半小时任务中断,一个目标站限速会拖慢整个窗口。这一篇记录我们把单机平台拆成 master 加 worker 的分布式架构的全过程。

3.1 节讲 master 与 worker 的任务分发设计,这是整个分布式改造的骨架;3.2 节讲并发与限速,如何在多机环境下做礼貌策略,不把目标站惹毛;3.3 节讲断点续爬,任务状态存哪里、重启之后怎么接着跑;3.4 节讲多机日志归集,把四散在每台 worker 上的日志统一收进日志服务 CLS。

改造的原则还是老样子:先拆能拆的,后拆难拆的。调度与执行拆开是最无痛的一步,因为 2.2 节的 URL 仓库和 2.3 节的任务状态表已经为它铺好了路。真正难的是状态一致性,全部集中在 3.3 节。如果你只读一节,读 3.3。

延伸阅读