阿里每年都要搞大促,618、双十一,那么作为一名技术负责人在大促中要去做哪些技术保障,以及如何去做。今天我们就来聊一聊

全文分为三大部分:事前事中事后,最后我们再总结

事前

KO会议

首先在事前,我们第一件事就是参加KO会议(Kick Off Meeting,项目启动会)。

它主要会传达以下几个信息:

  1. 大促的背景与意义

  2. 大促的目的与目标

  3. 业务的具体玩法以及具体时间

  4. 大促的人员组织架构

也就是说,在这里,我们技术需要从中获取如下信息:

  1. 业务预期DAU

  2. 业务预期DAT

  3. 具体有哪些活动玩法

  4. 活动玩法的具体时间段

  5. 哪些商品参与大促,是否有第三方商品

  6. 这些商品的库存分别是多少

沟通

KO大会上,可能会是一个全局的,整体的,对于一些细节,下来我们需要与业务进行沟通,比如活动粒度是多少?宣传力度是多少?业务的预期DAU与DAT如何评估的?是否准确?等。

这一步的目的是确认你的信息是无误的,以及了解一些细节。

流量评估

你需要清晰的知道,当前阶段每天的流量、DAU、DAT是多少,业务评估是多少,技术侧评估又是多少,当前阶段的性能是否能支撑即将来临的大促,如果不能,需要做出什么调整。

  1. 优化?怎么优化?优化哪些业务?现在优化还来得及吗?

  2. 扩容?扩容哪些服务?扩容到多少?为什么要扩容到这么多机器?

  3. 降级?什么业务降级?业务是否支持降级?什么时候降级?

这么多问题,看起来现在就需要对业务进行一次梳理了。

业务梳理

我们需要梳理出哪些业务是核心业务,哪些业务是非核心业务,哪些业务是可降级业务,这类数据大致可以从上一次大促获取。

再加上上次大促到本次大促期间所产生的新项目(业务项目或技术项目)进行梳理,是否影响核心链路?是否进行了压测?压测结果如何?这些项目可能存在什么技术风险?

你的服务依赖哪些下游服务,这些下游服务又是如何依赖的,这是个很麻烦的事情,因为随着业务变大,依赖关系会变得非常复杂,很难判断与梳理。尽管很难,但是这个依赖关系仍然要梳理清楚,只有梳理清楚了,才有全链路。

压测

有了业务梳理和业务指标,那么就在技术上要能够支撑到这个业务级别,那就是压测了。

到目前为止有两种压测方式:

  1. 不扩容压测

  2. 扩容后压测

不扩容压测一般不推荐,这种方式需要对业务指标打折作为目标来进行压测,最后在扩容的时候还是需要压测一次,因为局部压测不能完完全全代表整体压测,如果整体压测出现问题,那么所有的局部压测都是白费苦工。

扩容压测,就是指容量扩容到大促支撑位,然后进行压测。

值得注意的是,压测一定是针对生产!

有些同学对开发环境、测试环境、预发环境、灰度环境、仿真环境进行压测,从而推断出生产环境的性能。这是万万不可取的,因为环境不同,服务器的性能不一样,生产环境和其他环境的DB性能也不一样,还有一些中间件性能也不一样。所以,压测一定要在生产环境压测,但是有一个缺点,就是会对线上的正常流量产生影响,这也是不可避免的,所以压测的时候,一般都会选择流量不大的时候进行,尽量减少对正常流量的影响,一旦产生影响,请立即停止压测。

还有就是压测需要流量爬坡,切记不可一步到位,按照一定比例逐渐施压,每一个坡度都观察几分钟,没问题继续施压,达到目标后观察几分钟没问题直接停止压测,不可恋战!

为什么不恋战?因为大促的流量趋势就是那几分钟,长久的施压对服务器的性能有一定影响,比如CPU飙高啊,频繁GC啊等,所以在在压测过程中还需要不断观察系统整体性能,还有就是也会影响到正常的用户访问。举个例子,奥运会举重,明明只需要保证举起来三秒即可,你训练的时候难道要举起来三分钟吗?

对于压测,我们后面再单独拎一篇文章出来,这里就不过多讲述了,敬请期待!

限流

压测完了后,我们需要输出一份压测报告,比如商详支持多少qps,下单页支持多少qps,下单支持多少tps等。

这些数据说明了,我们的系统,有多少实例,哪个接口能承受的最大峰值是多少。那么我们就需要对这个接口或这些接口做限流。

这里我们说一下单机限流与集群限流,单机限流指的是每台机器自身的限流,集群限流指的是整个服务集群的限流。

单机限流的目的是保护服务本身,保证自身服务不被流量击垮。

集群限流的目的是保护下游服务,保证下游服务不被当前服务击垮。

比如A->B->C,每个服务三台实例,整个B集群最大能支持150qps,C集群最大能支持100qps,那也就是说B服务需要设置集群限流100qps用来保证C,B的三个实例需要设置单机限流50qps用来保证自身不被击垮。

