由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - F家这个烂大街的system题哪位大侠仔细讲讲
相关主题
有没有大牛给比较一下mongodb和cassandra?system desgin 真是太重要
关于MySQL和NoSQL的一道面试题这个周末wwzz和zhaoce大牛来谈谈kafka吧?
【拒信】被Coursera拒了三星samsung创新部门招大数据工程师
非常常见的面试题:数据太多,用MySQL查询太慢该怎么办?四个个软工职位内推
要建立一个20个node的cluster 需要zookeeper吗Oracle其实不错
回报本版,前段时间骑驴找马FGU等公司offer面经总结【已更新FGU】问一个Big Data的问题
new graduate刚学完java三大框架做个什么小project好。FYI, 做kafka的startup confluent刚成立
10Gen 这个公司怎么样?也叫MongoDB面试准备和经验
相关话题的讨论汇总
话题: cassandra话题: facebook话题: 用户话题: timestamp话题: hbase
进入JobHunting版参与讨论
1 (共1页)
f********a
发帖数: 165
1
Facebook 每天有5亿活跃用户。每个用户可以更新自己的状态消息。当用户登录
Facebook时,”新鲜事“会显示用户好友们最近两周内的状态消息。消息为纯文本,顺
序主要由时间决定,但是也受到好友关系,消息重要性,好友当前消息和上一条消息的
间隔,等等的因素影响。试设计”新鲜事“功能的系统架构。假设每台服务器有64GB内
存,2TB硬盘,试估算该系统总共需要多少服务器。(这仍然是一个开放性的问题,会
根据你的设计而提出后续问题。)
特别最后估计多少服务器。俺和一哥们儿都挂在这上面了,真悲剧。搞个相关链接也行
g**u
发帖数: 504
2
帮顶,求大牛解惑

【在 f********a 的大作中提到】
: Facebook 每天有5亿活跃用户。每个用户可以更新自己的状态消息。当用户登录
: Facebook时,”新鲜事“会显示用户好友们最近两周内的状态消息。消息为纯文本,顺
: 序主要由时间决定,但是也受到好友关系,消息重要性,好友当前消息和上一条消息的
: 间隔,等等的因素影响。试设计”新鲜事“功能的系统架构。假设每台服务器有64GB内
: 存,2TB硬盘,试估算该系统总共需要多少服务器。(这仍然是一个开放性的问题,会
: 根据你的设计而提出后续问题。)
: 特别最后估计多少服务器。俺和一哥们儿都挂在这上面了,真悲剧。搞个相关链接也行
: 。

s**********r
发帖数: 8153
3
帮顶!完全不会设计题
h*****a
发帖数: 1718
4
随便抛块砖。
如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
要考虑的有以下几点:
1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
uid+updateId)。这些都是我的假设,需要对方confirm。
如果对方认可,那每天需要传送到活跃用户wall上的数据是50Byte * 100M * 50 =
250G bytes , 约为 3MB/second。考虑到要能处理spike,可以设计传输的capacity为
10MB/second.
存储系统只需存储过去两周的数据,50M * 10 * 50byte = 25GB,考虑peak, 50G,数
据量很小。历史数据暂不考虑。
2)确定采用push 还是pull来发送更新。一般来说用push,但需要比较两种选择各自的
优劣。pull需要对服务器做很多无效的轮询,push相对效率高一些。但要考虑对不活跃
用户和未登录用户不需实时发送(可以backgroud非实时发送),来优化系统。
3)如何发送,一般来说一个更新submit之后,会放到一个Message Queue中,再由一个
publish service (cluster)来一条一条处理。publisher拿到一条message后,根据发
布人的friend list计算出需要deliver到哪些user,然后定位负责deliver到这些user
的服务器,把更新交给他们处理。这里就涉及到暂时过滤掉没有在线的不活跃用户,以
降低需要deliver的数目。所以应该还要设计一个offline的deliver queue, 可以在系
统不繁忙的时候做非实时的delivery。
delivery采用分布式设计,分级结构(比如邮局),可以通过consistent hash迅速定
位到server来处理发送到某个user的message。这里有很多细节可以讨论,比如如何实
现consistent hash,如何group users by their location and select the closest
server to deliver the update, etc.
4)客户端显示更新。每个用户有一个update message queue,存放应该显示给他的
updates。这里可以讨论如何排序这些更新,可以比如根据friend graph先显示重要
friend的更新,也有很多可以讨论的东西。
估算系统需要的服务器数量:
1) Persistent DB storage,数据量25GB-50G,都可以放到内存中。所以一个3个
server的MySQL cluster就够了。一般来说,每个region会有一个自己的cluster,所以
要根据region的数目来估算,比如如果有10个region,就是30台server。
2)publish service也是要分布在不同的region上。假定每个cluster平均负责200M
user,可能需要5台server来处理全部用户,如果10个region,那就是50台server。当
然,这种估算都是很不精确的。要根据具体的情况调整。一般来说都是弹性设计系统,
根据traffic和系统负载随时调整server数量,这里说的只是一个rough的对最大size的
估计。

