冰河技术
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
  • 专栏介绍

    • 我要手把手教你搭建并研发一套抗瞬时百万流量的秒杀系统
  • 研发背景

    • 第01章:从多个角度聊聊为何要学习秒杀系统
  • 目标与挑战

    • 第02章:秒杀系统的目标与挑战
    • 第03章:秒杀系统高并发大流量的应对之道
  • 用户故事

    • 第04章:秒杀系统需求与流程梳理
    • 第05章:秒杀系统技术流程梳理
  • 架构设计

    • 第06章:秒杀系统总体方案目标与架构设计
    • 第09章:秒杀系统数据模型设计
  • 环境搭建

    • 第07章:秒杀系统基础环境搭建
    • 第08章:秒杀系统研发环境搭建
    • 第10章:基于DDD快速搭建秒杀系统项目并测试
  • 用户服务设计与实现

    • 第11章:用户登录授权认证流程的设计与实现
    • 第12章:访问登录授权限制接口的流程设计与实现
  • 秒杀活动设计与实现

    • 第13章:秒杀活动业务流程与接口设计
    • 第14章:秒杀活动后端业务与接口开发
    • 第15章:秒杀活动运营端业务开发
    • 第16章:秒杀活动用户端业务开发
  • 秒杀商品设计与实现

    • 第17章:秒杀商品业务流程与接口设计
    • 第18章:秒杀商品后端业务与接口开发
    • 第19章:秒杀商品运营端业务开发
    • 第20章:秒杀商品用户端业务开发
  • 秒杀订单设计与实现

    • 第21章:秒杀订单业务流程与接口设计
    • 第22章:秒杀订单后端业务与接口开发
    • 第23章:秒杀订单用户端业务开发
    • 第24章:秒杀订单运营端业务开发
  • 经典问题重现

    • 第25章:重现刷单流量问题
    • 第26章:重现库存超卖问题
  • 极致缓存设计

    • 第27章:混合型缓存设计场景与原则
    • 第28章:混合型缓存架构设计与技术选型
    • 第29章:混合型缓存通用代码设计与实现
    • 第30章:分布式锁通用代码设计与实现
    • 第31章:混合型缓存通用模型设计与实现
  • 整合极致缓存

    • 第32章:秒杀活动列表混合型缓存设计与实现
    • 第33章:秒杀活动详情混合型缓存设计与实现
    • 第34章:秒杀商品列表混合型缓存设计与实现
    • 第35章:秒杀商品详情混合型缓存设计与实现
  • 缓存领域事件

    • 第36章:领域事件通用缓存模型设计
    • 第37章:秒杀活动监听缓存领域事件的设计与实现
    • 第38章:秒杀活动发送缓存领域事件的设计与实现
    • 第39章:秒杀商品监听缓存领域事件的设计与实现
    • 第40章:秒杀商品发送缓存领域事件的设计与实现
  • 订单领域事件

    • 第41章:秒杀订单监听领域事件的设计与实现
    • 第42章:秒杀订单发送领域事件的设计与实现
  • 库存扣减防超卖设计

    • 第43章:秒杀扣减库存设计
    • 第44章:基于数据库设计并实现库存防超卖
    • 第45章:基于分布式锁设计并实现库存防超卖
    • 第46章:基于Lua脚本设计并实现库存防超卖
  • 单体到微服务

    • 第47章:从单体到微服务重构项目
    • 第48章:重现分布式事务问题
    • 第49章:基于TCC模型解决分布式事务问题
    • 第50章:基于AT模型解决分布式事务问题
    • 第51章:基于可靠消息最终一致性模型解决分布式事务问题
  • 缓存数据一致性

    • 第52章:零侵入重构秒杀活动异步事件后置处理器
    • 第53章:零侵入重构秒杀商品异步事件后置处理器
    • 第54章:零侵入重构秒杀订单异步事件后置处理器
  • 异步化设计

    • 第55章:异步化下单流程设计
    • 第56章:异步化下单编码实现
    • 第57章:异步化扣减商品库存流程设计
    • 第58章:异步化扣减商品库存编码实现
  • 库存分库分表与分桶设计

    • 第59章:商品库存分库分表与分桶设计
    • 第60章:商品库存分库分表与分桶编码实现
    • 第61章:下单流程整合商品库存分桶
  • 订单分库分表设计

    • 第62章:订单分库分表设计
    • 第63章:订单分库分表编码实现
    • 第64章:下单流程整合订单分库分表
  • 隔离与限制策略

    • 第65章:秒杀系统流量隔离策略
    • 第66章:秒杀系统规模限制策略
  • 预约系统设计与实现(含缓存)

    • 第67章:预约系统需求梳理与架构设计
    • 第68章:预约系统数据模型设计
    • 第69章:预约系统业务流程与接口设计
    • 第70章:预约系统运营端业务与接口开发
    • 第71章:预约系统用户端业务与接口开发
    • 第72章:下单流程整合预约系统
  • 预约系统优化

    • 第73章:预约系统分库分表设计
    • 第74章:预约系统分库分表编码实现
    • 第75章:预约系统整合分库分表
  • 秒杀系统削峰策略

    • 第76章:秒杀系统削峰总体概述
    • 第77章:打散客户端流量削峰
    • 第78章:消息队列削峰
    • 第79章:限流削峰
  • 分布式流控

    • 第80章:Sentinel概述与本地搭建环境
    • 第81章:秒杀系统整合Sentinel实现流控
    • 第82章:Sentinel核心技术与配置规则(加餐)
  • 单机限流

    • 第83章:基于QPS实现单机API限流
    • 第84章:基于线程池实现单机并发数限流
  • 业务网关

    • 第85章:业务网关概述与核心架构
    • 第86章:秒杀系统整合业务网关
    • 第87章:业务网关整合Nacos配置
    • 第88章:业务网关整合Sentinel流控
    • 第89章:业务网关整合Guava流控
    • 第90章:业务网关使用自带流控
  • 流量网关

    • 第91章:流量网关环境初步搭建
    • 第92章:流量网关项目搭建
    • 第93章:流量网关实现限流
  • 服务容错

    • 第94章:服务雪崩与容错方案
    • 第95章:服务降级核心原理与落地方案
    • 第96章:热点数据问题与解决方案
    • 第97章:秒杀系统实现服务容错
  • 服务配置

    • 第98章:凌乱的服务配置与解决方案
    • 第99章:秒杀系统整合Nacos配置中心
    • 第100章:实现配置动态刷新
    • 第101章:实现配置动态共享
  • 链路追踪

    • 第102章:链路追踪核心原理与解决方案
    • 第103章:秒杀系统实现链路追踪
    • 第104章:扩展Dubbo源码实现链路追踪
    • 第105章:秒杀系统链路追踪可视化
  • 日志治理

    • 第106章:日志治理概述、原则与架构
    • 第107章:快速搭建ELK环境并导入配置
    • 第108章:秒杀系统整合日志治理
  • 防刷方案

    • 第109章:实现基于条件限流机制防刷
    • 第110章:实现基于Token编排机制防刷
    • 第111章:实现基于黑名单机制防刷
  • 风控模型

    • 第112章:黑灰产与风控基础知识介绍
    • 第113章:风控模型架构与落地方案
    • 第114章:秒杀系统风控模型设计
    • 第115章:秒杀系统风控模型实现
  • 容器化集群部署

    • 第116章:容器化集群部署架构设计
    • 第117章:容器化集群部署落地实现
    • 第118章:容灾架构设计与落地方案
  • 全链路压测

    • 第119章:全链路压测场景与核心流程
    • 第120章:全链路压测核心原则与策略
    • 第121章:全链路压测落地方案实施
  • 极致优化

    • 第122章:服务器物理机极致优化
    • 第123章:单机服务性能极致优化
    • 第124章:秒杀系统流程极致优化
  • 专栏总结

    • 结尾:秒杀系统整体专栏总结
  • 番外篇

    • 第01章:互联网大厂是如何设计和使用缓存的

