黑马商城项目—最新SpringCloud开发实战—功能实现详细学习笔记(微服务篇)

2024最新版的SpringCloud黑马商城项目
笔记对应教学视频讲解序号,并附上每小节所在的视频分p位置
笔记包含了视频讲解的核心内容及实战功能实现的详细过程

课程地址: 2024最新SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)
项目代码:课程地址简介中领取

系列文章目录
本笔记包含Docker、微服务、RabbitMQ、Elasticsearch等(持续更新)

黑马商城项目—最新SpringCloud开发实战—功能实现详细学习笔记(Docker篇)
黑马商城项目—最新SpringCloud开发实战—功能实现详细学习笔记(微服务篇)
黑马商城项目—最新SpringCloud开发实战—功能实现详细学习笔记(RabbitMQ篇)
黑马商城项目—最新SpringCloud开发实战—功能实现详细学习笔记(Elasticsearch篇)

目录


微服务

p36 微服务01-01 导入黑马商城

在这里插入图片描述

用之前的方法配置在docker中启动好mysql容器,
然后是后台项目
在这里插入图片描述
接下来用idea打开资料中的项目
在这里插入图片描述
在yaml配置文件中,这里写了用dev的profiles,在本地启动时用local,但不在这里改(不方便)
在这里插入图片描述
在services的编辑中把active profiles改为local就行了,
如果不能启动,可以更换jdk版本,使用jdk11
在这里插入图片描述
项目启动后在浏览器中可以访问到

然后启动前端项目
在这里插入图片描述
将nginx前端目录拷贝到一个非中文字符路径
在这里插入图片描述
用命令行的方式启动(方便关闭,双击exe不方便关闭)
在这里插入图片描述
在前端页面中登录,登录成功表明后端和数据库正常运行
在这里插入图片描述
虽然能够登录成功,但有一个warning输出
在这里插入图片描述
修改mybatis-plus的版本为3.4.2后warning消失

p37 微服务01-02 认识微服务-单体架构

在这里插入图片描述
单体架构的优点是架构简单,
但单体架构在开发大型项目的时候存在许多缺点,
团队协作成本高(许多人容易代码冲突),发布效率低(需要把整个项目进行打包),可用性差(所有的功能都部署在一台服务器上,性能有限)
在这里插入图片描述
在接口中写了一个Thread.sleep(300);模拟业务处理时间,对这个接口做性能测试
在这里插入图片描述
先记录一下hi接口的访问时间,300多毫秒
在这里插入图片描述
在jmeter中首先以200个请求每秒的速度一直访问这个接口,
在这里插入图片描述
然后在浏览器中继续访问hi接口,响应速度没有受到太大影响,还是300多毫秒
在这里插入图片描述
将jmeter的请求速度提升到300个线程每秒
在这里插入图片描述
此时接口的时间上升到了600毫秒,受到了影响,
因为某一个接口的并发很高,占用了很多tomcat资源,后续的请求需要等待释放,所以接口延迟变高
在这里插入图片描述
同时,其它的接口延迟也变高了

所以,这种单体的架构由于某一个接口出现的高并发,会影响到其它接口的性能(因为后台只有1个端口8080),
最终整个网站的延迟都很高,即系统可用性差,
还有可能由于某一个接口出现错误导致服务崩溃,那么整个项目网站也崩溃了
在这里插入图片描述
单体架构不适合大型、复杂、用户量较大的用户,
它适合功能简单、规模较小的用户

p38 微服务01-03 认识微服务-微服务架构

在这里插入图片描述
在这里插入图片描述
微服务架构将功能模块拆分后的好处,
粒度小(按照业务对服务进行拆分,每个服务只负责相关的功能),
团队自治(每个服务由一个团队负责,服务的功能只由一个团队开发,减少代码冲突),
服务自治(每个服务单独打包,部署后出现问题减少耦合)

p39 微服务01-04 认识微服务-SpringCloud

在这里插入图片描述
目前使用最广泛的微服务框架是SpringCloud
在这里插入图片描述
在这里插入图片描述
由于2022版的spring cloud需要jdk17,国内目前使用jdk17的较少(使用jdk8和11较多),教学视频以2021版来讲
Spring cloud在企业中目前使用较多的组件是spring cloud alibaba和spring cloud netflix

在pom文件中查看配置信息
在这里插入图片描述
在项目中指定springcloud的版本为2021版,并且这个springcloud也是一个pom文件
在这里插入图片描述
springcloud的pom文件中包含了许多组件

p40 微服务01-05 微服务拆分-熟悉黑马商城