所以如果流量不倾斜的话,B服务每个实例会有33qps,如果倾斜的话,最大50qps。

我们回到大促限流,所以,我们需要拿着我们的压测报告,针对我们的服务做单机限流与集群限流。

降级

限流后,我们能够保证服务本身不被击垮,保证下游不被击垮,但是,这不是我们的目标,我们的目标是要保证大促期间商详没问题,下单支付没问题呀!

所以,我们要降级,一些比较耗性能的业务降级,一些边缘业务降级,给核心业务让路。

然后就需要梳理这些业务,有哪些需要降级的业务?什么时候降级?由谁来降级?什么时候恢复等。

应急预案与演练

当我们保证了核心链路的正常后,我们还需要考虑异常的情况。对于电商系统来说,要考虑到整个生命周期异常的可能性,比如:打开商详页失败、打开订单渲染页失败、下单失败、履约失败等。说的都比较概括,我们当时准备了上千个预案!

淘系双11大促,为了安全起见,是不会有任何依赖外部系统的,因为第三方系统都无法承受住淘系大促期间的流量波。

如果你的电商系统有依赖外部系统的,那么你还要梳理出哪些渠道哪些商品会参与本次大促,这块也需要针对渠道做压测与限流,有可能渠道由于体系较小不支持压测,这时候你可能要考虑到在履约的时候做蓄洪与泄洪,使用真实流量来冲击渠道,用于检验渠道的性能。另外在有第三方参与的情况下一定要有每个渠道的应急预案,对应给用户展示的文案是什么都是不一样的。

最重要的是要与合作伙伴共同制定一份SLA(Service Level Agreement):服务级别协议,服务提供商和客户之间的协议,用于确定所需的服务和预期的服务水平,对互联网公司来说是网站服务可用性的保证。

在这里SLA约定了客户对于合作伙伴的线上运维、计划运维、业务连续性以及故障处理能⼒的要求。

做完预案后,要通过预案平台进行演练,或者人工演练,要当做到熟能生巧,大促出问题后才会显得临危不乱。

监控

大促出问题?你怎么知道这块出了问题?这时候需要监控,需要告警。

大促大盘监控、全链路监控、核心链路监控、压测监控、限流监控、资源监控、网关监控、渠道履约监控......

规范

大促期间是需要制定很多规矩,比如发布红线、红线问责、预案执行规范、紧急扩容规范、紧急发布规范......,我们这里统称大促变更规范吧。

无以规矩不成方圆,制定这些规范的目的是能让我们明确问题发生后我们应该按照什么流程去应急。

其他

还有很多其他的一些杂七杂八的,比如大促前每周周会、大促值班人员排班、大促作战室、问题的上升制度等。

到这里,我们万事俱备,只欠东风了。

事中

事中是整个环节最简单的,跨度最短的阶段,但是简单不代表不重要。主要是关注以下几件事情:

  1. 商品大促时段、钱包大促时段时间点值班

  2. 大促的关键节行为节点记录

  3. 大促问题记录

  4. 重点关注告警与监控

  5. 出现问题按照预案与预案规范执行,按照问题升级规范升级

  6. 大促期间严格控制发布变更与数据变更,避免影响大促

  7. 大促日会

最重要的就是要持续关注告警与监控,一旦出现问题需要及时响应与止血,严格按照预案执行。另外就是关注大促每个场次的峰值情况,通过自动记录或人工记录的方式进行记录峰值,方便作为下次流量评估的依据。

事后

事后我们最重要的就是要做大促复盘,盘点大促期间的一些好的点和不好的点,对于好的点如何延续到下次大促甚至更好,不好的点如何进行调整。业务上关注哪些商品在哪些区域更好卖一些,哪些玩法更能让用户接受一些;产品侧需要关注配合业务对于现有的产品模型做出一些调整与优化;技术侧重点关注性能,本次大促是否存在性能瓶颈,瓶颈在哪里,如何优化,架构上是否需要调整,下次大促如何去支撑等。

其次是降级恢复,在大促前做的降级,在大促后需要对其恢复。

我们还需要对于系统存在的性能问题进行持续优化改进,然后进行压测,得出结论,再优化,再压测,优化,压测,......。

总结&展望

大促前:KO大会、大促周会、细节沟通、流量评估、业务梳理、压测、限流、降级、预案、演练、监控、规范。

大促中:值班、记录、关注告警与监控、执行预案、执行规范、日会。

大促后:复盘、降级恢复、持续优化、持续压测、持续发布。

每到大促,如何保障系统高峰扛得住、长期平稳是每个大促人必须面对的问题。大促期间发生的每一个问题都可能被无限放大,所以我们需要谨慎对待,这开不得玩笑。



