当前位置: 首页 > 科技观察

2天快速搭建一个互联网电商全链路压测平台

时间:2023-03-17 23:35:49 科技观察

2013年小红书成立的时候,主要是让大家分享自己买过的产品或者用过的产品,分享自己的好体验。在小红书的前世今生,很多女生都看到了这个口红好,那个包包很好看;很多口红都是国外的,没地方买。于是,2014年搭建了电商平台,开始营业。目前,小红书已成为国内最大的社区跨境电商之一。现在上海、郑州、宁波、深圳设有多个保税仓库,为全国提供各类全球好产品。高速增长之痛记得2015年,阿里巴巴双十一会场可能会有上千人同时进行全链路压测。因为近三年小红书的快速成长,它需要面对和解决阿里和京东两大厂商同样遇到的稳定性问题。主要有以下三个方面需要解决:随着业务的增长,人员和IT资源的扩张跟不上业务的快速发展。比如在稳定性保障方面,我们的测试团队只有两三个同学在搭建全链路压测的过程中。与阿里、京东相比,是一个数量级的差距。以往基于单一Python的系统架构,在大促时往往成为瓶颈。缺乏有效的性能和在线稳定性保证策略和实践。全链路压测系统架构全链路压测,阿里有PDS,京东有全链路压测平台。像大厂这样的压力测量系统已经迭代了很长时间。我们应该做什么?我们没有那么多的人手和资源;核心是把事情做好。在电商高峰场景下,其流量可能是平时的10倍甚至数十倍。在这种情况下,流量不会平均分配到每个业务线。比如90%的流量先到主会场;然后主会场分流到各个分会场,然后下单等等。整个过程是一个漏斗模型;这可以通过比较界面的水位来表示。为了保证高峰期上网行为的模拟,我们需要对整个业务模型进行基于水位对比的全链路压力测试。据此,我们的全链路压测系统架构分为四大块:各链路压测脚本配置管理压测调度统一压测数据管理压测脚本;如何快速方便的开发出大量的链接压力测试脚本。构建从0到1的全链路压测从0开始2017年6月6日的大促是我们平时最重要的三大促销之一。5月份,我们接到了今年宣传保障任务。当时整个测试只有两个学生可以参与,只有一个运维学生可以支持。开发学生将继续从事业务开发工作,直到6月4日。同时,测试系统基本上是一张白纸。压测模型进行全链路压测,需要建立一个压测模型,就是要知道压什么,怎么压,压到什么程度:首先,我们要梳理链路。我们配合开发和运维,通过运维监控系统获取所有在线接口列表。然后通过调用监控系统获取各个环节之间的比例关系。同时根据去年的匹配率和每日的链路监测,可以知道平时和去年各个接口的推广程度。***,根据前面两步计算链接调用、压测脚本、压机。据此,我们任意一个链路压测脚本一共有四个压测参数,分别是:输出压力qps当前水位压力周期压测链路在这种情况下紧密配合,对于我们测试同学来说就容易多了;我们可以将这个工具打包成一个包,方便部署。这样就可以配合运维同学一次性生成多台压机,同时对一个系统进行压压。目前我们可以在大约五分钟内创建超过400个压力测量容器,这意味着可以快速输出超过5G的压力。为了区分压测流量和真实在线流量,我们与开发人员合作,将每个测试数据标记为在线。这样,我们在制作业务报表或者数据报表的时候,就有了一个统一的框架来分离测试数据;从而保证测试数据不会污染线上数据。全链路压测的目的是模拟真实大促情况下每个链路能承载多少流量,各个业务系统的瓶颈在哪里。除了压测,除了上述全链路压测,我们还包括容量预估、降级预案、应急预案、大促演练、值班预案。我们将通过流量历史监控来估算容量;同时,我们将为应力测量基线和限流断路器提供依据。当在线业务流量水平超过我们设定的阈值时,为保证在线稳定运行,我们将对相关业务进行功能降级。另外,当线上水位超过我们原先的预期时,我们会有相应的应急预案,减少产能不足的影响。2017年66年中推进全链路实践,5月6日立项,8日打压第一个链路。我们只用了两天的时间,就实现了从0到1的飞跃。对于从0到80%的过程,大家很快就能做到,因为对于运维同学来说,这些工具和方法基本就是他们每天都在做的事情。将建设思路从0复制到1,在人手紧缺的情况下达到了预期目标。***,给有兴趣进行线上全链路压测的同学三点建议:先不要想着大而全的平台。关注系统本身,从监控和限流开始。掌握全链路压测方法,快速搭建,实现从0到1。