在这里插入图片描述
由于是按照功能拆分,首先需要了解项目的功能
在这里插入图片描述
商城分为这些功能:登录、显示商品、加入购物车、创建订单、支付
在这里插入图片描述
登录功能的时序图
在这里插入图片描述
登录通过hutool.jwt.JWT实现,用户名密码校验通过后,生成jwt并保存(用于之后解析),返回token给前端用户,
在这里插入图片描述
在application的session里面可以看到登录成功后拿到的token
在这里插入图片描述
登录成功后的用户操作会在Headers的Authorization里面带上这个token
在这里插入图片描述
后台会用一个请求拦截器,对请求中的token进行解析得到用户id,并将id放入ThreadLocal中保存

接下来是购物车功能
在这里插入图片描述
1,商品加入购物车之后,在数据库中修改商品价格,再次刷新页面显示“比加入时便宜”等信息
2,如果发生库存不足的情况,在购物车中增加商品数量会有提示
因此,购物车当中的商品,不仅显示了商品加入时的信息(比如价格等),还显示了商品实时的最新信息(当前价格和库存等),
在查询时,后台返回了购物车的信息和最新商品信息
在这里插入图片描述
以上功能的实现过程就是在查询出购物车中的商品后(旧的信息),利用商品id再查一次最新信息,这两个信息放入一个VO里面返回给前端

然后是结算购物车中的商品,创建订单
最后对订单进行支付

p41 微服务01-06 微服务拆分-拆分原则

在这里插入图片描述
在这里插入图片描述
高内聚和低耦合两者是一个统一的概念,要做到服务拆分的合理
拆分有2种,简单的拆分是纵向拆分,
纵向拆分(按业务来分,分布式的),
横向拆分(水平的拆分,将多个业务内相同的处理过程抽取出来,划分为一个服务提高复用性)

p42 微服务01-07 微服务拆分-微服务项目结构说明

在这里插入图片描述
在这里插入图片描述
独立project的工程结构,
父工程是一个文件夹(它下面没有写代码),其中每个微服务是一个独立的project(在父工程下new出project),
它们有各自的git仓库,管理起来复杂,适用于大型项目
在这里插入图片描述
maven聚合的工程结构,
父工程是一个project包含了许多微服务(微服务都在一个project里面),每个微服务是一个module(在父工程下new出module),
都在一个project内管理起来方便,适用于小型项目,
教学视频中的微服务采用这种maven聚合的结构

p43 微服务01-08 微服务拆分-拆分商品服务

在这里插入图片描述
将商品服务拆分为微服务
在这里插入图片描述
创建一个module,
然后在pom中配置依赖,将原有的pom中的dependencies拷贝到这个module的pom中,删掉其中不必要的dependencies
在这里插入图片描述
然后创建包和启动类
在这里插入图片描述
在application中设置好端口,这里用8081,设置好微服务名称,
设置连接的数据库地址,(通常来说每个微服务需要连接到各自的数据库实例实现数据隔离,
这里为了方便教学演示,在一个连接实例中使用不同名称的数据库)
在这里插入图片描述
这里新建一个数据库hm-item用于存储这个微服务的数据,它其实就是单体应用的数据库中的一张表

然后是运行的代码(从单体项目拷贝过来),
拷贝domain中的dto、po、query(用于将分页对象与mybatis-plus对象互转)等,
拷贝mapper文件,拷贝service文件,拷贝controller文件等(由于这些文件是相互依赖的,按照这个顺序可以自动导入包路径(需设置))
在这里插入图片描述
重新加载maven工程会自动创建一个启动类,方便运行
在这里插入图片描述
同样地,编辑一下启动激活的profiles为local,因为需要本地启动
在这里插入图片描述
服务启动成功
在这里插入图片描述
由于配好了swagger,所以在网页中可以看到接口文档
在这里插入图片描述
在接口中进行分页查询调试,可以看到查询到了信息

p44 微服务01-09 微服务拆分-拆分购物车服务

在这里插入图片描述
在这里插入图片描述

购物车服务的拆分与上一节相同,首先配置yaml文件,设置启动端口8082,连接到创建的hm-cart数据库等,
然后从单体项目中拷贝购物车相关的功能代码,比如domain,mapper,service,controller等
在这里插入图片描述
这里在拷贝service的代码时,购物车的商品查询功能用到了商品item服务,这里先把这块代码注释掉(加一个默认值1,一会处理,
用户信息的获取也注释掉)
在这里插入图片描述
cart服务启动成功
在这里插入图片描述
在8082的端口打开swagger页面,成功查到了此购物车服务的数据库数据,
但是购物车中的商品最新价格和库存等信息还没有,功能没有实现还不完整

p45 微服务01-10 微服务拆分-远程调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值