我一直致力于社交应用。我将首先解释这些问题,然后在下面的问题中进行总结。
在网络中,会有频道和用户。用户可以订阅这些频道,也可以订阅其他用户。这样,我们就有两个来源可以生成帖子。
现在,我们可以简单地保留一个活动模型来记录所有操作,它们的种类以及它们的影响。无论是来自频道,还是来自用户。在为每个用户创建Feed时参考这些内容。
我在Brett Slatkin的 talk 中找到了一个解决方案,它基本上建议使用ListProperty将每个帖子与每个订阅者链接起来。但Guido suggests如果有超过1000个元素,则不使用列表。因此,如果一个频道的用户数超过1000,这可能会遇到问题。即使这样做 -
我想根据受欢迎程度(基于投票数,评论数)对帖子进行排名,并应用一些时间衰减功能。更像是Reddit。为此,我必须将Activity保留在内存中,并根据每个用户的排名对其进行过滤和排序。我还需要定期这样做,因为新活动将继续发生,旧的活动也会获得,或者失去价值。
挑战在于 - 将数据保存在内存中(用于处理Feed以及保持快速)。我将不得不将每个用户提要的副本存储到持久存储中,但如果帖子的顺序将会发生变化,我该如何在数据库中跟踪它?
另外:我保持打开选项 - 如果必须,我将转移到AWS。
总结:
我已经阅读了几篇文章,我可以解决AWS的前两个问题,但我试图远离手动扩展工作。如果没有办法,我愿意转向AWS。即使我转移到AWS,我也无法想到第三个问题的解决方案。
任何想法,方向,资源都会有所帮助!谢谢!