春节微信访问突发,存储业务如何平稳度过?

存储业务里面有很多访问突发的业务,其中微信就是一个典型的业务。微信承担了亿万用户的图片、视频和文件的收发,遇到特殊热点事件或者重大节假日,访问次数会突发10倍以上的增长。微信是一个海量的业务,平时机器的负载有限,实际运营中不可能预留10倍的Buffer,那么遇到传统节日春节的时候,我们是怎么平稳度过的呢?

春节就是一场保卫战,前期需要充足的准备,每年的Q4,大概国庆后就开始准备春节的事项了。到除夕夜那天,中间会经历圣诞节和元旦节的考验,这是2次战争前的检验。本文主要讲解微信C2C业务春节突发应对。微信C2C主要包括了单人消息和群消息里面收发图片、视频和文件。

主要从4个层面阐述应对春节的保障工作,分为软件保障、硬件保障、容灾柔性保障、监控保障。

软件保障

微信C2C分布式系统承载了微信业务用户海量的图片、视频、文件的上传和下载,通过智能动态路由调度就近接入,为用户提供了优质的服务。能支撑起如此庞大的业务量,得益于微信C2C强大的分布式系统。

上图为整个微信C2C系统的架构全景图,可以分为接入点和中心点两层,主要模块有以下2个:

接入点front_http

部署于全国以及全世界各地AC和OC点的接入模块,负责一个区域的用户上传下载接入,当front_http模块接收到用户上传时,会先将用户数据写入本区域部署的TDC缓存仓库确保数据落地,TDC以LRU方式淘汰老数据,成功后返回用户成功并异步将数据回传回DC中心点。

中心点zone_http

部署于DC点的中心点的数据备份管理模块,负责来自所管辖front_http回传数据的汇总的管理,同时也负责为其他模块提供数据的查找和拉取服务,zone_http一共有三处,上海点负责国内北方地区,深圳点负责国内南方地区,香港点负责港澳台以及国外所有地区。上海、深圳均可独扛全球的C2C服务。

C2C分布式架构优势如下:

1. 微信C2C传图采用存储转发的模式,使得通信双方耦合更小,业务扩展性更强。

2. 用户根据就近原则,通过尽量短的路径连接到加速系统的前端接入点。图片、视频上传到接入点即完成操作,后续的操作对用户透明。

3.接入点与中心存储点之间建立高速的传输通道,可快速在两点之间传输。

4.接入点本身缓存数据,同一个接入点覆盖的用户间传图和视频,在接入点内部完成传输。

5.不同接入点的用户发送,接收接入点通过快速传输通道,主动推送数据到接收用户的服务点,完成加速下载的目标。

6. 接入点可以根据用户的访问情况随时新增,扩容操作简单。每个接入点上线后负载上限确定,超过的访问动态的调度到备份接点。

硬件保障:

1.容量评估和设备报备(容量系统,全面准确)

每年国庆后会针对微信业务单独做一次春节扩容报备,运维团队联合微信业务团队,对齐春节活动的增长情况,综合评估后给出一个增长比例。运维根据增长比例,结合当前系统的负载情况,通过容量系统直接计算出需要扩容的各个模块的设备量。运维根据计算的设备量情况,去资源管理系统提交下达设备报备单,通过资源审核后就可以下单采购了。

容量系统评估预览:

2. 设备申请和扩容(变更系统,一键扩容)

设备采购完毕,交付验收后,运维就可以去资源系统自助申领设备了,申领后的设备自动分配到对应的模块名称下。运维获取到扩容的机器后,可以到变更管理系统提交一键扩容,完成自动部署业务,省时省力。2016年春节扩容,线上扩容5000+台服务器,涉及50多个业务子模块,100+次上线扩容操作,从申请服务器到扩容到线上切量正常访问,只需3天时间。

容灾柔性保障

1.单机模块演习

