写点什么

官宣警告!月活 4.31 亿的新浪微博,如何应对流量激增?

2018 年 10 月 22 日

「提升运维自动化的自研占比是非常重要的,它决定了后续自动化所能达到的高度。我们建设自动化运维平台的目标是:更快的响应、更省的方案、更高的效率!要通过人工智能技术,解放运维的双手,拥抱美好未来!」

微博这两天炸了!前有“赵丽颖 & 冯绍峰”官宣,后有“王宝强事件”后续,除了各位当事人轮番上热搜之外,微博的各位运维大佬也是被网友轮番 @。截至小编写稿时,赵丽颖的“官宣”微博已被转发 123 万次,被评论 147 万……

“号称能支持 8 位明星并发出轨的微博,支持不了明星恋爱结婚”也只是调侃,其实,微博的运维团队,也默默地搞了很多大事情,而且有很多坑他们已经提前替大家踩好了!

InfoQ 有幸采访到了新浪微博高级产品运维架构师刘然,看看新浪微博遇到过哪些高并发场景的典型问题,他们如何搭建自动化运维平台?过程中踩过哪些坑,又是如何解决的?

InfoQ:介绍一下微博现在的流量情况,运维团队处理过哪些突发大流量事件?

刘然:作为热点事件及社会舆论的核心阵地,今年 6 月微博月活跃用户数(MAUs)达到 4.31 亿,日活跃用户数(DAUs)达到 1.90 亿。就微博平台而言,整体 HTTP 接口调用量百万 qps,视频流 TBps 级吞吐。在热点事件中,尤其以春晚、军演、世界杯等定期事件以及王宝强事件、鹿晗事件、赵丽颖 & 冯绍峰事件等突发情况对服务稳定性的冲击是最大的,也给运维同学们带来了巨大的挑战,同时收获了很多解决高并发问题的经验。

InfoQ:高并发场景的运维有哪些典型问题,一般怎么解决?

刘然:高并发问题简单来说就是木桶短板问题,整体服务各个环节哪怕是一行命令的性能不够优,都可能在高并发情况下成为一个问题,引发一次故障,各公司的运维分工不尽相同,我们运维团队承担了服务稳定性的整体责任,所以我们会联合各个兄弟部门,从应用层至网络层逐层进行容量评估,对于各种遇到过的、可以想象到的短板建设应急预案。尤其是核心路径,经常会准备三套以上的应急预案互背及逐级互补。应急预案的主要思路包括扩容、流量转移、降级、封杀等。监控指标实时采集,产出 Dashboard、报警、智能决策。

所有应急预案的工具如面对风险可控、阈值准确的操作方案则采用自动生效策略,否则采用人工一键化操作。在弹性扩容方向采用混合云模式,目前,既对外和阿里云、华为云等公有云服务开展深度合作,同时在内部离线业务中搭建私有云体系。经过持续的建设,当前可达到分钟级弹性扩缩绒上千台虚拟机实例的速度。

InfoQ:介绍一下微博的自动化平台,平台目前主要运用的自动化工具有哪些?

刘然:我们的自动化平台主要通过自研的中控平台指导自研或者开源的子系统、子模块的输入及产出。中控平台类似于大脑,将 Collector 模块收集来的数据进行梳理、聚合、决策。提供 View 模块供人工干预,最后通过 Executor 模块将操作指令下发。其中使用到的开源组件包括 Flume、Graphite、Grafana,提供数据收集、存储及展示。Puppet、Ansible,对系统级工具及配置进行配置管理。Docker,将服务进程容器化便于整体调度。以及一些公有云服务,比如阿里云、华为云。



InfoQ:微博运维平台的演进过程是怎样的,为什么要搭建自动化运维平台?

刘然:11 年我加入微博平台运维团队时,微博刚刚开始平台化建设。作为产品运维我们所拥有的只有新浪良好的底层支持以及一些简单的脚本。为了快速填补产品运维需要,我们也是从脚本化入手,将所有需要人工手动操作的流程脚本化。在基本能满足稳定性需求的同时,我们引入 Puppet、Ganglia、Nagios 等开源工具将服务器配置管理、系统及业务监控工具化。

后续我们自研了 Jpool 中控系统,并将大部分脚本的零散功能系统地整理并集成到 Jpool 系统。基本达到了简单的自动化门槛,解放了运维同学大量手工重复操作的工作量,并且提高了整体变更的稳定性。在解决了生存问题之后,我们投入了更多的人力及时间,深化各运维方向的自动化程度,通过升级或调优提升各个自动化组件的功能及性能,向着更快的响应、更省的方案、更高的效率目标前进。



InfoQ:在微博的自动化平台搭建过程中踩过什么坑,有什么经验可以分享?

刘然:当前业界的开源组件很多,而盲目地引入开源组件并不一定会提高运维效率,有时候往往会适得其反。开源组件的优势在于开发及维护成本相对较低,功能和性能相对比较稳定成熟。但问题在于开源组件是面对大多数场景的通用的方案,所以在一些定制性问题上很难得到解决方案。而且各组件之间的组合很多时候是十分僵硬的。

在后续二次开发的时候,开源组件需要的学习成本是巨大的。另外开源组件的版本更新问题也很让人头疼,我们之前使用过的 Scribe、TFS 等,在提供方不再发版后,我们在进行组件升级和替换的过程中是极其痛苦的。所以在满足业务稳定性需求的同时,提升运维自动化的自研占比是非常重要的,它决定了后续自动化所能达到的高度。

