[Web Crawler] 各组件之间通讯

请问老师

  1. HTML processor是怎么把urls发送给URL frontier的? 比如html processor每generate一个url 就rpc 发送给url frontier吗?那按照之前的资源估算,qps会达到40k qps?

  2. URL frontier 又是怎么把urls 发送给 Fetcher 的呢? Fetcher里面的实现是有一个worker pool, 每收到一个请求就schedule一个worker来处理新到达的请求吗?

  3. Fetcher enqueue 一些urls到url queue里面,queue会以rpc的方式call html processor还是html processor会去pull from the queue?

  4. 按资源估算, 总共有5B的数据 every 2 weeks, 为什么html storage可以放在cache里? 是作为general cache的use case, 每次load 一部分到cache里吗?

  5. 在最终的系统设计图上, web page crawl history 也放在cache里,也是作为general cache的use case, load 一部分到cache里吗?

多谢老师答疑解惑!

  1. 每个HTML里面爬出来的 URL 可以考虑 batch 发送。
  2. 当中有一个 Message Queue 当中继,fetcher 从 MQ 里拿了任务并执行。
  3. 都可以。如果用 Kafka 的话,HTML processor 会主动从 Kafka 拿。
  4. Cache 里只存刚刚爬完,很快要进行 process 的 HTML。是 general cache。
  5. Webpage Crawl History 读取比较频繁,这是 query cache,常读的放 cache。