查看: 3413| 回复: 9
跳转到指定楼层
上一主题 下一主题
收起左侧

[题目讨论] 问个web crawler的题

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
非常常见的题,尤其是FB的design面试10K个machine 来crawler整个web


我有两个疑问
1. url需要dedup, 很多youtube或者blog的设计里面都用Database或者bloom filter. 可是10billion 的url不是可以fit 进distributed cache吗?大概100GB左右, 比如redis cluster

2. 通常要求worker load balance, 为何不用message queue? 比如rabbitmq. dedup之后直接塞进去mq然后worker sub不行吗



这两个疑问困扰我很久了,先谢过

上一篇:求组队mock system design
下一篇:求问Design Messenger 的Follow up 问题
推荐
pxuu 2020-9-14 07:27:03 | 只看该作者
全局:
如果是Facebook的那个web crawler的话,我觉得应该用distributed hash table, 完全decentralized。
在这个p2p的架构下,每个machine有自己的storage和cache,每个机器可以有自己的dedup hash table(当然每个机器用bloom filter也行,更省空间,但是我觉得没必要,毕竟有false positive)。
关于workload balance,可以用consistent hashing的概念,每个机器map到多个virtual node,然后尽量均匀地hash到一个ring上,每个crawling job也map到这个ring上,这样workload能尽量平均。

评分

参与人数 1大米 +1 收起 理由
tm1234 + 1 赞一个

查看全部评分

回复

使用道具 举报

全局:
这题我看地理的讨论都是说要p2p 要用到Distributed hash table
回复

使用道具 举报

全局:
用redis判重,用kafka存url,多个消费者读mq作bfs,完全可以。在内存不够大,mq不够快的古代,会被认为不现实。

补充内容 (2020-8-1 11:31):
我也同样困扰,期待高手标准答案。
回复

使用道具 举报

🔗
 楼主| ninjax 2020-8-1 12:56:06 来自APP | 只看该作者
全局:
sweetkonfyt 发表于 2020-07-31 20:30:20
用redis判重,用kafka存url,多个消费者读mq作bfs,完全可以。在内存不够大,mq不够快的古代,会被认为不现实。

补充内容 (2020-8-1 11:31):
我之前也想用Kafka做message queue,但是那样的话要做到10K partition来match machine. 每个partition没法load balance
回复

使用道具 举报

全局:
ninjax 发表于 2020-07-31 21:56:06
我之前也想用Kafka做message queue,但是那样的话要做到10K partition来match machine. 每个partition没法load balance
能不能这样-
如果有10k host,我们可以有5000个 producer/consumer(同一台机器), 2500个broker (一主一备)。每个broker 10个partition,每个consumer listen to 5个partition.
回复

使用道具 举报

🔗
KevinSAP 2020-8-21 15:53:53 | 只看该作者
全局:
感兴趣关注一下
回复

使用道具 举报

🔗
yulian 2020-9-19 15:10:41 | 只看该作者
全局:
Clarification:
1. p2p架构还是centralized architecture? 实现方式差别好多的。
回复

使用道具 举报

🔗
tm1234 2020-9-19 23:15:51 来自APP | 只看该作者
全局:
pxuu 发表于 2020-09-13 16:27:03
如果是Facebook的那个web crawler的话,我觉得应该用distributed hash table, 完全decentralized。
在这个p2p的架构下,每个machine有自己的
请问用p2p的主要原因是为了load更平均对吗?
回复

使用道具 举报

🔗
pxuu 2020-9-20 06:11:29 | 只看该作者
全局:
tm1234 发表于 2020-9-19 23:15
请问用p2p的主要原因是为了load更平均对吗?

用p2p主要是因为Facebook的这个面试题的题目限定,要不然用centralized的方法(比如task queue)应该也可以实现不错的load balance
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表