InfoQ:自动化运维平台给微博带来了哪些效益?

刘然:我们建设自动化运维平台的目标是更快的响应、更省的方案、更高的效率。

简单来说更快的响应是敏捷准确的发现问题、处理问题,最大化提供服务稳定度。

更省的方案指的是在资源和人力方面把控更加精确,尽可能节省所需的各项资源。比如我们通过实时的自动化的容量评估掌握服务可承载能力,并通过弹性扩容,降低面临偶发峰值问题的业务的常备服务器成本。通过智能自愈功能减少了一线运维人员例如 7*24 值守等大量无效的工作量,节省了人力成本,并提高了变更的准确性。

更高的效率指的是我们在自动化建设的同时,会更侧重于提升使用流畅度、学习成本、后续维护成本等隐性问题,提升自动化平台的开发及应用的效率。

InfoQ:微博的自动化运维平台未来会如何发展?

刘然:近年来 AIOps 似乎有给运维同学们打开了新世界的大门,我们在人工智能方向也开始有所尝试。但当前在应用落地方向上,还存在种种问题。不过我们通过一段时间的尝试,在一些小的决策问题上引入深度学习算法,深深感受到了人工智能应该在运维领域会大有作为。后续我们还会继续投入一部分力量进行探索,并积极和其他公司、团队进行交流。通过人工智能技术进一步解放运维的双手,拥抱美好的未来。

作者简介

刘然,新浪微博高级产品运维架构师,11 年加入新浪微博,主要从事原生视频、微博直播、OpenAPI 等核心业务的稳定性保障工作。参与及主导了微博平台自动化运维从无到有发展过程中的各项重大项目。主要包括服务平台化、运维自动化、异地多活、容器化、混合云等方向。目前带领团队主要致力于运维服务质量提升及运维体系建设。

由 InfoQ 主办的第四届 CNUTCon 全球运维技术大会,全方位、多角度向参会者阐述智能运维时代的有哪些变革,Twitter、RIOT Games、BAT、华为等国内外一线大厂有哪些新技术和新实践。

使用我的优惠【InfoQ】可以获得更多优惠!有任何问题欢迎咨询 Joy 小姐姐,电话:13269078023(微信同号)。

2018 年 10 月 22 日 09:121922

评论 1 条评论

发布
暂无评论
发现更多内容

快速掌握并发编程---关于乐观锁、悲观锁、可重入锁

田维常

并发编程

关于DevOps的七大误解,99%的人都曾中过招!

华为云开发者社区

DevOps 敏捷开发 测试

Github标星35K+超火的Spring Boot实战项目,附超全教程文档

Java架构之路

Java 程序员 架构 面试 编程语言

Spring Boot 集成 Druid 监控数据源

田维常

springboot

【API进阶之路】API带来的微创新,打动投资人鼓励我创业

华为云开发者社区

学习 视频 API

【原创】SpringBoot 这几种配置文件方式,你都用过吗?

田维常

springboot

如何降低young gc时间

AI乔治

Java 架构 GC GC算法

华为云FusionInsight MRS:助力企业构建“一企一湖,一城一湖”

华为云开发者社区

数据库 云原生 数据

【原创】Spring Boot 集成Spring Data JPA的玩法

田维常

springboot

Spring Boot 如何快速实现定时任务

田维常

springboot

饱受毕设摧残计算机系师兄,怒而分享纯净版SSM框架(附源码)

小Q

Java 学习 面试 开发 SSM框架

电子劳动合同来了 足不出户也能签约

CECBC区块链专委会

社会保险 电子合同

轻松使用TensorFlow进行数据增强

计算机与AI

tensorflow 学习 数据增强

如何快速构建Spring Boot基础项目?

田维常

spring Boot Starter

运筹帷幄之后,决胜千里之外!GitHub上标星75k+的《Java面试突击手册》助你拿到满意的offer。

Java架构之路

Java 程序员 架构 面试 编程语言

量化交易系统开发、自动对冲策略搭建

薇電13242772558

区块链

华为云专家私房课:视频传输技术选型的三大法宝

华为云开发者社区

音视频 视频 传输

【原创】Spring Boot 过滤器、监听器、拦截器的使用

田维常

springboot

浅析一个较完整的SpringBoot项目

田维常

sping

【原创】Spring Boot集成Mybatis的玩法

田维常

springboot

【原创】Spring Boot一口气说自动装配与案例

田维常

springboot

美国大选观战感受:用区块链投票吧,少操点心

CECBC区块链专委会

区块链 投票机制

熟悉又陌生的 k8s 字段:SecurityContext

郭旭东

Kubernetes Kubernetes源码

快速掌握并发编程---ArrayBlockingQueue 底层原理和实战 java

田维常

并发编程 LinkedBlockingQueue

【原创】Spring Boot集成Redis的玩法

田维常

spring Boot Starter

【原创】SpringBoot快速整合Thymeleaf模板引擎

田维常

springboot

日常工作参数分析

hasWhere

4年Java经验,去面试居然10分钟就结束了,现在面试为什么这么难?

Java架构之路

Java 程序员 架构 面试 编程语言

偷师Kubernetes源码,学会怎么用Go实现调度队列

网管

go Kubernetes 并发编程 并发控制

第六周学习技术选型2总结

三板斧

架构训练营-week7-学习总结-性能测试,操作系统,锁

于成龙

架构训练营

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

官宣警告!月活4.31亿的新浪微博,如何应对流量激增?-InfoQ