订单优化逻辑整理:
流程:
0.redis查询
1.判断(查询DB>> ,查询2次DB)
2.查询 (接口DB查询)
3.获取商品详细信息 (DB)
4.获取库存信息 (可能会分布式加锁)(查询redis)
5.获取相关信息(查询接口2次DB)
6.拆单 (内存操作)
7.插入订单 (发消息,操作数据库)
(查询db)
(insertOrder 分布式事物(2次db insert) + 插入订单DB循环3,4次)
8.扣减库存(加分布式锁)(redis)
优化需求:
目前tps=200,需要tps=1000
1.先确认分层限流参数
nginx > zuul > k8s 网关 > tomcat > 应用限流 > 数据库连接池
2.确认一共做多少db查询,多少次db insert, 多少次redis操作
mysql db tps 一般约 200 ,qps 一般是2000
所以先优化所有的db 插入(同步变异步mq处理)。优化后tps = 700
3.在优化db查询,查询走redis,异步更新缓存
4.优化后数据有延迟,延迟操作可以通过插入redis,先做缓冲。查询时先查redis