【发布时间】:2011-09-27 14:44:12
【问题描述】:
我正在尝试在 Facebook 上使用 socket.io 0.6 和 torndio 做类似流的事情。
每个用户在他的墙上都有自己的彗星频道/组。 我正在向所有朋友的墙上发送彗星消息(即使他们不在线)。
问题在于扩展:如果我有 100 万朋友怎么办?把所有的墙都写下来需要很长时间。
是否有任何使用彗星更有效的解决方案?
【问题讨论】:
标签: python real-time socket.io tornado
我正在尝试在 Facebook 上使用 socket.io 0.6 和 torndio 做类似流的事情。
每个用户在他的墙上都有自己的彗星频道/组。 我正在向所有朋友的墙上发送彗星消息(即使他们不在线)。
问题在于扩展:如果我有 100 万朋友怎么办?把所有的墙都写下来需要很长时间。
是否有任何使用彗星更有效的解决方案?
【问题讨论】:
标签: python real-time socket.io tornado
这是社交领域的一个难题。两种方法之间需要权衡取舍:
当加载流比用户更新更频繁并且用户的“扇出”(例如用户拥有的最大关注者数量)较低时,推送方法很好。当用户加载他的流的用户很少,或者用户可以关注的用户数量很少时,拉方法是很好的。
我与人合着了paper,介绍如何有效地做到这一点。基本上,我们使用了一种混合方法,根据用户统计数据确定何时推送或拉取。
为简单起见,我建议您实现拉模型。缓存聚合结果,仅在缓存条目过时一段时间后刷新用户的提要。
【讨论】: