当前位置:网站首页>千万级乘客排队系统重构&压测方案——总结篇
千万级乘客排队系统重构&压测方案——总结篇
2022-08-01 10:46:00 【浅谈架构】
一、 前言
发布上篇文章线上真实排队系统重构案例分享——实战篇之后,一些朋友问我们重构进度咋样了,截至目前,我们乘客排队系统重构已经上线,并且灰度1个月了,目前已稳定运行,从目前结果来看,还是远超预期的。这篇文章主要讲一讲,乘客排队场景压测方案以及个人的一些总结。
二、 如何评估一个排队系统性能
关于排队系统压测,也是和运维同学,测试同学碰撞了挺久,大家各执己见。因为之前,也没有对排队系统性能真正的评估,没有标准。我结合目前线上场景(目前排名前10城市),分析如下:
乘客排队形成排队时机高峰期,时间段(8:00~ 10:00 18:00~19:00 21:00~23:00)
排队平均等待时间(出队时间-入队时间) 1min ~ 5min
高峰期各大城市进入排队比例(排队订单量/当天订单总量) 10% ~ 38%
由此可知,排队性能评估指标——5分钟时间窗口支持最大排队数量(取极限值5min)。
三、 压测目标
目前: 乘客排队开全国,10% ~ 38%订单进排队,我们按50%进排队计算,目前高峰期3万/QPM, 计算得:3万 * 5 * 0.5 = 7.5万
目标: 按目前订单量翻5倍目标压测,即5分钟内,支持37.5万订单同时排队
四、压测步骤
| 序号 | 步骤 | 观测指标 | 操作 |
|---|---|---|---|
| 01 | 下单后派单——历史流程 | 历史流程5min支持最大排队订单数量,接口QPS情况 | 关闭开关,订单排队5min取消 |
| 02 | 下单后派单——新流程 | 新流程5min支持最大排队订单数量,接口QPS情况 | 开启开关,订单排队5分钟取消 |
历史流程5min同时入队量到达10W订单时,接口出现大量超时异常,到达性能瓶颈。
新流程情况如下—— 5min内入队50W订单排队,无异常,此时重要接口情况如下:
| 接口 | 目前QPS | 压测目标 | 压测QPS | 平均RT |
|---|---|---|---|---|
| 入队 | 300 | 1500 | 3000 | 12ms |
| 出队 | 300 | 1500 | 3000 | 40ms |
| 是否在队列中 | 3000 | 15000 | 15000+ | 4ms |
| 查询排队位置 | - | - | 8500 | 8ms |
五、乘客排队重构新老对比
| 5min同时排队订单数量 | 单蜂巢支持最大队列数 | |
|---|---|---|
| 重构前 | <10W | <1000 |
| 重构后 | >50W | 无限制 |
重构后查询接口平均RT整体降低65%,更新接口平均RT降低40%,且无性能瓶颈,后期可水平扩展。
六 总结
本次重构开发人力只投入了2人(人力有限),开发时间只用了7天,一共20多个接口改造,3个定时任务脚本,外加后台配置管理。在时间紧,任务重的前提下,依然有条不紊地进行,后面测试阶段测试反馈bug也很少。
截至目前,主导重构项目已经有6~7个了,重构做多了,也已经形成自己的套路和方法,方案已经很成熟了,很多细节上的坑可以避免。这里,也欢迎系统遇到瓶颈或者有重构需求,遇到困难的朋友一起交流。
欢迎关注"浅谈架构"公众号,不定期分享原创技术文章。

边栏推荐
- 数仓分层简介(实时数仓架构)
- DBPack SQL Tracing 功能及数据加密功能详解
- Small application project works WeChat gourmet recipes applet graduation design of finished product (1) the development profile
- 世界第4疯狂的科学家,在103岁生日那天去世了
- 阿里腾讯面试一二
- 在线GC日志分析工具——GCeasy
- 退役划水
- AI篮球裁判火了,走步算得特别准,就问哈登慌不慌
- 机器学习 | MATLAB实现支持向量机回归RegressionSVM参数设定
- DBPack SQL Tracing 功能及数据加密功能详解
猜你喜欢

.NET性能优化-使用SourceGenerator-Logger记录日志

What is a stepper motor?40 pictures to show you!

一文说明白ECDSA spec256k1 spec256r1 EdDSA ed25519千丝万缕的关系

MySQL 必现之死锁

【钛晨报】国家统计局:7月制造业PMI为49%;玖富旗下理财产品涉嫌欺诈,涉及390亿元;国内航线机票燃油附加费8月5日0时起下调

CTFshow,命令执行:web34、35、36

SAP ABAP OData 服务如何支持 $orderby (排序)操作试读版

redis6 跟着b站尚硅谷学习

使用ESP32驱动QMA7981读取三轴加速度(带例程)

冰冰学习笔记:gcc、gdb等工具的使用
随机推荐
Dataset之mpg:mpg数据集的简介、下载、使用方法之详细攻略
JWT
Enterprise WeChat group: robot timing reminder function database configuration
C#/VB.NET 将PPT或PPTX转换为图像
冰冰学习笔记:gcc、gdb等工具的使用
Browser shortcut keys
回归预测 | MATLAB实现TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)多输入单输出
图解MySQL内连接、外连接、左连接、右连接、全连接......太多了
各位大拿,安装Solaris 11.4操作系统,在安装数据库依赖包的时候包这个错,目前无原厂支持,也无安装盘,联网下载后报这个错,请教怎么解决?
CTO strongly banning the use of the Calendar, that in what?
WTM:ASP.NET Core快速开发利器!
SAP ABAP OData 服务如何支持 $orderby (排序)操作试读版
C#/VB.NET 将PPT或PPTX转换为图像
Promise to learn several key questions (3) the Promise - state change, execution sequence and mechanism, multitasking series, abnormal penetration, interrupt the chain of Promise
C#/VB.NET convert PPT or PPTX to image
JWT
Py之yellowbrick:yellowbrick的简介、安装、使用方法之详细攻略
力扣解法汇总1374-生成每种字符都是奇数个的字符串
阿里腾讯面试一二
关于#SQL#的问题,如何解决?