老师,请问
- 在系统设计图过程中,我发现从Fetcher出来以后,拿到的html要进入到html storage中,然后还有一路是要进入到URL Queue。我听您课上说这个Queue是按顺序记录被fetch过的url。我想问一下,这个url queue的动机是什么,保存顺序又是为了什么,然后que里面的url什么时候用?
我猜测的答案是url是要出队的,然后最好是和要解析的html同时到达HTML processor中,parse html的时候,如果手里有这个html来自于哪个url的话,可以避免,如果出现如果源的url的话,那么就不要了,防止陷入死循环。但是这里有个问题,怎么确保que中的url和html同时到达HTML processor,还是说虽然这个queue叫url queue,其实里面带着html的文本呢。还是说,它里面带着html的查询信息,等url到了processor,再从big table里面拉相关的网页?这样也有可能出现url到了,big table哪里还没存进来呢的潜在的弊端。咋整?
- 在HTML之后还会有一个URL processor的模块,这里会利用到domain table 和history table。对于domain table的更新,课上说了对于经验的更改可以用一个batch job进行上新。但是history table里面有一个field是上一次爬去的时间,这个field如果在课前估算的qps上来看,说明对于这个table的写也是相对频繁的,对于这部分压力怎么能化解呢?而且,这个field在这个业务场景里面,需要有一定及时性么?感觉这个取决于对方网站的政策和重要性,我觉得这个表单如果也一杆子变成异步更新,会有一定的影响,这个怎么处理?