我正在构建一个网站,允许用户“关注”不同的成员,每当该成员发帖时,它都会按时间倒序将其添加到所有关注者事件流中。这些天很常见的东西。
但我无法确定最可扩展/面向 future 的实现方式(无连接)。
我正在使用 flask/heroku/sqlalchemy/postgres。我正在考虑使用 Open-redis 插件并做一些类似 instagram 提到的事情:每个用户都有一个 redis 列表,每当“关注”帖子时,它都会将该帖子添加到每个关注者列表的开头并缩减其总大小。
我对 Redis 的了解还不够,无法确定对每个用户流单独依赖它是否安全。对于 open-redis,他们没有提到任何关于持久性的事情,所以我不知道这是否只是一个假设的常见事情。
如果 redis 不是 100% 可靠/安全,关于我如何使用 postgres/Hstore 做到这一点的任何想法(请不要加入)。
最佳答案
我们为第二大在线时尚社区构建了一个解决方案,并开源了我们的方法: https://github.com/tschellenbach/Feedly 它是目前最大的旨在解决这个问题的开源库。 您可以同时使用 Redis 和 Cassandra 作为存储后端。
我们已经在 Redis 上运行了一年多,没有遇到任何问题。如果设置正确,它会运行得非常稳定,并且不太可能丢失数据。
构建 Feedly 的同一个团队还提供了一个托管 API,它可以为您处理复杂的问题。看看getstream.io有用于 Python、PHP、Node 和 Ruby 的客户端库。
此外,请查看这篇高可扩展性文章,我们解释了一些涉及的设计决策: http://highscalability.com/blog/2013/10/28/design-decisions-for-scaling-your-high-traffic-feeds.html
This tutorial将帮助您使用 Redis 设置类似 Pinterest 提要的系统。入门非常简单。
要了解有关 Feed 设计的更多信息,我强烈建议阅读我们基于 Feedly 的一些文章:
- Yahoo Research Paper
- Twitter 2013 Redis based , 有回退
- Cassandra at Instagram
- Etsy feed scaling
- Facebook history
- Django project , 具有良好的命名约定。 (但仅限数据库)
- http://activitystrea.ms/specs/atom/1.0/ ( Actor 、动词、宾语、目标)
- Quora post on best practises
- Quora scaling a social network feed
- Redis ruby example
- FriendFeed approach
- Thoonk setup
- Twitter's Approach
关于postgresql - 只用redis来实现activity stream有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14525307/