《Seckill秒杀系统》第121章:全链路压测落地方案实施

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

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

  • 本章难度:★★☆☆☆
  • 本章重点:掌握全链路压测在实际项目中的落地方案,了解常用的全链路压测工具,重点掌握全链路压测方案的实施流程,并能够结合自身实际项目进行思考,将全链路压测的思想灵活应用到自身实际项目中。

大家好,我是冰河~~

掌握全链路压测的场景与核心流程后,结合自身实际项目思考,确定要对系统进行全链路压测后,就需要遵循一定的原则,在压测过程中采用一定的压测策略。掌握这些全链路压测的知识后,我们就需要对秒杀系统进行全链路压测了。我也相信,可能大部分小伙伴对压力测试接触的不对,全链路压测可能接触的就更少了。

一、前言

我们开发的秒杀系统性能到底如何?TPS、QPS,并发用户数到底如何?1000?2000?还是更多?这些都不能由我们拍脑袋决定,我们需要由数据来说话。相信大家学习秒杀系统这么久了,已经迫不及待的想对秒杀系统进行压测了。

二、本章诉求

对秒杀系统进行压测,了解整个压测的执行流程和落地方案,通过压测,了解秒杀系统的性能瓶颈,并对秒杀系统进行优化。重点掌握压测在实际项目中的落地方案,并能够将压测的流程和实施过程灵活应用到自身实际项目中。

