由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 这两个设计题如何答?
相关主题
秒杀设计题系统设计题怎么准备
FB设计题求教。Pinterest陶涛:三个教训和三个发展选择 (转载)
大家不是说要多准备设计么,来一道google设计面试题目来道A设计题大家头脑风暴一下
老年马工赶快去 fbredis的硬伤是不是 无法scale,很难用在cluster上
chat server long pull - facebook 面经dropbox一道题
问个设计的题目【工作机会】Sr.PHP Developer,Shanghai,China (适合想回中国发展的朋友)
google 面经design uber这题到底怎么答!
pre-IPO 公司招聘3一道有意思的设计面试题--天气预报Service
相关话题的讨论汇总
话题: chatting话题: 设计话题: news话题: feed话题: chat
进入JobHunting版参与讨论
1 (共1页)
c***g
发帖数: 472
1
1 如何设计facebook的news feed?
2 如何设计facebook的real time chatting system?
读了一圈还是没有头绪,不知道是否哪位大侠讲讲这两设计题的要点?
M**a
发帖数: 848
2
马克。同不懂。
c***g
发帖数: 472
3
求其他大侠指点

【在 M**a 的大作中提到】
: 马克。同不懂。
z****e
发帖数: 54598
4
real time chatting你本机上建一个接收message的server就好了
js都可以用,在server side保留客户端的ip addresses
然后接收到一个message之后广播出去酱紫
news feed从来没用过,这个怎么用?
w**z
发帖数: 8232
5
real time chatting 不是很懂,我们用open sourced, 很是蛋疼。connection 有时就
断了, 还会丢包。不知道有啥好的开源软件。
feed 我们用Cassandra, news 发生的时候, 就fanout ,写入Cassandra. 至于 news
item要不要denormalize, 看具体情况。 如果一个user 有很多 friends, 你可能要选
择性的fanout,, 要不系统压力太大。

【在 c***g 的大作中提到】
: 1 如何设计facebook的news feed?
: 2 如何设计facebook的real time chatting system?
: 读了一圈还是没有头绪,不知道是否哪位大侠讲讲这两设计题的要点?

z****e
发帖数: 54598
6
real time chatting如果自己写估计也不会太麻烦吧?
无非几个api,选一下协议,会丢包的话,多verify几次
在server side建一个sequence,然后对每一个msg分配一个#
client side不仅发,同时还需要验证收到msg的#是否正确
比如之前收到的是1,下一个收到的是3,那么中间就丢了2,向服务器发请求
要求重传,服务器收到这个请求之后,piggybag之前的msg,这里就是2和3一起
发给客户端,所以服务器需要对msg做一定的缓存,等chat结束之后
再从内存中删除,可以用点redis之类的,以缓解jvm内存的压力
我们刚用这种方式做了一个射击游戏的prototype
各种要求肯定比chatting要严格得多,效果很不错
所以如果我们ok的话,chatting应该也ok

news

【在 w**z 的大作中提到】
: real time chatting 不是很懂,我们用open sourced, 很是蛋疼。connection 有时就
: 断了, 还会丢包。不知道有啥好的开源软件。
: feed 我们用Cassandra, news 发生的时候, 就fanout ,写入Cassandra. 至于 news
: item要不要denormalize, 看具体情况。 如果一个user 有很多 friends, 你可能要选
: 择性的fanout,, 要不系统压力太大。

w**z
发帖数: 8232
7
我们用的是实现xmpp的。还要解决roster, friend request 等等, 每次一看那就晕。

【在 z****e 的大作中提到】
: real time chatting如果自己写估计也不会太麻烦吧?
: 无非几个api,选一下协议,会丢包的话,多verify几次
: 在server side建一个sequence,然后对每一个msg分配一个#
: client side不仅发,同时还需要验证收到msg的#是否正确
: 比如之前收到的是1,下一个收到的是3,那么中间就丢了2,向服务器发请求
: 要求重传,服务器收到这个请求之后,piggybag之前的msg,这里就是2和3一起
: 发给客户端,所以服务器需要对msg做一定的缓存,等chat结束之后
: 再从内存中删除,可以用点redis之类的,以缓解jvm内存的压力
: 我们刚用这种方式做了一个射击游戏的prototype
: 各种要求肯定比chatting要严格得多,效果很不错

