实时插座.IO伸缩问题python

2024-07-07 07:52:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一些类似于Facebook上的流,使用插座.io0.6和托尔纳迪奥。在

每个用户的墙上都有自己的comet频道/组。 我正在给我所有的朋友发送一条彗星信息(即使他们不在线)。在

问题是关于扩展的问题:如果我有100万个朋友呢?在所有的墙上写字要花很长时间。在

使用comet有没有更有效的解决方案?在


Tags: 用户信息facebook朋友解决方案频道插座comet
1条回答
网友
1楼 · 发布于 2024-07-07 07:52:02

这是社会空间中的一个难题。在两种方法之间有一种权衡:

  • 推送:当用户生成事件(例如状态更新)时,将该状态更新推送到用户的每个朋友的流中。当用户加载他或她的流时,你只需要从一个地方读取一个记录。在
  • 拉动:当用户生成一个事件时,您甚至可以将其写入用户的数据记录。当用户加载其流时,您将轮询其每个朋友的数据记录,动态聚合结果。在

当加载流比用户更新更频繁时,以及当用户的“扇出”(fanout)较低(例如,用户拥有的最大跟随者数)时,push方法是很好的。当很少有用户加载流时,或者如果用户可以跟踪的用户数很少,那么pull方法是很好的。在

我与人合著了一篇关于如何有效地做到这一点的paper。基本上,我们使用了一种混合方法,根据用户统计数据确定何时推送或拉入。在

为了简单起见,我建议您实现pull模型。缓存聚合的结果,并且仅在缓存项过期一段时间后刷新用户的提要。在

相关问题 更多 >