乐优商城项目总结

文章目录

  • 项目简介
  • 微服务集群
    • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP32和STM32在处理中断方面的区别

为了通俗地讲解ESP32和STM32在处理中断方面的区别,我们可以把它们想象成两个不同的“智能管家”系统,各自负责管理一个家庭(即嵌入式项目)的各种任务。我们将重点放在如何处理突发事件(即中断)上。 ESP32 …

Yolo11 + OCR 营业执照识别+信息抽取(预期后续改用其他ocr更简单,推理预计使用onnxruntim加速,分c++和python两种方式部署)

目录 一 数据集制作 1 labelimg的安装与使用 2 标注方式 3 数据集制作 二 模型训练 三 使用Yolo11 + OCR 实现“营业执照”信息解析完整方案 1 cutLinesforcode.py 2 getBusinessLicenseContentPart.py 3 getPartWords.py 4 pdfTojpg.py 5 main.py 本项目可用于毕业…

18.Word:数据库培训课程❗【34】

目录 题目 NO1.2.3.4 NO5设置文档内容的格式与样式 NO6 NO7 NO8.9 NO10.11标签邮件合并 题目 NO1.2.3.4 FnF12:打开"Word素材.docx”文件,将其另存为"Word.docx”在考生文件夹下之后到任务9的所有操作均基于此文件:"Word.docx”…

Mysql Resultset 解析记录

Mysql Resultset 解析记录 结果集消息头字段定义结果数据完整spicy文件 结果集消息头 消息头由消息体长度消息序列号消息体组成;消息头长度为3字节,消息序列号长度为1字节。 结果集的消息头消息体内容为结果集的列数。 结果集消息头的spicy1格式如下&a…

sem_init的概念和使用案例-简洁版

sem_init 是 POSIX 系统中用于初始化一个信号量的函数。在多线程编程中,信号量是一种常用于同步线程对共享资源的访问的机制。 概念 信号量是一个整数变量,可以用来控制对共享资源的访问。它通常用于实现线程同步或进程同步,以确保在某一时…

SSM开发(七) MyBatis解决实体类(model)的字段名和数据库表的列名不一致方法总结(四种方法)

目录 方法一: 使用@Results和@Result注解(注解方式) 方法二:修改 SQL 查询语句中的别名(注解方式) 方法三: 全局配置别名或结果映射(resultMap,XML配置方式) 方法四:使用@Column注解 在MyBatis中,如果你希望使用注解的方式来操作数据库,但又遇到实体类中的…

AboutDialog组件的功能和用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了AlertDialog Widget相关的内容,本章回中将介绍AboutDialog Widget.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里说的AboutDialog是一种弹出式窗口,和上一章回中介绍的Al…

设计模式的艺术-策略模式

行为型模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解策略模式 在策略模式中,可以定义一些独立的类来封装不同的算法,每个类封装一种具体的算法。在这里,每个封装算法的类都可以称之为一种策略(Strategy…

软件架构的演变:从大型机和整体式应用到分布式计算

注:本文为 “软件架构演变” 相关文章合辑。 英文引文机翻,未校。 Evolution of Software Architecture: From Mainframes and Monoliths to Distributed Computing Liv Wong Technical Writer August 06, 2024 Software architecture—the blueprint…

SET alter system reload

目录标题 alter system 只是 写 auto 文件SET & alter system1. **会话级别参数(Session-level parameters)**2. **系统级别参数(System-level parameters)**3. **某些特定的超级用户参数**4. **修改时生效的参数**总结&#…

量子编程语言:Qiskit 与 Cirq

在量子计算的领域,开发者已经可以使用一些专门为量子计算设计的编程语言和框架。其中,Qiskit 和 Cirq 是两个非常流行的选择,它们为不同的量子计算机提供编程接口,帮助开发者理解量子电路的设计和执行。 1. Qiskit Qiskit 是 IBM…

Java教程练习:学生信息管理系统

文章目录 学生管理系统1、需求文档需求分析 2、新建学生实体类3、实现基本菜单和退出功能4、查询和添加4.1 查询学生信息4.2 添加学生信息 5、修改和删除5.1 删除功能实现5.2 修改功能实现 完整代码下载 学生管理系统 1、需求文档 需求 采取控制台的方式书写学生管理系统。 …

Cocoa和Cocoa Touch是什么语言写成的?什么是Cocoa?编程语言中什么是框架?为什么苹果公司Cocoa类库有不少NS前缀?Swift编程语言?

Cocoa和Cocoa Touch是什么语言写成的? 二者主要都是用Objective-C语言编写而成的。 什么是Cocoa? Cocoa是苹果操作系统macOS和iOS上的应用程序开发框架集合,核心语言是Objective-C编程语言,在移动平台被称为Cocoa Touch,Cocoa包含多个子框架…

汽车蓝牙钥匙定位仿真小程序

此需求来自于粉丝的真实需求,假期没事,牛刀小试。 一、项目背景 如今,智能车钥匙和移动端定位技术已经相当普及。为了探索蓝牙 Beacon 在短距离定位场景下的可行性,我们搭建了一个简易原型:利用 UniApp 在移动端采集蓝牙信标的 RSSI(信号强度),通过三边定位算法估算钥…

【Docker】Docker入门了解

文章目录 Docker 的核心概念Docker 常用命令示例:构建一个简单的 C 应用容器1. 创建 C 应用2. 创建 Dockerfile3. 构建镜像4. 运行容器 Docker 优势学习 Docker 的下一步 **一、Docker 是什么?****为什么 C 开发者需要 Docker?** **二、核心概…

【C++ 真题】P1706 全排列问题

全排列问题 题目描述 按照字典序输出自然数 1 1 1 到 n n n 所有不重复的排列,即 n n n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 n n n。 输出格式 由 1 ∼ n 1 \sim n 1∼n 组成的所有不重复的数字序…

Acwing92递归实现指针型枚举

从 1∼n1∼n 这 nn 个整数中随机选取任意多个,输出所有可能的选择方案。 输入格式 输入一个整数 nn。 输出格式 每行输出一种方案。 同一行内的数必须升序排列,相邻两个数用恰好 11 个空格隔开。 对于没有选任何数的方案,输出空行。 本…

新项目上传gitlab

Git global setup git config --global user.name “FUFANGYU” git config --global user.email “fyfucnic.cn” Create a new repository git clone gitgit.dev.arp.cn:casDs/sawrd.git cd sawrd touch README.md git add README.md git commit -m “add README” git push…

崇州市街子古镇正月初一繁华剪影

今天是蛇年正月初一,下午笔者步出家门,逛到了崇州市街子古镇井水街,想看看景象如何。结果看到的是车水马龙、人流如织,繁花似锦,热闹非凡,原来今天开始预订此地摆下的长街宴。心里高兴,便用手机…

Java设计模式:结构型模式→组合模式

Java 组合模式详解 1. 定义 组合模式(Composite Pattern)是一种结构型设计模式,它允许将对象组合成树形结构以表示“部分-整体”的层次。组合模式使得客户端能够以统一的方式对待单个对象和对象集合的一致性,有助于处理树形结构…