【发布时间】:2011-05-10 05:50:33
【问题描述】:
只是想知道你们如何使用 nosql(如 redis)来做一个像简单的 facebook 这样的 feed 聚合器。
基本上,您有很多个人资料,每个个人资料都有自己的供稿。每次用户请求聚合时,系统都会获取所有这些配置文件,处理它们(并将它们分组),然后显示给用户。这种方法的问题是当某人有 1000 个朋友时,系统必须获取 1000 个提要(无论是否有任何更新)然后处理它们。
你们会怎么做呢?
【问题讨论】:
只是想知道你们如何使用 nosql(如 redis)来做一个像简单的 facebook 这样的 feed 聚合器。
基本上,您有很多个人资料,每个个人资料都有自己的供稿。每次用户请求聚合时,系统都会获取所有这些配置文件,处理它们(并将它们分组),然后显示给用户。这种方法的问题是当某人有 1000 个朋友时,系统必须获取 1000 个提要(无论是否有任何更新)然后处理它们。
你们会怎么做呢?
【问题讨论】:
显然,如果您无法实时更新,则需要在用户要求之前完成更新 - 基本上,您拥有所有已知提要的列表并定期检查更新,可能基于关于每个提要的更新频率。当用户请求聚合时,您只需返回已有的数据。
确保数据是合理最新的有点棘手。如果你是谷歌,你可以每隔几分钟检查一次整个互联网——这对大多数人来说不是一个选择。但是,您可以通过结合智能更新计划和使用可用的实时 API 来合理地接近实时。对于类似的事情,我正在研究的基本架构是一个数据存储,其中包含所有帖子和许多可以从特定类型的提要中提取数据并以通用格式将帖子添加到数据存储的进程。
【讨论】: