微博 胡忠想 - 微博应对突发热点事件的弹性调度实践

丑梦露

2017/12/18 发布于 技术 分类

微博作为当今中文社交媒体的第一品牌,拥有超过3.6亿的月活用户,也是当前社会热点事件传播的最主要平台。而热点事件往往具有不可预测性和突发性,10分钟内可能带来流量的翻倍增长,甚至更大。如何快速应对突发流量的冲击,确保线上服务的稳定性,是一个非常巨大的挑战。 传统的人工值守,手工扩容的运维手段,显然无法满足这一需求。为此,我们的目标是做到系统的自动扩容,在流量增长达到系统的警戒水位线时自动扩容,以应对任意时刻可能爆发的流量增长,确保服务的高可用性。

文字内容
1. 微博应对突发热点事件的弹性 调度实践 胡忠想 微博架构师
5. 胡忠想 微博服务化项目架构师 2012年加入微博工作至今,先后承担过微博计数器架构升级、春晚和奥运服务保 障,以及首页信息流架构升级等工作。在分布式服务高可用性保障领域积累了丰 富的线上实践经验。 目前,主要专注于微博跨平台业务服务化方向,工作内容包括:微服务治理、弹 性扩缩容、动态流量调度以及智能监控系统。
6. •  突发热点事件带来的峰值挑战 •  微博Feed业务弹性调度演进 •  智能弹性调度系统实践 •  全链路弹性调度挑战与应对
8. 9月26日上午“谢娜宣布怀孕”事件微博评论流量
9. 10月8日中午“鹿晗关晓彤宣布恋爱”事件微博搜索流量
11. 突发热点事件带来的峰值挑战
12. •  突发热点事件带来的峰值挑战 •  微博Feed业务弹性调度演进 •  智能弹性调度系统实践 •  全链路弹性调度挑战与应对
13. 微博Feed业务弹性调度演进 人工扩容 定时扩容 弹性扩容
14. 人工扩容 l  扩容依据:QPS、AvgTime l  扩容时机:人工 l  扩容数量:人工 l  扩容操作:人工
15. 定时扩容 l  扩容依据:QPS、AvgTime l  扩容时机:定时 l  扩容数量:定时 l  扩容操作:程序
16. 弹性扩容 l  扩容依据:冗余度 l  扩容时机:随时 l  扩容数量:按需 l  扩容操作:智能
18. 微博Feed业务弹性调度演进 人工化 自动化 智能化
19. •  突发热点事件带来的峰值挑战 •  微博Feed业务弹性调度演进 •  智能弹性调度系统实践 •  全链路弹性调度挑战与应对
20. 智能弹性调度系统实践 ܴၥ! ‫ܔ‬๢௔ᚆ! ᦇᓒ! ᔮᕹ਻ᰁ! ᦇᓒ! ਫ෸࿜֖ᕚ! ୨௔! ಘᖽ਻!
21. 压测
22. 压测指标 RT?
23. 压测指标 RT SLA successRate
24. 压测指标 RT
25. 压测指标 SLA
26. 压测指标 SuccessRate
27. 容量计算 TPS?
28. 容量计算 metric_qps!
29. 容量计算 •  任意时刻单机消耗量计算公式: metric_qps = ∑??????=1↑??????▒​??????↓?????? ∗????????????????????????????????????????????????(??????)  •  interval代表耗时区间内qps,w代表权重,区间数值越大,w越大。
30. 容量计算 •  单机最大容量(拐点时刻)计算公式: metric_qpsc = ∑??????=1↑??????▒​??????↓?????? ∗????????????????????????????????????????????????(??????) 
31. 实时水位线 •  水位线计算公式: water_line= ​metric_qpsc/metric_qps 
32. 实时水位线
33. 实时水位线
34. 智能弹性调度 fatal line 扩容线 warn line 转移线 safe line 恢复线
35. 智能弹性调度
36. 智能弹性调度 •  瞬间抖动 •  每1分钟采集一次水位线,5分钟内采集三个点满足才触发 •  单机干扰 •  计算水位线时,根据20/80原则,排除性能最好和最差的10%
37. •  突发热点事件带来的峰值挑战 •  微博Feed业务弹性调度演进 •  智能弹性调度系统实践 •  全链路弹性调度挑战与应对
38. 全链路弹性调度挑战 业务线多 ᑏۖ! PC! ᅾᳪ! ᥤ᷇! ൤ᔱ! ᦾ᷌! Feed! ࠟӱ!
39. 全链路弹性调度挑战 各业务线技术栈不统一 ! PHP ! ! ! Java! ! ! ! Go! C++! ! !
40. 全链路弹性调度挑战 核心业务调用链路长 接入层 MAPI! PC! WAP! 业务层 ᅾᳪ! ൤ᔱ! Page! API层 Feed Web! User Web! Graph Web! 服务层 Card RPC! User RPC! Graph RPC!
41. 全链路弹性调度应对 •  通用的智能弹性调度平台 Ø  支持各业务线技术栈 Ø  接入成本低
42. 全链路弹性调度应对 跨语言服务化改造 PHP/Java/Go/C++ Client HTTP VIP Nginx PHP/Java/Go/C++ Server PHP/Java/Go/C++ Client magent magent PHP/Java/Go/C++ Server Motan
43. 全链路弹性调度应对 服务化原理 服务订阅 服务治理 Vintage! ๐‫ဳۓ‬ٙӾஞ! SGCenter! ๐‫ۓ‬လቘӾஞ! 服务注册 服务治理 magent magent Client Server
44. 全链路弹性调度应对 agent的功能 ๐‫ݎۓ‬ሿ! ᨮ᫹࣐ᤍ! ‫ݎ݌‬ᆤෙ! metrics! ๐‫ဳۓ‬ٙ! ۖாᯈᗝ! ۖா᪠ኧ! ෭பവᭆ!
45. 全链路弹性调度应对 通用弹性调度平台 Server magent metrics Graphite! ਫ෸ፊഴᔮᕹ! Client magent 订阅 Vintage! ဳٙ޾ᯈᗝӾஞ! Diviner! ࣁᕚ਻ᰁᦧ֌! DCOS! ฬᚆ୨௔᧣ଶ! DCP! Ⴐ‫ݳ‬ԯଘ‫!ݣ‬
46. 全链路弹性调度应对 在线业务 接入层 Mobile! PC! 服务化平台 ๐‫ۓ‬လቘ! 业务层 ӱ‫ۓ‬A! ӱ‫ۓ‬B! ୨௔᧣ଶ! 服务层 ๐‫ۓ‬A! ๐‫ۓ‬B! ۖா᪠ኧ! 资源云 ᖨਂԯ! ၾ௳ԯ! ᩒრ๐‫ۓ‬۸! 资源层 MC! MySQL! ᩒრ᧣ଶ! 基础组件 Motan! ᪜᧍᥺RPC໛ຝ! Vintage! ᪜๢಄ᯈᗝ๐‫!ۓ‬ Graphite! ਫ෸ፊഴᔮᕹ! Diviner! ࣁᕚ਻ᰁᦧ֌! DCP! Ⴐ‫ݳ‬ԯଘ‫!ݣ‬