H******7 发帖数: 1728 | 1 大家不是说要多准备设计么,来一道google设计面试题目
大家讨论讨论
如果实现像 facebook 一样的 activity broadcast.
一个朋友 f1 更新一条信息后,他的所有朋友都要看到这条信息。
条件:
1. 朋友数量极大。
2. 有的朋友在线,有的不在线,不在线的登陆后要能看到。
3. 如果储存空间有限,如何处理。 |
m*****n 发帖数: 2152 | 2 不会设计,但是有点想法,
1. 朋友数量极大。
就是告诉不能clone消息,fan out要时间,要先fan out在线的?
2. 有的朋友在线,有的不在线,不在线的登陆后要能看到。
就是说,在线的profile里面有这条信息的link,不在线的profile不用更新,登录的时
候更新。不过好像不对,facebook用的是动态网页,都是php动态生成的,不登入不用
生成。
3. 如果储存空间有限,如何处理。
这个指是memcache,还是disk? memcache,只存active的?其他的扔到disk上的db里
面? |
x*******6 发帖数: 262 | |
m*****n 发帖数: 2152 | 4 这个哪儿有答案?
【在 x*******6 的大作中提到】 : 可以按照fb的设计newsfeed来答吧
|
x*******6 发帖数: 262 | |
p*****2 发帖数: 21240 | 6 可以参照twitter
基本就是靠redis
【在 H******7 的大作中提到】 : 大家不是说要多准备设计么,来一道google设计面试题目 : 大家讨论讨论 : 如果实现像 facebook 一样的 activity broadcast. : 一个朋友 f1 更新一条信息后,他的所有朋友都要看到这条信息。 : 条件: : 1. 朋友数量极大。 : 2. 有的朋友在线,有的不在线,不在线的登陆后要能看到。 : 3. 如果储存空间有限,如何处理。
|
r*****e 发帖数: 792 | 7 顶大牛!
【在 p*****2 的大作中提到】 : 可以参照twitter : 基本就是靠redis
|
t*****3 发帖数: 112 | 8 先讨论fan-out和pull两种模式的优劣,比如前者没有availability问题,但是需要大
量随机disk seek操作,朋友数极大可能会产生backlog,就需要考虑各种write优化的
DB,比如Cassandra或者HBase等。后者没有大量随机disk seek问题,但是有
availability问题。
FB在其news feeds中采用的pull模式,找找相关视频、slides过一遍就懂了,看看
services怎么划分,采用了几个模块,节约空间,其中一些交互是用id。
储存空间有限?先问问面试官怎么约束?是内存有限还是硬盘有限?是单机有限还是整
个DC有限。
【在 H******7 的大作中提到】 : 大家不是说要多准备设计么,来一道google设计面试题目 : 大家讨论讨论 : 如果实现像 facebook 一样的 activity broadcast. : 一个朋友 f1 更新一条信息后,他的所有朋友都要看到这条信息。 : 条件: : 1. 朋友数量极大。 : 2. 有的朋友在线,有的不在线,不在线的登陆后要能看到。 : 3. 如果储存空间有限,如何处理。
|