高性能架构
java 微服务
2G 大约150-200 左右
1核2G SpringBoot qps 600 左右 复杂逻辑 按照 400算
1核2G SpringBoot tps 200 左右 负责逻辑 按照150算
业务系统 10 台 SpringBoot
订单服务 10 台 SpringBoot
nginx 4 台
1核2G nginx qps 470 左右 配合业务系统 400左右
| 实例规格 | 存储空间 | 数据集 | 客户端数 | 单客户端并发数 | QPS | TPS |
|---|---|---|---|---|---|---|
| 1核1GB | 200GB | 19GB | 1 | 128 | 1757 | 97 |
| 1核2GB | 200GB | 38GB | 1 | 128 | 3016 | 167 |
| 2核4GB | 200GB | 76GB | 1 | 128 | 4082 | 816 |
| 4核8GB | 200GB | 142GB | 1 | 128 | 6551 | 1310 |
| 4核16GB | 400GB | 238GB | 1 | 128 | 11098 | 2219 |
| 8核32GB | 700GB | 238GB | 2 | 128 | 20484 | 3768 |
| 16核64GB | 1TB | 378GB | 2 | 128 | 36395 | 7279 |
| 16核96GB | 1.5TB | 378GB | 3 | 128 | 56464 | 11292 |
| 16核128GB | 2TB | 378GB | 3 | 128 | 81752 | 16350 |
| 24核244GB | 3TB | 567GB | 4 | 128 | 98528 | 19705 |
| 48核488GB | 6TB | 567GB | 6 | 128 | 142246 | 28449 |
| 48核488GB(调优) | 6TB | 140GB | 6 | 128 | 245509 | 46304 |
5台业务微服务 ≈ 2500 qps 750 tps
10台订单交易服务≈ 5000 qps 1500 tps
10台网管服务 ≈ 5000 qps 1500 tps
4台nginx 大约 1800 qps
nginx 5台 1950 qps
数据库 2核4G 800tps 1.7w qps 两主1600 tps 两从 + 两主 5.4w qps
redis 主从 三台 qps 10万空转 算5w 3台 15万
3台rocketmq集群 解决异步
redis 缓存预热,1.存储初始化数据,2.存储热点数据 热点的天数是阈值 7天 ,30 天,90天,热点数据每天都会更新 社区最远的一天 新增今天,舍去之前的数据 添加新增的数据
如果用户查询的订单超过了 阈值 那么也会把查询记录存储到redis里 当天晚上会根据删除策略舍弃掉
方案2 把终态的数据存储redis中,
如何分表呢 采用用户编码做的 取余拆分 A主库1-5订单表 B主库5-10订单表,分表是为了提高tps 的效率 用户维度只需要编号hash 取余就可以了,订单维度 需要再订单编号中 标记 表的下表例如 1到10
redis 缓存 存储信息 使用 用户的编号 user code 存储用户的订单信息 使用 hash 存储 里面结构是 map,如果在意查询效率 使用list 使用list 建议值存储终态数据 前端限制住每次查询的状态
在途状态具有不稳定性 所以存储数据库中,最终态状态存储缓存中,针对退款的 可以使用我的组件 更新缓存
数据库这里 两个主从的集群, 2核4G 800tps 1.7w qps 两主1600 tps 两从 + 两主 5.4w qps
普通数据 主从,订单交易系统 双主 双从2核4G
网关限流 阈值
服务限流阈值

浙公网安备 33010602011771号