商城设计要点(二)-订单快照,减少存储成本

zszdevelop大约 1 分钟

商城设计要点(二)-订单快照,减少存储成本

1. 简介

1.1 什么是订单快照

商品信息是可以修改的,当用户下单后,为了更好解决后面可能存在的买卖纠纷,创建订单时会同步保存一份商品详情信息,称之为订单快照

1.2 背景

同一件商品,会有很多用户会购买,如果热销商品,短时间就会有上万的订单。如果每个订单都创建一份快照,存储成本太高。另外商品信息虽然支持修改,但毕竟是一个低频动作。我们可以理解成,大部分订单的商品快照信息都是一样的,除非下单时用户修改过。

2. 解决方案:摘要比对的方法‍

如何实时识别修改动作是解决快照成本的关键所在。我们采用摘要比对的方法‍

  1. 创建订单时,先检查商品信息摘要是否已经存在,
  2. 如果不存在,会创建快照记录。
  3. 订单明细会关联商品的快照主键
public class DigestTest {
    public static void encodeStr(String data) {
        String encodeS = DigestUtils.md5Hex(data);
        System.out.println(encodeS);
    }
    public static void main(String[] args) {
        String data = "订单快照信息......";
        encodeStr(data);
    }
}

由于订单快照属于非核心操作,即使失败也不应该影响用户正常购买流程,所以通常采用异步流程执行。

  1. mall 商城项目未采用该方案
  2. mall 商城下单时直接存了商品名,下单时价格等基本信息,并没有存快照信息

参考文章

聊聊电商系统中常见的9大坑!库存超卖、重复下单、物流单ABAopen in new window

Loading...