【在 f********a 的大作中提到】
: Facebook 每天有5亿活跃用户。每个用户可以更新自己的状态消息。当用户登录
: Facebook时,”新鲜事“会显示用户好友们最近两周内的状态消息。消息为纯文本,顺
: 序主要由时间决定,但是也受到好友关系,消息重要性,好友当前消息和上一条消息的
: 间隔,等等的因素影响。试设计”新鲜事“功能的系统架构。假设每台服务器有64GB内
: 存,2TB硬盘,试估算该系统总共需要多少服务器。(这仍然是一个开放性的问题,会
: 根据你的设计而提出后续问题。)
: 特别最后估计多少服务器。俺和一哥们儿都挂在这上面了,真悲剧。搞个相关链接也行
: 。

J****3
发帖数: 427
5
学习
c******a
发帖数: 789
6
赞半海。
fb最近开发好一个叫虫洞的system,就是您提到的message system,顺便提一下可以拉
拉关系。
c******a
发帖数: 789
7
所以应该还要设计一个offline的deliver queue, 可以在系统不繁忙的时候做非实时的
delivery----delivery应该always offline。从deliver server一收到ack,然后
就不用管了。
h*****a
发帖数: 1718
8
我说的不是这个意思。我的意思是对活跃用户,update的信息需要实时deliver,对于
没有登陆的不活跃用户,update的信息不须实时,可以在比如12个小时之内deliver就
好。

【在 c******a 的大作中提到】
: 所以应该还要设计一个offline的deliver queue, 可以在系统不繁忙的时候做非实时的
: delivery----delivery应该always offline。从deliver server一收到ack,然后
: 就不用管了。

c******a
发帖数: 789
9
确实是!!
醍醐灌顶,谢谢大牛!

【在 h*****a 的大作中提到】
: 我说的不是这个意思。我的意思是对活跃用户,update的信息需要实时deliver,对于
: 没有登陆的不活跃用户,update的信息不须实时,可以在比如12个小时之内deliver就
: 好。

w******j
发帖数: 185
相关主题
回报本版,前段时间骑驴找马FGU等公司offer面经总结【已更新FGU】system desgin 真是太重要
new graduate刚学完java三大框架做个什么小project好。这个周末wwzz和zhaoce大牛来谈谈kafka吧?
10Gen 这个公司怎么样?也叫MongoDB三星samsung创新部门招大数据工程师
进入JobHunting版参与讨论
z****e
发帖数: 54598
11
这种数据没有必要上db了,nosql就好了
cassandra

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

h*****a
发帖数: 1718
12
noSql在我看来也是DB了。反正就是个用来做persitence的东东,因为运行时数据都在
内存里了。

【在 z****e 的大作中提到】
: 这种数据没有必要上db了,nosql就好了
: cassandra
:
: timestamp+

h*****a
发帖数: 1718
13
都挺好的,平时没事多看看挺有用的。面试之前用来临时抱佛脚也不错。

【在 w******j 的大作中提到】
: what about this
: http://www.quora.com/What-are-best-practices-for-building-somet
: http://www.infoq.com/presentations/Scale-at-Facebook
: http://www.infoq.com/presentations/Facebook-Software-Stack

w**z
发帖数: 8232
14
用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
到HBase 了。

【在 z****e 的大作中提到】
: 这种数据没有必要上db了,nosql就好了
: cassandra
:
: timestamp+

g**e
发帖数: 6127
15
FB一直到2010年还在用memcached+mysql吧。不过他们就把mysql当key/value store使

