B站大型活动背后的数据库保障
如果无法正常显示,请先停止浏览器的去广告插件。
1. B 站大型活动背后的数据库保障
演讲人:陈阳
全球敏捷运维峰会 广州站
2. 标题
陈阳
• 哔哩哔哩数据库负责人
• 十年以上数据库领域经验 , M yS Q L 深度用户
• 在数据库自动化运维 , 分布式数据库上均有一定积
累
• 累 积 申 请 并 授 权 发 表 多 篇 数 据 库 方 向技术发明专 利
全球敏捷运维峰会 广州站
3. 目录
01 性能瓶颈 : 不 同 活 动 场 景 下 数据 库的 压力 与瓶 颈点
02 前期压测 : 数据准备与全链路压测
03 应急预案 : 活动中应急预案设
04 事后复盘 :
计
事后总结复盘是非常重要的一个环节
全球敏捷运维峰会 广州站
4. 用户眼中的 B 站
全球敏捷运维峰会 广州站
5. 业务场景
点播类业务
直播类业务
用户对可用性要求比较高
高并发场景、热点数据
业务场景
电商类业务
数据一致性、热点数据
全球敏捷运维峰会 广州站
游戏类业务
用户对性能要求比较高
6. 大型活动历史
2021
最美的夜
2019
直播人气峰值突破 2 .5 亿
建国7 0 周
年
2020
S 1 0 全球总决赛
2019 2020 2021
跨年晚会 拜年祭 S 11 全球总决
赛
与央视联合举办最美的夜
全网最大流量的直播赛事
全球敏捷运维峰会 广州站
7. 全球敏捷运维峰会 广州站
8. 大型活动直播
全球敏捷运维峰会 广州站
9. 大型活动直播
高并发写入场景选型: 分库分表 or 分布式数据库 ?
• 数据量可预估性
• 业务分片键
• 分布式事务
• P 9 9 9 分位响应时间
• 弹性伸缩
全球敏捷运维峰会 广州站
10. 电商大促
全球敏捷运维峰会 广州站
11. 全球敏捷运维峰会 广州站
12. 数据准备
• 水位线评估指标: 物 理 资 源 、 Q P S 、 T P S 、 P 9 9 9 响 应 时 间 、 慢 查 询 、 b u ffe r p o o l 命 中 率 、 IO P S
• 数据准备: 克 隆 集 群 or 原 集 群 压 测
• 影子库: 连 接 数 翻 倍
• 影子表: 压 测 流 量 识 别 、 S Q L 改 写
• 数据清理: 后 台 任 务 异 步 清 理
全球敏捷运维峰会 广州站
13. 全链路压测
关键词:全链路压测、全链路跟踪、混沌工程
• 一个合理的压测报告应该包含哪些内容
• 我们应该重点关注哪些核心指标
• 如何定位慢在哪一个环节
• 应急预演应该包含在压测中
• 考虑活动结束后可能带来的下游系统的压力
• 墨菲定理
全球敏捷运维峰会 广州站
14. 全球敏捷运维峰会 广州站
15. 应急预案
全球敏捷运维峰会 广州站
16. 应急预案
全球敏捷运维峰会 广州站
17. 应急预案
应急预案的设计的注意事项
• 必须要包含 : 适用场景、触发阈值、操作人员、操作影响、执行步
骤
• 场景之间的界限定义要清晰
• 启动条件必须有明确的值
• 操作的影响包括正面和负面
• 执行步骤最简化 , 封装工具、平台
• 启动前置判断机制 , 防止被误触发
• 定期 R e v i e w
全球敏捷运维峰会 广州站
18. 应急预案
数据库快速扩
容
•
•
MyS Q L
1. 写请求
2. 读请求
TiDB
1. T iD B 层
2. T iK V 层
全球敏捷运维峰会 广州站
19. 应急预案
异常流量拦
截
• S L B 层请求拦
截
• P ro x y 层 拦 截
• S D K 层拦截
数据库层场景 :
• Bad SQ L
• 接口被爬
• 上游缓存击穿后大量回源的高频请求
• 不 合 理 的 重 试 (最 大 次 数 、 多 级 链 路 、 幂 等 性 )
全球敏捷运维峰会 广州站
20. 应急预案
降级与切流
• 刷盘策略降级
• 业务请求降级
• 实例级别切流
• A Z 、 Region 级别切流
全球敏捷运维峰会 广州站
21. 应急预案
代理层限流
常见限流算法
1 . 固定窗口
2 . 滑动窗口
3 . 漏斗算法
4 . 令牌桶算法 -> 分布
式
全球敏捷运维峰会 广州站
22. 应急预案
数据库层限流
• max_connections
• m a x _ u s e r_ c o n n e c tio n s
• in n o d b _ th re a d _ c o n c u rre n c y
• in n o d b _ c o n c u rre n c y _ tic k e ts
全球敏捷运维峰会 广州站
23. 熔断
熔断:一般发生在某个服务下游出现故障
断路器的几种状态
1 . 关闭
2 . 打开
3 . 半打开
全球敏捷运维峰会 广州站
24. 多活设计
同城多活
• 读请求本 Z o n e 内闭环完成
• 写 请 求 (跨 机 房 )访 问 主 库 所 在
Z one
• 数据库集群属于一个 G z o n e
• 通 过 D B P ro x y 进 行 自 动 路 由
全球敏捷运维峰会 广州站
25. 多活设计
异地多活
• 读写请求均在本单元内闭环完成
• 需要业务进行单元化改造
• D B P ro x y
•
a) 多 R e g io n 自 动 路 由
b)
) 集 成 全 局 发 号 器 (防 止 主 键 冲 突
D T S 组件
a) 双向同步
b) 冲突检测及处理策略
全球敏捷运维峰会 广州站
26. 应急预案
一些典型的场景应对策略
• 连接数打满
• 主从复制延迟
• 缓存击穿
• 慢查询导致雪崩
• 意外宕机
全球敏捷运维峰会 广州站
27. 全球敏捷运维峰会 广州站
28. 保障流程
1. 保障作战室: 快 速 响 应 、 决 策
2. 整体指标大盘:核 心 指 标 响 应 时 间、 在线 人数 、系 统压
力
3. 定期同步: 当 前 指 标 是 否 健 康 、 是 否 出 现 异 常 情 况
4. 提前决策: 根 据 趋 势 提 前 判 断 下 一 步
全球敏捷运维峰会 广州站
29. 异常情况
异常情况:预案之内、预案之外
新手
老司
机
•
第一时间迅速评估影响范围
• 慌乱中不知道该怎么下手
• 一头扎入某个问题底层深究,再也出不来, 不管
外界系统死活...
• 快照,选择预案止损,优先保证业务可用性
• 通过有效手段重现问题,逐步缩小问题范围,定位根因
全球敏捷运维峰会 广州站
30. 异常情况
紧急事故管理
全球敏捷运维峰会 广州站
31. 故障诊断
问题定位方法论
故障排查过程可以定义为反复采用假设- >排除的过程
• 建立自己的知识体系 , 并不断完善更新
• 不同场景下的条件反射
• 快速验证、排除当前各种可能
• 从监控数据倒推
• 从代码逻辑分析
• 初步得出结论 , 尝试变更、验证
• 复现 , 得出结论
• 分析优化、整改方案
全球敏捷运维峰会 广州站
32. 全球敏捷运维峰会 广州站
33. 复盘与优化
活动回顾
• 结果数据与过程指标数据
• 核心指标数据分析
• 问题汇总与预案执行情况
经验总结
• 亮点与不足
• 优化方案
• 思考与总结
• 监控数据长期保留 , 作为下次活动评估的参
考
全球敏捷运维峰会 广州站
34. THANK YOU!
全球敏捷运维峰会 广州站