乐优商城是一个全品类的电商购物网站(B2C模式),采用目前流行的微服务架构方案设计 乐优商城选择了以SpringCloud为核心的,基于Rest风格的微服务架构
- 整个系统采用了前后端分离的开发模式
- 前端基于Vue相关技术栈进行开发,并通过ajax与后端服务进行交互
- 前端通过nginx部署,并利用nginx实现对后台服务的反向代理和负载均衡
- 后端采用SpringCloud技术栈来搭建微服务集群,并对外提供Rest风格接口
- Zuul作为整个微服务入口,实现请求路由、负载均衡、限流、权限控制等功能
后端技术栈:
- Spring Boot 2.x
- Mybatis 3.x
- Spring Cloud Greenwich
- Redis 5.x
- RabbitMQ 3.x
- Elasticsearch 6.x
- nginx 1.14.1
- FastDFS 5.x
- thymeleaf 3.x
- JWT
- 商品分类管理
- 商品品牌管理
- 商品规格参数管理:因为规格的可变性,采用了竖表设计,分为规格和规格组表
- 商品管理:难点是spu和sku的设计,以及sku的动态属性
- 库存管理:库存加减采用乐观锁方案
- 采用elasticsearch实现商品的全文检索功能
- 难点是搜索的过滤条件生成
- 订单的表设计,状态记录
- 创建订单需要同时减少库存,跨服务业务,需要注意事务处理
- 查询订单提交的商品信息
- 计算订单总价格
- 写入订单、订单详情、订单状态
- 减少库存,远程同步调用商品微服务,实现库存减少(若采用异步减库存,可能需要引入分布式事务)
- 对接微信支付
- 离线购物车: 主要使用localstorage保存到客户端,几乎不与服务端交互
- 在线购物车: 使用redis实现
- 用户注册
- 注册数据校验
- 查询用户信息
- 收货地址管理
- 权限管理
- 登录token生成
- 登录token认证
- 服务间token生成
- 服务间token认证
- 对接腾讯云平台,通过RabbitMQ实现异步的短信发送
- 利用fastDFS分布式文件系统,将文件存储到nginx服务器上
- 在页面内容发生改变时,通过RabbitMQ实现异步更新静态页面