阿里大促,「技术负责人」如何做技术保障?相关推荐

  1. 「技术人生」:技术同学应该如何理解业务?

    简介:本文以大量理论论述解析业务,并提供多种基于不同场景的实操方法,帮助技术同学以科学.合理的方式开展日常工作.指导团队开展业务建设,保障顶层设计的落地执行. 一. 背景 目前已经发布<技术一号 ...

  2. 「技术人生」第2篇:学会分析事物的本质

    简介: 对于研发同学而言,探究事物的本质,是最基础最核心最先需要被掌握的技能,没有之一. 作者:贺科学 技术一号位不是岗位,更多的是技术人员在公司中做事的一种心态,这个系列的文章适合所有想要对日常工作 ...

  3. 「技术人生」第9篇:如何设定业务目标

    写在前面 上一篇文章讲了如何构建业务大图,看到有评论说这和设定 OKR 差不多啊.希望其他读者不要被类似的看法带偏.业务大图是业务顶层设计,是战略目标.业务长期价值.业务维度拆分.业务组织设计.业务长 ...

  4. 「技术人生」第3篇:解决问题的规律总结

    简介: 本文将介绍问题研究背景及解决问题的一般规律和特殊规律及二者之间的辩证关系. 作者:贺科学 往期技术一号位方法论系列文章: 「技术人生」专题第1篇:什么是技术一号位? 「技术人生」第2篇:学会分 ...

  5. 「技术人生」第4篇:技术、业务、组织的一般规律及应对策略

    简介: 本文讨论了如何让技术一号位能够从理论上.以宏观的视角看清日常工作息息相关的事物的发展规律,从而为顺应规律办事或者创造条件打破规律提供理论依据. 往期技术一号位方法论系列文章: 「技术人生」第1 ...

  6. 「技术综述」有三AI不得不看的技术综述

    https://www.toutiao.com/i6715153780863664653/ 文/编辑 | 言有三 最近遇到了很多新手来交流,网上资料甚多,筛选有时候是个大问题,一般遇到一个新方向,找技 ...

  7. 合格的CTO应该是什么样?雷军王海峰王小川等共谈「技术创新」| CNCC2020

    金磊 发自 CNCC现场 量子位 报道 | 公众号 QbitAI 企业在社会中的分量有多重? 从17世纪到20世纪70年代,改变人类生活的160种主流创新工业,80%以上是由公司来完成. 今天,全世界 ...

  8. 如何摆脱「技术思维」的惯性?

    大家好,我是Z哥. 虽然从标题上看,这篇文章是写给"技术人"的,但从广义上来说,只要你是一位以理性见长的人,那么这篇文章要讲的东西可能会与你有关. 先问大家一个问题. 如果你现在打 ...

  9. 第三十二期:如何摆脱「技术思维」的惯性?

    虽然从标题上看,这篇文章是写给"技术人"的,但 从广义上来说,只要你是一位以理性见长的人,那么这篇文章要讲的东西可能会与你有关. 虽然从标题上看,这篇文章是写给"技术人& ...

最新文章

  1. 如何在无人机上部署YOLOv4
  2. 训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)
  3. Java中Volatile关键字详解
  4. php取汉字第一个字,php---------取汉字的第一个字的首字母
  5. ubuntu启动,而且找不到win10启动项!
  6. 黄金寨景区、缥缈间温泉2019北京推介会成功举办
  7. 动手学pytorch之通俗易懂何为卷积-深度AI科普团队
  8. Spring Cloud Eureka(二)注册一个服务的提供者
  9. Oracle学习总结(5)—— SQL语句经典案例
  10. ASP.NET的几个试题(《C#与.NET程序员面试宝典》)
  11. Spark提交任务到集群
  12. 计算机组成原理课程设计报告,计算机组成原理课程设计报告.doc
  13. 中国菜刀使用与原理分析
  14. Flixel横板游戏制作教程(三)— AddingWeapons
  15. 微信公众号系列之测试号使用
  16. 004@ kernel 的配置和编译总结 分析2
  17. WhatsApp的下载与更新
  18. Python3模拟斗地主发牌
  19. hibernate常见错误之Unable to locate persister:
  20. 基于微信小程序的图书销售商城系统源码

热门文章

  1. python中import上级文件夹
  2. 非全日制计算机专业值得读吗,全日制、非全日制哪个更好?19计算机考研扫盲贴!...
  3. CSUOJ-1986: 玄学
  4. 心理测量学信度计算机试题,心理测量学:信度
  5. 互联网快讯:快手启动“新锐品牌计划;猿辅导、掌门教育布局素质教育
  6. 【Python实用技巧】如何将Python脚本打包成exe可执行文件?
  7. ed2k 网络中搜索资源并选择资源下载的分析及eMule源码梳理
  8. 我的世界java活板门会被烧没_《我的世界》新版1.14的活板门特性改变了?玩家开发出新的玩法!...
  9. 阿里云的mysql问题
  10. 从事嵌入式行业年薪有多少,你和高薪究竟差了哪些东西?