亿级用户下的新浪微博平台架构
2020-02-23 179浏览
- 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! @卫向军_微博