Sina微博构架师-杨卫华:构建可扩展的微博系统_第1页
Sina微博构架师-杨卫华:构建可扩展的微博系统_第2页
Sina微博构架师-杨卫华:构建可扩展的微博系统_第3页
Sina微博构架师-杨卫华:构建可扩展的微博系统_第4页
Sina微博构架师-杨卫华:构建可扩展的微博系统_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

构建可扩展微博架构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)解决方案?异步设计不同步等待将消息存入消息队列(MessageQueue)轻量级的发表MQproductsKestrelbytwitterRabbitMQ,anErlangQueueServerMemcacheq在新浪微博工程大规模使用Memcacheq基于Berkeleydb,稳定可靠Memcachedprotocol,丰富的clientlibrary容易监控(statsqueue)只有2个命令:get/set防止单点故障核心效劳,需防止单独故障方法使用多个Memcacheq池Get操作:轮询所有效劳器Set操作:随机选择一个无需其他复杂“架构”设计MQ方式通用的优点Offlinework应用请求量不均衡解耦异步通讯原那么使用MQ原那么计算开销大于消息分发开销架构挑战:实时性越重要的事件,越希望实时性Thevalueofthetweetdecreasesexponentiallywithtime

JohnKalucki,Twitter://t.sina/pub/star#a_ty解决思路Cache中心化RamisthenewthediskLocalCacheMemcachedDatabasebuffer/cacheLAMP中,cache=可选层Cache中心化后新的问题容量问题TB级思路:压缩QuickLZLZO不用gzip单点问题单点故障,SIGSEGV如何应对1.Consistenthash2.Read-throughcacheConsistenthash原理优点震荡最小Read-throughcacheRead-throughandWrite-throughProductsorprojectsMySQLmemcachedUDFCachemoneyforRubyonRailsOrwrapaproxyforthedbdriver,inanylanguageEvictions问题Evections:cache数据被踢性能的噩梦Latency产生的源头之一如何防止evictions规划cache容量将永久数据与临时数据分开不使用随机字符作为keyMultiget问题WhenmemcachedserversareCPUbound,addingmorememcachedserversdoesn'thelpservemorerequests.-JeffRothschild,VicePresidentofTechnologyatFacebookCache挑战:multigethole解决方法Memcachedreplication架构挑战:海量存储架构挑战:国内网络带宽问题地理分布考虑到以下原因,需要分布式部署访问速度IDC不可用故障分布的核心是数据分布数据地理分布原理Master-slaveMaster-master2PC/3PCPaxos:///data/multi-idc-design//地理分布的方案MySQLmaster/slaveDynamo/CassandraPNUTS架构挑战:API访问量以新浪微博开放平台为例RESTAPI编程简单,library丰富可用curl,javascript实现一个client缺点单向询问方式如何解决轮询压力解决方案:SinaAppEngineSinaAppEngine应用云平台提供微博A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论