概述
库存是一个复杂度很高的核心系统,提供前端实时查询的能力和后端的商品扣减,还要处理订单取消问题。这对库存系统的准确性和可靠性提出了很高的要求,在各种场景下能保证数据的准确,在遇到突发流量时能保证高可用,除此之外,还需要提供熔断和降级的能力,保证在极端情况下不拖垮主站。
技术架构
- DUBBO是一款非常优秀的 RPC 层框架,提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
- RocketMQ是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。
- Redisson是架设在Redis基础上的一个Java驻内存数据网格。
- Redis单线程的高速缓存数据库,支持持久化、事务,通过哨兵和自动分区提供高可用。
- Druid阿里的开源软件,专为监控而生的数据库连接池。
- Mybatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
- MySQL关系型数据库系统。
库存扣减
为简化库存系统,库存系统之上建立交易系统和订单管理系统,库存只负责管理商品扣减。
1. 何时扣减
库存扣减一般有三个时机:
- 加购物车时扣减。商品加入购物车,并不能说明用户确实要购买,实际转化率并不高,假如此时扣库存,会导致库存被占用而无法释放,影响正常销售。
- 提交订单时扣减。用户下单后还有一个支付操作,如果用户仅仅下单而不进行支付,这部分库存将会被无效占用,影响正常销售。这里可以做一个支付