12
返回列表 发新帖
楼主: flykite083
跳转到指定楼层
上一主题 下一主题
收起左侧

[题目讨论] 讨论一下Facebook的news feed设计题

🔗
BridgeHUHX 2019-3-6 23:10:34 | 只看该作者
全局:
14417335 发表于 2019-3-6 10:26
我不知道什么假设是合法的。但是为了让讨论继续下去。

能否暂时假设一个数字,QPS为1,000,000;我们 ...

latency在这里确实不是那么重要,早点晚点没太大关系。可以仅当用户在浏览newsfeed的时候才去poll,server端接收到request时生成news并返回,可以用cache或者其他空闲时间预先生成部分结果来加快。应该不需要15分钟那么久,虽然不用太实时,我觉得也要做到分钟以下级别的。

评分

参与人数 1大米 +30 收起 理由
admin + 30

查看全部评分

回复

使用道具 举报

🔗
14417335 2019-3-6 23:46:19 | 只看该作者
全局:
BridgeHUHX 发表于 2019-3-6 23:10
latency在这里确实不是那么重要,早点晚点没太大关系。可以仅当用户在浏览newsfeed的时候才去poll,serve ...

facebook有删帖的麻烦吗?除了FB公司外,如果原作者自己删除呢?如果删帖后,已经fan out write过了,还需要cache里删除。
好友的好友的好友发帖了,我是否应该收到。这样就需要每个用户维护一个k半径的圈子。
提高latency和降低latency好像只对cache的个数产生影响。如果要保证1分钟内写入所有的应该被通知的用户的feed里,而cache的写入能力是给定的,比如250,000/sec,那么就要求对用户数进行sharding。
对于网红的fan out write是不是也要考虑进去,这样才能计算给定用户数,普通用户发帖量,网红的发帖量,到底需要多少shard。

评分

参与人数 1大米 +30 收起 理由
admin + 30

查看全部评分

回复

使用道具 举报

🔗
R.F 2019-3-7 00:08:20 | 只看该作者
全局:
14417335 发表于 2019-3-6 23:46
facebook有删帖的麻烦吗?除了FB公司外,如果原作者自己删除呢?如果删帖后,已经fan out write过了,还 ...

如果cache的写入能力是给定的,而且要保证latency,那么就要求对用户数进行sharding,这个说的非常好
回复

使用道具 举报

🔗
albertguosgp 2019-3-7 10:36:24 | 只看该作者
全局:
这个TOPIC太巨大了,从DNS就可以开始做SHARD。比如根据DNS根据UID可以把你的HTTP REQUEST 发布到不同的集群里去。每个朋友UID发布的每个状态都需要被取过来进行组合排序。

评分

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

查看全部评分

回复

使用道具 举报

🔗
albertguosgp 2019-3-7 10:39:59 | 只看该作者
全局:
yesugei 发表于 2019-3-6 21:20
顺便问一句大家对FB立面的 “@”at人的功能的设计有什么好的想法,比如@的人的排序算法,和如何存储这个@人 ...

如果是我做,我不会再服务器端处理这个逻辑,这个应该是在客户端就可以处理。具体怎么排序可以按照最近联系人序列先显示,当用户开始打字就做字符串匹配。

评分

参与人数 3大米 +5 收起 理由
asyz13jinage + 1 赞一个
14417335 + 1 很有用的信息!
时光啊时光 + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

全局:
14417335 发表于 2019/03/06 03:40:56
提两个问题暖暖贴,

1. 写的时候应该同步还是异步?
2. 如果feed存储在cache里方便优化,而且我们假设cache是分布式的,还有必要写到除了cache以外的其它地方去吗?

1. 写的时候如果只有一种服务器,那就是异步,我们给予读操作更高的优先级,更新先更新master node,然后再更新slave nodes. 如果有读服务器和写服务器也是异步,否则阻塞当前进程!
2. 我觉得在peak traffic的时候可以只更新cache,然后存commit,到了晚上不是peak的时候再更新table.
回复

使用道具 举报

🔗
14417335 2019-4-15 04:52:36 | 只看该作者
全局:
yangyuzhiguang 发表于 2019-4-14 08:13
1. 写的时候如果只有一种服务器,那就是异步,我们给予读操作更高的优先级,更新先更新master node,然后 ...

问些问题方便展开:

"只有一种服务器" 是指如果不是master-slave吗?

优先读。如何给予读更高的优先?

另外阻塞当前进程是指阻塞写操作(这样读不阻塞也就实现了更高优先)吗?
回复

使用道具 举报

🔗
legendP1024 2019-5-21 13:41:19 | 只看该作者
全局:
fan out on write or read, 我看现在的系统设计的教程,都是说hybrid, 正常user的write会写到所有followers的cache里,celebrity的会在user做pull的时候去实时读取。参考DDIA, Grokking
回复

使用道具 举报

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

本版积分规则

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