[关闭]
@citian3094 2017-11-13T00:33:46.000000Z 字数 1540 阅读 977

流量小生DDOS攻击下,微博如何保证系统稳定不再挂

作者介绍

胡忠想,微博服务化项目架构师、技术负责人,2012年加入微博工作至今,承担过微博计数器架构升级,春晚和奥运服务保障,以及微博feed业务架构升级等工作。目前,主要专注于服务化方向,工作内容包括:微服务治理,弹性调度以及自动化监控等。

胡忠想将在ArchSummit分享《微博应对突发热点事件的弹性调度实践》,本文整理节选自11月9日胡忠想在InfoQ的直播中的微博调度演进,完整内容可关注ArchSummit公众号或InfoQ公众号获取。

写在前面

微博作为当今中文社交媒体的第一品牌,拥有超过3.6亿的月活用户,也是当前社会热点事件传播的最主要平台。热点事件的发生具有不可预测性和突发性,以9月26日上午“谢娜宣布怀孕”事件为例,微博评论的流量在短短10分钟内迅速上涨,并在20分钟后达到了日常晚高峰的2倍之多。可见,为了应对突发事件带来的流量冲击,确保线上服务的稳定性,能够进行随时随地的快速弹性扩容十分重要。

传统的面对而传统的人工值守,手工扩容的运维手段,显然无法满足这一需求。为此,我们的目标是做到系统的自动扩容,在流量增长达到系统的警戒水位线时自动扩容,以应对任意时刻可能爆发的流量增长,确保服务的高可用性。

微博Web弹性调度演进

接下来,将为大家介绍微博 Web 系统如何从人工值守的手工扩缩容一步步演进到无人值守的自动扩缩容。

第一代:人为触发扩缩容

问题:需要人为介入确认扩容时机和扩容数量。

第二代:无人值守定时扩缩容

问题:只能解决晚高峰问题,无法应对突发事件。

第三代:智能触发自动扩缩容

下面对智能弹性调度系统进行详细介绍,图 6 展示了这一系统包括的几个主要组成部分。

Profile- 全数据日志体系

在实际的扩容决策中,需要以一些关键指标如 QPS、AvgTime 或多种指标叠加作为判断依据,所以自动扩缩容系统首先要解决的问题就是关键指标的生成和采集。

指标的生产

一般情况下,指标的生产有两种方式:一种是在业务代码里以特定格式打印各业务关心的业务指标日志,如 API 的 QPS、AvgTime 等,但这种方式对业务代码的侵入性强,不建议采纳;一种是在框架的关键路径上埋点,统一打印 metric 日志,不侵入业务代码,对业务开发更加友好。我们就采用了这种方式,如在 motan 服务化框架上埋点,来记录 RPC 调用的 QPS、AvgTime、P99 等指标。

指标的采集

指标的采集主要涉及两个问题,一个是如何规范 metric 日志,便于在不同系统间传递,一个是如何传输的问题,有多种途径如 scirbe、kafka、udp 等。为了解决第一个问题,我们制定了规范的 profile 日志格式,各种 metric 信息均以标准的格式记录,如下图 7 所示。为了简化系统和传输效率,我们通过 udp 方式将各种 metric 信息传递给监控系统。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注