注意:本章内容将作为专栏的作业,大家根据本章的内容,结合整个专栏的内容和源码,搭建好运行环境,对秒杀系统真正动手进行压测,检验下自己的学习成果。

三、确定压测目标

在正式对秒杀系统进行压测之前,我们需要确定好压测的接口和压测的目标,在秒杀系统中,我们需要对获取秒杀活动列表接口、获取秒杀活动详情接口、获取秒杀商品列表接口、获取秒杀商品详情接口和秒杀下单接口进行压测。

(1)获取秒杀活动列表接口

  • 接口链接:http://{ip:port}/seckill-activity/activity/seckillActivityList。
  • 操作:读数据。
  • 目标QPS:单机1000,集群100000(假设值)

(2)获取秒杀活动详情接口

  • 接口链接:http://{ip:port}/seckill-activity/activity/seckillActivity。
  • 操作:读数据。
  • 目标QPS:单机1000,集群100000(假设值)

(3)获取秒杀商品列表接口

  • 接口链接:http://{ip:port}/seckill-goods/goods/getSeckillGoodsList。
  • 操作:读数据。
  • 目标QPS:单机1000,集群100000(假设值)

(4)获取秒杀商品详情接口

  • 接口链接:http://{ip:port}/seckill-goods/goods/getSeckillGoods。
  • 操作:读数据。
  • 目标QPS:单机1000,集群100000(假设值)

(5)秒杀下单接口

  • 接口链接:http://{ip:port}/seckill-order/order/saveSeckillOrder。
  • 操作:写数据。
  • 目标QPS:单机1000,集群100000(假设值)

确定好哪些接口需要压测和压测的目标后,接下来,就需要准备压测的环境了。

四、准备压测环境

准备压测环境时,需要对环境进行区分,流量染色与数据隔离,关闭秒杀系统的限流、将压测流量添加到白名单、对必要的功能进行挡板设置、做好监控准备。

(1)对环境进行区分

一般情况下,会将程序的运行环境分为开发环境、测试环境、预发布环境和生产环境。在对系统进行压测时,以生产环境最佳,能够真正测试出生产环境的系统性能,但是,在生产环境进行压测需要做好流量和数据的隔离操作,不要影响到正常流量和用户的正常数据。

如果不具备在生产环境做压测的条件,可以在预发布环境进行压测,但是预发布环境,虽然天然与生产环境隔离,能够做到业务隔离、数据隔离,风险也是可控的,但是在预发布环境上很难构建出与生产环境一样的业务场景和系统环境,并打通全链路的数据。

还一个需要注意的就是:在生产环境进行压测,需要做好隔离工作,并且要在流量低峰期进行。

(2)流量染色与数据隔离

在生产环境进行压测时,需要做好流量染色和数据隔离工作。一种非常简单的流量染色方式就是在请求头中加特定的标识,请求进入系统,业务系统和中间件能够识别出流量标识,此时根据流量标识对业务进行逻辑隔离和数据隔离。在数据库层面我们可以在上产环境的数据库中创建影子表,影子表的表结构与实际业务数据表相同,在表名称上可以添加一个test_前缀,或者其他的标识,以便于和真实业务表做区分。在缓存层面,同样可以在对应的缓存KEY的基础上,添加一个test_前缀。

压测开始前,我们要提前生成影子表,并且将必要的数据导入到影子表中。

进行压测时,如果系统检测到流量染色的标签,则将数据库的读写操作路由到影子库,也就是以test_开头的数据表中,对于缓存的读写操作也路由到以test_开头的KEY上。

当压测结束后,将影子表中的数据清空即可。

这里,需要注意的是:无论是流量染色,还是数据隔离,我们都需要对秒杀交易链路上的业务系统和中间件进行改造,要支持正常流量和压测流量同时进入系统而不会造成流量和数据混乱。

查看完整文章

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

在 GitHub 上编辑此页
上次更新: 2026/4/29 16:18
Contributors: binghe001
Prev
第120章:全链路压测核心原则与策略
阅读全文
×

扫码或搜索:冰河技术
发送:290992
即可立即永久解锁本站全部文章

星球会员
跳转链接