facebook - 在 Feeds 架构(如 Facebook 新闻或 Twitter)中,如何使 feeds 计数与 feeds 列表的长度一致?

标签 facebook twitter redis hbase feed

我正在设计一个 Feeds 系统,一个人可以发布新闻,其他人可以看到彼此的新闻,就像 Twitter 一样。

现在我将新闻保存在 HBase 中,并将它们缓存在 Redis 中。这种方法有 O(1) 插入、更新和删除,但“计数”是很难实现的:

如果我在 Redis 中保存一个单独的计数,并在插入/删除时增加/减少它,该值很容易与 Hbase 中的实际列表长度不一致:网络上的一次故障或其他一些异常可以使值(value)受委屈。

如果我从 Hbase 获取计数,这非常耗时。

我应该做出什么样的设计选择?

最佳答案

HBase 提供对原子计数器的支持:无需在 Redis 中维护计数并依赖多个系统,您只需将 HBase 用于一切(实时)。

只需插入帖子,如果一切正常,增加计数器。您甚至可以有多个计数器来跟踪每天、每周、每月、每年的帖子总数和帖子……这是一个非常强大的功能。

更多信息HBase Book有几个专用于计数器的页面,您也可以查看 increment example .

关于facebook - 在 Feeds 架构(如 Facebook 新闻或 Twitter)中,如何使 feeds 计数与 feeds 列表的长度一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813236/

相关文章:

javascript - angular.element().scope 函数在 fb 脚本中不起作用

推特光标

python - Tweepy Streaming - 停止收集 x 数量的推文

node.js - node_redis CONFIG SET命令

Redis Slave Master 连接失败 Slave 日志显示 : Unable to connect to MASTER: Permission denied

facebook - 需要在单个 Facebook 应用程序中添加多个域

Facebook 测试应用程序停止工作,生产应用程序工作正常(使用 JS SDK)

ios - Facebook News 纸质应用,全尺寸图像视差效果

Python正则表达式-获取时间和日期

spring-mvc - Spring Session 仅存储用户凭证