构建可扩展微博架构TimYang新浪微博技术架构师从博客到微博博客功能发表浏览留言ContentManagerSystem博客技术,LAMPMySQLmaster/slaveMemcachedPHPCDN微博微博,产品Real-time关注关系信息聚合信息聚合信息聚合微博两种信息聚合设计模式Push(推)Pull(拉)Push把微博看做邮件Inbox:收到的微博Outbox:已发表微博发表:存到所有粉丝inbox(重)查看:直接访问Inbox(轻)Push(Figure)UserAUpdateActionInbox(Appendto1’shometimeline)Inbox(Appendto2’shometimeline)Inbox(Appendto3’shometimeline)FollowersofUserA=1,2,3Push优点:实现简单,首选缺点:分发量Pull发表:存到自己outbox(轻)查看:所有关注对象Inbox(重)PullUserIGethome_timelineOutbox(statusessentbyA)Outbox(StatusessentbyB)Outbox(StatusessentbyC)UserI’sFollowingList=A,B,CPull优点:节约存储缺点:计算量大微博是一个消息分发系统可采取推或拉的方式实现架构挑战:峰值-如除夕、春节请求量如果发表量5,000万/天平均:578条/秒设计系统容量:2,000?IO瓶颈峰值:5,000–10,000?100,000?后果LatencyDBreadtimeout前端timeout(503error)解决方案?异步设计不同步等待将消息存入消息队列(Message