SlideShare a Scribd company logo
构建可扩展微博架构 Tim Yang 新浪微博 技术架构师
从博客到微博
博客 功能 发表 浏览 留言 Content Manager System
博客 技术 , LAMP MySQL master/slave Memcached PHP CDN
微博 微博,产品 Real-time 关注关系 信息聚合
信息聚合
信息聚合 微博两种信息聚合设计模式 Push( 推 ) Pull( 拉 )
Push 把微博看做邮件 Inbox:  收到的微博 Outbox:  已发表微博 发表:存到所有粉丝 inbox( 重 ) 查看:直接访问 Inbox( 轻 )
Push(Figure) User A UpdateAction Inbox (Append to 1’s  home timeline) Inbox (Append to 2’s  home timeline) Inbox (Append to 3’s  home timeline) Followers of User A = 1, 2, 3
Push 优点:实现简单,首选 缺点:分发量
Pull 发表:存到自己 outbox( 轻 ) 查看:所有关注对象 Inbox( 重 )
Pull User I Get home_timeline Outbox (statuses sent by A) Outbox (Statuses sent by B) Outbox (Statuses sent by C) User I’s  Following List = A, B, C
Pull 优点:节约存储 缺点:计算量大
微博是一个消息分发系统 可采取推或拉的方式实现
架构挑战:峰值 -  如除夕、春节
请求量 如果发表量 5,000 万 / 天 平均: 578 条 / 秒 设计系统容量: 2,000?
IO 瓶颈 峰值: 5,000 – 10,000? 100,000?
后果 Latency DB read timeout 前端  timeout (503 error) 解决方案?
异步设计 不同步等待 将消息存入消息队列 (Message Queue) 轻量级的发表
MQ products Kestrel by twitter RabbitMQ, an Erlang Queue Server Memcacheq 在新浪微博项目大规模使用
Memcacheq 基于 Berkeley db,  稳定可靠 Memcached protocol,  丰富的 client library 容易监控 (stats queue) 只有 2 个命令: get/set
避免单点故障 核心服务,需避免单独故障 方法 使用多个 Memcacheq 池 Get 操作 :  轮询所有服务器  Set 操作 :  随机选择一个 无需其他复杂“架构”设计
MQ 方式通用的优点 Offline work 应用请求量不均衡 解耦 异步通讯 原则
使用 MQ 原则 计算开销大于消息分发开销
架构挑战:实时性
越重要的事件,越希望实时性
The value of the tweet decreases exponentially with time John Kalucki, Twitter http://t.sina.com.cn/pub/star#a_ty
解决思路 Cache 中心化 Ram is the new the disk
Local Cache Memcached Database buffer/cache
LAMP 中, cache= 可选层 Cache 中心化后新的问题
容量问题 TB 级 思路:压缩 QuickLZ LZO 不用 gzip
单点问题 单点故障 , SIGSEGV 如何应对 1. Consistent hash 2. Read-through cache
Consistent hash 原理 优点 震荡最小
Read-through cache
Read-through and Write-through Products or projects MySQL memcached UDF Cache money for Ruby on Rails Or wrap a proxy for the db driver, in any language
Evictions 问题 Evections: cache 数据被踢 性能的噩梦 Latency 产生的源头之一
如何避免 evictions 规划 cache 容量 将永久数据与临时数据分开 不使用随机字符作为 key
Multiget 问题 When memcached servers are CPU bound, adding more memcached servers doesn't help serve more requests. - Jeff Rothschild, Vice President of Technology at Facebook
Cache 挑战: multiget hole
解决方法 Memcached replication
架构挑战:海量存储
架构挑战: 国内网络带宽问题
地理分布 考虑到以下原因,需要分布式部署 访问速度 IDC 不可用 故障 分布的核心是数据分布
数据地理分布原理 Master-slave Master-master 2PC/3PC Paxos http://timyang.net/data/multi-idc-design /
地理分布的方案 MySQL master/slave Dynamo/Cassandra PNUTS
架构挑战: API 访问量
以新浪微博开放平台为例 REST API 编程简单, library 丰富 可用 curl, javascript 实现一个 client 缺点单向询问方式 如何解决轮询压力
解决方案: Sina App Engine Sina App Engine  应用云平台提供微博 API 底层支持 并可以 host 微博 app
微博 , Web 2.0 最核心技术之一 还有更多的架构挑战等待解决 欢迎加入新浪微博技术团队
Q&A 新浪微博: @ TimYang Twitter: @ xmpp Email: iso1600 @ gmail.com

More Related Content

PDF
大数据时代feed架构 (ArchSummit Beijing 2014)
PDF
新浪微博Feed服务架构
PDF
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
PPT
张铁安:Feed系统架构浅析
PDF
豆瓣网技术架构变迁
PPTX
Feed服务架构-新浪微博新员工培训议题
PPTX
高性能队列Fqueue的设计和使用实践
大数据时代feed架构 (ArchSummit Beijing 2014)
新浪微博Feed服务架构
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
张铁安:Feed系统架构浅析
豆瓣网技术架构变迁
Feed服务架构-新浪微博新员工培训议题
高性能队列Fqueue的设计和使用实践

