@gaoxiaoyunwei2017
2017-12-19T10:16:16.000000Z
字数 1853
阅读 687
wt
2013年小红书成立之初,主要是让大家分享自己所购买的商品或者是使用好的商品、好的体验。在很短的时间内迅速成长为全国最大的商品分享社区。
很多妹子看到这口红不错、那个包包很好看;很多口红是国外的,没有地方买。由此在2014年构建电商平台开始上业务。目前小红书已经成为国内最大的跨境电商之一。现在我们在上海、郑州、宁波和深圳有多个保税仓,为全国提供各类全球的好商品。
记得在2015年的时候,阿里 双十一会场可能做了上千号的人来同时进行全链路压测。小红书因为成长的这三年非常迅速;和阿里、京东大厂曾经遇到的稳定性问题一样需要去面对、解决。主要有三个方面:
对于全链路压测,阿里有PDS、京东有全链路压测平台。大厂这样的压测系统都是经过较长的时间不断迭代出来的。我们怎么办?我们没有那么的人力和资源;最核心的就是要搞定问题。
在电商高峰期场景下,它的流量可能是平时的10倍甚至是几十倍。在这种情况下流量不是均匀地打到各个业务线的。例如,90%流量先进到主会场;再由主会场引流到各个分会场,然后是下单等等。整个过程是一个漏斗模型;这个可以用接口的水位对比来表示。为了保证模拟高峰期线上行为,我们需要基于水位对比对整个业务模型进行全链路压测。
据此,我们的全链路压测系统架构分为四大块:
6月6号大促是我们平常比较重要的三个大促之一。我们在5月接到需要保障今年大促的任务。当时整个测试的同学只有两人可以投入,运维同学只有一位可以支持。而开发的同学一直会致力于业务开发直到6月4号。同时测试系统方面基本上是白纸一张。
要进行全链路压测则需要构建压测模型;就是要知道压什么、怎么压、压到什么样的水平。
在这样的情况下,对于我们测试的同学来说就简单了许多;我们可以将这个工具达成一个包方便部署。这样就可以和运维同学一起合作,一次性生成多台施压机器同时去压一个系统。目前,我们大概可以在五分钟之内能够创建出来400台以上的 压测容器也就是说快速输出5G以上的压力。
为了区分压测流量和真实线上流量,我们和开发同学全力协作对线上的每个测试数据进行打标。这样一来在出业务报告或数据报表的时候,我们有统一的框架将测试数据进行剥离;进而保证了测试数据不污染线上数据。
全链路压测目标就是模拟真实的大促情况下,我们的各个链路能够承载多大流量以及各个业务系统的瓶颈点所在。
除了前述的全链路压测之外,我们这里还包括容量预估、降级方案、应急预案、大促演练以及值班计划。我们会通过流量历史监控来做容量的预估;同时,为压测基线和限流熔断提供依据。
当线上业务流量水位超过我们设置的阈值的时候,为了保障线上运行稳定我们会对相关的业务进行功能降级。另外当线上水位超过我们原来预期的时候,我们会有相应的应急预案以降低容量不足带来的影响。
从5月6日开始立项到8号开始第一条链路施压,只用了两天我们实现了从0到1的跨越。其实对于从0到80%的这个过程,大家是可以很快做到的。因为对于运维同学来说这些工具、方法基本上是每天都在做的事情。复制从0到1的构建思路,我们在人员紧缺的情况下实现了预期目标。
最后,对于有兴趣开展线上全链路压测的同学有以下三点建议:
1. 先不要想大而全的平台化;
2. 关注系统的本身,从监控和限流开始做起;
3. 掌握全链路压测方法,快速构建实现从0到1;