我们商城订单有如下几个过程
用户下单=》购买权限判断=》库存判断=》优惠规则检查=》生成订单
=》扣减库存=》积分扣减=》券抵扣=》通知门店销售顾问=》用户下单成功通知=》通知财务=>返回给用户
如果串行执行的话,假设每个点消耗30ms,总消耗就是30ms*11 = 330ms
也就是单进程的情况下qps为3
现在做如下拆分
必要流程 用户下单=》购买权限判断=》库存判断=》优惠规则检查=》生成订单=》返回给用户
消息=》 库存服务
消息=》积分服务
消息=》券服务
消息=》顾问通知
消息=》用户通知
消息=》财务通知
总计时间为150ms,时间减少一半
如果采用多进程或者多线程的方式
用户 =》权限判断
用户 =》库存判断 =》 订单生成 总计时间 60ms
用户 =》优惠规则判断
综上 采用多线程或者多进程进行处理订单的服务,同时把非部分非实时性要求较低的服务放入队列中执行,
最终保证数据一致性。qps将会带来较大的提升