当前位置:网站首页>千万级乘客排队系统重构&压测方案——总结篇
千万级乘客排队系统重构&压测方案——总结篇
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个了,重构做多了,也已经形成自己的套路和方法,方案已经很成熟了,很多细节上的坑可以避免。这里,也欢迎系统遇到瓶颈或者有重构需求,遇到困难的朋友一起交流。
欢迎关注"浅谈架构"公众号,不定期分享原创技术文章。

边栏推荐
- C language implementation!20000 in 4 seconds
- xss漏洞学习
- What is a stepper motor?40 pictures to show you!
- Small application project works WeChat gourmet recipes applet graduation design of finished product (1) the development profile
- Dapr 与 NestJs ,实战编写一个 Pub & Sub 装饰器
- MFC implementation road map navigation system
- 退役划水
- InputStream转成String
- 使用ESP32驱动QMA7981读取三轴加速度(带例程)
- 周鸿祎称微软抄袭 360 安全模式后发文否认;英特尔CEO基辛格回应市值被AMD超越:股价下跌是咎由自取|极客头条
猜你喜欢

Promise学习(四)异步编程的终极解决方案async + await:用同步的方式去写异步代码

How to Steal $100 Million from the Perfect Smart Contract

周鸿祎称微软抄袭 360 安全模式后发文否认;英特尔CEO基辛格回应市值被AMD超越:股价下跌是咎由自取|极客头条

什么是步进电机?40张图带你了解!

解决vscode输入! 无法快捷生成骨架(新版vscode快速生成骨架的三种方法)

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

基于CAP组件实现补偿事务与消息幂等性

ClickHouse多种安装方式

小程序毕设作品之微信美食菜谱小程序毕业设计成品(3)后台功能

如何从完美的智能合约中窃取 1 亿美元
随机推荐
解决vscode输入! 无法快捷生成骨架(新版vscode快速生成骨架的三种方法)
Qt 支持HEIC/HEIF格式图片
How I secured 70,000 ETH and won a 6 million bug bounty
Enterprise WeChat group: robot timing reminder function database configuration
mysql login in cmd and basic operations of database and table
Guangyu Mingdao was selected into the list of pilot demonstration projects for the development of digital economy industry in Chongqing in 2022
InputStream转成String
pve 删除虚拟机「建议收藏」
进制与转换、关键字
【cartographer ros】10: Delay and error analysis
昇思大模型体验平台初体验——以小模型LeNet为例
CTFshow,命令执行:web37
MFC implementation road map navigation system
正则表达式
Visualization - Superset installation and deployment
PDMan-国产免费通用数据库建模工具(极简,漂亮)
Push the local project to the remote repository
retired paddling
退役划水
线上问题排查常用命令,总结太全了,建议收藏!!