【浅谈电商】简易购物车模块(一)

简介: 近期接到开发任务,需要以图书为中心开发一套书籍在线商城系统,由于之前没有做过相关的系统,借此机会梳理总结一下各个模块的处理逻辑。简易实现,项目开发中,有更好的想法请指教。

前言

近期接到开发任务,需要以图书为中心开发一套书籍在线商城系统,由于之前没有做过相关的系统,借此机会梳理总结一下各个模块的处理逻辑。

简易实现,项目开发中,有更好的想法请指教。

购物车需求

购物车包含以下需求:

  • 购物车查看
  • 选中/取消商品
  • 加入购物车/立即购买
  • 删除商品
  • 修改商品数量
  • 购物车商品数量
  • 促销

以上是购物车的一般需求(促销目前没有涉及),针对于用户的一些需求。

购物车需求分析

购物车查询

购物车操作相较为频繁,传统的存入数据库的方式不能满足处理速度需求。此时转为了缓存方式存储,也就是使用Redis的方式存储购物车的相关信息。

简易购物车把有关于商品的信息都存储到了缓存,查询时直接返回用下的购物车缓存即可。

存储信息如下:

  • 商品信息。ID、名称、状态、缩略图、价格、套餐属性。
  • 选中状态。
  • 商品数量。

当我们引入缓存时,引申出另外的问题:

  • 如何保证缓存中的数据不丢失。
  • 如何保证缓存中的数据与数据库保持一致,例如商品下架等情况。

解决方案:

  1. Redis采用集群部署,避免其中有Redis宕机造成数据丢失。
  2. 加入购物车时,校验此商品的有效性,当发现加入商品出现过期下架的情况,触发更新整个购物车逻辑。
  3. 在提交订单后,触发更新购物车逻辑。

ps:这样并不能实时的查询出有效的商品,仅有发现购物车存在失效商品后,才会触发更新操作。

后续解决方案:

  1. 当我们修改商品信息的时候,把一个标记存入缓存,记录此时的时间。
  2. 当用户查询购物车时,根据购物车的时间标记与上述标记对比进行购物车的同步,已达到缓存与数据一致。

选中/取消

此功能有两种实现方式:客户端、服务端。

客户端:

优点:

  1. 每次操作不需要调用服务端,能够减少性能损耗,减少网络请求。
  2. 客户端操作,不需要开发单独的接口实现。

缺点:

  1. 不能多端同步,显示不一致。

服务端:

优点:

  1. 能够实现多端同步。
  2. 商品价格计算可以同步返回,不需要客户端计算。

缺点:

  1. 每次操作都需要发送请求,网络开销大。

个人感觉这两种方案都是可以的,目前使用的是客户端进行存储操作。

相应的商品总价在提交订单时,服务端会对此金额进行验价,如果校验不通过会触发更新购物车操作,使前后台商品金额一致。

加入购物车/立即购买

加入购物车:商品 -> 购物车 -> 提交订单 -> 生成订单

立即购买:商品 -> 虚拟购物车 -> 提交订单 -> 生成订单

相比加入购物车和立即购买,前者是加入购物车,从购物车确认订单。后者是直接进入确认订单页面。

逻辑上相比,多了一步购物车的逻辑,其实也可以归为一类,给立即购买加入一个隐形购物车,此购物车只能存储一个商品,每次都会顶替掉上一个商品。

这样方便于后续的处理,逻辑可以公用。

商品状态

当我们把商品加入购物车过了很长时间后,有些商品会失效,后台已经不存在此商品,这时候需要把这部分商品在购物车中标识出来,并且不能参与结算。

后续查询MongoDB方案中,可以避免修改后延迟问题。

并发问题

购物车的最终结果是生成订单,在这其间有商品正确性校验、库存校验、金额校验、地址、发票等等信息进行处理,随着逻辑的边长时间也会相应边长。

这里需要使用分布式锁限制并发问题,多端时,当一端进行提交订单,其他的端不允许进行计算操作,避免下单出现问题。

目录
相关文章
|
缓存 监控 NoSQL
Redis - 在电商购物车场景下的实战分析
Redis - 在电商购物车场景下的实战分析
794 0
|
资源调度
一天掌握latex论文编辑,从标题作者,段落,数学公式,图片,图表,到参考文献全流程
一天掌握latex论文编辑,从标题作者,段落,数学公式,图片,图表,到参考文献全流程
1228 0
|
算法 异构计算 索引
|
9月前
|
算法 前端开发 API
开源轻量级IM框架MobileIMSDK的鸿蒙NEXT客户端库已发布
MobileIMSDK-鸿蒙端是一套基于鸿蒙Next(纯血鸿蒙)系统的IM即时通讯客户端库: 1)超轻量级(编译后库文件仅50KB)、无任何第3方库依赖(开箱即用); 2)纯ArkTS编写、无Native代码、高度提炼、简单易用; 3)基于鸿蒙Next标准WebSocket API,简洁优雅; 4)可运行于任何支持鸿蒙Next的平台; 5)能与 MobileIMSDK的各种客户端完美互通; 6)可应用于鸿蒙Next中的消息推送、客服聊天、企业OA、IM等场景。
311 45
|
9月前
|
编解码
四、ArkTS 常用组件-图片(Image)
ArkTS 常用组件-图片(Image)简介:Image 组件用于在应用中显示图片,支持本地和网络图片的加载,提供了多种参数类型如 string、Resource 和 media.PixelMap。常用属性包括图片尺寸设置(width()、height())、图片缩放模式(objectFit())及图片插值(interpolation()),确保图片在不同场景下的最佳显示效果。此外,Image 组件还支持图片资源的灵活引用方式,如通过 $r() 函数引用 resources 目录下的图片资源。
778 2
|
11月前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
164 1
|
数据采集 数据可视化
国内77个城市建筑物轮廓(带高度)数据分享(附百度网盘)
国内77个城市建筑物轮廓(带高度)数据分享(附百度网盘)
1693 1
|
JSON API 数据库
Flask 实战:实现增改及分页查询的完整 Demo
使用 Flask 搭建的 RESTful API Demo,包含增、改用户信息和分页查询功能。利用 Flask-SQLAlchemy 处理数据库操作。环境准备:安装 Flask 和 Flask-SQLAlchemy。核心代码展示用户模型、增加用户、分页查询和更新用户信息的路由。注意点包括数据库配置、错误处理、JSON 数据处理、幂等性、安全性和编码问题。提供完整源码下载链接。
1119 2
|
C++ Windows
手把手教你安装 Visual Studio 2022 及其简单使用
手把手教你安装 Visual Studio 2022 及其简单使用
2211 0
|
easyexcel API 数据安全/隐私保护
EasyExcel使用与详细说明,EasyExcel工具类(三)
EasyExcel使用与详细说明,EasyExcel工具类
13732 1

热门文章

最新文章