# 《Seckill秒杀系统》第119章:全链路压测场景与核心流程

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:了解全链路压测的基本知识,掌握全链路压测在保证系统高并发、高性能、稳定性和可靠性方面的核心原理,重点掌握全链路压测的场景与核心流程,并结合自身实际项目思考如何将全链路压测落地到自身实际项目中。

大家好,我是冰河~~

每年的双11前期,像阿里都会对系统进行足量的压测,了解整个系统的性能和瓶颈,不断优化和提升系统的性能,以便在双11期间系统能够在高并发环境下,平稳的提供服务。那么,像阿里这样的互联网大厂,是如何对系统进行测试的呢?答案就是全链路压测。

# 一、前言

相信很多小伙伴不管是在面试过程中,还是在与其他人聊天过程中,要是跟其他人谈论起自己所做的项目时,可能就会被问到这样一个问题:你们系统支持多大的并发?性能和数据表现如何?此时,不少小伙伴就比较懵了,支支吾吾说不上来,主要就是对自己所做过的系统不太了解,那如何了解系统整体的并发指标,性能瓶颈和数据表现呢?一种很有效的方式就是对系统进行全链路压测。

# 二、本章诉求

简单介绍全链路压测的基本知识,全链路压测的场景与核心流程,结合全链路压测的场景、核心流程与自身实际项目思考如何将全链路压测落地到自身实际项目中。

# 三、压测分类

一提到压测,很多小伙伴自然就想到压力测试。其实,压测不仅仅指的是压力测试,压测根据场景和目的不同可以分为:压力测试、并发测试、负载测试和耐久性测试。其中,实际生产环境使用的比较广泛的就是压力测试和并发测试。

  • 压力测试:使系统在高负荷状态下持续运行,主要是测试系统的可用性、可靠性以及错误处理能力,保证系统在CPU资源不足、内存不足、磁盘空间耗尽等场景下不会崩溃。
  • 并发测试:模拟多用户行为对系统进行测试。在多用户场景下,多个用户并发访问系统,会争抢系统中相同的资源。并发测试的主要目的是保证在多用户并发访问时,不会出现内存共享错误、线程安全问题、死锁问题、并发控制问题等。

这里需要注意的是:系统处于高负荷状态时,并不意味着高并发。

# 四、全链路压测基本概念

用直白的话说,全链路压测就是在与实际生产环境一样的业务场景,与实际生产环境一样的系统环境下,模拟出大量用户对系统进行访问,并且模拟出大量数据对系统的整个业务链路进行整体压力测试,并且根据期望的业务指标和性能指标对系统进行持续调优的过程。

用户简短的话说,全链路压测就是在与实际生产环境一样的业务场景和系统环境下,对系统的整个业务链路进行压力测试,并且持续调优的过程。

这么说,大家多多少少能理解点吧?

# 五、全链路压测场景

有几个场景比较适合进行全链路压测,这里,给大家简单总结下,如果想在自己系统中进行全链路压测,可以结合如下场景进行考虑。

场景 说明
新系统上线 新系统上线具备不确定性,此时需要对系统进行全链路压测,以了解新系统的整体情况。
容量规划 根据公司发展或者运营业务需要,对系统的容量进行规划,例如秒杀大促,需要申请多少系统资源,就需要规划
技术和框架升级 在原有系统中使用了新的技术和框架,可能会为系统带来不确定性,验证技术和框架升级,需要全链路压测
系统性能上限 了解系统的性能上限,以便为系统设置对应的阈值,保护系统不会因为性能问题发生崩溃宕机
系统峰值稳定性 系统持续在流量峰值下运行,整体表现是否稳定和可靠,需要对系统进行全链路压测

其实,全链路压测的场景不仅仅局限于这五种,限于篇幅,这里就暂时为大家介绍这五种场景,这五种场景也是使用最广泛的全链路压测场景。

# 六、全链路压测核心流程

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码