请问 老师给的这个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数据特别少的热点问题,以至于一台服务器都内存都装不下
- URL Frontier 会放一些 Seed URL,比如一些大的门户网站
- 同上
- 新的 domain 在爬之前是不知道怎么判断优先级的,我们可以设一个默认优先级。
- 是的,有的 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 个赞