【在 w**z 的大作中提到】
: 用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
: 到HBase 了。

z****e
发帖数: 54598
16
如果不用transaction同时不用各种join的话
应该会好点
不过有些框架默认要上transaction,这个很头疼
光是去关掉这个设置就要折腾半天
hibernate就是典型

【在 w**z 的大作中提到】
: 用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
: 到HBase 了。

p*****2
发帖数: 21240
17

timestamp+
push的话一般有什么机制?web socket吗?

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

g**u
发帖数: 504
18
你们是哪家,twitter也用Cassandra实现的吧? Facebook 好像用的pull, 存储和查询
用的是一个类似 leveldb的东西,不知道现在还是不是这样的。

用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
到HBase 了。

【在 w**z 的大作中提到】
: 用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
: 到HBase 了。

h*****a
发帖数: 1718
19
Not sure, maybe something like http://en.wikipedia.org/wiki/Comet_(programming)

【在 p*****2 的大作中提到】
:
: timestamp+
: push的话一般有什么机制?web socket吗?

w******j
发帖数: 185
20

那么现在用什么做了?请教啊....

【在 g**e 的大作中提到】
: FB一直到2010年还在用memcached+mysql吧。不过他们就把mysql当key/value store使
相关主题
四个个软工职位内推FYI, 做kafka的startup confluent刚成立
Oracle其实不错面试准备和经验
问一个Big Data的问题帮马鬃国人经理收SDE简历
进入JobHunting版参与讨论
z****e
发帖数: 54598
21
cassandra就是facebook自制的nosql,后来贡献给apache了
如果不是cassandra的话,我觉得前面某人说的换hbase的可能性更大

【在 w******j 的大作中提到】
:
: 那么现在用什么做了?请教啊....

s*****r
发帖数: 43070
22
post to web service

【在 p*****2 的大作中提到】
:
: timestamp+
: push的话一般有什么机制?web socket吗?

l*****t
发帖数: 2019
23
now hbase. Cassandra was out. this is old news.

【在 g**e 的大作中提到】
: FB一直到2010年还在用memcached+mysql吧。不过他们就把mysql当key/value store使
w******j
发帖数: 185
24
我听说的是,facebook从来也没用cassandra做news feed啊,以前只是用它做inbox
search,现在用hbase来做了,和news feed没关系啊.....
f********a
发帖数: 165
25
大牛啊。多谢!

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

f********a
发帖数: 165
26
半海,能否讲讲设计photo sharing和news feed的区别?

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

Y********f
发帖数: 410
27
没有登录的用户为啥还要update,难道不是用户登录的时候在临时生成页面吗?

【在 h*****a 的大作中提到】
: 我说的不是这个意思。我的意思是对活跃用户,update的信息需要实时deliver,对于
: 没有登陆的不活跃用户,update的信息不须实时,可以在比如12个小时之内deliver就
: 好。

x*****0
发帖数: 452
28
mark
v***n
发帖数: 562
29
mark

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

b*******n
发帖数: 847
30
赞!mark
相关主题
大家不是说要多准备设计么,来一道google设计面试题目关于MySQL和NoSQL的一道面试题
问个L家设计题 分布式 inverted index设计【拒信】被Coursera拒了
有没有大牛给比较一下mongodb和cassandra?非常常见的面试题:数据太多,用MySQL查询太慢该怎么办?
进入JobHunting版参与讨论
B*****g
发帖数: 34098
31
换的原因是。。。?

【在 l*****t 的大作中提到】
: now hbase. Cassandra was out. this is old news.
u*****o
发帖数: 1224
32
mark一下
h****p
发帖数: 87
33
mark学习
s*****d
发帖数: 66
34
mark
x*****0
发帖数: 452
35
mark
f********a
发帖数: 165
36
Facebook 每天有5亿活跃用户。每个用户可以更新自己的状态消息。当用户登录
Facebook时,”新鲜事“会显示用户好友们最近两周内的状态消息。消息为纯文本,顺
序主要由时间决定,但是也受到好友关系,消息重要性,好友当前消息和上一条消息的
间隔,等等的因素影响。试设计”新鲜事“功能的系统架构。假设每台服务器有64GB内
存,2TB硬盘,试估算该系统总共需要多少服务器。(这仍然是一个开放性的问题,会
根据你的设计而提出后续问题。)
特别最后估计多少服务器。俺和一哥们儿都挂在这上面了,真悲剧。搞个相关链接也行
g**u
发帖数: 504
37
帮顶,求大牛解惑

