Redian新闻
>
脸家系统设计,web crawler, 机器之间不能通信。 (转载)
avatar
脸家系统设计,web crawler, 机器之间不能通信。 (转载)# Joke - 肚皮舞运动
c*n
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: ravichouhan (ravi!), 信区: JobHunting
标 题: 脸家系统设计,web crawler, 机器之间不能通信。
发信站: BBS 未名空间站 (Thu Jun 29 02:17:19 2017, 美东)
被问了这个crawler的问题,大概就是给你10K个机器,每个机器有seed url,然
后要爬1B的url,机器之间不能通信,问你怎么样每个机器才能平均的分任务。同时保
证每个网站只能被crawler一次。
奇怪的设计题,完全没有master,就是很多事情都不好做了
纠缠了十几分钟后突然意识到这完全是个brain teaser式的system design,然后想到
了类似UUID hashing,对拿到的url做hash,事先规定好每台机器都只做那些hash
value的job,如果hash的值跟当前机器的预定值不一样就skip,一样才继续crawl
算是蒙混过关,又问了两个follow up问题,第二个没想好时间就到了
1. 如何判断crawling结束
2. 如果一半机器比另一半快怎样分配
请问大家什么思路?
avatar
c*n
2
这题的follow up怎么做啊
怎么都想不出来 尤其是第二个,
机器快没鸟用 如果分配给快的都是土豆服务器上的链接,你本身再快也没用啊
没一个挥鞭子的 互相又不能交流 这效率肯定很低啊
avatar
y*i
3
为啥要设定“机器之间不能通信”这个条件?
avatar
V*n
4
把url编码然后加总得一数字,把这个数字除以crawler数量得到余数,一号crawler爬
余数为1的url,二号crawer爬余数为2的....
avatar
c*n
5
你这个只解决了 最开始分配的问题
之后的才是麻烦的

【在 V********n 的大作中提到】
: 把url编码然后加总得一数字,把这个数字除以crawler数量得到余数,一号crawler爬
: 余数为1的url,二号crawer爬余数为2的....

avatar
c*n
6
我也奇怪这点 不是知道是不是原lz转述时候的问题

【在 y****i 的大作中提到】
: 为啥要设定“机器之间不能通信”这个条件?
avatar
s*d
7
按快慢加权不就好了。
编号后除以总速度,每个机器余数区间按速度比例。

【在 c******n 的大作中提到】
: 你这个只解决了 最开始分配的问题
: 之后的才是麻烦的

avatar
o*p
8
雪特,这第一题小脑也知道hash一下了,居然想十多分钟…
第二题不懂

【在 c******n 的大作中提到】
: 我也奇怪这点 不是知道是不是原lz转述时候的问题
avatar
c*n
9
嗯 第一题没啥好说的 hash了均分了拉到 各种优化都容易有坑
而且本身crawler,分开点弄还不怕被封IP
但是第二个这个完全不知道怎么搞

【在 o****p 的大作中提到】
: 雪特,这第一题小脑也知道hash一下了,居然想十多分钟…
: 第二题不懂

avatar
V*n
10
如果按照余数分配,基本上是非常均匀的,怎么可能出现follow up的问题二呢?如果
知道总url数,follow up的问题一也就不存在了吧
avatar
V*n
11
如果是crawler本身机器快慢或者crawler的算法不同引起的,那应该管用,如果是url
的内容引起的,这样不好使吧


: 按快慢加权不就好了。

: 编号后除以总速度,每个机器余数区间按速度比例。



【在 s**********d 的大作中提到】
: 按快慢加权不就好了。
: 编号后除以总速度,每个机器余数区间按速度比例。

avatar
w*m
12
hash也有问题,因为1b url不是事先知道的,要用dfs去网上crawl下来去发现新的url
但是如果发现一个URL不在自己的hash范围内,就不去crawl,那就没法去接着发现新的
属于自己的url。很多机器很快就得stop
他还要求每个url只能被crawl一遍,更麻烦。

【在 c******n 的大作中提到】
: 嗯 第一题没啥好说的 hash了均分了拉到 各种优化都容易有坑
: 而且本身crawler,分开点弄还不怕被封IP
: 但是第二个这个完全不知道怎么搞

avatar
a*e
13
尼玛1B,iPV4都遍历了
大家按ip分就是了,快慢机加个权,就是设个单位速度v
每台机器是nv,mv,求和总速度m+n,ip直接求余,然后按m,n分割
麻烦的是网页的密度的处理速度这种有动态的,还有循环的会不会爬死?
不过可以再加个层数?

【在 c******n 的大作中提到】
: 这题的follow up怎么做啊
: 怎么都想不出来 尤其是第二个,
: 机器快没鸟用 如果分配给快的都是土豆服务器上的链接,你本身再快也没用啊
: 没一个挥鞭子的 互相又不能交流 这效率肯定很低啊

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。