微信业务所有的功能子模块具备单机容灾自动剔除功能。为了防止单机剔除失效,我们建立了容灾演习系统,每个月有例行的单机死机剔除演习。系统自动根据业务模块演习情况,每周安排一天演习,演习成功会有反馈,演习失败会自动建立问题单派给运维跟进。

2.单机过载压测

每个季度会对线上每个模块做一次单机性能压测,主要是测试模块程序的性能,便于及时修正过载值,防止单模块因为过载值过大导致该模块不可用引发过载失效故障,或者防止过载值太小引起资源浪费。遇到重大节日,元旦或者春节,还会配合业务客户端做一次全路径的压测。微信后台会机器人程序模拟真实用户互发文件来压测线上所有模块,便于快速找出系统的瓶颈点,节前及时解决掉。

3.容灾切换演习

每个季度,微信业务会例行进行一次容灾切换的演习。主要分2个维度,异地容灾切换和内外网切换演习。

异地切换:由于分布点主要集中在各地的OC节点,平时有异常可自动调度到备份节点。但是中心节点只有3个,各地分担了全网用户的数据落地请求。若其中有一个地区的中心节点数据上传有问题,系统可切换到另外中心点上传。由于前端分布点有cache池,数据下载短时间内不会影响很大,这样就达到了中心节点异地切换的目的。

内外网切换:内外网切换主要是中心节点之间的通讯切换,正常情况下深圳、上海、香港三地的中心节点都是走专线互联拉取数据的。若专线异常,这个时候可重试外网连接,也可人工主动切换到外网,根据专线压力的情况,可以按百分比主动调度访问到外网去。

4.突发柔性演习

微信的访问量很庞大,其中视频的流量春节增长迅速,不是简单的扩容就能解决突发流量的容量问题,我们可以提供有损的服务来保障系统的稳定性。针对微信的业务,主要包括朋友圈视频,消息视频、图片,是重点的流量柔性对象。我们建立了一整套立体的柔性方案。柔性分三层:

第一层粗暴柔性,可以直接按比例拒绝用户的上传和下载访问;

第二层分场景柔性,贴近业务场景。例如分上传、下载、拉列表、图片、视频、文件等做适当限制;

第三层分维度柔性,在业务场景的基础上进一步细化,例如按文件大小、访问速度、访问比例、时间段等展开限制。

三层柔性环环相扣,根据实际的情况使用。系统访问持续增长的情况下,可以根据系统负载,循序渐进加大柔性力度,保证系统负载稳定在一个平衡值。遇到系统突发被打爆,也可以一棍子打压,直接调整拒绝比例,系统负载立马下降恢复后,再逐渐放开,配合业务场景的维度柔性,慢慢控制系统负载在一个稳定值。

针对春节我们会制定出详细的柔性方案,根据当前系统扩容后的负载和可支撑的能力,根据各个子业务预计增长情况和需要支撑的量,分类详细列出各个维度柔性的触发条件和采取的柔性策略,春节当晚严格按照计划执行,确保系统在可控范围内。

监控保障

针对春节的保障,监控视图不可缺少,除了平常正常的监控视图外,春节针对性的主要分三个维度:

1.春节监控视图

主要包括需要监控的流量、访问次数、延时和成功率等情况。会做成PC端,其中重要视图投放到电视监控屏幕,同时手机端也同步展示,方便大家节日期间随时掌握业务状态。

2. 柔性视图

主要包括柔性生效后产生的效果监控,例如拒绝的用户数,限制的视频访问次数、限制的回传文件数等等。

3.秒级监控视图

秒级监控是一个重要的监控,主要适用于突发场景,对时间敏感的业务。例如微信元旦、除夕凌晨效应,就是用户发图太集中,大部分集中在第一分钟的前10s,我们传统监控都是分钟级别,一分钟一个点,系统完全看不到用户的行为,所以需要做到秒级监控,拉长为60个点,用户访问及时信息大屏动态展示,便于我们配合柔性策略及时下发,防止系统冲垮崩溃。

除夕保障

节前通过软件保障、硬件保障、容灾柔性保障、监控保障4个维度的准备后,结合扩容后的系统负载情况,运维团队会综合各个因素,列出除夕当天的预案应对策略。主要分2个维度。