【在 f********a 的大作中提到】
: Facebook 每天有5亿活跃用户。每个用户可以更新自己的状态消息。当用户登录
: Facebook时,”新鲜事“会显示用户好友们最近两周内的状态消息。消息为纯文本,顺
: 序主要由时间决定,但是也受到好友关系,消息重要性,好友当前消息和上一条消息的
: 间隔,等等的因素影响。试设计”新鲜事“功能的系统架构。假设每台服务器有64GB内
: 存,2TB硬盘,试估算该系统总共需要多少服务器。(这仍然是一个开放性的问题,会
: 根据你的设计而提出后续问题。)
: 特别最后估计多少服务器。俺和一哥们儿都挂在这上面了,真悲剧。搞个相关链接也行
: 。

s**********r
发帖数: 8153
38
帮顶!完全不会设计题
h*****a
发帖数: 1718
39
随便抛块砖。
如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
要考虑的有以下几点:
1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
uid+updateId)。这些都是我的假设,需要对方confirm。
如果对方认可,那每天需要传送到活跃用户wall上的数据是50Byte * 100M * 50 =
250G bytes , 约为 3MB/second。考虑到要能处理spike,可以设计传输的capacity为
10MB/second.
存储系统只需存储过去两周的数据,50M * 10 * 50byte = 25GB,考虑peak, 50G,数
据量很小。历史数据暂不考虑。
2)确定采用push 还是pull来发送更新。一般来说用push,但需要比较两种选择各自的
优劣。pull需要对服务器做很多无效的轮询,push相对效率高一些。但要考虑对不活跃
用户和未登录用户不需实时发送(可以backgroud非实时发送),来优化系统。
3)如何发送,一般来说一个更新submit之后,会放到一个Message Queue中,再由一个
publish service (cluster)来一条一条处理。publisher拿到一条message后,根据发
布人的friend list计算出需要deliver到哪些user,然后定位负责deliver到这些user
的服务器,把更新交给他们处理。这里就涉及到暂时过滤掉没有在线的不活跃用户,以
降低需要deliver的数目。所以应该还要设计一个offline的deliver queue, 可以在系
统不繁忙的时候做非实时的delivery。
delivery采用分布式设计,分级结构(比如邮局),可以通过consistent hash迅速定
位到server来处理发送到某个user的message。这里有很多细节可以讨论,比如如何实
现consistent hash,如何group users by their location and select the closest
server to deliver the update, etc.
4)客户端显示更新。每个用户有一个update message queue,存放应该显示给他的
updates。这里可以讨论如何排序这些更新,可以比如根据friend graph先显示重要
friend的更新,也有很多可以讨论的东西。
估算系统需要的服务器数量:
1) Persistent DB storage,数据量25GB-50G,都可以放到内存中。所以一个3个
server的MySQL cluster就够了。一般来说,每个region会有一个自己的cluster,所以
要根据region的数目来估算,比如如果有10个region,就是30台server。
2)publish service也是要分布在不同的region上。假定每个cluster平均负责200M
user,可能需要5台server来处理全部用户,如果10个region,那就是50台server。当
然,这种估算都是很不精确的。要根据具体的情况调整。一般来说都是弹性设计系统,
根据traffic和系统负载随时调整server数量,这里说的只是一个rough的对最大size的
估计。

【在 f********a 的大作中提到】
: Facebook 每天有5亿活跃用户。每个用户可以更新自己的状态消息。当用户登录
: Facebook时,”新鲜事“会显示用户好友们最近两周内的状态消息。消息为纯文本,顺
: 序主要由时间决定,但是也受到好友关系,消息重要性,好友当前消息和上一条消息的
: 间隔,等等的因素影响。试设计”新鲜事“功能的系统架构。假设每台服务器有64GB内
: 存,2TB硬盘,试估算该系统总共需要多少服务器。(这仍然是一个开放性的问题,会
: 根据你的设计而提出后续问题。)
: 特别最后估计多少服务器。俺和一哥们儿都挂在这上面了,真悲剧。搞个相关链接也行
: 。

