【发布时间】:2016-02-19 06:02:19
【问题描述】:
我正在尝试对 reddit 如何计算和提供热页面进行后端设计。我还使用“热门”评级来订购我网站上的帖子。我有一些我正在努力克服的问题。以下是我认为可能有意义的一些设计方式:
计算热门值:目前我正在计算价值并将其与投票本身一起存储在数据库中,每当有人对帖子进行投票或有人加载帖子时。这可能不是很好。例如,我正在考虑通过每 5 分钟一次的 cron 作业简单地更新所有帖子的热值,并且仅适用于例如 2 个月以上的帖子。这种设计应该适用于成千上万的帖子,有些我不确定这是否是最好的解决方案,但我确实读过 reddit 至少在一开始确实使用 cron 作业来做到这一点。
查询帖子:这是我现在比较担心的部分。现在的问题是,如果我滚动(页面底部加载了更多帖子),由于帖子在热值中上升和下降,我可能会看到重复的帖子。现在每次加载新帖子时都会进行数据库查询以检索帖子。我认为使用 memcached 并缓存帖子查询会很有意义(这将需要应用于很多页面),但我不确定这是否能完全解决我的问题。理想情况下,我找到一个解决方案,它基本上是“快照”(缓存?)数据库并从数据库中的该版本表加载,直到加载新页面。
这是一个困扰我多年的问题,我正在尝试找到一个合适的解决方案,了解如何最好和最有效地计算热门评分值并按热门评分的顺序获取帖子而不改变值(为了避免重复和可能丢失的帖子)当我向下滚动页面并加载新的帖子集时,同时保持过程良好和高效。对此有什么想法吗?
【问题讨论】:
标签: architecture reddit