乐优商城项目总结

    科技2022-07-13  123

    整个乐优商城可以分为两部分:后台管理系统、前台门户系统。

    后台管理: 后台系统主要包含以下功能:

    商品管理,包括商品分类、品牌、商品规格等信息的管理 销售管理,包括订单统计、订单退款处理、促销活动生成等 用户管理,包括用户控制、冻结、解锁等 权限管理,整个网站的权限控制,采用JWT鉴权方案,对用户及API进行权限控制 统计,各种数据的统计分析展示

    后台系统会采用前后端分离开发,而且整个后台管理系统会使用Vue.js框架搭建出单页应用

    前台门户:

    前台门户面向的是客户,包含与客户交互的一切功能。例如: 搜索商品 加入购物车 下单 评价商品等等 前台系统我们会使用Nuxt结合Vue完成页面开发。出于SEO优化的考虑,我们将不采用单页应用

    无论是前台还是后台系统,都共享相同的微服务集群,包括:

    商品微服务:商品及商品分类、品牌、库存等的服务 搜索微服务:实现搜索功能 订单微服务:实现订单相关 购物车微服务:实现购物车相关功能 用户中心:用户的登录注册等功能 认证中心:用户权限及服务权限认证 Eureka注册中心 Zuul网关服务 Spring Cloud Config配置中心

    1.注册微服务Register:ruai贼死特:使用Spring Cloud Netflix中的Eureka实现了服务注册中心 服务间通过Ribbon和Feign实现均衡负载以及服务的消费; 为了使得服务集群更为健壮,使用Hystrix:he死:的融断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延;

    2.网关微服务Gateway:,Zuul作为服务的统一入口,一切对服务的请求都会经过Zuul这个网关,然后再由网关来实现,鉴权,动态路由等等操作

    3.商品微服务ItemApplication:首先分析了商品表结构,最终基于商品类别去设计了表结构 //每个分类下的商品规格参数key(参数)和值(参数的值)分开保存,key跟商品分类绑定,值跟商品绑定,解决全品类电商的spu和sku管理问题 实现了品牌的查询,品牌的新增。商品规则组与规格参数的查询,商品的查询,修改商品信息,商品的新增 简单说一下新增:界面首先选择商品的分类,之后选定品牌,这时首先需要实现根据商品分类查询品牌的功能;描述商品信息使用富文本编辑器

    4.上传微服务Upload:实现步骤为:校验格式、校验内容、上传到FastDFS(storageClient.uploadFile(文件流,文件大小,扩展名,null)),最终返回URL路径

    搜索微服务SearchApplication:使用的是Spring提供的Spring Data Elasticsearch,并利用ElasticsearchTemplate创建索引和生成映射 分析了搜索结果的数据结构,将搜索结果封装为一个类Goods 将查出来的数据导入索引库 实现商品分类和品牌的聚合,再去分页、过滤、查询、解析查询结果

    页面微服务:PageApplication:页面微服务 根据传递来的spuId查询spu信息、spu详情、spu下的所有sku、规格参数等信息,通过Thymeleaf模板引擎渲染后返回到客户端(响应速度从140ms下降到了55ms) 利用静态化技术,将动态HTML页面变成静态内容保存(保存在nginx上,提高并发能力),之后用户请求直接访问静态页面不再经过服务器渲染(响应速度从55ms下降到了10ms)

    短信微服务SmsApplicatinon:短信发送我们都将采用异步发送方式,即短信服务监听MQ消息,收到消息后发送短信;其它服务要发送短信时,通过MQ通知短信微服务 Redis的过期机制来保存验证码

    用户微服务:UserApplication:实现用户注册功能(需要调用短信微服务发送验证码) 校验短信验证码、用户名密码等,成功后写入数据库

    鉴权微服务:AuthApplication:又有授权和鉴权 授权:接收用户的登录请求,通过用户中心的接口进行校验,通过后使用私钥生成JWT并返回(写入到token中返回);解析token获取用户信息 鉴权:Zuul中完成登录校验拦截(所有请求都会经过Zuul);编写过滤逻辑(获取cookie中的token,通过JWT对Token进行校验,通过则放行)

    购物车微服务:CartApplication:登录状态下商品添加到Redis中(其中key是用户,因此此处要做用户鉴权,value是商品信息), 未登陆状态下商品添加到localstorage中(存储数据没有时间限制)

    订单微服务:OrderApplication: 新增订单,填充用户信息、收货人地址、金额信息并写入数据库,同时新增订单详情、订单状态、减库存操作 查询订单,生成订单URL、二维码信息,完成微信支付


    相关技术:

    前端技术:

    基础的HTML、CSS、JavaScript(基于ES6标准) Vue.js 2.0以及基于Vue的UI框架:Vuetify 前端构建工具:WebPack 前端安装包工具:NPM Vue脚手架:Vue-cli Vue路由:vue-router ajax框架:axios 基于Vue的富文本框架:quill-editor

    后端技术:

    基础的SpringMVC、Spring 5.0和MyBatis3 Spring Boot 2.0.1版本 Spring Cloud 最新版 Finchley非你吃林.RC1 Redis-4.0 RabbitMQ-3.4 Elasticsearch-5.6.8 nginx-1.10.2 FastDFS - 5.0.8 MyCat Thymeleaf JWT

    Processed: 0.012, SQL: 8