J****3
发帖数: 427
40
学习
相关主题
非常常见的面试题:数据太多,用MySQL查询太慢该怎么办?new graduate刚学完java三大框架做个什么小project好。
要建立一个20个node的cluster 需要zookeeper吗10Gen 这个公司怎么样?也叫MongoDB
回报本版,前段时间骑驴找马FGU等公司offer面经总结【已更新FGU】system desgin 真是太重要
进入JobHunting版参与讨论
c******a
发帖数: 789
41
赞半海。
fb最近开发好一个叫虫洞的system,就是您提到的message system,顺便提一下可以拉
拉关系。
c******a
发帖数: 789
42
所以应该还要设计一个offline的deliver queue, 可以在系统不繁忙的时候做非实时的
delivery----delivery应该always offline。从deliver server一收到ack,然后
就不用管了。
h*****a
发帖数: 1718
43
我说的不是这个意思。我的意思是对活跃用户,update的信息需要实时deliver,对于
没有登陆的不活跃用户,update的信息不须实时,可以在比如12个小时之内deliver就
好。

【在 c******a 的大作中提到】
: 所以应该还要设计一个offline的deliver queue, 可以在系统不繁忙的时候做非实时的
: delivery----delivery应该always offline。从deliver server一收到ack,然后
: 就不用管了。

c******a
发帖数: 789
44
确实是!!
醍醐灌顶,谢谢大牛!

【在 h*****a 的大作中提到】
: 我说的不是这个意思。我的意思是对活跃用户,update的信息需要实时deliver,对于
: 没有登陆的不活跃用户,update的信息不须实时,可以在比如12个小时之内deliver就
: 好。

w******j
发帖数: 185
z****e
发帖数: 54598
46
这种数据没有必要上db了,nosql就好了
cassandra

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

h*****a
发帖数: 1718
47
noSql在我看来也是DB了。反正就是个用来做persitence的东东,因为运行时数据都在
内存里了。

【在 z****e 的大作中提到】
: 这种数据没有必要上db了,nosql就好了
: cassandra
:
: timestamp+

h*****a
发帖数: 1718
48
都挺好的,平时没事多看看挺有用的。面试之前用来临时抱佛脚也不错。

【在 w******j 的大作中提到】
: what about this
: http://www.quora.com/What-are-best-practices-for-building-somet
: http://www.infoq.com/presentations/Scale-at-Facebook
: http://www.infoq.com/presentations/Facebook-Software-Stack

w**z
发帖数: 8232
49
用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
到HBase 了。

【在 z****e 的大作中提到】
: 这种数据没有必要上db了,nosql就好了
: cassandra
:
: timestamp+

g**e
发帖数: 6127
50
FB一直到2010年还在用memcached+mysql吧。不过他们就把mysql当key/value store使

【在 w**z 的大作中提到】
: 用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
: 到HBase 了。

相关主题
这个周末wwzz和zhaoce大牛来谈谈kafka吧?Oracle其实不错
三星samsung创新部门招大数据工程师问一个Big Data的问题
四个个软工职位内推FYI, 做kafka的startup confluent刚成立
进入JobHunting版参与讨论
z****e
发帖数: 54598
51
如果不用transaction同时不用各种join的话
应该会好点
不过有些框架默认要上transaction,这个很头疼
光是去关掉这个设置就要折腾半天
hibernate就是典型

【在 w**z 的大作中提到】
: 用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
: 到HBase 了。

p*****2
发帖数: 21240
52

timestamp+
push的话一般有什么机制?web socket吗?

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

g**u
发帖数: 504
53
你们是哪家,twitter也用Cassandra实现的吧? Facebook 好像用的pull, 存储和查询
用的是一个类似 leveldb的东西,不知道现在还是不是这样的。

用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
到HBase 了。

【在 w**z 的大作中提到】
: 用MySQL 是找死。我们就是用Cassandra 实现这个功能。Facebook 放弃Cassandra ,转
: 到HBase 了。

h*****a
发帖数: 1718
54
Not sure, maybe something like http://en.wikipedia.org/wiki/Comet_(programming)

【在 p*****2 的大作中提到】
:
: timestamp+
: push的话一般有什么机制?web socket吗?

w******j
发帖数: 185
55

那么现在用什么做了?请教啊....