o***g
发帖数: 2784
8
我之前说过设计之前先要确定需求
chat,你是网页里app里都要做?能互通?只1对1chat?还是可以群聊?同时可以聊几
个人?

【在 c***g 的大作中提到】
: 1 如何设计facebook的news feed?
: 2 如何设计facebook的real time chatting system?
: 读了一圈还是没有头绪,不知道是否哪位大侠讲讲这两设计题的要点?

z****e
发帖数: 54598
9
这个在server side做就好了,client side还是不用这么麻烦了
parse xml非常耗资源的说,android还好,web就很痛苦了

【在 w**z 的大作中提到】
: 我们用的是实现xmpp的。还要解决roster, friend request 等等, 每次一看那就晕。
j**********3
发帖数: 3211
10
同问
相关主题
问个设计的题目系统设计题怎么准备
google 面经Pinterest陶涛:三个教训和三个发展选择 (转载)
pre-IPO 公司招聘3来道A设计题大家头脑风暴一下
进入JobHunting版参与讨论
h**********n
发帖数: 897
11
news feed,实时性要求不太高,broadcast,复杂逻辑(ranking、推荐、过滤等等)。
chatting,要求实时,1:1(好像现在还没有group chat?很久没用fb了),简单逻辑。
所以看下面fb的员工说cassandra是对的,没准在cassandra上面还有redis或者
memcached做缓存(weibo貌似就是用redis)。
chatting感觉就比较复杂了,要握手,要有timer保证实时性……
这题目主要看你考虑东西是否全面,方案是否合理吧,顺便考察下眼界。

【在 c***g 的大作中提到】
: 1 如何设计facebook的news feed?
: 2 如何设计facebook的real time chatting system?
: 读了一圈还是没有头绪,不知道是否哪位大侠讲讲这两设计题的要点?

c*******r
发帖数: 610
12
学习下各位大牛的回复
z****e
发帖数: 54598
13
news feed我没用过,但是看其他人说的,我猜测考点是gossip
z******g
发帖数: 271
14
赞最后两个字

)。
辑。

【在 h**********n 的大作中提到】
: news feed,实时性要求不太高,broadcast,复杂逻辑(ranking、推荐、过滤等等)。
: chatting,要求实时,1:1(好像现在还没有group chat?很久没用fb了),简单逻辑。
: 所以看下面fb的员工说cassandra是对的,没准在cassandra上面还有redis或者
: memcached做缓存(weibo貌似就是用redis)。
: chatting感觉就比较复杂了,要握手,要有timer保证实时性……
: 这题目主要看你考虑东西是否全面,方案是否合理吧,顺便考察下眼界。

p*****2
发帖数: 21240
15
难道不是websocket?
z****e
发帖数: 54598
16
websocket是tcp吧,很多时候为了追求效率,都是用udp来实现
我记得我最早在大学时候做的一个聊天室,就用udp来实现

【在 p*****2 的大作中提到】
: 难道不是websocket?
p*****2
发帖数: 21240
17

udp就要解决丢包了。

【在 z****e 的大作中提到】
: websocket是tcp吧,很多时候为了追求效率,都是用udp来实现
: 我记得我最早在大学时候做的一个聊天室,就用udp来实现

z****e
发帖数: 54598
18
嗯,要自行解决

【在 p*****2 的大作中提到】
:
: udp就要解决丢包了。

o***g
发帖数: 2784
19
+1,这个是chat的关键

【在 p*****2 的大作中提到】
: 难道不是websocket?
s*******n
发帖数: 196
20
这sequence number听起来很不scale.

