亿级用户下的新浪微博平台架构
如果无法正常显示,请先停止浏览器的去广告插件。
1. 亿级用户下的新浪微博平台架构
@卫向军_微博
2. Agenda
1. 微博的技术架构
2. 微博平台的技术挑战
3. 微博平台架构演变与第三代技术架构体系
4. Watchman-分布式服务追踪系统
5. Feed多级双机房缓存系统
6. 致谢
3. 微博技术架构
客户端
Web(JS、CSS、HTML)
接入层
Web(php)
后台
搜索
Android
MAPI
微博平台(Java)
iPhone
Push 网关
大数据
4. 平台架构演变
2009 - 2010
LAMP
2011 - 2014
面向SOA的架构
2014 – 将来
技术架构、业务架构、
技术保障多维度结合
5. 平台技术挑战
10亿级PV,百万级的QPS,千亿级数据
4个9的可用性,150ms的SLA,线上故障5min内处理。
1.02亿DAU,6941万的总互动量,相关阅读数41.5亿(羊年除夕)。
百个微服务,2次/周的常规上线与不限次数的紧急上线
数据量
bigger than bigger
用户体验 业务
faster than faster more and more
6. 第三代技术体系
业务架构
技术架构
4
1
接口层
Feed
关系
通讯
2
7
关系
RPC
通讯
服务层
MCQ
短链
用户
发号器
3
Config
6
MC HBase Cache组件
Redis MySQL 对象库
基
础
组
件
+
分
布
式
追
踪
组
件
服务治理
10
SLA
接口框架
5
Feed
资源层
监控平台
8
流量切换
11
服务状态 服务依赖
调用链 发布和灰度
9
12
Error
扩容与缩容
异常
7. 水平维度分析
层次
特点
机器
技术保障
接口层
• 无状态设计
• 前端(侧重 • 高可扩展性
• 支持HTTP/1.1协 CPU和内存)
• 支持内外网两
议,JSON数据格 种部署
式
服务层
• 无状态设计
• RPC
Server
• 高可扩展性
• 组合服务与原子 队列处理机 • 主要部署在内
服务
(侧重CPU和 网
内存)
资源层
• 数据可靠性要求 • Hbase/MySQL
•
很高
• MC/MCQ/
• 容量与QPS规划
•
• 扩容方案
Redis(侧重
•
内存与硬盘)
•
扩展性较差
数据迁移
服务扩容
安全性要求高
8. 平台架构延伸
维度
业务架构
技术架构
技术保障
平台团队
• 业务架构师 • 技术架构师
• 平台运维团
和业务工程 队
师
团队职责
• 业务模块化、 • 提供标准化 • 服务保障
服务化
• 服务上线、
的技术框架
下线
• 业务流程优 • 业务监控与
• 解决系统高 报警
化
并发、高可
• 业务容量评
用、高可扩
估
展问题
1. 平台组织架构(物理)与技术体系(逻辑)从无缝结合,提
高了团队协作的效率,降低了沟通成本。
2. 12个区间分别聚焦于各自的侧重点,指明长期的发展方向。
9. 分布式追踪系统
10. 分布式服务痛点
• 同一个请求,处理时依赖多
个微服务。
• 各个服务之间互相隔离,导
致出问题时,排查特别困难。
• 不同服务的日志无法有效的
匹配。
11. WatchMan系统
解决的问题
• 生成完整的请求调用链,方便排查问题。
• 生成服务依赖关系图,查询线上服务的状态。
• 结合RPC框架,扩展服务治理功能。
设计要点
• 生成唯一的RequestID标识,并逐级递归传递给调用的
HTTP与RPC服务。
• 对业务系统最低侵入原则,使用AOP方式织入平台中
间件。
• 对业务系统性能影响最小,采用1/1000的采样率。
12. 调用链模型
User 节点A
CS SR
CS
节点B
rpc1
SR
CR SS
CS SR
节点D
rpc3
rpc2
rpc4
CR
CR
SS
SS
节点C
节点E
4节点模型:
CS
=
Client
Send
SR
=
Server
Receive
SS
=
Server
Send
CR
=
Client
Receive
13. 系统架构设计
agent agent
Web
V4
Server Web
V4
Client
1.1
agent agent
RPC
Client
(MC/Redis/资源
中间件/...)
RPC
Server
1.3
1.2
标准化日志
1.4
解决跨语言、跨框架的问题,微
博平台所有服务以及接口通过生
成标准的日志,支撑不同的接口
框架以及RPC服务框架。
Scriber
Serer
Spark
HBase
UI
14. Feed多级分布式缓存设计
15. ⽤用户访问模型驱动设计
模型建
立
模型摸
索
模型发
生变化
常见的模型指标:
• 读写比
• 访问时长分布
• 访问时段分布
• 访问量分布
• 访问来源分布
• ……
16. Feed用户行为分析
⽤用户浏览⻚页数统计
微博曝光量⽇日志抽样分析:
97%⽤用户都是浏览5天内的微博
17. Feed缓存结构与聚合图
18. 多级双机房缓存系统
idc1
idc2
L1扩容,增加吞吐量
L1
Group
L1
Group
Master扩容,增加容量
Master
Group
idc1过来的请求
L1
Group
互为主备
L1
Group
Slave
Group
• 支持一致性Hash、Mod、日期hash等策略。
idc2过来的请求
• 每一组资源最佳4-‐6台。
19. Feed
存储架构-‐MySQL
20.
offset,count
一级索引
ids
内容
Content
UID
Hash/分库
• 按照UID分库
分表
• 每个用户每个
月一条记录
• 每条记录表示
这个用户这个
月发表了多少
条微博
按照Month分表
• 数据冷热区分
• 每个instance冷热数据均等
• 按照ID分库
分表
• 每天建立一
张表
21. 总结
在分布式服务系统中,业务架构、技
术架构与技术保障三者互为补充,共
同保障系统的高可用性、高可扩展性、
高吞吐量。
22. Thank
You!
@卫向军_微博