[web crawler] 系统在最初状态的data flow和entry point

请问 老师给的这个We crawler的Design 在刚开始启动的时候
1.系统在初始状态下(一次都没爬过) 哪里是entry point? 我理解是url frontier
2. url frontier 在一开始怎么知道要fetch哪些domain的url? 我理解是domain policy DB会预先存一些要爬的domain
3. 如何爬出了一些新的domain不在domain policy DB如何处理优先级?
4. 请问single host queue是指的同一个queue吗里面的url都是一个domain的? 如果是,会不会出现有点queue数据特别多因为高频, 有的queue数据特别少的热点问题,以至于一台服务器都内存都装不下

  1. URL Frontier 会放一些 Seed URL,比如一些大的门户网站
  2. 同上
  3. 新的 domain 在爬之前是不知道怎么判断优先级的,我们可以设一个默认优先级。
  4. 是的,有的 Queue 数据会比其他的多,但这里内存问题不大,因为整个 URL Frontier 的 URL 的数据量不大,可以把它想成一个 buffer,我们可以通过控制 Fetcher 的数量,将 URL Frontier 的数据量级控制到很小的范围内 (< 10k)

这里的single host queue我还有一个小问题,就是如果只是放在一台机器里面,那这样系统就有single point of failure了?

这些queue能不能用已经有的更reliable的message组件?像是rabbitmq?我记得rabbitmq应该自带复制功能

用 rabbitMQ 来 model 是可以的。如果需要保证 URL Frontier high availability 的话可以用两台,其中一台备份。

1 个赞