电商系统技术

一、商品详情页技术

 

技术需求分析

存储数据维度:固定结构数据 、非固定结果数据 、富媒体数据

 

读取流量维度:经常变化数据、非经常变化数据

 

存储数据维度

固定结构数据:商品主标题、副标题、价格等属性,存储到MySQL

非固定结构数据:商品参数(例如电脑内存大小、手机的屏幕尺寸、酒的度数、口红的色号等),KV存储(MySQL Json列,MongoDB)

富媒体数据:对象存储,分布式文件

 

读取流量维度

  • 存储到mysql的数据,设计加一层缓存,应对高并发读
  • 非经常变化的数据,静态化上CDN
  • 经常变化的数据,例如价格,ajax接口获取,读取价格调整的副本记录
  • 富媒体数据,对象存储为CDN源站,用户通过CDN访问

 二、购物车存储设计

购物车系统的主要功能包括:加购、购物车列表页和结算下单。核心的实体就只有一个“购物车”实体,它至少要包括:SKUID、数量、加购时间和勾选状态这几个属性。

在给购物车设计存储时,为了确保购物车内的数据在多端保持一致,以及用户登录前后购物车内商品能无缝衔接,除了每个用户的“用户购物车”之外还要实现一个“暂存购物车”保存用户未登录时加购的商品,并在用户登录后自动合并“暂存购物车”和“用户购物车”。

暂存购物车存储在客户端浏览器或者 App 中,可以选择存放到 Cookie 或者 LocalStorage 中。用户购物车保存在服务端,可以选择使用 Redis 或者是 MySQL 存储,使用 Redis 存储会有更高的性能,可以支撑更多的并发请求,使用 MySQL 是更常规通用的方式,便于应对变化,系统的扩展性更好。

 

MySQL存储方案

Redis存储方案

 

 

KEY:用户ID  FIELD:商户ID 

方案名 可靠性 性能 方案选择
MySQL存储

支持丰富查询和事务机制,业务变更需支持统计今天加购的商品总数等,MySQL容易实现

推荐
Redis存储


异步刷盘,服务器断电,存在丢数据情况风险

可靠性要求不用那么苛刻,购物车丢了几件商品,问题也不大

 

高出1个量级

 

 

posted @   mick0802  阅读(164)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示