资源描述:
《sina微博构架师-杨卫华:构建可扩展的微博系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、构建可扩展微博架构TimYang新浪微博技术架构师从博客到微博博客功能发表浏览留言ContentManagerSystem博客技术,LAMPMySQLmaster/slaveMemcachedPHPCDN微博微博,产品Real-time关注关系信息聚合信息聚合信息聚合微博两种信息聚合设计模式Push(推)Pull(拉)Push把微博看做邮件Inbox:收到的微博Outbox:已发表微博发表:存到所有粉丝inbox(重)查看:直接访问Inbox(轻)Push(Figure)UserAUpdateActio
2、nInbox(Appendto1’shometimeline)Inbox(Appendto2’shometimeline)Inbox(Appendto3’shometimeline)FollowersofUserA=1,2,3Push优点:实现简单,首选缺点:分发量Pull发表:存到自己outbox(轻)查看:所有关注对象Inbox(重)PullPull优点:节约存储缺点:计算量大微博是一个消息分发系统可采取推或拉的方式实现架构挑战:峰值-如除夕、春节请求量如果发表量5,000万/天平均:578条/秒设
3、计系统容量:2,000?IO瓶颈峰值:5,000–10,000?100,000?后果LatencyDBreadtimeout前端timeout(503error)解决方案?异步设计不同步等待将消息存入消息队列(MessageQueue)轻量级的发表MQproductsKestrelbytwitterRabbitMQ,anErlangQueueServerMemcacheq在新浪微博项目大规模使用Memcacheq基于Berkeleydb,稳定可靠Memcachedprotocol,丰富的clientli
4、brary容易监控(statsqueue)只有2个命令:get/set避免单点故障核心服务,需避免单独故障方法使用多个Memcacheq池Get操作:轮询所有服务器Set操作:随机选择一个无需其他复杂“架构”设计MQ方式通用的优点Offlinework应用请求量不均衡解耦异步通讯原则使用MQ原则计算开销大于消息分发开销架构挑战:实时性越重要的事件,越希望实时性ThevalueofthetweetdecreasesexponentiallywithtimeJohnKalucki,Twitterhttp:/
5、/t.sina.com.cn/pub/star#a_ty解决思路Cache中心化RamisthenewthediskLocalCacheMemcachedDatabasebuffer/cacheLAMP中,cache=可选层Cache中心化后新的问题容量问题TB级思路:压缩QuickLZLZO不用gzip单点问题单点故障,SIGSEGV如何应对1.Consistenthash2.Read-throughcacheConsistenthash原理优点震荡最小Read-throughcacheRead-th
6、roughandWrite-throughProductsorprojectsMySQLmemcachedUDFCachemoneyforRubyonRailsOrwrapaproxyforthedbdriver,inanylanguageEvictions问题Evections:cache数据被踢性能的噩梦Latency产生的源头之一如何避免evictions规划cache容量将永久数据与临时数据分开不使用随机字符作为keyMultiget问题WhenmemcachedserversareCPUbou
7、nd,addingmorememcachedserversdoesn'thelpservemorerequests.-JeffRothschild,VicePresidentofTechnologyatFacebookCache挑战:multigethole解决方法Memcachedreplication架构挑战:海量存储架构挑战:国内网络带宽问题地理分布考虑到以下原因,需要分布式部署访问速度IDC不可用故障分布的核心是数据分布数据地理分布原理Master-slaveMaster-master2PC/3
8、PCPaxoshttp://timyang.net/data/multi-idc-design/地理分布的方案MySQLmaster/slaveDynamo/CassandraPNUTS架构挑战:API访问量以新浪微博开放平台为例RESTAPI编程简单,library丰富可用curl,javascript实现一个client缺点单向询问方式如何解决轮询压力解决方案:SinaAppEngineSinaAppEngine应用云平台提供微博API