【在 z****e 的大作中提到】
: real time chatting如果自己写估计也不会太麻烦吧?
: 无非几个api,选一下协议,会丢包的话,多verify几次
: 在server side建一个sequence,然后对每一个msg分配一个#
: client side不仅发,同时还需要验证收到msg的#是否正确
: 比如之前收到的是1,下一个收到的是3,那么中间就丢了2,向服务器发请求
: 要求重传,服务器收到这个请求之后,piggybag之前的msg,这里就是2和3一起
: 发给客户端,所以服务器需要对msg做一定的缓存,等chat结束之后
: 再从内存中删除,可以用点redis之类的,以缓解jvm内存的压力
: 我们刚用这种方式做了一个射击游戏的prototype
: 各种要求肯定比chatting要严格得多,效果很不错

相关主题
redis的硬伤是不是 无法scale,很难用在cluster上design uber这题到底怎么答!
dropbox一道题一道有意思的设计面试题--天气预报Service
【工作机会】Sr.PHP Developer,Shanghai,China (适合想回中国发展的朋友)G家店面design题目
进入JobHunting版参与讨论
z****e
发帖数: 54598
21
对每一个chat group单独分配一个sequencer
不需要所有的groups全部凑一起来用一个sequencer
一个group最多会有多少个人聊天?
100个顶天了,随便一台pc都可以轻松搞定

【在 s*******n 的大作中提到】
: 这sequence number听起来很不scale.
s*******n
发帖数: 196
22
每个group就盯一台server? group 所有的人都去那server?

【在 z****e 的大作中提到】
: 对每一个chat group单独分配一个sequencer
: 不需要所有的groups全部凑一起来用一个sequencer
: 一个group最多会有多少个人聊天?
: 100个顶天了,随便一台pc都可以轻松搞定

z****e
发帖数: 54598
23
一次chatting一般多少人?
2个吧
同时活跃有5个以上的讨论都算少了
超过5个基本上就是七嘴八舌,最后干脆就单聊了
既然如此,你单独对每个group分配一个node有啥问题?
当然node资源会过剩
那就把n个groups分配到m个nodes里面去,n可能>>m
根据chatting groups做balance
如果真有必要的话,再做replica,确定主node
如果主node挂掉,选一个replica做主node,同时启动一个replica node补上
不过我觉得毫无必要

【在 s*******n 的大作中提到】
: 每个group就盯一台server? group 所有的人都去那server?
s*******n
发帖数: 196
24
distributed sequence generation不是容易的事
不过对于chat这种app怎么都无所为, 错了重复了问题也不大。

【在 z****e 的大作中提到】
: 一次chatting一般多少人?
: 2个吧
: 同时活跃有5个以上的讨论都算少了
: 超过5个基本上就是七嘴八舌,最后干脆就单聊了
: 既然如此,你单独对每个group分配一个node有啥问题?
: 当然node资源会过剩
: 那就把n个groups分配到m个nodes里面去,n可能>>m
: 根据chatting groups做balance
: 如果真有必要的话,再做replica,确定主node
: 如果主node挂掉,选一个replica做主node,同时启动一个replica node补上

1 (共1页)
进入JobHunting版参与讨论
相关主题
一道有意思的设计面试题--天气预报Servicechat server long pull - facebook 面经
G家店面design题目问个设计的题目
脸家设计题,设计游戏排名系统google 面经
王者荣耀 系统设计pre-IPO 公司招聘3
秒杀设计题系统设计题怎么准备
FB设计题求教。Pinterest陶涛:三个教训和三个发展选择 (转载)
大家不是说要多准备设计么,来一道google设计面试题目来道A设计题大家头脑风暴一下
老年马工赶快去 fbredis的硬伤是不是 无法scale,很难用在cluster上
相关话题的讨论汇总
话题: chatting话题: 设计话题: news话题: feed话题: chat