乐优商城项目总结
文章目录
- 项目简介
- 微服务集群
- 1.enreka注册中心
- 2. zuul网关
- 3. 公共工具类
- 4. 商品微服务
- 5. 文件上传微服务
- 6. 搜索微服务
- 7. 页面静态化微服务
- 8. 用户微服务
- 9. 短信微服务
- 10. 认证微服务
- 11. 购物车微服务
- 12. 订单微服务
- 项目最大的收获
- 项目遇到的问题
项目简介
乐优商城是一个全品类的电商购物网站。
我们采用以SpringCloud为核心的,基于rest风格的微服务架构搭建。
整个项目采用前后端分离的方式。
前端包括门户系统与后台管理。
其中后台管理主要面向管理人员,管理员可以在后台管理商品的上下架,监控商品的销售状况,是基于单页Vue.js开发的。
门户系统主要面向用户,用户可以在线购买商品,加入购物车等。这里采用vue.js结合nuxt.js(点这里)实现服务端渲染。
后端是基于SpringCloud架构开发,共有十二个微服务。门户系统与后台管理共享这些微服务集群。我主要做的就是将这些提供好的Rest风格的业务接口一一实现。
微服务集群
整个项目分为十二个部分,enreka注册中心、网关、公共工具类以及其他九个微服务。
1.enreka注册中心
2. zuul网关
zuul网关实现了路由、负载均衡、过滤以及跨域配置。
路由、负载均衡、过滤看这里:点这里
跨域问题详情(点这里)
3. 公共工具类
4. 商品微服务
商品微服务中使用通用mapper实现后台商品管理的CRUD。
但是这里有一个问题就是通用mapper只能处理单表查询。
商品分类管理详情(点这里)
商品规格管理详情(点这里)
商品查询详情(点这里)
5. 文件上传微服务
后台管理中,新增品牌需要添加很多商品的图片,因而独立出一个微服务,专门用来上传图片和文件。
上传微服务详情见这里(点这里)
6. 搜索微服务
搜索微服务中使用Elasticsearch的高级聚合功能,实现对商品的复杂业务搜索功能以及销售业务统计和报表输出。
搜索微服务详情见这里(点这里)
7. 页面静态化微服务
页面静态化微服务中使用Thymeleaf与Nginx实现页面模板和静态化,提高页面响应速度和并发能力。
页面静态化详情见这里:点这里
数据库与elasticsearch与静态化页面消息同步问题:点这里
8. 用户微服务
主要是实现用户的登陆注册,查询用户信息等功能。
用户微服务详情(点这里)
9. 短信微服务
短信微服务中对接阿里云平台,通过RabbitMQ实现异步的短信发送。
10. 认证微服务
认证微服务中使用RSA非对称加密与JWT识别用户身份实现无状态登录。
结合JWT和RSA非对称加密,自定义Feign过滤器实现服务鉴权,解决服务对外暴露的安全问题。
认证微服务详情(点这里)
如何使用Feign过滤器解决?(点这里)
如果实现用户的无状态登录?(点这里)
什么是单点登录,为什么要单点登录?:点这里
11. 购物车微服务
购物车微服务中使用Redis与LocalStorage实现购物车商品的增删。
离线时使用LocalStorage,减轻服务端压力。
购物车微服务详情:点这里
12. 订单微服务
实现订单相关业务(创建订单,查询订单信息)创建订单需要同时减库存,跨服务业务,需要注意事务的处理流程。
订单微服务详情:点这里
项目最大的收获
一是整合了学习到的springboot与springcloud的知识
二是拓展了很多技术的应用,比如elasticsearch与rabbitMQ以及Nginx
三是对整个项目开发情况有了初步的了解
项目遇到的问题
跨域问题Nginx
文件上传问题fastDFS
搜索问题elasticsearch
单点登录问题JWT
页面静态化问题Thymeleaf
数据库同步问题rabbitMQ