斗鱼高并发架构实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 高并发架构实现
斗⻥高并发架构实践 / 李奇
2.
3. 李奇
目前负责斗⻥ Go 基础建设 以及 斗⻥ Jupiter 微服务开源框架。
专注于云原生、微服务架构,在高并发和高可用方面有丰富经验和沉淀。深度参与斗
⻥直播流、弹幕高并发架构设计。
4. 目录
CONTENTS
03
02
01
直播流介绍
架构实践
总结 & 规划
5. 直播流介绍
01 02 03
业务核心 流量突发 延迟敏感
• 故障等级 P0 • 大主播 首映 • 请求成功率 4个
• 响应异常 零容忍 • 流质量 不稳定 • 响应耗时 10m
• SLA 要求 4个9 • TPS 40w+ • 首屏时间 要求高
6. 1 微服务化
2 直播流秒开
架构实践
3 多云多活
7. 微服务化 - WHY
A B C
快速扩容 模块隔离 技术异构
8. 微服务化 - 架构
9. 微服务化 - 监控中心
10. 微服务化 - 配置中心
11. 微服务化 - 性能诊断
12. 微服务化 - 性能诊断
13. 微服务化 - 全链路压测
➢ 目的
摸清服务真实水位
提前解决性能瓶颈
➢ 手段
流量染色
数据隔离
⻛险熔断
14. 微服务化 - 全链路压测
➢ 优化网关缓存配置
➢ 优化核心服务性能
➢ 优化日志库性能
15. 微服务化 日志性能优化
16. 微服务化 -日志性能优化
17. 微服务化 -日志性能优化
18. 微服务化 - 全链路压测
19. 微服务化 -日志性能优化
20. 直播流秒开 - WHY
A
首屏时间
B
卡顿率
C
失败率
21. 直播流秒开 - 架构
22. 直播流秒开
天枢系统:全链路监控,多指标多维度
23. 直播流秒开
全链路优化,从客户端到服务端
➢ 分层次
• 客户端缓存
• 服务端缓存
➢ 分等级
• 头部主播重点缓存、防止缓存穿透
• ⻓尾主播过期缓存(read through+single flight)
24. 直播流秒开
全链路优化,从客户端到服务端
客户端缓存
➢ 预埋流地址
减少请求次数
提高加载速度
➢ HttpDNS 预加载
提高流加载速度
防止 localDNS 被劫持
25. 直播流秒开
全链路优化,从客户端到服务端
服务端缓存
➢ 动静缓存
静态数据【量级小】:配置数据、黑白名单
动态数据【量级大】:开播信息、房间信息
➢ 数据代理
数据标签、数据版本、预编码、数据分片
减少数据库压力、提高业务复用性
➢ 头部主播
26. 直播流秒开
精简字段:基于 fieldmask 按需索取
27. 直播流秒开 - 首帧时⻓
28. 多云多活 - WHY
A B C
多云容灾 容量瓶颈 同城多活
29. 多云多活 - 架构
30. 多云多活 - 中央注册中心
• 黑实线:正常情况下的专线访问
• 黑虚线:切公网方式访问
• 红实线:etcd 集群发生主备切换后的专线访问
• 红虚线:etcd 集群发生主备切换后的公网访问
31. 多云多活 - 强弱依赖分析
32. 多云多活 - 强弱依赖分析
33. 多云多活 - 故障演练
34. 多云多活 - 故障演练
35. 总结 & 规划
评估
测量
优化
36. 总结 & 规划
37. wechat: sysulq