0
0

Notes about Timelines @ Twitter

Tim 发表于 2012年05月03日 11:45 | Hits: 2664
Tag: 架构 | microblog | twitter | weibo

Twitter timeline团队负责人在QCon London上分享了一篇Timelines @ Twitter的演讲,以下是其中一些摘要。

数据

1亿活跃用户
Timeline接口2万QPS
推送平均1ms,99% 4ms以内
每天2.5亿条新Tweets,平均3千/秒,峰值1万以上。
每天260亿次分发,每秒1800万(从中看出平均关注100人)
投递100万粉丝的时间需要3.5秒,每秒可投递28万

架构

材料中以介绍推(fan-out)为主
对于followers多的用户,从fan-out上采用pipeline的方式并行投递推送,每个任务负责分发4000个粉丝

fan-out首先投递到timeline cache上(page cache?)
用户收件箱采用redis存储,Redis只包括活跃用户,冷用户随时间过期
使用Redis的list数据结构,每个item中还包括tweet ID, user ID及标志位3个字段
使用Redis RPUSHX来避免写入冷用户
对于频繁访问用户的timeline, 设置in-process cache(local cache)
fan-out及fan-in的比较如下

技术选型与演进

Redis,使用了Redis来代替之前的memcached来存储vector cache
Thrift, 内部调用已经基本使用Thrift方式服务化,参看P109
Scala,内部服务基本使用Scala实现,但搜索模块使用Java实现,视频Q&A中提到
Finagle,较多篇幅介绍,是一个Scala实现的网络库,基于Netty框架的基础上

Similar Posts:

原文链接: http://timyang.net/architecture/notes-timelines-twitter/

0     0

我要给这篇文章打分:

可以不填写评论, 而只是打分. 如果发表评论, 你可以给的分值是-5到+5, 否则, 你只能评-1, +1两种分数. 你的评论可能需要审核.

评价列表(0)