概述
库存是一个复杂度很高的核心系统,提供前端实时查询的能力和后端的商品扣减,还要处理订单取消问题。这对库存系统的准确性和可靠性提出了很高的要求,在各种场景下能保证数据的准确,在遇到突发流量时能保证高可用,除此之外,还需要提供熔断和降级的能力,保证在极端情况下不拖垮主站。
技术架构

- DUBBO是一款非常优秀的 RPC 层框架,提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
- RocketMQ是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。
- Redisson是架设在Redis基础上的一个Java驻内存数据网格。
- Redis单线程的高速缓存数据库,支持持久化、事务,通过哨兵和自动分区提供高可用。
- Druid阿里的开源软件,专为监控而生的数据库连接池。
- Mybatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
- MySQL关系型数据库系统。
库存扣减
为简化库存系统,库存系统之上建立交易系统和订单管理系统,库存只负责管理商品扣减。
1. 何时扣减
库存扣减一般有三个时机:
- 加购物车时扣减。商品加入购物车,并不能说明用户确实要购买,实际转化率并不高,假如此时扣库存,会导致库存被占用而无法释放,影响正常销售。
- 提交订单时扣减。用户下单后还有一个支付操作,如果用户仅仅下单而不进行支付,这部分库存将会被无效占用,影响正常销售。这里可以做一个支付时限,如果超过时限未支付,订单将被取消,预占得库存被返还。
- 支付时扣减。用户进行支付,说明交易即将完成,这部分是必须要留住的订单和用户,如果此时扣库存,出现库存不足导致用户支付失败会严重影响用户体验。
目前为提高库存效率和用户体验,系统采

本文探讨了库存系统的复杂性,包括实时查询、商品扣减和订单取消处理。技术架构涉及DUBBO、RocketMQ、Redisson和MySQL。库存扣减策略是在提交订单时进行,采用Redis事务处理并发和幂等问题,同时记录日志以便回滚。数据库部分,Redis用于高并发读写,主从+哨兵模式确保高可用,MySQL记录操作日志。

961

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



