如何提高timeline的响应速度,请问各位在这方面的经验?

Lin_Yuan 发布于 2011/06/15 11:47
阅读 217
收藏 0

最近在做一个有timeline功能的网站,及要把用户关注的人的一些信息按时间显示出来。

一般而言有两个方案,一是在用户的关系表(查询得到关注的人)和用户的一些动作表(用户行为)这两个表中做联合查询,但是可能在用户数比较多的情况下效率比较慢,这是所谓的pull方法。

一个是每个用户有一定动作后在队列中把用户动作分发到每一个关注他的人那里,这样对用户来说可以直接查询最近的timeline,效率比较高,但是要涉及一系列队列动作,而且增加或者取消了关注还需要修改以前已经推送的结果,好处就是用户数量比较大的时候效率较高,当然也有一定的延迟。这是所谓的push方法。

两种方法都要配合缓存来提高效率。据说新浪微薄同时用了两种方法。

用户数量不太多的情况下第一种方案速度是不错的,但如果用户数量增加之后该如何考虑转到第二种方案呢?一般的数据库(mysql)的join查询在用户数量达到什么数量级的时候会明显影响使用效率?

看到OS China的注册用户数有十几万(15万左右吧,活跃用户估计两三万),动弹这个功能的速度和效率还是很快的。请问能介绍一下这方面的经验吗?

加载中
0
红薯
红薯

oschina 目前是使用缓存直接处理,每个人有自己的一个缓存队列,当发布新动态或者关注的人有新动态的时候,就会清空这个队列,重新从数据库中获取信息。

这种做法在目前oschina这种规模下是没问题的,但下一步我们也在思考如何应付更大的负载

0
b
bao231

引用来自“红薯”的答案

oschina 目前是使用缓存直接处理,每个人有自己的一个缓存队列,当发布新动态或者关注的人有新动态的时候,就会清空这个队列,重新从数据库中获取信息。

这种做法在目前oschina这种规模下是没问题的,但下一步我们也在思考如何应付更大的负载

哦,这样的话新动态如果非常多的话,岂不是要join很长时间嘛?
小编辑
小编辑
@Lin_Yuan: 多回答问题,多分享就有分了哦,我 @小编辑第一个给你加分,哈哈
Lin_Yuan
Lin_Yuan
多谢红薯老大的及时回答!不过我这里太穷,没法给您加分,呵呵。
0
b
bao231
我还有一个疑问啊,就是现在oschina的动态表的结构是怎么样的?能不能分享一下关于动态的相关表设计呢?呵呵
红薯
红薯
@bao231: osc_opt_logs
b
bao231
@红薯: 动态表是怎么没找到呢?是不是没有更新,这个有点老了?
红薯
红薯
http://www.oschina.net/code/search?q=PDM
返回顶部
顶部