我正在尝试使用socket.io 0.6和tornadio来做像 Facebook 上的流一样的事情。
每个用户都有自己的彗星频道/群组。 我正在向所有朋友的墙上发送彗星信息(即使他们不在线)。
问题在于扩展:如果我有100万朋友怎么办?在所有的墙上写作都需要很长时间。
使用彗星是否有更高效的解决方案?
答案 0 :(得分:2)
这是社交空间中的难题。两种方法之间存在权衡:
当加载流比用户更新更频繁且用户的“扇出”(例如,用户拥有的最大关注者数量)低时,推送方法是好的。当用户加载他的流很少,或者用户可以关注的用户数量很少时,拉方法很好。
我合着了paper如何有效地做到这一点。基本上,我们使用混合方法,根据用户统计信息确定何时推或拉。
为简单起见,我建议你实现拉模型。缓存聚合的结果,仅在缓存条目失效一段时间后刷新用户的订阅源。