What's hot (17)

PPT
java title
PDF
分布式Key Value Store漫谈
PDF
大型系统的缓存标准化之路—从主从多级重client到一体化
PPTX
MassTransit
PPT
高性能并发Web服务器实现核心内幕
PDF
Hacking Nginx at Taobao
PPTX
硬件体系架构浅析
PDF
Oracle rac资源管理算法与cache fusion实现浅析
PPTX
分布式缓存与队列
PDF
Bypat博客出品-服务器运维集群方法总结3
PPT
Mr&ueh数据库方面
PDF
Hbase架构简介、实践
PPT
快速搭建高性能服务端
PDF
天涯论坛的技术进化史-Qcon2011
PDF
Traffic server 管理员指南v1.0
PPTX
了解集群
PPT
新浪微博分布式缓存与队列-2013版
java title
分布式Key Value Store漫谈
大型系统的缓存标准化之路—从主从多级重client到一体化
MassTransit
高性能并发Web服务器实现核心内幕
Hacking Nginx at Taobao
硬件体系架构浅析
Oracle rac资源管理算法与cache fusion实现浅析
分布式缓存与队列
Bypat博客出品-服务器运维集群方法总结3
Mr&ueh数据库方面
Hbase架构简介、实践
快速搭建高性能服务端
天涯论坛的技术进化史-Qcon2011
Traffic server 管理员指南v1.0
了解集群
新浪微博分布式缓存与队列-2013版
Ad

Viewers also liked (20)

KEY
微博cache设计谈
KEY
High Performance Weibo QCon Beijing 2011
PDF
微博架构与平台安全
PDF
互联网系统的稳定性保证:微博的实践
PPT
新浪微博redis技术演化
PPTX
大规模数据库存储方案
KEY
Data Storage Practice
PPT
人人网技术经理张铁安 Feed系统结构浅析
PDF
豆瓣技术架构的发展历程 @ QCon Beijing 2009
PPTX
Java常见问题排查
PPTX
Erlang分布式系统的的领域语言
PDF
Scaling MySQL in Amazon Web Services
PPTX
基于AWS Lambda的无服务器架构在Strikingly中的应用
PDF
20141022 ユビキタスとオープン_10周年を迎えたオープンストリートマップが目指す次世代マップ
PDF
20140530 esri japan GIS User Conference 2014
PPTX
Flexible Robotic Manipulation
PPT
Order of Operations
PDF
A Snapshot On Modern Advertising
KEY
20111001 how2 usepotlatch2
微博cache设计谈
High Performance Weibo QCon Beijing 2011
微博架构与平台安全
互联网系统的稳定性保证:微博的实践
新浪微博redis技术演化
大规模数据库存储方案
Data Storage Practice
人人网技术经理张铁安 Feed系统结构浅析
豆瓣技术架构的发展历程 @ QCon Beijing 2009
Java常见问题排查
Erlang分布式系统的的领域语言
Scaling MySQL in Amazon Web Services
基于AWS Lambda的无服务器架构在Strikingly中的应用
20141022 ユビキタスとオープン_10周年を迎えたオープンストリートマップが目指す次世代マップ
20140530 esri japan GIS User Conference 2014
Flexible Robotic Manipulation
Order of Operations
A Snapshot On Modern Advertising
20111001 how2 usepotlatch2
Ad

Similar to Build scalable microblog qcon beijing 2010 (20)

PPT
构建可扩展的微博系统
KEY
新浪微博平台与安全架构
PDF
张松国 腾讯微博架构介绍08
PDF
Qcon2011-54chen-互联网分步式构架分享
PDF
微博架构Ppt
PDF
互联网分布式系统架构分享-Qcon2011
PDF
Douban qcon2009 beijing
PPT
大规模网站架构
PDF
Dreaming Infrastructure
PDF
微信201204
PDF
微信之道201204
PDF
Mysql HandleSocket技术在SNS Feed存储中的应用
PDF
优酷 Web网站架构案例分析
PDF
Youku arch qcon2009_beijing
PDF
Key value store
PPTX
Web Caching Architecture and Design
PDF
美丽说的架构发展与变迁 New
PPTX
Nosql三步曲
PDF
Bypat博客出品-服务器运维集群方法总结
PPTX
1到100000000 - 分布式大型网站的架构设计
构建可扩展的微博系统
新浪微博平台与安全架构
张松国 腾讯微博架构介绍08
Qcon2011-54chen-互联网分步式构架分享
微博架构Ppt
互联网分布式系统架构分享-Qcon2011
Douban qcon2009 beijing
大规模网站架构
Dreaming Infrastructure
微信201204
微信之道201204
Mysql HandleSocket技术在SNS Feed存储中的应用
优酷 Web网站架构案例分析
Youku arch qcon2009_beijing
Key value store
Web Caching Architecture and Design
美丽说的架构发展与变迁 New
Nosql三步曲
Bypat博客出品-服务器运维集群方法总结
1到100000000 - 分布式大型网站的架构设计

Build scalable microblog qcon beijing 2010