【在 g**e 的大作中提到】
: FB一直到2010年还在用memcached+mysql吧。不过他们就把mysql当key/value store使
z****e
发帖数: 54598
56
cassandra就是facebook自制的nosql,后来贡献给apache了
如果不是cassandra的话,我觉得前面某人说的换hbase的可能性更大

【在 w******j 的大作中提到】
:
: 那么现在用什么做了?请教啊....

s*****r
发帖数: 43070
57
post to web service

【在 p*****2 的大作中提到】
:
: timestamp+
: push的话一般有什么机制?web socket吗?

l*****t
发帖数: 2019
58
now hbase. Cassandra was out. this is old news.

【在 g**e 的大作中提到】
: FB一直到2010年还在用memcached+mysql吧。不过他们就把mysql当key/value store使
w******j
发帖数: 185
59
我听说的是,facebook从来也没用cassandra做news feed啊,以前只是用它做inbox
search,现在用hbase来做了,和news feed没关系啊.....
f********a
发帖数: 165
60
大牛啊。多谢!

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

相关主题
面试准备和经验问个L家设计题 分布式 inverted index设计
帮马鬃国人经理收SDE简历有没有大牛给比较一下mongodb和cassandra?
大家不是说要多准备设计么,来一道google设计面试题目关于MySQL和NoSQL的一道面试题
进入JobHunting版参与讨论
f********a
发帖数: 165
61
半海,能否讲讲设计photo sharing和news feed的区别?

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

Y********f
发帖数: 410
62
没有登录的用户为啥还要update,难道不是用户登录的时候在临时生成页面吗?

【在 h*****a 的大作中提到】
: 我说的不是这个意思。我的意思是对活跃用户,update的信息需要实时deliver,对于
: 没有登陆的不活跃用户,update的信息不须实时,可以在比如12个小时之内deliver就
: 好。

x*****0
发帖数: 452
63
mark
v***n
发帖数: 562
64
mark

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

b*******n
发帖数: 847
65
赞!mark
B*****g
发帖数: 34098
66
换的原因是。。。?

【在 l*****t 的大作中提到】
: now hbase. Cassandra was out. this is old news.
u*****o
发帖数: 1224
67
mark一下
h****p
发帖数: 87
68
mark学习
s*****d
发帖数: 66
69
mark
x*****0
发帖数: 452
70
mark
相关主题
关于MySQL和NoSQL的一道面试题要建立一个20个node的cluster 需要zookeeper吗
【拒信】被Coursera拒了回报本版,前段时间骑驴找马FGU等公司offer面经总结【已更新FGU】
非常常见的面试题:数据太多,用MySQL查询太慢该怎么办?new graduate刚学完java三大框架做个什么小project好。
进入JobHunting版参与讨论
c*********n
发帖数: 1057
71
大牛好像重点讲了怎么设计news feed,但是还是不知道应该怎么样计算需要几个
server,大牛assume一个server可以handle 200M user,面试点时候可以这么assume吗?
我主要是stuck在,计算好了需要多少disk space and thoughput以后,怎么样map 到
多少server呢?
请大牛指点
h*****a
发帖数: 1718
72
你对单机的计算能力要有估算啊。还要考虑比如你的应用是CPU boun d还是memory
bound。原题本身就是很简化的估算一下,现实中肯定要复杂一些。
一般来说, launch之前要做load testing,来confirm你的估算基本上make sense。
作为launch的一部分,要对service cluster,database,甚至上游下游的service set
up metrics来监控load的情况(e.g. CPU, memory, network, etc.)。
service的 设计中一定要考虑到scalability,如果发现初始计划的cluster size无法
handle peak的traffic,就要考虑增加机器的数目。Well designed的service应该是可
以方便的通过增加机器来scale的。Initial的size不能适应实际load的情况是很常见的。
现实中经常会用到auto-scaling,就是在peak和non-peak的时间用不同数目的机器。

吗?

【在 c*********n 的大作中提到】
: 大牛好像重点讲了怎么设计news feed,但是还是不知道应该怎么样计算需要几个
: server,大牛assume一个server可以handle 200M user,面试点时候可以这么assume吗?
: 我主要是stuck在,计算好了需要多少disk space and thoughput以后,怎么样map 到
: 多少server呢?
: 请大牛指点

z***e
发帖数: 209
73
mark,赞.真正的大牛才愿意分享.
s*****m
发帖数: 8094
74
inceemental updates (publish) + full/on demand sync (pull)

