项目总结点
电商业务
功能:商家入驻、店铺管理、用户登录注册、商品的属性,管理,上下架。
模块:购物车,导购,营销,交易,支付,配送,售后。
主要开发的系统:交易、支付系统。商品系统和交易比较核心。
架构方案:
系统架构维度:业务架构,选型。流量入口,数据治理,数据选型。
画一下架构图
- CDN:内容分发网络,有cache的功能;也可以不设置cache功能,所有请求都设置成回原。
- LVS1机房挂了,直接起到LVS2,是瞬时的切换,比较高效。
- NGINX反向代理,上层要配LVS做代理模型。LVS通过网络层代理,LVS会把公网IP配置到CDN上。
- 代理到后端机房之后---后端服务治理问题
- springcloud技术,eureka(多机房部署时要支持多机房的发现,还是需要改造,同事会破坏机房隔离性,查问题不方便。所以现实中,eureka还是每个机房自有的。),zuul、hystrix
- 商品服务、交易服务
- 数据层,mysql数据库。nosql数据服务es数据存储使用。redis缓存服务。
- mysql做分库分表
商品查询交互
- 接口 - 商品服务
- 秒杀高QPS
- 缓存
- 商品主信息查询,失效时间长一些,1hour
- 什么样的内容存redis:商品、运费、类目、品牌模型
- 更新方式:商家接口更新数据库,再异步更新缓存,
- 1.缓存可以直接删除,等待下一次读
- 2.更新缓存同时
- 价格、库存、销量,要实时更新。
- 另存一个redis,缓存更新,数据一致性问题。
- 下单后,异步不可以,要实时扣减。
- 库存
- 1.引入队列系统,聚簇作用,发生交易之后,推送销量更新消息,这个消息5s统一处理一次就行。
- 价格
- 1.实时性高时,商品价格服务,修改价格时,同步修改价格redis。
- 2.价格用的redis
- 平销的普通价格
- 活动价格
- 商品主信息查询,失效时间长一些,1hour
- 缓存
- 一个是查主题内容。一个时查询详情内容。
- 秒杀高QPS
业务结构:
- 商品查询
- 领域模型思想
- 商品基础、品牌、类目、库存、详情描述、销量、价格、运费。
- 商品模型
- 品牌模型
- 库存模型、库存数量、分仓、详情
- 销量模型、数量、
- 价格模型
- 运费
- 领域模型思想
- 交易下单
- 业务单
- 订单ID
- 主子单
- 多个商品单,在一个订单里
- 每个子单有商品ID和商品数量
- 支付单
- 一个订单会有多个支付订单,会存在支付失败的,或者联合扣款
- 营销工具
- 优惠券ID,活动ID,这个放到主单里也可以。
- 下单流程
- 商品系统校验价格
- 库存扣减
- 运费计算
- 营销优惠计算,扣减优惠券
- 支付
- 发起支付
- 支付宝下单
- 支付宝支付成功回调
- 消息接收
- 支付成功、失败、30min超时
- 保存订单
- 回滚30min支付超时,异常回滚,主动退单
- 回滚库存
- 回滚优惠券
- 业务单