知识卡片

推拉结合应对Feeds流的极端分布

普通读书笔记卡

内容

Feeds流朴素方案”写扩散”(推):发博即写入所有粉丝收件箱,读快但大V发博要写几千万份收件箱。”读扩散”(拉)又让高频读者承受巨大实时计算量。真实解法是分段:粉丝少的用户走推,大V只推给在线粉丝,其余由读者”拉”,两部分结果合并排序。发散:数据呈幂律分布时,按节点规模分段采用不同策略、读端合并,是应对极端分布的通用解法。

参考来源

- 位置:第8章《高并发问题》微博Feeds流案例(源文件:_epub-src/text/part0037.html) - 结论依据:原文明确说明朴素方案是写扩散(发博后异步推送到粉丝收件箱),但对粉丝数少的用户推送、粉丝数多的大V只推给在线粉丝,读端把推来的和需要拉的聚合起来按时间排序,即推拉结合,直接支持卡片对Feeds流应对极端分布的解法的论述。 - 原始内容:"对于粉丝数量少的用户……发布一条微博之后推送给5000个粉丝;对于粉丝数多的用户,只推送给在线的粉丝们……对于读的一端,一个用户的关注的人当中,有的人是推给他的……有的人是需要他去拉的……需要把两者聚合起来,再按时间排序……这就是'推拉结合'。"