流量小生DDOS攻击下,微博如何保证系统稳定不再
时间:2019-08-28 06:35 来源:网络整理 作者:采集插件 点击:次
流量小生DDOS攻击下,微博如何保证系统稳定不再挂? 2017-11-12 09:14 来源:InfoQ 原标题:流量小生DDOS攻击下,微博如何保证系统稳定不再挂?
作者|胡忠想 编辑|小智 写在前面 微博作为当今中文社交媒体的第一品牌,拥有超过 3.6 亿的月活用户,也是当前社会热点事件传播的最主要平台。热点事件的发生具有不可预测性和突发性,以 9 月 26 日上午“谢娜宣布怀孕”事件为例,从图 1 可以看出微博评论的流量在短短 10 分钟内迅速上涨,并在 20 分钟后达到了日常晚高峰的 2 倍之多。可见,为了应对突发事件带来的流量冲击,确保线上服务的稳定性,能够进行随时随地的快速弹性扩容十分重要。
图 1. 9 月 26 日上午“谢娜宣布怀孕”事件微博评论流量 传统的面对而传统的人工值守,手工扩容的运维手段,显然无法满足这一需求。为此,我们的目标是做到系统的自动扩容,在流量增长达到系统的警戒水位线时自动扩容,以应对任意时刻可能爆发的流量增长,确保服务的高可用性。 微博 Web 弹性调度演进 接下来,将为大家介绍微博 Web 系统如何从人工值守的手工扩缩容一步步演进到无人值守的自动扩缩容。 第一代:人为触发扩缩容 人工根据监控系统的 QPS、AvgTime、load 等判断是否扩容; 根据经验值人为预估扩容机器数; 支持 PC、手机等多渠道触发。
图 2. 人工值守扩缩容流程 问题:需要人为介入确认扩容时机和扩容数量。 第二代:无人值守定时扩缩容 每天晚上 8 点定时扩容,12 点前定时缩容; Web 与依赖的 RPC 可以依赖扩容。 图 3. 无人值守定时扩缩容流程 问题:只能解决晚高峰问题,无法应对突发事件。 第三代:智能触发自动扩缩容 自动压测评估线上服务池最大承载量 实时评估线上服务池冗余度 冗余度不足则触发扩容,充足则触发缩容 图 4. 智能触发自动扩缩容流程 下图展示了在 # 薛之谦与前期复合 # 事件中,智能触发自动扩缩容的实际效果。
图 5. 薛之谦与前妻复合 # 事件自动扩容效果图 下面对智能弹性调度系统进行详细介绍,图 6 展示了这一系统包括的几个主要组成部分。 全数据日志分析 Profile,生成业务系统的各种指标并采集汇报给实时监控系统 Graphite。 实时监控功能系统 Graphite,实时汇聚并计算多维度业务指标数据,并提供 API 给在线容量评估以及智能弹性调度系统已作决策。 在线容量评估系统 Diviner,对在线服务池进行压测,以评估服务池的最大承载能力。 智能弹性调度系统 DCOS,根据系统实时的水位线情况,决策是否需要进行扩容以及扩容机器数。 混合云平台 DCP,向私有云和公有云申请机器,进行弹性扩容。
图 6. 智能弹性调度系统架构图 Profile- 全数据日志体系 在实际的扩容决策中,需要以一些关键指标如 QPS、AvgTime 或多种指标叠加作为判断依据,所以自动扩缩容系统首先要解决的问题就是关键指标的生成和采集。 指标的生产 一般情况下,指标的生产有两种方式:一种是在业务代码里以特定格式打印各业务关心的业务指标日志,如 API 的 QPS、AvgTime 等,但这种方式对业务代码的侵入性强,不建议采纳;一种是在框架的关键路径上埋点,统一打印 metric 日志,不侵入业务代码,对业务开发更加友好。我们就采用了这种方式,如在 motan 服务化框架上埋点,来记录 RPC 调用的 QPS、AvgTime、P99 等指标。 指标的采集 (责任编辑:admin) |