【在 h*****a 的大作中提到】
: 我说的不是这个意思。我的意思是对活跃用户,update的信息需要实时deliver,对于
: 没有登陆的不活跃用户,update的信息不须实时,可以在比如12个小时之内deliver就
: 好。

s*****m
发帖数: 8094
75
scalable么?

【在 Y********f 的大作中提到】
: 没有登录的用户为啥还要update,难道不是用户登录的时候在临时生成页面吗?
s*****m
发帖数: 8094
76
for 3, be careful with scheduling and resource usage for users with large
amount of connections.

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

i**d
发帖数: 357
77
F应该不太可能用HBASE来serve newsfeed这么heavy的read load吧。
听说他们现在用的多的是这个:
http://www.quora.com/Facebook-Infrastructure/What-is-the-TAO-ca
r****c
发帖数: 2585
78
这个没有底的,facebook自己也在不停improve
for example,一个信息发布以后当这个信息like量变大的时候,他的score 会变大,
所以不光是news published的时候,而是news score change也会影响。总的来说一般
要scalable都是incremental update,通过event base 来 push到 pub,然后sub方
filter out

timestamp+

【在 h*****a 的大作中提到】
: 随便抛块砖。
: 如你所说,没有标准答案,不同面试官心里可能装着不同的答案,你要尽可能顺着对方
: 思路走。多问问题澄清假设,给出多种选择让对方决定详细说哪一个。
: 其实因为用户的状态更新一旦提交,在整个生命周期就是只读状态,(如果允许删除状
: 态更新的话会增加复杂性,这里暂不考虑)所以处理起来相对复杂性并不高。我觉得需
: 要考虑的有以下几点:
: 1)确定需要处理的数据规模。假定FB有10亿用户,里面有1亿每天登陆的活跃用户需要
: 看到update,平均每个人每天看到50条更新。10亿用户中平均每两周有5000万会发布状
: 态更新,平均每人每周10次,每条更新需要50个字节的存储和传送(内容+timestamp+
: uid+updateId)。这些都是我的假设,需要对方confirm。

c******3
发帖数: 296
79
感觉大牛这点没讲透。能否具体说说一台机器何以处理多少请求?1000人次还是1百万
人次?另外Facebook是用什么作webserver呢?Tomcat?不同的webserver,能力也不一
样。
详细讨论用什么样的机器合适,很有的讨论,但能不能通过面试,可能要看面试官是魏
老师还是goodbug了。站错队,很危险

set
的。

【在 h*****a 的大作中提到】
: 你对单机的计算能力要有估算啊。还要考虑比如你的应用是CPU boun d还是memory
: bound。原题本身就是很简化的估算一下,现实中肯定要复杂一些。
: 一般来说, launch之前要做load testing,来confirm你的估算基本上make sense。
: 作为launch的一部分,要对service cluster,database,甚至上游下游的service set
: up metrics来监控load的情况(e.g. CPU, memory, network, etc.)。
: service的 设计中一定要考虑到scalability,如果发现初始计划的cluster size无法
: handle peak的traffic,就要考虑增加机器的数目。Well designed的service应该是可
: 以方便的通过增加机器来scale的。Initial的size不能适应实际load的情况是很常见的。
: 现实中经常会用到auto-scaling,就是在peak和non-peak的时间用不同数目的机器。
:

1 (共1页)
进入JobHunting版参与讨论
相关主题
面试准备和经验要建立一个20个node的cluster 需要zookeeper吗
帮马鬃国人经理收SDE简历回报本版,前段时间骑驴找马FGU等公司offer面经总结【已更新FGU】
大家不是说要多准备设计么,来一道google设计面试题目new graduate刚学完java三大框架做个什么小project好。
问个L家设计题 分布式 inverted index设计10Gen 这个公司怎么样?也叫MongoDB
有没有大牛给比较一下mongodb和cassandra?system desgin 真是太重要
关于MySQL和NoSQL的一道面试题这个周末wwzz和zhaoce大牛来谈谈kafka吧?
【拒信】被Coursera拒了三星samsung创新部门招大数据工程师
非常常见的面试题:数据太多,用MySQL查询太慢该怎么办?四个个软工职位内推
相关话题的讨论汇总
话题: cassandra话题: facebook话题: 用户话题: timestamp话题: hbase