电商系统技术
一、商品详情页技术
技术需求分析
存储数据维度:固定结构数据 、非固定结果数据 、富媒体数据
读取流量维度:经常变化数据、非经常变化数据
存储数据维度
固定结构数据:商品主标题、副标题、价格等属性,存储到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个量级 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix