目录
1、TPS及相关概念
-
TPS(每秒事务数):衡量系统单位时间内处理"事务"的能力。一个"事务"可以是一个接口、多个接口的组合或一个完整业务流程。
-
QPS(每秒查询数):主要针对查询操作。如果一次事务只包含一次查询,那么QPS ≈ TPS;如果一次事务包含多次查询,则 QPS > TPS。
-
RT(响应时间):从发起请求到收到响应的时间。它直接影响用户体验和系统并发处理能力。
-
并发用户数:系统同时处理的请求数量。
2、TPS估算方法
一个粗略的估算公式参考:
TPS ≈ (DAU × 每日人均操作次数) / (高峰时段小时数 × 3600 × 业务集中因子)
-
DAU:日活跃用户数。
-
每日人均操作次数:每个用户每天进行的核心操作平均次数。
-
高峰时段小时数:通常取一天中流量最高的2-4小时。
-
业务集中因子:高峰时段流量可能占全天流量的很大一部分,例如,微信朋友圈的峰值可能达到平均值的10倍。
3、用户量级与TPS关系参考
| 用户规模 | 日活用户(DAU)参考 | 典型场景举例 🌰 | TPS量级参考 | 关键架构考量 🔧 |
|---|---|---|---|---|
| 小型应用 | 数千 - 数万 | 企业内部系统、初创项目MVP、小型资讯站 | 几十 - 几百 | 单体架构、数据库索引优化、引入基础缓存(Redis)、连接池配置 |
| 中型应用 | 数万 - 数十万 | 省市级政务APP、成长中电商平台、在线教育平台 | 几百 - 几千 | 服务拆分、负载均衡、数据库读写分离、缓存集群、消息队列 |
| 大型应用 | 数百万 - 数千万 | 头部电商平台(非大促期)、主流社交网络(如朋友圈)、短视频平台 | 几万 - 几十万 | 微服务化、分库分表、多级缓存、弹性伸缩、全链路压测 |
| 超大型应用 | 数千万 - 亿级以上 | 双11/春晚等顶级流量场景、全球性社交平台、大型金融交易系统 | 几十万 - 百万级以上 | 多层次服务治理、异地多活、超大规模缓存策略、定制中间件、深度优化 |
4、TPS级别划分及对应架构
级别1:TPS < 100(小型应用)
典型场景:内部系统、小型官网、初创项目MVP
架构方案:
-
单体架构:Spring Boot + MySQL + Redis
-
部署方式:单机部署
-
数据库:单机MySQL,主从复制可选
-
缓存:单机Redis,主要用于会话和热点数据
硬件配置:
应用服务器: 2核4G - 4核8G
数据库: 2核4G - 4核8G (云数据库基本版)
Redis: 1核1G - 2核4G
带宽: 2-5 Mbps
测试重点:
-
功能测试覆盖核心业务流程
-
使用JMeter进行50-100并发压力测试
-
数据库慢查询分析和优化
-
内存泄漏检测
级别2:TPS 100 - 500(中型应用)
典型场景:成长型SaaS、电商平台、企业级应用
架构方案:
-
垂直拆分:按业务模块拆分服务
-
负载均衡:Nginx反向代理 + 多应用实例
-
数据库:MySQL主从复制,读写分离
-
缓存:Redis集群,分布式会话
-
消息队列:RabbitMQ/RocketMQ处理异步任务
硬件配置:
应用服务器: 4核8G × 2-4台 (通过负载均衡)
数据库: 4核8G主库 + 2核4G从库 × 1-2
Redis: 4核8G 哨兵模式或集群
消息队列: 2核4G
带宽: 5-20 Mbps
测试重点:
-
压力测试:200-500并发用户
-
数据库连接池压力测试
-
缓存击穿、雪崩测试
-
接口响应时间监控(目标<200ms)
-
稳定性测试:8-24小时持续运行
级别3:TPS 500 - 2000(大型应用)
典型场景:主流电商、社交平台、金融服务
架构方案:
-
微服务架构:Spring Cloud/Alibaba Cloud
-
服务治理:注册中心、配置中心、熔断降级
-
数据库:分库分表(ShardingSphere)、数据库中间件
-
缓存:Redis Cluster集群模式
-
消息队列:Kafka/RocketMQ集群
-
分布式文件存储:OSS/MinIO
硬件配置:
网关服务器: 4核8G × 2
微服务实例: 2核4G × 8-20个Pod (K8s)
数据库: 8核16G主库 + 4核8G从库 × 2-3
Redis集群: 4核8G × 3-6节点
Kafka集群: 4核8G × 3节点
带宽: 20-100 Mbps
测试重点:
-
全链路压测(模拟真实业务场景)
-
服务熔断和降级测试
-
数据库分片性能测试
-
缓存集群故障转移测试
-
流量突增测试(2-5倍正常流量)
级别4:TPS 2000 - 10000(超大型应用)
典型场景:头部互联网平台、金融核心系统
架构方案:
-
服务网格:Istio + K8s
-
多活部署:同城双活/异地多活
-
数据层:多数据源、数据同步、最终一致性
-
缓存:多级缓存(本地缓存+分布式缓存)
-
搜索:Elasticsearch集群
-
监控:全链路监控、APM、日志中心
硬件配置:
K8s集群: 50-200+节点 (混合配置)
数据库: 16核32G × 多组 (分库分表)
Redis: 8核16G × 10+节点
ES集群: 8核16G × 5+节点
消息队列: 8核16G × 5+节点
带宽: 100-1000 Mbps (多线路BGP)
测试重点:
-
混沌工程(随机故障注入)
-
异地多活切换演练
-
数据一致性验证
-
极限压测(找出系统瓶颈)
-
安全渗透测试
级别5:TPS > 10000(顶级互联网应用)
典型场景:双十一、春晚级别场景
架构方案:
-
极致优化:每个环节深度优化
-
弹性伸缩:全自动扩缩容
-
流量调度:智能DNS、全局负载均衡
-
数据架构:时序数据库、列式存储、大数据平台
-
边缘计算:CDN + 边缘节点
硬件配置:千台服务器级别,混合云架构
5、硬件资源估算方法
CPU估算公式:
所需CPU核数 = (TPS × 单请求CPU耗时(ms)) / (1000 × CPU利用率)
-
单请求CPU耗时:通过 profiling 工具获取
-
CPU利用率:通常按70%规划,预留30%缓冲
内存估算:
JVM堆内存: 应用内存占用的2-3倍
非堆内存: 堆内存的20-30%
系统预留: 总内存的20%
数据库内存: 热点数据集的1.5倍
带宽估算:
所需带宽(Mbps) = (平均响应大小(KB) × TPS × 8) / 1000 × 安全系数(1.5-2)
6、测试策略
1> 基础测试(所有级别都需要)
- 单元测试:保证代码质量
- 集成测试:服务间调用
2> 性能测试
压力测试工具选择:
-
JMeter:HTTP接口、数据库
-
Gatling:高并发场景
-
wrk:简单的HTTP基准测试
-
自定义脚本:复杂业务场景
性能测试场景:
- 基准测试: 单接口性能摸底
- 负载测试: 正常负载下的性能
- 压力测试: 极限压力下的表现
- 稳定性测试: 长时间运行可靠性
- 尖峰测试: 流量突增的应对能力
3> 监控指标
应用层:
- QPS/TPS
- 响应时间(P50/P95/P99)
- 错误率
- JVM指标(GC、内存)
系统层:
- CPU使用率
- 内存使用率
- 磁盘IO
- 网络带宽
中间件:
- 数据库连接数、慢查询
- 缓存命中率
- 消息队列堆积
记住:架构是演进出来的,不是设计出来的。从简单开始,随着业务增长逐步升级架构。

240

被折叠的 条评论
为什么被折叠?



