商城设计要点(二)-订单快照,减少存储成本
...大约 1 分钟
商城设计要点(二)-订单快照,减少存储成本
1. 简介
1.1 什么是订单快照
商品信息是可以修改的,当用户下单后,为了更好解决后面可能存在的买卖纠纷,创建订单时会同步保存一份商品详情信息,称之为订单快照。
1.2 背景
同一件商品,会有很多用户会购买,如果热销商品,短时间就会有上万的订单。如果每个订单都创建一份快照,存储成本太高。另外商品信息虽然支持修改,但毕竟是一个低频动作。我们可以理解成,大部分订单的商品快照信息都是一样的,除非下单时用户修改过。
2. 解决方案:摘要比对的方法
如何实时识别修改动作是解决快照成本的关键所在。我们采用摘要比对的方法。
- 创建订单时,先检查商品信息摘要是否已经存在,
- 如果不存在,会创建快照记录。
- 订单明细会关联商品的快照主键。
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);
}
}
由于订单快照属于非核心操作,即使失败也不应该影响用户正常购买流程,所以通常采用异步流程执行。
- mall 商城项目未采用该方案
- mall 商城下单时直接存了商品名,下单时价格等基本信息,并没有存快照信息
参考文章
赞助