在 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 中存储新闻提要的最佳设计模式的主要内容,如果未能解决你的问题,请参考以下文章
Facebook ios-sdk:提要帖子不显示在新闻提要上
如何使用 Graph Api 在 facebook 新闻提要中获取“新添加的照片到相册”
使用 Facebook Graph Api 在 iphone 中解析新闻提要响应