前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >春节微信访问突发,存储业务如何平稳度过?

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

原创
作者头像
腾讯技术工程官方号
发布2017-11-30 14:44:03
1.1K0
发布2017-11-30 14:44:03
举报

存储业务里面有很多访问突发的业务,其中微信就是一个典型的业务。微信承担了亿万用户的图片、视频和文件的收发,遇到特殊热点事件或者重大节假日,访问次数会突发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团队会一起针对春节的应对情况展开回顾总结,根据除夕当天的所有问题,找出我们还需要不断完善的地方,推动不断优化改进,确保来年的春节相同的问题不会出现第二次。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 软件保障
  • 硬件保障:
  • 容灾柔性保障
  • 监控保障
  • 除夕保障
  • 节后总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档