在 ElasticSearch 中存储新闻提要的最佳设计模式

Posted

技术标签:

【中文标题】在 ElasticSearch 中存储新闻提要的最佳设计模式【英文标题】:Best design pattern for storing News Feed in ElasticSearch 【发布时间】:2017-08-28 21:53:45 【问题描述】:

我们有一个拥有 500 万用户的移动应用,现在我们正在尝试基于 ES 设计新闻提要。目标是有机会创建帖子、存储帖子并为其他用户订阅。所以我们需要根据每个人的订阅情况为每个人选择帖子。

经过一些研究和谷歌搜索,我发现了一些可以在我们的用例中使用的流行方法。

    为每个用户创建索引。我认为这对我们来说不是一个好主意,因为它需要为每个订阅者索引插入一个新帖子。另外,如果我们有 1 亿用户呢?

    为所有帖子创建一个索引。然后对于每个用户,我们可以创建一个别名,并根据他订阅的用户 ID 进行过滤。但是随后我们将不得不在为用户创建新闻提要时使用许多分片。所以有3种方式。

    按用户 ID 路由。它类似于 2 方式,但不同之处在于我们为每个用户创建一个别名,并通过其 userId 进行路由。缺点是我们索引中的每个帖子都会有多少人应该接受多少份。

还有另一种模式,我读过。但我仍然没有明确的愿景 - 我们的用例中的最佳实践是什么。

此外,我们还有 ES 的替代方案 - Cassandra。但决定仍在进行中。

也许有人可以说出他在这个问题上的专业知识并给出建议。也欢迎批评。

提前谢谢你。

【问题讨论】:

你找到最好的方法了吗?如果是这样,你能分享一下吗?谢谢 我也在找同样的。 已经有一年多了。你得到你的答案了吗,因为我有同样的问题 【参考方案1】:

您可以使用观察者模式,您的新闻将发送给您的所有订阅者

【讨论】:

问题是关于存储和查询大量数据

以上是关于在 ElasticSearch 中存储新闻提要的最佳设计模式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 中创建新闻提要 UI

Facebook ios-sdk:提要帖子不显示在新闻提要上

如何使用 Graph Api 在 facebook 新闻提要中获取“新添加的照片到相册”

使用 Facebook Graph Api 在 iphone 中解析新闻提要响应

如何在 Google App Engine 上为社交新闻提要建模

在 modx 中为移动新闻提要创建仅内容页面