库存系统设计

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

概述

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

技术架构

  • DUBBO是一款非常优秀的 RPC 层框架,提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
  • RocketMQ是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。
  • Redisson是架设在Redis基础上的一个Java驻内存数据网格。
  • Redis单线程的高速缓存数据库,支持持久化、事务,通过哨兵和自动分区提供高可用。
  • Druid阿里的开源软件,专为监控而生的数据库连接池。
  • Mybatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
  • MySQL关系型数据库系统。

库存扣减

  为简化库存系统,库存系统之上建立交易系统和订单管理系统,库存只负责管理商品扣减。

1. 何时扣减

  库存扣减一般有三个时机:

  • 加购物车时扣减。商品加入购物车,并不能说明用户确实要购买,实际转化率并不高,假如此时扣库存,会导致库存被占用而无法释放,影响正常销售。
  • 提交订单时扣减。用户下单后还有一个支付操作,如果用户仅仅下单而不进行支付,这部分库存将会被无效占用,影响正常销售。这里可以做一个支付时限,如果超过时限未支付,订单将被取消,预占得库存被返还。
  • 支付时扣减。用户进行支付,说明交易即将完成,这部分是必须要留住的订单和用户,如果此时扣库存,出现库存不足导致用户支付失败会严重影响用户体验。

  目前为提高库存效率和用户体验,系统采

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值