柔性操作类:已经明确需要柔性打压的操作,除夕上午运维发布配置生效,提前完成。

另外可能发生的柔性操作,除夕高峰根据制定的计划方案严格执行。

容灾切换类:春节除夕是业务的高峰期,一旦有任何异常,需要立刻恢复业务。例如分布点异常或者丢包,立刻切走。专线拥塞立刻切外网等。微信系统确保切换高速快捷,系统切换秒级下发配置到内存。

人员安排上,春节除夕夜至少2名运维人员和2名开发人员,值班到凌晨2点。

节后总结

最后一个重要的环节就是每年春节后,运维团队、开发团队、微信业务团队,QA团队会一起针对春节的应对情况展开回顾总结,根据除夕当天的所有问题,找出我们还需要不断完善的地方,推动不断优化改进,确保来年的春节相同的问题不会出现第二次。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

千山我独行-Oracle 的云端之路全面自我且坚决的启动

Oracle 的公有云准备好了么?我想是的。 在经过了几年的全面储备和积累之后,Oracle 的公有云全面发力,虽然在中国的落地还需要时日,但是在全球已经取得...

2655
来自专栏PPV课数据科学社区

【学习】百万级别数据,数据库Mysql,Mongodb,Hbase如何选择?

情况说明: 现在需要做一个数据存储,500w左右的数据,日后每天大约产生5w条左右的数据。想把这些数据存储起来,供日后的数据分析用?使用上面说的三种数据库中的哪...

4088
来自专栏码神联盟

云时代 | 云主机服务器概述、优势及如何选择

近年来,有关云计算的信息、产品和概念,正充斥着互联网的每个角落,在互联网+的背景之下,云技术的出现更是让许多企业的业务数据向云计算靠拢。 1什么是云主机服务器?...

3528
来自专栏织云平台团队的专栏

从鹿晗关晓彤恋情事件看运维的节假日准备工作

鹿晗关晓彤公布恋情,微博服务短暂不可用。那么,面对这种突如其来的节(sa)假 (gou)日(liang)热点,该如何才能做到有条不紊,高效运维呢?

1.7K1
来自专栏Golang语言社区

区块链的新概念“胖协议”

最近得到一个新概念,胖协议(Fat Protocols)。(胖协议可以理解为基础链) 胖协议的概念来自于Fat Protocols,翻译版见文章末尾。 从这个...

3305
来自专栏CSDN技术头条

百万级别数据,数据库Mysql,Mongodb,Hbase如何选择?

情况说明: 现在需要做一个数据存储,500w左右的数据,日后每天大约产生5w条左右的数据。想把这些数据存储起来,供日后的数据分析用?使用上面说的三种数据库中的哪...

26110
来自专栏架构师之路

分层架构,前后端分离有啥坏处?

前文《互联网分层架构,为啥要前后端分离?》详细介绍了前后端分离的缘起,很多朋友在评论中留言,纷纷表示,要往前后端分离架构上转型。 任何脱离业务发展,业务特点的架...

3366
来自专栏云计算D1net

将数据迁移到云端的最佳实践

就当前而言,移动PB级的数据对企业来说仍然是一件难事,可以按照以下步骤来操作,尽量减少风险和成本,并最大程度地提高灵活性。 接受云部署的企业需要具有成本效益和...

2659
来自专栏云计算D1net

云访问安全代理

云访问安全代理可以保护云环境不受威胁,但是,当它们影响到应用性能可用户体验怎么办? 云访问安全代理是一种工具,用于监听和管理云应用与用户之间的流量。虽然它可以帮...

3456
来自专栏SDNLAB

ONOS发布1.2版本Cardinal——专注可扩展性

开源软件定义网络(SDN)项目ONOS公布1.2版本——Cardinal,并声称其软件平台在多协议支持、性能增强、APIs方面支持范围更广。 ? 添加的新功能主...

2675

扫码关注云+社区