1

本周我读了一篇有趣的文章,其中解释了作者如何实施一项活动。基本上,他们使用两种方法来处理活动,我正在适应我的场景,所以假设我们有一个用户 foo,他有一定数量 (x) 的追随者:

if x<500, then the activity will be copyied to every follower feed
    this means slow writes, fast reads
if x>500, only a link will be made between foo and his followoers
    in theory, fast writes, but will slow reads

因此,当一些用户访问您的活动提要时,服务器将获取并合并所有数据,因此这意味着在他们自己的复制活动中快速查找,然后跨链接查询。如果时间线有 20 个限制,那么我每个取 10 个然后合并。

我正在尝试使用 Riak 和Linking的功能来做到这一点,所以这是我的问题:链接比复制快吗?我的建筑理念够好吗?还有其他我应该看到的解决方案和/或技术吗?

PS.:我没有为生产实现活动提要,它只是为了学习如何实现一个表现良好并稍微使用 Riak 的活动提要。

4

1 回答 1

2

两个想法。

1) 不,链接(在 Riak Link Walking 的意义上)很可能不是实现这一点的正确方法。一方面,每个链接都存储为一个单独的 HTTP 标头,并且 HTTP 规范中建议限制您应该发送多少标头字段。(虽然,公平地说,在测试中你可以在 Riak 的标题中使用超过 1000 个链接,似乎工作正常。但不推荐)。更重要的是,通过 Link Walking api 查询这些链接实际上在后端使用 MapReduce,并且对于您打算使用的那种用法来说相当慢。

这并不是说您不能存储作为链接列表的 JSON 对象,当然,这是一种有效的方法。我只是建议不要为此使用 Riak 链接。

2)至于如何正确实现它,这是一个更难的问题,并且取决于您的流量和用例。但是你的一般方法是有效的——复制一些 X 更新值的提要(X 是 500 还是更小应该在测试中确定),并在更新数量大于 X 时链接。

你应该如何链接?您有 3 个选择,所有选择都需要权衡。1) 使用二级索引 (2i),2) 使用搜索,或 3) “手动”使用链接,意思是存储 JSON 文档和您手动取消引用的 URL(相对于使用链接遍历查询)。

我强烈建议您观看剪贴板工程师的视频: http: //vimeo.com/album/2258285/page :2/sort:preset/format:thumbnail (在 Riak 上构建社交应用程序),看看他们是如何解决这个问题的问题。(他们基本上使用搜索进行链接)。

于 2013-02-26T18:05:39.480 回答