构建高性能的微博系统——再谈新浪微博架构

构建高性能的微博系统——再谈新浪微博架构

ID:15360361

大小:10.09 MB

页数:64页

时间:2018-08-02

构建高性能的微博系统——再谈新浪微博架构_第1页
构建高性能的微博系统——再谈新浪微博架构_第2页
构建高性能的微博系统——再谈新浪微博架构_第3页
构建高性能的微博系统——再谈新浪微博架构_第4页
构建高性能的微博系统——再谈新浪微博架构_第5页
资源描述:

《构建高性能的微博系统——再谈新浪微博架构》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、BuildHighPerformanceWeiboSystem@TimYang•微博是什么?•140字•根据关注关系实时投递•支持评论、转发及图片、视频等媒体相关演讲•《构建可扩展的微博系统》QCon2010•《微博架构与平台安全》WDC2010Agenda3421Part1海量存储每天近亿条新记录,大部分记录变更需要即时反映到业务系统(一致性),如何解决?MySQL•适合海量存储,可不断拆分扩展•久经考验拆分策略•按hash拆分•多维度,如关系•多级索引,如user_timelineindex问题•单机性能

2、限制、需要持续拆分•访问速度需求•用户•关系,每秒5万次•延迟MySQL+cache问题•雪崩•一致性•cache数据类型不够,需要序列化•额外开销•添加及修改问题NoSQL“Databasesarespecializing–the“onesizefitsall”approachnolongerapplies.”MongoDB设计哲学NoSQL?•单机思路•Redis•MongoDB•分布式思路•Cassandra•HBase用好一款开源产品的前提条件是深入了解它的定位。特性比较•MongoDB•Redis•HBase•Cas

3、sandraRedis-持久方式•持久化存储模式理解•snapshot-主流•vm-作者放弃•diskstore-作者新方向•aof-重建慢Redis-数据类型•string:keyvalueredisObject16bytes/item•list:双向链表40bytes/item•hash:zipmap(<64)•set/sortedsetRedis-Replication•重读rdb文件问题•代码实现简单Redis-容量规划Redis-定位•需要高速读写访问•能容忍短期不可用,无成熟failover方案•有list/se

4、t数据结构需求(optional)海量存储•MySQL,久经考验的海量存储•NoSQL,填补MySQL与cache之间空隙,但是需要有合适的驾驭能力Part2实时计算微博架构(第三版)$30%5)/.*#(4#,!0,86)&"7+'4-  521,服务→接口→应用问题一大部分Web系统瓶颈在于cache数据访问,仅用压缩是否足够?可用的cache资源放不下所有热点数据,导致数据加载日趋缓慢•扩容?•减负?“Web系统用json来存储及cache非常浪

5、费。一条微博用json数据结构来存所有字段(包括作者信息),需要2~5K字节左右,用xml需要10k左右,用protobuf序列化后,大约只有500字节。”3月6日00:47转发(495)

6、评论(134)历程RDBMS→Keyvalue(JSON)→Protocolbuffers(binary)JSON烦恼•DB•Cache•MessageQueue•APIPB优势•Numeric:varint,from1byte•仅传输编号,不传输字段名称•支持多语言:Java,C++,Python...•编解码高效•从cache最终结果

7、到中间结果,进一步节约空间•“192.168.0.1”→“0xc0a80000”→varintBenchmarkTextText(数据来源:http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking)“WewouldliketoprovidepublicAPIsthatacceptprotocolbuffersaswellasXML,bothbecauseitismoreefficientandbecausewe'rejustgoingtoconvert

8、thatXMLtoprotocolbuffersonourendanyway.”-Google数据结构,小即是美异步处理需求•微博的发表是异步处理•随着平台应用增多,与应用相关数据操作也逐渐转向异步方式•其他需要异步的操作?问题二随着系统增大,“一上线就出问题”情况增多,追究原因很大一部分是由于开发人员对异步处理缺乏深度理解。•传统LAMP应用中,单个操作步骤增多及处理时间增大对整体性能影响不大。•异步队列处理程序中1ms的处理时间延长可能会引起连锁反应及业务故障。•实时监控队列处理性能指标数据。异步监控•MQstat•MQ

9、Processorstat问题三明星用户上百万粉丝,数据如何实时投递到所有用户?为什么显示有“1条新评论”,点开却没有数据?实时性与一致性•Timeline消息流,计数,关系变更等业务需要及时投递给所有用户•为了解除耦合,功能由不同服务完成•异步处理•将写cache与数据库分开•RAM化老

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。